M580 - Fonction RE (détection de front montant)

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

M580 - Fonction RE (détection de front montant)

Message par Tartuffe »

Bonjour à tous,

Je suis dans Contrôle Expert Classic V15.

Je n'arrive plus à faire fonctionner la fonction RE en langage ST.
Le code est simple comme bonjour:

Code : Tout sélectionner

IF RE(test) THEN 
	k:=k+1; 
END_IF; 
Résultat : tant que test reste à 1, la variable k s'incrémente à chaque cycle API.
L'API ignore purement et simplement le RE(). :shock:

J'ai essayé en simu puis en réel avec un P58 4040, le comportement est le même...

Y a-t-il un bug avec la V15 ou une subtilité qui m'échappe?
Tartuffe
Asservi son premier moteur
Asservi son premier moteur
Messages : 21
Enregistré le : 06 févr. 2025, 09:22

Re: M580 - Fonction RE (détection de front montant)

Message par Tartuffe »

J'ai trouve ma réponse.
La détection de front sur un EBOOL ne fonctionne que si l'EBOOL est écrit à chaque cycle.

Donc pour détecter un front sur la variable 'test' qui n'est pas écrite à chaque cycle API, il faut ajouter une variable auxiliaire :

Code : Tout sélectionner

x_test:=test;
IF RE(x_test) THEN 
	k:=k+1; 
END_IF; 
C'est ridicule, mais ça marche.
:|
roudy
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 144
Enregistré le : 19 janv. 2019, 17:28

Re: M580 - Fonction RE (détection de front montant)

Message par roudy »

Moi, j'utilise presque jamais les fonctions toutes faites pour les fronts.
Front_montant := A and not Mem_A
Mem_A := A
ça marche toujours
Si c'est pas clair dans ta tête, ce sera bien pire dans ton code.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7803
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: M580 - Fonction RE (détection de front montant)

Message par itasoft »

C'est ridicule, mais ça marche.
-----------------
C’est pas ridicule mais logique, tu est en simulation ou tu met le bit à 1 dans une table d'animation, l’état du bit test n’est jamais vu dans le programme, ça peut pas marcher
Automaticien privé (de tout)
itasoft@free.fr
Tartuffe
Asservi son premier moteur
Asservi son premier moteur
Messages : 21
Enregistré le : 06 févr. 2025, 09:22

Re: M580 - Fonction RE (détection de front montant)

Message par Tartuffe »

Oui c'est sûr, mais si on ne peut pas faire confiance à une fonction aussi basique qu'un front et qui est dans la bibliothèque standard depuis 20 ans, il y a de quoi se poser des questions.
C'est comme si on devait coder nous même nos tempos parce que les TON ne fonctionnais pas les années bissextiles... Ça me dépite.
Tartuffe
Asservi son premier moteur
Asservi son premier moteur
Messages : 21
Enregistré le : 06 févr. 2025, 09:22

Re: M580 - Fonction RE (détection de front montant)

Message par Tartuffe »

itasoft a écrit : 18 mars 2025, 13:48 C’est pas ridicule mais logique, tu est en simulation ou tu met le bit à 1 dans une table d'animation, l’état du bit test n’est jamais vu dans le programme, ça peut pas marcher
Non, j'ai simplifié l'exemple de code que j'ai posté mais dans mon code réel le bit est bien mis à 1 par programme.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7803
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: M580 - Fonction RE (détection de front montant)

Message par itasoft »

Non, j'ai simplifié l'exemple de code que j'ai posté mais dans mon code réel le bit est bien mis à 1 par programme.
------------------------
montre ton code
Automaticien privé (de tout)
itasoft@free.fr
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: M580 - Fonction RE (détection de front montant)

Message par philou77 »

Salut !

Sans vouloir polémiquer, les fonctions implémentés sont documentées. L’erreur se trouve souvent entre la chaise et le clavier.
Faut faire avec ou sans, mais jamais contre.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Tartuffe
Asservi son premier moteur
Asservi son premier moteur
Messages : 21
Enregistré le : 06 févr. 2025, 09:22

Re: M580 - Fonction RE (détection de front montant)

Message par Tartuffe »

itasoft a écrit : 18 mars 2025, 14:00 montre ton code

Code : Tout sélectionner

(* Section lecture RFID *)
PrésenceP11 := rfid_P11 <>0;

Code : Tout sélectionner

(* Section génération des données *)
IF RE(PrésenceP11) THEN
	Suivi[rfid_P11].SN := Table_Palette_SN_PMS[Num_Pal_Index_P11]
	Suivi[rfid_P11].Code := CONCAT_STR (IN1 := Ref_A_Graver,IN2 := Horodatage_Produit);
	P11_Pret := TRUE;
END_IF;

IF NOT PrésenceP11 THEN
	P11_Pret := FALSE;
END_IF;

Code : Tout sélectionner

(* Section Suivi palettes *)
IF RE(P11_Pret) THEN
	FOR i:=1 TO maxpal BY 1 DO
 		If Suivi_Palettes[i].No = 0 THEN
			Suivi_Palettes[i].No := rfid_P11;
			EXIT;
		END_IF;
 	END_FOR;
END_IF;
--> Le RE(PrésenceP11) fonctionne bien car PrésenceP11 est ecrit à chaque cycle.
--> RE(P11_Pret) ne fonctionne pas car P11_Pret est n'est écrit qu'une fois.


philou77 a écrit : 18 mars 2025, 14:03 Sans vouloir polémiquer, les fonctions implémentés sont documentées. L’erreur se trouve souvent entre la chaise et le clavier.
Faut faire avec ou sans, mais jamais contre.
Je le sais bien, c'est d'ailleurs dans la doc que j'ai trouvé l'explication. Mais ce n'était pas écrit dans l'aide de la fonction 'RE', mais dans l'aide sur 'Edge Recognition'.

Malgré tout je maintiens que ce comportement est ridicule. Tous les concurents de Schneider proposent des détections de front qui fonctionnent quel que soit la manière dont le bit est écrit.
Avatar du membre
chgui
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 126
Enregistré le : 20 oct. 2015, 08:05
Localisation : Amiens

Re: M580 - Fonction RE (détection de front montant)

Message par chgui »

Hello,

Il faut utiliser les fonctions R_TRIG ou F_TRIG.
Répondre