Une fonction est un POU qui génère un élément de données (éventuellement constitué de plusieurs éléments, comme des champs ou des structures) lorsqu'elle est traitée. Son appel dans les langages textuels peut être effectué sous la forme d'un opérateur dans des expressions.
Pour attribuer une fonction à une application existante, sélectionnez le nœud de l'application dans l'arborescence
, cliquez sur le signe plus de couleur verte et exécutez la commande . Vous pouvez aussi cliquer avec le bouton droit sur le nœud et choisir la commande dans le menu contextuel. Pour ajouter un POU ne dépendant d'aucune application, sélectionnez le nœud dans l'arborescence , puis exécutez les mêmes commandes.Dans la boîte de dialogue
, sélectionnez l'option . Indiquez le (<nom de fonction>) et le (<type de données>) de la nouvelle fonction, puis sélectionnez le langage d'implémentation souhaité. Pour choisir le type de retour, cliquez sur le bouton pour accéder à la boîte de dialogue . Cliquez sur pour confirmer. L'éditeur de la nouvelle fonction s'ouvre et vous pouvez commencer à la modifier.Syntaxe :
FONCTION <nom de fonction> : <type de données>
Viennent ensuite les déclarations des variables d'entrée et de fonction.
Attribuez un résultat à la fonction. Par conséquent, le nom de la fonction est utilisé comme une variable de sortie.
Dans une fonction, il est inutile de déclarer les variables locales comme RETAIN
ou PERSISTENT
, car cela n'aurait aucun effet.
Exemple de fonction en langage ST : une telle fonction nécessite trois variables d'entrée et renvoie le produit des deux dernières ajouté à la première.
L'appel d'une fonction en langage ST peut être effectué sous la forme d'un opérande dans des expressions.
En langage IL, un appel de fonction ne peut être placé que dans les actions d'une étape ou dans une transition.
Les fonctions (contrairement à un programme ou à un bloc fonction) ne contiennent aucune information sur l'état interne, de sorte que l'appel d'une fonction avec les mêmes arguments (paramètres d'entrée) produit toujours les mêmes valeurs (sortie). C'est pour cette raison que les fonctions ne peuvent contenir ni variables globales ni adresses.
Appels de fonction en langage IL ;
LD 5
Fct 3 ,
22
ST result
Appels de fonction en langage FBD :
Exemple :
fun(formal1 := actual1, actual2); // -> error message
fun(formal2 := actual2, formal1 := actual1); // same semantics as the following:
fun(formal1 := actual1, formal2 := actual2);
Conformément à la norme IEC 61131-3, les fonctions peuvent disposer de sorties supplémentaires. Celles-ci doivent être affectées dans l'appel de la fonction. En langage ST, par exemple, la syntaxe suivante doit être utilisée :
out1 => <variable de sortie 1> | out2 => <variable de sortie 2> | … autres variables de sortie