PLC texte Structuré, convertir un nombre décimal en réel(float). Ne pas obtenir la valeur je pense. (IEEE-754)

J'ai un matériel qui est en communication avec l'AUTOMATE via Profibus DP, qui envoie
moi 4 octets de données en hexadécimal, c'est "44 79 FF FF" et dans le programme de PLC j'ai déclaré
un tableau d'OCTETS pour cette entrée de données. Le problème est dans l'AUTOMATE les données que je reçois dans mon OCTETS
tableau est "66 121 255 255" qui est la valeur décimale de la séquence hexadécimale, mais mon but est de
convertir une valeur à un RÉEL et quand je fais ça, je ne suis pas la valeur que j'ai prévu.

J'ai créé une valeur DWORD(4bytesData) que j'ai insérer tous les OCTETS.
Donc, avant de me insérez les 4 octets en 4bytesData les octets sont: in1 = 68 , in2 = 121, in3 = 255 & in4 = 255

4bytesData := (SHL(SHL(SHL(BYTE_TO_DWORD(in1), 8) OR BYTE_TO_DWORD(in2), 8) OR     BYTE_TO_DWORD(in3), 8) OR in4);

realValue := DWORD_TO_REAL(4bytesData);

Où in1, in2, in3 & in4 est d'octets 0-3.

La valeur que j'obtiens est; 4bytesData = 1148846079 & realValue = 1.148846 e+009

La valeur que je m'attends à recevoir de realValue est = 9.9999993896484375E2

Si j'utilise ce site (
IEEE754 de l'Analyseur/Convertisseur ) et la conversion de la valeur hexadécimale (4479FFFF) je me fais de la valeur que je veux, et si j'insère la valeur décimale (1148846079) je me fais la même valeur que je reçois dans le PLC.

J'espère que vous comprenez mon problème,
Merci beaucoup à l'Avance.

OriginalL'auteur hijack | 2013-04-18