Bizarrerie trouvées dans un programme

Forum traitant des automates industriels de marque Schneider - Telemecanique
Répondre
Tartuffe
Asservi son premier moteur
Asservi son premier moteur
Messages : 27
Enregistré le : 06 févr. 2025, 09:22

Bizarrerie trouvées dans un programme

Message par Tartuffe »

Bonjour,

Je suis en train de faire un revamping vers M580 d'un programme de TSX57 qui est déjà un revamping de TSX47... :|

Je trouve plein de bizarreries dans le code dont je n'arrive pas à comprendre l'utilité.

Par exemple:

Code : Tout sélectionner

IF FE(%M60)THEN
	SETSTEP(X_30);
	%M60 := %M60 ;
END_IF;
Qu'est est l’intérêt de la ligne %M60 := %M60?

Le mec a fait ça des dizaines de fois dans le programme, il doit y avoir une raison mais je ne l'explique pas.
Est-ce un vestige d'une pratique qui avait cours sur les automates du siècle dernier?
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7831
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Bizarrerie trouvées dans un programme

Message par itasoft »

Slts,
C’est encore un truc de tordu.
C’est pour que le FE(%M60) ne fonctionne qu’une seule fois dans le même tour de cycle,
Ça veut dire que si plus loin dans le programme ya un autre FE(%M60) ou un RE(%M60) celui ci ne marchera pas.
ps:
Est que plus loin dans le programme ya un autre FE(%M60) un RE(%M60) ?
Automaticien privé (de tout)
itasoft@free.fr
Tartuffe
Asservi son premier moteur
Asservi son premier moteur
Messages : 27
Enregistré le : 06 févr. 2025, 09:22

Re: Bizarrerie trouvées dans un programme

Message par Tartuffe »

Ben ça alors, je ne connaissait pas cette subtilité :shock:

Effectivement, il y a de nombreuses détections de front dans le programme, parfois utilisées plusieurs fois, parfois non. Le mec réécrit sur la variable systématiquement.


Merci pour cette explication, je me coucherai moins bête ce soir.
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 550
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

Re: Bizarrerie trouvées dans un programme

Message par andala »

J'aimerai bien comprendre quand même ce que l'automate comprends
Car affecter M60 à M60 si M60 est a 0 ça le met a 0 et si c'est a 1 ça le met a 1.... :?: :?: :?:
Pourquoi pas avoir mis %M60 := 0 plutôt ?
je comprends pas....
Une bonne action en entraine toujours une autre
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2143
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Bizarrerie trouvées dans un programme

Message par philou77 »

Salut,

Vu que tu fais une affectation au bit, cela a pour conséquence de re évaluer les fronts montant et descendant et donc de les annuler pour le reste du cycle puisque le bit ne change pas d’état.

Une seule possibilité d’exécution pour le cycle automate.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
Bruce33
Dieu du process
Dieu du process
Messages : 960
Enregistré le : 28 oct. 2015, 06:54
Localisation : Pas-de-Calais

Re: Bizarrerie trouvées dans un programme

Message par Bruce33 »

C'est un sujet récurrent, les fronts sur les automates Télémécanique/Schneider.
Ces automates proposent le type de variable EBOOL.
Une variable EBOOL est codée sur un octet contenant la valeur en cours, la valeur précédente et l'état de forçage.
A chaque fois qu'on écrit dans la variables EBOOL, la valeur en cours est recopiée dans la valeur précédente, puis la valeur en cours est mise à jour.
Les instructions de front RE() et FE() utilisent traditionnellement ces informations en comparant la valeur en cours avec la valeur précédente.
Si une variable EBOOL change de valeur alors la détection de front reste vraie tant qu'il n'y a pas de mise à jour de la variable.
(Ce n'est plus aussi vrai avec la version actuelle de Control Expert, qui propose d'ailleurs une option pour la gestion des fronts.)

C'est documenté bien sûr.
En anglais par ici : What is the difference between EBOOL and BOOL
Répondre