Introduction

FFB est le terme générique pour :

Les FFB occupent une largeur de 1 à 3 colonnes (en fonction de la longueur des noms des paramètres formels) et une longueur de 2 à 33 lignes (en fonction du nombre de lignes des paramètres formels).

Fonction élémentaire

Les fonctions n'ont pas d'état interne. Lorsque les valeurs d'entrée sont identiques, la valeur de sortie est la même à chaque appel de la fonction. Par exemple, l'addition de deux valeurs donne toujours le même résultat.

Une fonction élémentaire est représentée graphiquement sous la forme d'un cadre avec des entrées et une sortie. Les entrées sont toujours représentées à gauche du cadre, et la sortie toujours à droite.

Le nom de la fonction, c’est-à-dire son type, figure au centre du cadre.

Le numéro d'exécution de la fonction apparaît à droite du type de fonction.

Le numéro de la fonction se trouve au-dessus du cadre. Il représente le numéro séquentiel de la fonction dans la section actuelle. Les numéros de fonction ne sont pas modifiables.

Fonction élémentaire

Pour certaines fonctions élémentaires, il est possible d'augmenter le nombre d'entrées.

Bloc fonction élémentaire

Les blocs fonction élémentaires ont des états internes. Si les valeurs d'entrée sont identiques, la valeur de sortie peut varier à chaque appel de la fonction. Par exemple, pour un compteur, la valeur de sortie augmente.

Un bloc fonction élémentaire est représenté graphiquement sous la forme d'un cadre avec des entrées et des sorties. Les entrées sont toujours représentées sur la gauche et les sorties toujours sur la droite du cadre. Le nom du bloc fonction, c'est-à-dire le type de bloc fonction, est affiché au centre du cadre. Le nom d'instance est affiché au-dessus du cadre.

Les blocs fonction peuvent avoir plusieurs sorties.

Le nom du bloc fonction, c'est-à-dire le type de bloc fonction, apparaît au centre du cadre.

Le numéro d'exécution du bloc fonction apparaît à droite du type de bloc fonction.

Le nom d'instance apparaît au-dessus du cadre.

Le nom d’instance permet d’identifier précisément le bloc fonction dans un projet.

Le nom d'instance est généré automatiquement et il est associé à la structure suivante : TYPE_n où TYPE correspond au nom du type de bloc de fonction : TYPE_n

  • TYPE = Type de bloc fonction

  • n = numéro courant du bloc fonction au sein du projet

Pour plus de clarté, vous pouvez modifier ces noms générés automatiquement. Le nom d'instance (32 caractères maximum) doit être unique dans tout le projet ; majuscules et minuscules ne sont pas différenciées. Le nom d'instance doit respecter les conventions de noms générales.

NOTE : conformément à la norme IEC 61131-3, les noms d'instance doivent commencer par une lettre. Si vous voulez également utiliser un chiffre comme premier caractère, vous devez le déclarer explicitement.

Bloc fonction élémentaire

DFB

Les blocs fonction dérivés (DFB) ont les mêmes caractéristiques que les blocs fonction élémentaires. Ils sont cependant créés par l'utilisateur dans les langages FBD, LD, IL et/ou ST.

L'unique différence par rapport aux blocs fonction élémentaires est que le bloc fonction dérivé est représenté graphiquement sous la forme d'un cadre avec deux lignes verticales.

Bloc fonction dérivé

Procédure

Techniquement, les procédures sont des fonctions.

L'unique différence par rapport aux fonctions élémentaires est que les procédures peuvent comprendre plus d'une sortie et qu'elles prennent en charge le type de données VAR_IN_OUT.

En apparence, les procédures ne sont pas différentes des fonctions élémentaires.

Les procédures sont une extension de la norme CEI 61131-3 et doivent être activées de manière explicite.

Procédure

Paramètres

Des entrées et des sorties permettent de transférer les valeurs vers ou depuis un FFB. Ces entrées et ces sorties sont appelées « paramètres formels ».

Les paramètres formels sont liés à des objets qui comprennent les états courants du processus. Ces objets sont appelés « paramètres réels ».

Paramètres formels et réels :

