codesys 2.3 Convertir hexa en decimal

Forum traitant des automates industriels de marque Wago et du logiciel codesys
Mrjack
Code son premier grafcet
Code son premier grafcet
Messages : 45
Inscription : 09 févr. 2017, 08:54

Re: codesys 2.3 Convertir hexa en decimal

Message par Mrjack »

philou77 a écrit : 30 oct. 2018, 13:02 Salut,

Ta valeur doit bien être localisée dans ton automate à une adresse définie...
Si tu déclare une nouvelle Variable à l'adresse de RxData[7] en format WORD, tu accèderas directement à ta valeur par cette nouvelle variable.
Valeur qui est en BCD, une simple conversion bcd to int te donnera ta température en décimal (si tu y tiens vraiment)
(*Variables bloc de réception TH1*)
CAN_Rx2 : CAN_L2_RX_29BIT_FRAME;
RxData :ARRAY[1..8] OF BYTE; (* lieu de réception des données retournées*)
tempth1 AT%MB0 :BYTE ;
(*wCAN_ID2 : WORD:=16#8FDCDD7;*)
Rx2readframe : BOOL;
confirmRx2 : BOOL;
counterRx2 : WORD;
error_29BitRx2 : CAN_eL2_FRAME_ERROR;
(* Fin Variables bloc de réception TH1*)

Non, si je mets un AT il est refusé d'accès en écriture. C'est le bloc fonction qui décide de l'emplacement (si j'ai bien compris)
Mrjack
Code son premier grafcet
Code son premier grafcet
Messages : 45
Inscription : 09 févr. 2017, 08:54

Re: codesys 2.3 Convertir hexa en decimal

Message par Mrjack »

itasoft a écrit : 30 oct. 2018, 13:12 slts,
es que ça veut dire que RxData[7] et RxData[8] sont du type BYTE ?
Oui:
(*Variables bloc de réception TH1*)
CAN_Rx2 : CAN_L2_RX_29BIT_FRAME;
RxData :ARRAY[1..8] OF BYTE; (* lieu de réception des données retournées*)
tempth1 AT%MB0 :BYTE ;
(*wCAN_ID2 : WORD:=16#8FDCDD7;*)
Rx2readframe : BOOL;
confirmRx2 : BOOL;
counterRx2 : WORD;
error_29BitRx2 : CAN_eL2_FRAME_ERROR;
(* Fin Variables bloc de réception TH1*)
Mrjack
Code son premier grafcet
Code son premier grafcet
Messages : 45
Inscription : 09 févr. 2017, 08:54

Re: codesys 2.3 Convertir hexa en decimal

Message par Mrjack »

JAPIB a écrit : 30 oct. 2018, 13:57 Une petite idée en Ladder. (Pour faire cela le ST serait plus "simple" à écrire.)

Cordialement.
Merci pour ta réponse,
J'ai essayé, mais le resultat n'est pas exact en décimal (voir capture)
J'ai oublié quelque chose?
Pièces jointes
Capture7.JPG
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: codesys 2.3 Convertir hexa en decimal

Message par philou77 »

Oui,

Il faut ajouter 255 et pas 256 pour basculer de l'octet de poids faible (comptage max de 0 à 255 sur un octet ce qui fait bien 256 valeurs) à l'octet de poids fort !

D'ou ton erreur de résultat !



Merci à JAPIB

Edit: Pardon, je me suis trompé... pas vu la multiplication !
Dernière modification par philou77 le 31 oct. 2018, 12:45, modifié 1 fois.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Mrjack
Code son premier grafcet
Code son premier grafcet
Messages : 45
Inscription : 09 févr. 2017, 08:54

Re: codesys 2.3 Convertir hexa en decimal

Message par Mrjack »

En fait la valeur lu avec ta méthode est la même que la valeur physique affichée sur le thermostat.
Donc merci beaucoup, cela fonctionne.
Par contre avec la calculatrice windows.....Il y a un écart... Comme expliquer?

Merci beaucoup encore :-)
Mrjack
Code son premier grafcet
Code son premier grafcet
Messages : 45
Inscription : 09 févr. 2017, 08:54

Re: codesys 2.3 Convertir hexa en decimal

Message par Mrjack »

philou77 a écrit : 30 oct. 2018, 17:54 Oui,

Il faut ajouter 255 et pas 256 pour basculer de l'octet de poids faible (comptage max de 0 à 255 sur un octet ce qui fait bien 256 valeurs) à l'octet de poids fort !

D'ou ton erreur de résultat !



Merci à JAPIB
Yep!
Merci beaucoup :-)
Avatar de l’utilisateur
JAPIB
Aguerri de l'automation
Aguerri de l'automation
Messages : 84
Inscription : 20 oct. 2015, 23:32
Localisation : Lyon

Re: codesys 2.3 Convertir hexa en decimal

Message par JAPIB »

Dans quel mode de représentation à été copié ton écran Mrjack : Décimal, hexadécimal, binaire ?

J'ai refait la manip avec les valeurs que tu nous donnais dans ton premier message, à savoir 1 et 16 en hexa.
Mes copies d'écrans précédentes étaient en décimal.
Les nouvelles copies d'écran sont en affichage Hexa et la calculatrice windows (en mode programmeur) calcul correctement.
Image 6.jpg
Image 7.jpg
Comme souvent, tout est une affaire de point de vue :D
Mrjack
Code son premier grafcet
Code son premier grafcet
Messages : 45
Inscription : 09 févr. 2017, 08:54

Re: codesys 2.3 Convertir hexa en decimal

Message par Mrjack »

Ma calculatrice déconne?!
Voir la capture, je ne comprends pas.
je mets 0124 en hex et la correspondance décimale est 292....Alors que c'est 280 (28°)????
Je ne capte pas là...
Pièces jointes
Capture8.JPG
Avatar de l’utilisateur
JAPIB
Aguerri de l'automation
Aguerri de l'automation
Messages : 84
Inscription : 20 oct. 2015, 23:32
Localisation : Lyon

Re: codesys 2.3 Convertir hexa en decimal

Message par JAPIB »

Ta copie d'écran montre que les valeurs affichées dans CoDeSys le sont en décimal.
Le 24 que tu vois et exprimé en décimal.
En réalité 24 (en base 10) correspond à 18 en hexadécimal (en base 16).
Et si tu convertis 118 d'hexadécimal en décimal tu retrouves bien la valeur 280. :)

Dans CoDeSys, pour voir les valeurs en hexadécimal il faut faire un clic droit sur les valeurs des variables, dans les variables globales par exemple et choisir Hexadécimal. A ce moment les valeurs seront affichées sous la forme 16#18 (au lieu de 24 en décimal).
La notation 16#... indique que la valeur qui suit est exprimée en hexadécimal, pour du binaire on aurait la notation 2#.... (cette représentation n'est pas utilisée que dans CoDeSys).

Le système de l'automate se débrouille avec les valeurs, les représentations (binaire, hexa, décimale) ne sont là que pour nous "faciliter" :oops: :oops: la vie.
L'hexa, par exemple, permet de représenter des grands nombres avec peu de caractères. Ça à été inventé au moment ou les machines informatiques se programmaient en assembleur, avec des valeurs de code exprimée par des valeurs numériques.
Par exemple 32767 (en décimal) s'exprime 7FFF en hexa, 4 caractères au lieu de 5 !

Pour en revenir à CoDeSys, voici ci dessous, un exemple d'affichage avec les valeurs de mon message précédent :
16#16 correspond à 22 (base 10).
La valeur 16#116 convertie en décimal donne bien 278.
Image 8.jpg
Image 9.jpg
Cordialement. :D
Répondre