Problème réglage de l'heure par programmation

Forum traitant des automates industriels de marque Schneider - Telemecanique
Répondre
JulienG
Code sa première boucle
Code sa première boucle
Messages : 13
Enregistré le : 18 nov. 2016, 09:35

Problème réglage de l'heure par programmation

Message par JulienG » 17 févr. 2017, 14:57

Bonjour,

Je viens vers vous pour une petit problème pour régler l'heure d'un automate M340. Je m'explique, je reçois par une supervision 6 INT:
Synchro_annee = 2017 (en décimal)
Synchro_mois = 02
Synchro_jour = 17
Synchro_heure = 14
Synchro_minute = 36
Synchro_seconde = 00

En plus de cela, je reçois une variable booléenne Top_horloge pour prendre en compte les valeurs. Dans la pratique, je reçois d'abord les INT et ensuite le bit.

Mon problème étant que je n'arrive pas à faire la "conversion" des mots en décimal en héxa pour ensuite les mettre dans les mots %SW50 à %SW53, mon code est le suivant:

IF TC_Top_horloge THEN
%S50:=1;
%SW50:=Synchro_seconde AND 16#FF00;
%SW51:=(Synchro_heure AND 16#FF00)+(Synchro_minute AND 16#00FF);
%SW52:=(Synchro_mois AND 16#FF00)+(Synchro_jour AND 16#00FF);
%SW53:=Synchro_annee;
END_IF;

TON_524 (IN := TC_Top_horloge AND %S50(*BOOL*),
PT := t#1s(*TIME*),
Q => Fin_synchro(*BOOL*),
ET => Int_synchro(*TIME*));

IF Fin_synchro THEN
TC_Top_horloge:=0;
%S50:=0;
END_IF;


Concrètement la supervision m'envoie 2017 pour l'année par exemple et j'aimerai récupérer cette valeur en héxa et donc avoir 16#2017 et non pas la conversion de 2017 en hexa.

Si quelqu'un a une idée pour me débloquer un peu, ça serait super.

Merci d'avance =)

Avatar de l’utilisateur
Ulairi
Codeur fou
Codeur fou
Messages : 286
Enregistré le : 20 oct. 2015, 06:22

Re: Problème réglage de l'heure par programmation

Message par Ulairi » 17 févr. 2017, 15:25

JulienG a écrit :
17 févr. 2017, 14:57
Mon problème étant que je n'arrive pas à faire la "conversion" des mots en décimal en héxa pour ensuite les mettre dans les mots %SW50 à %SW53,
Bonjour,

les mots %SW50 à %SW53 ne sont pas au format hexadécimal mais au format BCD !

Image
Enseignant en BTS électrotechnique (Pas taper sur l'intru !)

JulienG
Code sa première boucle
Code sa première boucle
Messages : 13
Enregistré le : 18 nov. 2016, 09:35

Re: Problème réglage de l'heure par programmation

Message par JulienG » 17 févr. 2017, 16:28

Merci, je me suis rendu compte de mon problème, je l'ai corrigé en appliquant mes masques et en utilisant la fonction INT_TO_BCD et ça marche bien.

shahid
Apprend le binaire
Apprend le binaire
Messages : 1
Enregistré le : 13 juil. 2019, 11:34

Re: Problème réglage de l'heure par programmation

Message par shahid » 13 juil. 2019, 11:50

JulienG a écrit :
17 févr. 2017, 14:57
Bonjour,

Je viens vers vous pour une petit problème pour régler l'heure d'un automate M340. Je m'explique, je reçois par une supervision 6 INT:
Synchro_annee = 2017 (en décimal)
Synchro_mois = 02
Synchro_jour = 17
Synchro_heure = 14
Synchro_minute = 36
Synchro_seconde = 00

En plus de cela, je reçois une variable booléenne Top_horloge pour prendre en compte les valeurs. Dans la pratique, je reçois d'abord les INT et ensuite le bit.

Mon problème étant que je n'arrive pas à faire la "conversion" des mots en décimal en héxa pour ensuite les mettre dans les mots %SW50 à %SW53, mon code est le suivant:

IF TC_Top_horloge THEN
%S50:=1;
%SW50:=Synchro_seconde AND 16#FF00;
%SW51:=(Synchro_heure AND 16#FF00)+(Synchro_minute AND 16#00FF);
%SW52:=(Synchro_mois AND 16#FF00)+(Synchro_jour AND 16#00FF);
%SW53:=Synchro_annee;
END_IF;

TON_524 (IN := TC_Top_horloge AND %S50(*BOOL*),
PT := t#1s(*TIME*),
Q => Fin_synchro(*BOOL*),
ET => Int_synchro(*TIME*));

IF Fin_synchro THEN
TC_Top_horloge:=0;
%S50:=0;
END_IF;


Concrètement la supervision m'envoie 2017 pour l'année par exemple et j'aimerai récupérer cette valeur en héxa et donc avoir 16#2017 et non pas la conversion de 2017 en hexa.

Si quelqu'un a une idée pour me débloquer un peu, ça serait super.

Merci d'avance =)
bonjour Julien, je suis un peu nouveau à tout ça et donc je serai vraiment reconnaissant si tu peux m'expliquer pourquoi t'as rajouté les 16#00FF ?
en fait, j'ai devant mes yeux un programme pour la synchronisation des horloges de supervision et automate mais je le comprend pas parfaitement

Répondre