Skip to main content

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 Projet → Ajouter un objet → POU. Dans l'arborescence des appareils ou dans le POU vue, les blocs fonctionnels POU ont la (FB) suffixe.

Il 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 :

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.

Exemple 512. Exemple

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 :

_cds_img_fb_call_fup.png


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 =>.

Exemple 513. Exemple

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.