Page 1 sur 2

Comportement fonction IEC 61131-3

Posté : 20 juin 2023, 15:54
par djé
Bonjour tout le monde,

Petite question sur la norme IEC 61131-3 et le comportement des fonction standard en lien avec EN/ENO.

EN c'est l'entrée de validation du bloc, si EN n'est pas activé le bloc fonction n'est pas lu.
ENO c'est la sortie de validation du bloc, si une erreur interne a eu lieu, cette sortie est False.

Sur une fonction toute bête d'égalité par exemple programmé en LADDER:

Lorsque A passe de Vrai à Faux comment évolue B ?
testIEC.png
testIEC.png (11.44 Kio) Vu 6945 fois
Est-ce que le comportement est définit par IEC ou c'est laissé à l'appréciation du constructeur/éditeur du logiciel de programmation ?

Vrai question.

Re: Comportement fonction IEC 61131-3

Posté : 20 juin 2023, 16:21
par MiGaNuTs
Bonjour.
Pour moi si A passe a faux le bloc n'est plus exécuté et B conserve la valeur qu'il avait a la fin de l'itération précédente.
Je ne vois pas pourquoi il repasserai a 0 par "magie".

Re: Comportement fonction IEC 61131-3

Posté : 20 juin 2023, 18:25
par itasoft
MiGaNuTs a écrit : 20 juin 2023, 16:21 Bonjour.
Pour moi si A passe a faux le bloc n'est plus exécuté et B conserve la valeur qu'il avait a la fin de l'itération précédente.
Je ne vois pas pourquoi il repasserai a 0 par "magie".
--------
j'ai pas testé mais si ça marche comme tu dis, ça serait la plus grosse connerie du siècle

Re: Comportement fonction IEC 61131-3

Posté : 21 juin 2023, 08:40
par philou77
Salut !

L’entrée EN conditionne se qui se passe à l’intérieur de la fonction.

Si pas activée il y a des chances que le la sortie OUT soit à zéro.

La bobine étant à l’extérieur de la fonction, l’automate fera l’évaluation de la bobine et donc elle prendra l’état de OUT.

J’ai pas testé mais je vois pas pourquoi ça marcherai autrement.

Re: Comportement fonction IEC 61131-3

Posté : 21 juin 2023, 08:41
par MiGaNuTs
itasoft a écrit : 20 juin 2023, 18:25 j'ai pas testé mais si ça marche comme tu dis, ça serait la plus grosse connerie du siècle
Pourquoi donc ?

A partir du moment ou tu n’exécute pas le code d'une fonction ou d'un sous programme y'a aucune raison que ses variables de sortie changent.
Moi c'est le contraire qui m’inquièterai.

Re: Comportement fonction IEC 61131-3

Posté : 21 juin 2023, 09:33
par itasoft
pas testé mais Par défaut sur Unity on as pas les EN/ENO sur ce bloc alors que se passe t'il dans ce cas ?
dire à djé de tester avant de publier son post

Re: Comportement fonction IEC 61131-3

Posté : 21 juin 2023, 10:50
par philou77
Re,

Testé avec Control expert.
La sortie OUT n’est pas modifiée par l’entrée EN.

Si on affiche pas EN/ENO l’entrée EN est forcée à 1

Re: Comportement fonction IEC 61131-3

Posté : 21 juin 2023, 17:51
par steph68
Salut,

La norme dit ceci :
2.5.2.1a Use of EN and ENO in function blocks
As shown in table 20 for functions, for function blocks also an additional Boolean EN (Enable)
input or ENO (Enable Out)output, or both, can be provided by the manufacturer or user
according to the declarations
VAR_INPUT EN: BOOL := 1; END_VAR
VAR_OUTPUT ENO: BOOL; END_VAR
When these variables are used, the execution of the operations defined by the function block
shall be controlled according to the following rules:
1) If the value of EN is FALSE (0) when the function block instance is invoked, the
assignments of actual values to the function block inputs may or may not be made in an
implementation-dependent fashion, the operations defined by the function block body
shall not be executed and the value of ENO shall be reset to FALSE (0) by the
programmable controller system.
2) Otherwise, the value of ENO shall be set to TRUE (1) by the programmable controller
system, the assignments of actual values to the function block inputs shall be made and
the operations defined by the function block body shall be executed. These operations
can include the assignment of a Boolean value to ENO.
3) If the ENO output is evaluated to FALSE (0), the values of the function block outputs
(VAR_OUTPUT) keep their states from the previous invocation.
NOTE It is a consequence of these rules that the ENO output of a function block must be explicitly
examined by the invoking entity if necessary to account for possible error conditions.
@+

Re: Comportement fonction IEC 61131-3

Posté : 21 juin 2023, 18:50
par djé
Merci Steph68

Donc effectivement c'est le comportement normal d'une fonction de ne pas mettre à jour ses sorties et de garder le dernier résultat lorsque l'entrée EN n'est pas validée.

Ça m'a fait drôle la première fois quand j'ai expérimenté ce comportement en Run. J'ai vraiment cru devenir dingue, comme quoi en automatisme on ne peux jamais être sûr de rien et que même sur des fonctions banales, faut lire la doc.

Comme je bosse essentiellement en SIEMENS depuis plus de 20 ans et que eux on va dire sont plus "user- friendly" au niveau du LADDER ils ont masqués ce comportement en STEP7 et carrément créé un nouvelle représentation contact avec TIA. Cela permet de faire du LADDER à l'ancienne sans trop se poser de question.
D'ailleurs en Schenider c'est un peu pareil, ils ont une boite à deux pattes et tu écris ta comparaison dedans. Pas de soucis.

Maintenant sur les systèmes pur IEC avec cette implémentation du EN/ENO c'est plus chaud en LADDER et il faut un peu plus réflechir pour éviter des comportement imprévu: effectivement on peut masquer EN/ENO, mais du coup on ne peut pas les intégrer dans un ligne classique sinon il faut composer et ca devient infernal:
testIEC_alt2.png
ou
testIEC_alt1.png
testIEC_alt1.png (10.64 Kio) Vu 6841 fois

Pareil pour un Simple MOVE conditionné, ne jamais mettre un bobine à la suite du MOVE, chose que j'ai fait moult fois en SIEMENS.
Faut s'adapter.

Re: Comportement fonction IEC 61131-3

Posté : 21 juin 2023, 19:10
par itasoft
c'est une fonction logique , les paramètres EN/ENO ça devrait pas exister,(sur Unity ils ni sont pas par défaut) encore une grosse connerie de norme à la con, ceci dit je vois pas dans quels cas j'utiliserais ces paramètres