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éeEN
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 :
