Objet : Bloc de fonction
Un bloc fonction est une POU qui produit une ou plusieurs valeurs lors de son exécution.
L'objet est ajouté à l'application ou au projet en cliquant sur POU vue, les blocs fonctionnels POU ont la (FB) suffixe.
. Dans l'arborescence des appareils ou dans leIl appelle toujours un bloc fonction au moyen d'une instance qui est une copie du bloc fonction.
L'éditeur d'un bloc fonction se compose de la partie déclaration et de la partie implémentation.
Les valeurs des variables de sortie et des variables internes restent inchangées après l'exécution jusqu'à la prochaine exécution. Cela signifie que le bloc fonctionnel ne renvoie pas nécessairement les mêmes valeurs de sortie pour plusieurs appels avec les mêmes variables d'entrée.
En plus des fonctionnalités décrites dans CEI 61131-3, vous pouvez également utiliser des blocs fonctionnels dans CODESYS pour les fonctionnalités suivantes de la programmation orientée objet :
Extension d'un bloc fonctionnel
Mise en œuvre d'interfaces
La première ligne de la partie déclaration contient la déclaration suivante :
FUNCTION_BLOCK <access specifier> <function block> \| EXTENDS <function block> \| IMPLEMENTS <comma-separated list of interfaces>
Appel d'un bloc fonction
L'appel est toujours effectué au moyen d'une instance du bloc fonction. Lorsqu'un bloc fonctionnel est appelé, seules les valeurs de l'instance respective changent.
Déclaration de l'instance :
<instance> : <function block>;
Vous accédez à une variable du bloc fonction dans la partie implémentation comme suit :
<instance> . <variable>
Important
Notez ce qui suit :
Vous ne pouvez accéder qu'aux variables d'entrée et de sortie d'un bloc fonction depuis l'extérieur de l'instance de bloc fonction, pas aux variables internes.
L'accès à une instance de bloc fonction est limité au POU dans lequel l'instance est déclarée, sauf si vous avez déclaré l'instance globalement.
Vous pouvez affecter les valeurs souhaitées aux variables du bloc fonction lorsque vous appelez l'instance.
Accès aux variables du bloc fonction :
Le bloc fonction FB1
a la variable d'entrée iVar1
de type INT
et la variable de sortie out1
. Dans la suite, la variable iVar1
est appelé depuis le programme Prog
.
PROGRAM Prog VAR inst1 : FB1; END_VAR inst1.iVar1 := 33; (* FB1 is called and the value 33 is assigned to the variable iVar1 *) inst1(); (* FB1 is called, that's necessary for the following access to the output variable *) ires := inst1.out1 (* the output variable out1 of the FB1 is read *)
En FDB :

Affectation de valeurs variables lors de l'appel :
Dans les langages textuels IL et ST, vous pouvez directement affecter des valeurs aux variables d'entrée et/ou de sortie lorsque vous appelez le bloc fonction.
Une valeur est affectée à une variable d'entrée avec :=
.
Une valeur est affectée à une variable de sortie avec =>
.
L'exemple CMD_TMR
du bloc fonction timer est appelé avec des affectations pour les variables d'entrée IN
et PT
. Alors la variable de sortie Q
du temporisateur est affecté à la variable A
.
PROGRAM PLC_PRG VAR CMD_TMR : TOF; END_VAR CMD_TMR(IN := %IX5.1, PT := T#100MS); A := CMD_TMR.Q;
Astuce
Lorsque vous insérez une instance de bloc fonction à l'aide de la Assistant de saisie et sélectionnez le Insertion avec arguments possibilité dans le Assistant de saisie dialogue, CODESYS insère l'appel avec toutes les variables d'entrée et de sortie. Ensuite, il vous suffit d'insérer l'affectation de valeur souhaitée. Dans l'exemple ci-dessus, CODESYS insère l'appel comme suit : CMD_TMR (IN:= ,PT:= , Q=> )
.
Astuce
Vous pouvez utiliser le 'est connecté'
sur une variable locale pour déterminer au moment de l'appel dans l'instance de bloc fonction si une entrée spécifique reçoit ou non une affectation externe.