Durant l'exécution du programme, les valeurs sont transmises, par le biais des paramètres réels, du processus au FFB, et renvoyées à nouveau en sortie après le traitement.

Seul un objet (paramètre réel) des types de données suivants peut être relié aux entrées d'un FFB :

  • Contact

  • Variable

  • Adresse

  • Littéral

  • Expression ST

    Les expressions ST des entrées d'un FFB représentent une extension de la norme IEC 61131-3 et doivent être activées de manière explicite.

  • Liaison

Les combinaisons d'objets (paramètres réels) suivantes peuvent être reliées aux sorties d'un FFB :

  • une ou plusieurs bobines

  • un ou plusieurs contacts

  • une variable,

  • une variable et une ou plusieurs liaisons (non valable pour les sorties VAR_IN_OUT)

  • une adresse,

  • une adresse et une ou plusieurs liaisons (non valable pour les sorties VAR_IN_OUT)

  • une ou plusieurs liaisons (non valable pour les sorties VAR_IN_OUT)

Le type de données de l'objet à relier doit correspondre à celui de l’entrée/la sortie du FFB. On choisira un type de données adapté au bloc fonction, si tous les paramètres réels sont des valeurs littérales.

Exception : pour les entrées/sorties FFB génériques de type de données ANY_BIT, des objets de type de données INT ou DINT (pas UINT ni UDINT) peuvent être reliés.

Il s'agit d'une extension de la norme IEC 61131-3, qui doit faire l'objet d'une activation explicite.

Exemple :

Autorisé :

Non autorisé :

(Dans ce cas AND_INT doit être utilisé.)

Il n'est en principe pas nécessaire d'affecter un paramètre réel à tous les paramètres formels. Cependant, cela n'est pas valable pour les broches inversées. Un paramètre réel doit toujours leur être affecté. Cela vaut également pour certains types de paramètre formel. Pour connaître les types concernés, consultez le tableau suivant.

Tableau des types de paramètre formel :

Type de paramètre

EDT

STRING

ARRAY

ANY_ARRAY

IODDT

DDT d'équipement

STRUCT

FB

ANY

EFB : Entrée

-

-

-

-

/

/

-

/

-

DFB: Sortie

-

-

+

/

/

/

-

/

+

EFB : VAR_IN_OUT

+

+

+

+

+

/

+

/

+

DFB : Entrée

-

-

-

-

/

+

-

/

-

DFB : VAR_IN_OUT

+

+

+

+

+

+

+

/

+

EFB: Sortie

-

-

+

+

+

/

-

/

+

EF : Entrée

-

-

-

-

+

/

-

+

-

EF : VAR_IN_OUT

+

+

+

+

+

/

+

/

+

EF : Sortie

-

-

-

-

-

-

-

/

-

Procédure : Entrée

-

-

-

-

+

/

-

+

-

Procédure : VAR_IN_OUT

+

+

+

+

+

/

+

/

+

Procédure : Sortie

-

-

-

-

-

/

-

/

+

+ Paramètre réel impératif

- Paramètre réel non obligatoire. C'est la règle, mais certains FFB font exception. Par exemple, lorsque certains paramètres servent à caractériser les informations que le FFB doit fournir.

/ Non applicable

Les FFB utilisant des paramètres réels sur les entrées auxquelles aucune valeur n'a encore été affectée, fonctionnent avec les valeurs initiales de ces paramètres réels.

Si aucune valeur n'est affectée à un paramètre formel, la valeur initiale est utilisée pendant l'exécution du bloc fonction. Si aucune valeur initiale n'est définie, la valeur par défaut (0) est utilisée.

Si aucune valeur n'est affectée à un paramètre formel et que le bloc fonction/DFB a été instancié à plusieurs reprises, les instances appelées par la suite travaillent avec l'ancienne valeur.

NOTE : Une broche d'entrée ANY_ARRAY_xxx non connectée crée automatiquement un tableau masqué comportant 1 élément.

Variables publiques

Certains blocs fonction disposent non seulement d'entrées et de sorties, mais également de variables publiques (Public Variables).

Ces variables permettent de transmettre des valeurs statistiques (valeurs non influencées par le procédé) au bloc fonction. Elles sont donc utilisées lors du paramétrage du bloc fonction.

