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 fonctionn
= 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.
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.
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é.
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 » parFUNCBLOCK_1
, la liaison à la sortieOUT
deFUNCBLOCK_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 » parFUNCBLOCK_1
, la liaison à la sortieOUT
deFUNCBLOCK_1
conserve l'ancien statut qu'elle avait lors du dernier cycle correct. La variableOUT1
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
deFUNC_PROC_1
est réglé sur 0, la valeur de la liaison sur la sortieOUT
deFUNC_PROC_1
dépend du paramètre de projet .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
deFUNC_PROC_1
est réglé sur 0, la valeur de la liaison sur la sortieOUT
deFUNC_PROC_1
dépend du paramètre de projet .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.
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éesVAR_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 sortieVAR_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.