Jiří Programování Mosaic 4. 3. 2021 15:39 4. 3. 2021 15:31

Dobrý den,

narazil jsem na problém a chci se zeptat jestli již existuje knihovna , která ho dovede vyřešit nebo popřípadě nějaký typ co by mi pomohl.

Přes Modbas dostávám 32 bit HEX údaj, který potřebuji převést na Float pomocí IEEE-754. V naději jsem myslel že použiji DWORD_TO_REAL, bohužel jsem nedostal očekávanou odpověď. 

Přesněji dostávám data podobná tomuto 16#424828F6 a mělo by z toho vyjít 50.040001, při použití funkce DWORD_TO_REAL dostávám 1.11201e+09.

Velice děkuji za každou radu.

Odpovědi 2

M.B. 3. 3. 2021 17:53

Dobrý den,

konverze DWORD_TO_REAL provede koverzi, kdy se vezme DWORD jako celočíselná hodnota a ta se vyjádří jako REAL číslo.

Ve Vašem případě 16#424828F6 odpovídá celočíselné hodnotě 1112025334. 

Pokud chcete, aby se program na DWORD číslo díval jako na REAL, lze využít následující možnosti:

  1. Alias (pouze pro globální)
  2. Reference
  3. Pointer
  4. Funkce kopírování bloku paměti Memcpy

Příklady jsou v přiloženém souboru.

Jiří 4. 3. 2021 15:31

Velice moc děkuji za pomoc, takové řešení by mě nenapadlo, ale funguje perfektně.

Tento dotaz je vyřešený.