Les variables publiques sont une extension de la norme IEC 61131-3.

Les valeurs sont affectées aux variables publiques avec leur valeur initiale.

Les variables publiques sont ensuite lues via le nom d'instance du bloc fonction et le nom de la variable publique.

Exemple :

Variables privées

Certains blocs fonction disposent non seulement d'entrées, de sorties et de variables publiques, mais également de variables privées.

A l'instar des variables publiques, ces variables servent à transmettre des valeurs statistiques (non influencées par le processus) au bloc fonction.

Le programme utilisateur n'a pas accès à ces variables. Seule la table d'animation en a la capacité.

NOTE : les DFB imbriqués sont déclarés comme des variables privées du DFB parent. Ainsi, leurs variables ne sont pas accessibles via la programmation, mais via la table d'animation.

Les variables privées sont une extension de la norme IEC 61131-3.

Remarques sur la programmation

Gardez à l'esprit les remarques suivantes sur la programmation :

  • Les FFB ne sont traités que lorsqu'ils sont connectés directement ou indirectement à la barre d'alimentation gauche.

  • Si le FFB doit être exécuté de façon conditionnelle, l'entrée EN peut être préalablement reliée par des contacts ou d'autres FFB.

  • Les entrées et sorties booléennes peuvent être inversées.

  • Des conditions particulières s'appliquent lors de l'utilisation de variables VAR_IN_OUT.

  • Les instances de bloc fonction/DFB peuvent être appelées plusieurs fois.

Appel multiple d'une instance de bloc fonction

Les instances de DFB ou bloc fonction peuvent être appelées à plusieurs reprises, à l'exception des instances d'EFB de communication et blocs fonction/DFB ayant une sortie ANY mais pas d'entrée ANY, qui ne peuvent être appelées qu'une seule fois.

L'appel multiple d'une même instance de DFB/bloc fonction est, par exemple, utile dans les cas suivants :

  • Si le bloc fonction/DFB n'a aucune valeur interne ou s'il n'est pas nécessaire pour un traitement ultérieur.

    Dans ce cas, l'appel multiple de la même instance de DFB/bloc fonction permet d'économiser de l'espace mémoire, car le code du bloc fonction/DFB n'est chargé qu'une seule fois.

    Le bloc fonction/DFB est, pour ainsi dire, traité comme une « fonction ».

  • Si le bloc fonction/DFB a une valeur interne censée influencer différents segments du programme, la valeur d'un compteur, par exemple, doit être augmentée en différents endroits du programme.

    Dans ce cas, l'appel multiple de la même instance de bloc fonction/DFB permet de ne pas sauvegarder les résultats intermédiaires en vue d'un traitement ultérieur à un autre endroit du programme.

EN et ENO

Une entrée EN et une sortie ENO peuvent être configurées pour tous les FFB.

Si la valeur de EN est déjà à « 0 », lors de l'appel de FFB, les algorithmes définis par FFB ne sont pas exécutés et ENO est réglé sur « 0 ».

Si la valeur de EN est déjà à « 1 », lors de l'appel de FFB, les algorithmes définis par FFB sont exécutés. Après l'exécution sans erreur de ces algorithmes, la valeur de ENO est réglée sur « 1 ». Si une erreur se produit durant l'exécution de ces algorithmes, ENO est réglé sur « 0 ».

Si aucune valeur n'est attribuée à la broche EN à l'appel du FFB, l'algorithme défini par ce dernier est exécuté (comme lorsque EN a la valeur « 1 »). Reportez-vous à la section Maintenir les liens de sortie sur les EF désactivés.

