Fonctions élémentaires

Les fonctions élémentaires sont disponibles sous forme de bibliothèques. Leur logique est créée en langage de programmation C et n'est pas modifiable dans l’éditeur ST.

Les fonctions n'ont pas d'état interne. Lorsque les valeurs d'entrée sont identiques, la valeur de sortie est la même à chaque exécution de la fonction. Par exemple, l'addition de deux valeurs donne toujours le même résultat.

Certaines fonctions élémentaires peuvent être étendues à plus de deux entrées.

Les fonctions élémentaires ne renvoient qu'une seule valeur (sortie).

Paramètres

Pour transférer des valeurs vers ou à partir d'une fonction, il faut des « entrées » et une « sortie ». Elles sont appelées paramètres formels.

Les états actuels du processus sont transmis aux paramètres formels. Ces paramètres sont dits réels.

Les paramètres réels utilisables comme entrées d'une fonction sont les suivants :

  • Variable

    Adresse

    Littéral

    Expression ST

Les paramètres réels utilisables comme sorties d'une fonction sont les suivants :

  • Variable

  • Adresse

Le type des données des paramètres réels doit correspondre à celui des paramètres formels. La seule exception concerne les paramètres formels génériques dont le type de données est déterminé par le paramètre réel.

De plus, pour les paramètres formels génériques du type de données ANY_BIT, des paramètres réels du type de données INT ou DINT (pas UINT ni UDINT) peuvent être utilisés.

Il s'agit d'une extension de la norme IEC 61131-3, qui doit faire l'objet d'une activation explicite.

Exemple :

Autorisé :

AND (AnyBitParam := IntVar1, AnyBitParam2 := IntVar2);

Non autorisé :

AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2);

(Dans ce cas AND_INT doit être utilisé.)

AND_ARRAY_WORD (ArrayInt, ...);

(Dans ce cas, une conversion de type explicite doit être effectuée à l'aide de INT_ARR_TO_WORD_ARR (...);.

Il n'est en principe pas nécessaire d'affecter une valeur à tous les paramètres formels. Le tableau suivant répertorie les types de paramètres formels auxquels une valeur doit être affectée :

Type de paramètre

EDT

STRING

ARRAY

ANY_ARRAY

IODDT

STRUCT

FB

ANY

Entrée

-

-

-

-

+

-

+

-

VAR_IN_OUT

+

+

+

+

+

+

/

+

Sortie

-

-

-

-

-

-

/

-

+ Paramètre réel impératif

- Paramètre réel non obligatoire. C'est la règle, mais certains FFB font exception. Par exemple, lorsque certains paramètres servent à caractériser les informations que le FFB doit fournir.

/ Non applicable

Si aucune valeur n'est affectée à un paramètre formel, la valeur initiale est utilisée pour exécuter le bloc fonction. Si aucune valeur initiale n'est définie, la valeur par défaut (0) est utilisée.

Remarques sur la programmation

Gardez à l'esprit les remarques suivantes :

  • Toutes les fonctions génériques sont surchargées. Cela signifie que les fonctions peuvent être appelées avec ou sans la saisie du type de données.

    Ex. :

    i1 := ADD (i2, 3);

    est identique à

    i1 := ADD_INT (i2, 3);

  • Les fonctions peuvent être imbriquées.

  • Les fonctions ne sont exécutées que si l'entrée EN = 1 ou si l'entrée EN est inutilisée.

  • Il existe deux façons d'appeler une fonction :

    • Appel formel (appel d'une fonction avec les noms des paramètres formels)

    • Appel informel (appel d'une fonction sans les noms des paramètres formels)

Appel formel

Lors d'un appel formel (avec les noms des paramètres formels), l'appel se compose du paramètre réel de la sortie, de l'instruction d'affectation :=, du nom de la fonction et d'une liste entre parenthèses des valeurs affectées (paramètres réels) aux paramètres formels. L’ordre d’énumération des paramètres formels dans l’appel d’une fonction n’est pas important.

Ce type d'appel autorise l'utilisation de EN et ENO.

Appel d'une fonction avec les noms des paramètres formels :

Appel de la même fonction en FBD :

Lors d'un appel formel, il n'est pas nécessaire d'affecter une valeur à chaque paramètre formel.

out:=LIMIT (MN:=0, IN:=var1) ;

Appel de la même fonction en FBD :

Appel informel

Lors d'un appel informel (sans les noms des paramètres formels), l'appel se compose du paramètre réel de la sortie, du symbole de l'instruction d'affectation :=, du nom de la fonction et d'une liste entre parenthèses des paramètres réels des entrées. L’ordre d’énumération des paramètres réels dans l’appel d’une fonction est important.

Ce type d'appel n'autorise pas l'utilisation de EN et ENO.

Appel d'une fonction sans les noms des paramètres formels :

Appel de la même fonction en FBD :

Lors d'un appel informel, il n'est pas nécessaire d'affecter une valeur à chaque paramètre formel.

Il s'agit d'une extension de la norme CEI 61131-3 et doit donc être activée de manière explicite.

Un champ de paramètre vide permet d'omettre un paramètre.

Appel avec un champ de paramètre vide :

out:=LIMIT ( ,var1, 5 + var) ;

Appel de la même fonction en FBD :

Si les paramètres formels sont omis à la fin, aucun champ de paramètre vide ne doit être utilisé.

out:=LIMIT (0, var1) ;

Appel de la même fonction en FBD :

Imbrication de fonctions

L'appel d'une fonction peut contenir l'appel d'autres fonctions. Le nombre d'imbrications est illimité.

Appel imbriqué d'une fonction de tableau :

out:=LIMIT (MN:=4, IN:=MUL(IN1:=var1, IN2:=var2), MX:=5) ;

Appel de la même fonction en FBD :

Les fonctions qui renvoient une valeur de type ANY_ARRAY ne peuvent pas être utilisées dans un appel de fonction.

Imbrication non autorisée avec ANY_ARRAY :

Le type de données ANY_ARRAY est autorisé comme valeur de renvoi de la fonction appelé ou comme paramètre des fonctions imbriquées.

Imbrication autorisée avec ANY_ARRAY :

EN et ENO

Pour toutes les fonctions, une entrée EN et une sortie ENO peuvent être configurées.

Si EN est à « 0 » lorsque la fonction est appelée, les algorithmes définis par cette dernière ne sont pas exécutés et ENO est mis à « 0 ».

Si EN est à « 1 » lorsque la fonction est appelée, les algorithmes définis par la fonction sont exécutés. Si ces algorithmes s'exécutent sans erreur, ENO est mis à « 1 ». Si une erreur se produit durant l’exécution de ces algorithmes, ENO est mis à « 0 ».

Si aucune valeur n'est attribuée à la broche EN lors de l'appel du FFB, l'algorithme défini par ce dernier est exécuté (comme lorsque EN est à « 1 »).

Si ENO est mis à « 0 » (parce que EN = 0 ou suite à une erreur d'exécution), la sortie de la fonction est mise à « 0 ».

Le comportement de sortie de la fonction ne dépend pas de l'appel de la fonction sans EN/ENO ou avec EN = 1.

Si EN et ENO sont utilisés, l'appel de la fonction doit être formel.

out:=LIMIT (EN:=1, MN:=0, IN:=var1, MX:=5, ENO=>var2) ;

Appel de la même fonction en FBD :