Page 1 sur 1

Récupérer 2 INT dans 1 INT

Posté : 10 juin 2024, 16:54
par PLsetPr0
Bonjour,

Je lis dans un équipement en com modbus un REAL dans par exemple le registre 10.

Je dois afficher cette valeur pour mon client en supervision, il faut à tout prix que ce soit un INT.

J'en suis rendu à l'étape ou je récupère 2 INT l'un dans le registre 10 l'autre dans le registre 11.

Comment maintenant avoir cette valeur dans 1 seul INT pour l'envoyer en supervision ? :oops:

Re: Récupérer 2 INT dans 1 INT

Posté : 10 juin 2024, 17:41
par MiGaNuTs
Ton float est un "paquet" de 32 bits, du coup si tu le coupe en 2 tu n'a pas deux int (entiers signés), mais deux word (entiers non signés, ou plus vulgairement 'paquets de 16 bits'). Parce que si tu le coupe en 2 entiers signés, tu a l'information du signe en double, et du coup tu perds un des 32 bits de ton float d'origine.

Plus d'explications par la : https://fr.wikipedia.org/wiki/IEEE_754

Deux autres sujets ou on a déjà abordé la question :

viewtopic.php?p=23934

viewtopic.php?t=2989

Re: Récupérer 2 INT dans 1 INT

Posté : 10 juin 2024, 20:24
par itasoft
le recevoir sur un REAL et faire REAL_TO_INT

Re: Récupérer 2 INT dans 1 INT

Posté : 11 juin 2024, 09:28
par roudy
Bonjour,
De base le modbus c'est des mots de 16bits donc INT, UINT.
Mais, tu peux aussi récupérer des mots doubles codés de 32bits REAL, DINT, qu'il faut exploiter en tant que tel.
Quand tu as lu ton réel, fais comme dis "itasoft" : REAL_TO_INT

Tout est là :

Image

Re: Récupérer 2 INT dans 1 INT

Posté : 11 juin 2024, 11:02
par ericlardechois
Juste par curiosité, c'est quoi 1 et 2 pour les deux tableaux ?

Eric

Re: Récupérer 2 INT dans 1 INT

Posté : 11 juin 2024, 11:11
par roudy
Je sais pas vraiment :shock: je pointe sur une doc. SCHNEIDER
J'ai pas pris le temps de découper/redimensionner/mettre en ligne l'image.
...ni lire la suite. :lol:
C'est le 1 qui est le plus intéressant ici.

Re: Récupérer 2 INT dans 1 INT

Posté : 11 juin 2024, 11:41
par ericlardechois
Ok merci, parce que le 2 correspond pas au 1 pour les %MD !!!

Re: Récupérer 2 INT dans 1 INT

Posté : 11 juin 2024, 11:43
par roudy
J'ai vu aussi, mais seulement une fois que tu m'avais posé la question pour les tableaux.
Je suis passé à côté quand je l'ai mis en ligne.

Re: Récupérer 2 INT dans 1 INT

Posté : 18 juin 2024, 09:00
par PLsetPr0
Pour vous faire un retour cela fonctionne en transformant les 2 INT en WORD, en faisant un WORD_AS_DINT, puis en retransformant mon DINT en INT :)

Il faut faire attention à placer le deuxième Word en premier dans le WORD_AS_DINT chose que je n'avais pas faite ;)