Si ENO est réglé sur « 0 » (car EN = 0 ou en raison d'une erreur d'exécution) :

  • Blocs fonction

    • Traitement des paramètres EN/ENO avec des blocs fonction qui possèdent (uniquement) une liaison en tant que paramètre de sortie :

      Lorsque EN est réglé sur « 0 » par FUNCBLOCK_1, la liaison à la sortie OUT de FUNCBLOCK_1 conserve l'ancien statut qu'elle avait lors du dernier cycle correct.

    • Traitement EN/ENO pour les blocs fonction ayant une variable et une liaison comme paramètre de sortie :

      Lorsque EN est réglé sur « 0 » par FUNCBLOCK_1, la liaison à la sortie OUT de FUNCBLOCK_1 conserve l'ancien statut qu'elle avait lors du dernier cycle correct. La variable OUT1 située sur la même broche conserve son ancien statut ou peut être modifiée depuis l'extérieur sans avoir d'influence sur la liaison. La variable et la liaison sont enregistrées indépendamment l'une de l'autre.

  • Fonctions/procédures

    Selon la définition CEI 61131-3, les sorties de fonctions désactivées (entrée EN mise à « 0 ») sont indéfinies. (Cette caractéristique s'applique également aux procédures.)

    Voici, néanmoins, une explication des états des sorties dans un tel cas :

    • Traitement EN/ENO pour les fonctions/procédures ayant (seulement) une liaison comme paramètre de sortie :

      Si EN de FUNC_PROC_1 est réglé sur 0, la valeur de la liaison sur la sortie OUT de FUNC_PROC_1 dépend du paramètre de projet Maintenir les liens de sortie sur les EF désactivés .

      Si ce paramètre de projet est réglé sur 0, la valeur de la liaison est 0.

      Si ce paramètre de projet est réglé sur 1, la liaison conserve la valeur qu'elle avait lors du dernier cycle exécuté correctement.

      Pour plus d'informations, consultez la section Maintenir les liens de sortie sur les EF désactivés.

    • Traitement EN/ENO pour les fonctions/procédures ayant une variable et une liaison comme paramètre de sortie :

      Si EN de FUNC_PROC_1 est réglé sur 0, la valeur de la liaison sur la sortie OUT de FUNC_PROC_1 dépend du paramètre de projet Maintenir les liens de sortie sur les EF désactivés .

      Si ce paramètre de projet est réglé sur 0, la valeur de la liaison est 0.

      Si ce paramètre de projet est réglé sur 1, la liaison conserve la valeur qu'elle avait lors du dernier cycle exécuté correctement.

      Pour plus d'informations, consultez la section Maintenir les liens de sortie sur les EF désactivés.

      La variable OUT1 située sur la même broche conserve son ancien statut ou peut être modifiée depuis l'extérieur sans avoir d'influence sur la liaison. La variable et la liaison sont enregistrées indépendamment l'une de l'autre.

Le comportement aux sorties des FFB est indépendant du fait que les FFB soient appelés sans EN/ENO ou avec EN = 1.

NOTE : pour les blocs fonction désactivés (EN = 0) équipés d'une fonction d'horloge interne (par exemple, le bloc fonction DELAY), le temps semble continuer de s'écouler, car il est calculé à l'aide d'une horloge système et est, par conséquent, indépendant du cycle du programme et de la libération du bloc.

Variable VAR_IN_OUT

Les FFB sont souvent utilisés pour lire une variable à l'entrée (variables d'entrée), pour la traiter et pour transmettre de nouveau les valeurs modifiées de cette même variable (variables de sortie).

Ce cas exceptionnel d'une variable d'entrée/de sortie est également appelé variable VAR_IN_OUT.

Dans le FFB, une ligne indique que les variables d'entrée et de sortie sont liées l'une à l'autre.

Variable VAR_IN_OUT

Il convient de noter les particularités suivantes en cas d'utilisation de FFB avec des variables VAR_IN_OUT :

  • une variable doit être affectée à toutes les entrées VAR_IN_OUT.

  • les liaisons graphiques permettent uniquement de relier des sorties VAR_IN_OUT à des entrées VAR_IN_OUT.

  • seule une liaison graphique unique peut être reliée à une entrée/sortie VAR_IN_OUT.

  • une combinaison de variables/d'adresses et de liaisons graphiques n'est pas possible pour les sorties VAR_IN_OUT.

  • il est interdit de relier des valeurs littérales ou des constantes à des entrées/sorties VAR_IN_OUT.

  • il est interdit d'utiliser des négations au niveau des entrées/sorties VAR_IN_OUT.

  • des variables/composantes de variables différentes peuvent être reliées à l'entrée VAR_IN_OUT et à la sortie VAR_IN_OUT. Dans un tel cas, la valeur de la variable/composante de variable à l'entrée est copiée dans la variable/composante de variable à la sortie.