Page 1 sur 2
M580 - Fonction RE (détection de front montant)
Posté : 18 mars 2025, 10:57
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:
Résultat : tant que test reste à 1, la variable k s'incrémente à chaque cycle API.
L'API ignore purement et simplement le RE().
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?
Re: M580 - Fonction RE (détection de front montant)
Posté : 18 mars 2025, 11:32
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 :
C'est ridicule, mais ça marche.

Re: M580 - Fonction RE (détection de front montant)
Posté : 18 mars 2025, 13:03
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
Re: M580 - Fonction RE (détection de front montant)
Posté : 18 mars 2025, 13:48
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
Re: M580 - Fonction RE (détection de front montant)
Posté : 18 mars 2025, 13:49
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.
Re: M580 - Fonction RE (détection de front montant)
Posté : 18 mars 2025, 13:53
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.
Re: M580 - Fonction RE (détection de front montant)
Posté : 18 mars 2025, 14:00
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
Re: M580 - Fonction RE (détection de front montant)
Posté : 18 mars 2025, 14:03
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.
Re: M580 - Fonction RE (détection de front montant)
Posté : 18 mars 2025, 14:45
par Tartuffe
itasoft a écrit : ↑18 mars 2025, 14:00
montre ton code
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.
Re: M580 - Fonction RE (détection de front montant)
Posté : 18 mars 2025, 15:10
par chgui
Hello,
Il faut utiliser les fonctions R_TRIG ou F_TRIG.