L'appel des blocs fonction se fait par le biais d'une instance de bloc fonction. Une instance de bloc fonction doit donc être déclarée localement ou globalement. Pour plus d'informations sur cette déclaration, consultez le chapitre Instance de bloc fonction.
Il est ensuite possible d'accéder à la variable souhaitée du bloc fonction à l'aide de la syntaxe qui suit.
<nom d'instance>.<nom de la variable>
oL'accès de l'extérieur d'une instance de bloc fonction est possible uniquement pour les variables d'entrée et de sortie d'un bloc fonction, mais en aucune façon pour ses variables internes.
oL'accès à une instance de bloc fonction est limité au POU dans lequel elle a été déclarée, sauf s'il s'agit d'une déclaration globale.
oLors de l'appel de l'instance, les valeurs souhaitées peuvent être affectées aux paramètres du bloc fonction. Voir le paragraphe suivant Affectation de paramètres lors d'un appel.
oLes variables d'entrée/sortie (VAR_IN_OUT) d'un bloc fonction sont transmises en tant que pointeurs.
oEn langage SFC, les appels de bloc fonction peuvent uniquement se produire dans des étapes.
oIl est possible d'utiliser le nom de l'instance d'un bloc fonction comme paramètre d'entrée pour une fonction ou un autre bloc fonction.
oToutes les valeurs d'un bloc fonction sont conservées jusqu'au prochain traitement du bloc fonction. Ainsi, les appels de bloc fonction ne renvoient pas toujours les mêmes valeurs de sortie, même lorsque des arguments identiques sont utilisés.
NOTE : Si au moins l'une des variables du bloc fonction est rémanente, l'ensemble de l'instance est stocké dans la zone des données conservées.
Exemples explicitant l'accès aux variables d'un bloc fonction
Supposons que le bloc fonction fb dispose d'une variable d'entrée in1 de type INT. L'appel de cette variable depuis le programme prog est illustré ci-dessous. Voir la déclaration et la mise en œuvre en langage ST :
PROGRAM prog
VAR
inst1:fb;
END_VAR
inst1.in1:=22; (* fb is called and input variable in1 gets assigned value 22 *)
inst1(); (* fb is called, this is needed for the following access on the output variable *)
res:=inst1.outl; (* output variable of fb is read *)
Exemple d'appel d'un bloc fonction en langage FBD :
Affectation de paramètres lors d'un appel
Dans les langages de texte IL et ST, vous pouvez définir immédiatement des paramètres d'entrée et/ou de sortie lors de l'appel du bloc fonction. Il est possible d'affecter les valeurs de ces paramètres en les plaçant entre parenthèses après le nom d'instance du bloc fonction. Utilisez := pour affecter les valeurs des paramètres d'entrée, comme lors de l'initialisation des variables à l'emplacement de déclaration. Utilisez => pour les paramètres de sortie.
Exemple d'appel avec affectations
Dans cet exemple, un bloc fonction de temporisateur (instance CMD_TMR) est appelé avec des affectations pour les paramètres IN et PT. La variable de résultats Q est ensuite affectée à la variable A. L'adressage de la variable de résultat utilise le nom de l'instance du bloc fonction suivi d'un point et du nom de la variable :
CMD_TMR(IN := %IX5, PT := 300);
A:=CMD_TMR.Q
Exemple d'insertion par le biais de l'aide à la saisie avec des arguments
Si l'instance est insérée via l'aide à la saisie avec l'option Insérer avec des arguments dans l'affichage de l'implémentation d'un POU en langage ST ou IL, elle s'affiche automatiquement conformément à la syntaxe illustrée dans l'exemple qui suit avec tous les paramètres, même si l'affectation de ces derniers n'est pas obligatoire.
Dans l'exemple mentionné précédemment, l'appel aurait l'aspect ci-dessous.
CMD_TMR(in:=, pt:=, q=>)
-> fill in, e.g.:
CMD_TMR(in:=bvar, pt:=t#200ms, q=>bres);