Date & Heure M340

Forum traitant des automates industriels de marque Schneider - Telemecanique
Répondre
benandnuts
Apprend le binaire
Apprend le binaire
Messages : 4
Enregistré le : 01 févr. 2023, 22:17

Date & Heure M340

Message par benandnuts »

Bonjour,
je suis etudiant en bts et tout frais sur l'automatisme et je dois avouer que ce mélange informatique/electronique me plait particulierement :D .

Je souhaite régler la date et heure d'un M340 via l'appui sur un bp de mise a l'heure sur un IHM
j'ai donc suivi le petit tuto schneider que voici
https://www.se.com/fr/fr/faqs/FA168254/ ... SysClock).

j'ai donc créer des commandes sur l'écran pour entrer la date, l'année et l'heure avec un simple appui pour valider le changement
lors de l'appui je vois bien la date changer mais une fois le bouton relâché , la date reviens à son origine. Je presume que je n'écris pas correctement.
faut il temporisé les informations?
Je passe bien le booleen %S50 à 1
puis je moves les commandes dans les mots correspondant %SW50, %SW51, %SW52 et %SW53 et je fais retomber %S50 à 0.

une petite idée?
merci d'avance
Avatar du membre
Bruce33
Dieu du process
Dieu du process
Messages : 931
Enregistré le : 28 oct. 2015, 06:54
Localisation : Pas-de-Calais

Re: Date & Heure M340

Message par Bruce33 »

Bonjour,

Avez-vous bien mis les valeurs au format BCD ?

J'ai eu ce genre de problème avec un M580 récemment (je ne sais pas s'il y a eu des changements dans le firmware), j'avais l'impression que le fait de mettre %S50 à 1 puis à 0 dans le même cycle de scrutation ça ne fonctionnait pas.
Du coup j'utilise la fonction WRTC_DT.
benandnuts
Apprend le binaire
Apprend le binaire
Messages : 4
Enregistré le : 01 févr. 2023, 22:17

Re: Date & Heure M340

Message par benandnuts »

bonjour,

alors n'etant pas expert , j'ai cherché des fonctions qui permettent de récupérer et afficher les heures depuis les mots systemes et les afficher proprement sur l'écran puis nous avons essayé de faire l'inverse pour écrire dans les mots systèmes (ce qui est peut être interdit non?)

if appui_ecran then
%S50:=1;
sec_byte := INT_TO_BYTE (IN := INT_TO_BCD (IN := ecran_Sec_dec));
minute_byte := INT_TO_BYTE (IN := INT_TO_BCD (IN := ecran_Min_dec));
heure_byte := INT_TO_BYTE (IN := INT_TO_BCD (IN := ecran_H_dec));
jour_byte := INT_TO_BYTE (IN := INT_TO_BCD (IN := ecran_J_dec));
mois_byte := INT_TO_BYTE (IN := INT_TO_BCD (IN := ecran_M_dec));


word1 := BYTE_AS_WORD (LOW := (config_byte),
HIGH := sec_byte);

word2 := BYTE_AS_WORD (LOW := (minute_byte),
HIGH := heure_byte);

word3 := BYTE_AS_WORD (LOW := (jour_byte),
HIGH := mois_byte);

%SW50 := WORD_TO_INT (IN := word1 );
%SW51 := WORD_TO_INT (IN := word2);
%SW52 := WORD_TO_INT (IN := word3);
%SW53:= INT_TO_BCD (IN := Annee_dec);
end_if;

voila ce que le groupe a écrit , on voit bien l'heure changé mais pas enregistré :(
Avatar du membre
Bruce33
Dieu du process
Dieu du process
Messages : 931
Enregistré le : 28 oct. 2015, 06:54
Localisation : Pas-de-Calais

Re: Date & Heure M340

Message par Bruce33 »

Votre programme n'est pas concis mais c'est probablement mieux pour vérifier les différentes étapes du calcul.
On ne voit pas à quel moment intervient la remise à zéro de %S50.
La variable config_byte (dont on ne connait pas la valeur) ne sert à rien, la documentation dit qu'il faut mettre 0.
Écrivez plutôt :
word1 := BYTE_AS_WORD (LOW := 0, HIGH := sec_byte);

Travailler avec %S50 c'est censé marcher (et autorisé bien sûr).
C'était très efficace avec les automates TSX.
Mais avec M340 et M580 (celui-ci étant plus ardu car il travaille en horodatage UTC) il faudrait que je refasse des tests.
Je vous assure que vous aurez moins d'ennuis avec la fonction WRTC_DT !
Cela vous oblige à déclarer une variable de type tableau (ARRAY[0..3] OF INT) mais ça vaut le coup.

Code : Tout sélectionner

IF appui_ecran THEN
    tab[0] := INT_TO_BCD(ecran_Sec_dec) * 16#100;
    tab[1] := INT_TO_BCD(ecran_H_dec) * 16#100 + INT_TO_BCD(ecran_Min_dec);
    tab[2] := INT_TO_BCD(ecran_M_dec) * 16#100 + INT_TO_BCD(ecran_J_dec);
    tab[3] := INT_TO_BCD(Annee_dec);
    WRTC_DT( ARINT_TO_DT(tab) );
END_IF;
Note 1 :
Multiplier par 16#100 revient à réaliser un décalage de 8 bits vers la gauche, par exemple SHL(INT_TO_BCD(ecran_Sec_dec),8).
C'est au choix.

Note 2 :
Bien sûr il ne faut pas que l'afficheur envoie n'importe quoi comme valeur !
Je ne fais pas de vérification de cohérence dans l'automate car je considère que les règles sont définies dans l'afficheur.
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1953
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: Date & Heure M340

Message par Béryl »

Pour ma part, j'ai constaté que les IHM Schneider (au moins les GTO) avaient une dérive importante de leur horloge dans le temps.
Ils retardent tous d'une bonne dizaine de minutes au bout de quelques mois.
Les horloges de CPU (TSX ou BMX) sont plus stables.
benandnuts
Apprend le binaire
Apprend le binaire
Messages : 4
Enregistré le : 01 févr. 2023, 22:17

Re: Date & Heure M340

Message par benandnuts »

bonjour bruce,
oui décomposer le programme nous permet de savoir où nous en sommes plus rapidement
effectivement la fonction WRTC_DT fais bien mieux le travail :D .

merci de votre aide, en espérant que cela aide de futurs étudiants/utilisateurs
Répondre