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ée EN 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 :

NOTE : pour l'appel informel, la liste des paramètres réels ne doit pas figurer entre parenthèses. La norme IEC 61133-3 exige d'enlever les parenthèses, afin d'indiquer que le premier paramètre réel ne fait pas partie de la liste.

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 :