Не знаю как там в GMWIN.
В Кодесис без использования указателей вычисление в соответствии с этим описанием
Захват-2.png
Можно оформить в виде функции.Код:PROGRAM PLC_PRG VAR ARY_WORD: ARRAY [0..1] OF WORD:=16#4401,16#42E0; (*Данные в виде массива*) epo: INT; (*Порядок*) mant: DINT; (*Мантисса*) factor: REAL; (*Знак*) ARY_WORD_TO_FLOAT: REAL; (*Результат*) END_VAR IF ARY_WORD[0]>32768 THEN factor:=factor:=-1.0; ELSE factor:=factor:=1.0; END_IF epo:=SHR((16#7F80 AND ARY_WORD[0]),7) - 127; (*Для вычисления показателя степени из восьмиразрядного поля порядка вычитается смещение порядка равное 127*) mant:=WORD_TO_DINT(16#7F AND ARY_WORD[0])*65536 + WORD_TO_DINT(ARY_WORD[1]); (*Собираем мантиссу из частей*) mant:=mant+16#800000; (*Для вычисления мантиссы к единице добавляется дробная часть мантиссы из 23-х разрядного поля дробной части мантиссы*) ARY_WORD_TO_FLOAT:=factor*DINT_TO_REAL(mant)/EXPT(2,23-epo); (*Число равно произведению мантиссы со знаком на двойку в степени порядка*)
Пример с Вашими данными
Захват-10.png




Ответить с цитированием