Utilisation des fonctions
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 IL.
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 appel de la fonction. Par exemple, l'addition de deux valeurs donne toujours le même résultat. Pour certaines fonctions élémentaires, il est possible d'augmenter le nombre d'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
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, un changement de type explicite
doit être effectué via INT_ARR_TO_WORD_ARR (...)
.
Pour l'appel formel, il n'est 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 lors de l’exécution de la 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 sur la programmation :
Les fonctions ne sont exécutées que lorsque l'entrée
EN
= 1 ou lorsque l'entréeEN
est inutilisée (voir aussi EN and ENO).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. :
LD i1
ADD i2
ST i3
est identique à
LD i1
ADD_INT i2
ST i3
Contrairement au langage ST, le langage IL n'autorise pas l'imbrication de fonctions.
Il existe deux façons d'appeler une fonction :
Appel formel (appel avec les noms des paramètres formels)
Appel informel (appel d'une fonction sans les noms des paramètres formels)
Appel formel
Avec ce
type d'appel (incluant les noms des paramètres formels), les
fonctions sont appelées via une suite d'instructions qui comprend
le nom de la fonction et 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 n'est pas important. La liste des paramètres réels
peut continuer sur la ligne suivante, après une virgule. Après
l'exécution de la fonction, le résultat est chargé
dans l'accumulateur et peut être sauvegardé via ST
.
Ce type d'appel autorise l'utilisation de EN
et ENO
.
Appel d'une fonction avec les noms des paramètres formels :

ou
LIMIT (
MN:=0,
IN:=var1,
MX:=var2
)
ST out
Appel de la même fonction en FBD :

Lors d'un appel formel, il n'est pas nécessaire d'affecter une valeur à tous les paramètres formels (voir également Parameter).
LIMIT (MN:=0, IN:=var1)
ST out
Appel de la même fonction en FBD :

Appel informel
Avec
ce type d'appel (sans les noms des paramètres formels), les fonctions
sont appelées via une suite d'instructions qui comprend le chargement
du premier paramètre réel dans l'accumulateur, puis le nom
de la fonction et, éventuellement, la liste des paramètres
réels. L’ordre d’énumération des paramètres
réels est important. La liste des paramètres réels
doit figurer sur une seule ligne. Après l'exécution de la
fonction, le résultat est chargé dans l'accumulateur et
peut être sauvegardé via ST
.
Ce type
d'appel n'autorise pas 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 :

Appel informel non valide d'une fonction :

Si la valeur à traiter (premier paramètre réel) se trouve déjà dans l’accumulateur, l’instruction de chargement n’est plus nécessaire.
LIMIT B,C
ST résultat
Si le résultat doit être directement utilisé, l’instruction de sauvegarde n’est plus nécessaire.
LD A
LIMIT_REAL B,C
MUL E
Si la fonction à exécuter n’a qu’une entrée, son nom n’est pas suivi d’une liste de paramètres réels.
Appel d'une fonction avec un paramètre réel :

Appel de la même fonction en FBD :

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.
Après l'exécution sans erreur de ces algorithmes, la valeur
de ENO
est réglée sur « 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
à l'appel
du FFB, l'algorithme défini par ce dernier est exécuté
(comme lorsque EN
a la valeur « 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.
LIMIT (EN:=1, MN:=0, IN:=var1, MX:=5, ENO=>var2)
ST out
Appel de la même fonction en FBD :
