Un programme est un objet POU qui renvoie une ou plusieurs valeurs pendant l'exécution. Toutes les valeurs sont conservées entre deux exécutions du programme. Cependant, il n’existe pas d’instances distinctes de programmes, contrairement aux blocs fonction. En effet, dans ce cas, seules les valeurs de l'instance spécifique du bloc fonction sont modifiées. Les modifications prennent effet lors d'un nouvel appel de la même instance. Les modifications des valeurs du programme sont conservées jusqu’à l'appel suivant du programme, même s'il est appelé par un autre POU.
Pour attribuer un programme à une application existante, sélectionnez le nœud de l'application dans l'arborescence Applications, cliquez sur le signe plus de couleur verte et exécutez la commande POU.... Vous pouvez aussi cliquer avec le bouton droit sur le nœud Application et choisir la commande Ajouter un objet > POU dans le menu contextuel. Pour ajouter un POU ne dépendant d'aucune application, sélectionnez le nœud Global dans l'arborescence des applications, puis exécutez les mêmes commandes.
Dans la boîte de dialogue Ajouter un POU, sélectionnez l'option Programme, entrez un nom de programme et sélectionnez le langage d'implémentation souhaité. Cliquez sur Ouvrir pour confirmer. L'éditeur du nouveau programme s'ouvre et vous pouvez commencer à modifier le programme.
Syntaxe :
PROGRAM <nom du programme>
Viennent ensuite les déclarations des variables d'entrée, de sortie et des variables de programme. Les variables d'accès sont également disponibles en option.
Exemple de programme
Un autre POU peut appeler un programme. En revanche, aucun appel de programme n'est autorisé dans une fonction. Il n'existe aucune instance de programme.
Si un POU a appelé un programme et que les valeurs de celui-ci ont été modifiées, ces modifications sont conservées jusqu'à l'appel suivant du programme. Ceci est valable même si l'appel provient d'un autre POU. Il n'en va pas de même lors de l'appel d'un bloc fonction. En effet, dans ce cas, seules les valeurs de l'instance spécifique du bloc fonction sont modifiées. Les modifications prennent effet lors d'un nouvel appel de la même instance.
Pour définir des paramètres d'entrée et/ou de sortie lors de l'appel d'un programme, dans les éditeurs de texte (par exemple, ST), affectez des valeurs aux paramètres en les plaçant entre parenthèses après le nom du programme. Utilisez := pour affecter les valeurs des paramètres d'entrée, comme lors de l'initialisation des variables à l'emplacement de déclaration. Pour les paramètres de sortie, utilisez =>. Voir l'exemple suivant.
Si le programme est inséré via l'aide à la saisie avec l'option Insert with arguments dans l'affichage de l'implémentation d'un éditeur de texte, il s'affiche automatiquement conformément à cette syntaxe avec tous les paramètres, même si l'affectation de ces derniers n'est pas obligatoire.
Programme en langage IL :
CAL PRGexample (
in_var:= 33 )
LD PRGexample.out_var
ST erg
Exemple avec affectation de paramètres (aide à la saisie avec l'option Insert with arguments) :
Programme en langage IL avec arguments :
CAL PRGexample (
in_var:= 33 ,
out_var=> erg )
Exemple en langage ST
PRGexample(in_var:= 33);
erg := PRGexample.out_var;
Exemple avec affectation de paramètres (aide à la saisie avec l'option Insert with arguments comme décrit précédemment) :
PRGexample (in_var:=33, out_var=>erg );
Exemple en langage FBD
Programme en langage FBD :