Перестановка байт
Код:
PROGRAM PLC_PRG
VAR
ptFl: POINTER TO REAL;
ptDw: POINTER TO DWORD;
height: REAL;
height_2: REAL;
SWAP_BYTE_C: DWORD;
END_VAR
ptDw:=ADR(height_tmp);
(*В зависимости от параметра Byte Sequence в UMD нужно использовать
или этот вариант*)
SWAP_BYTE_C:=(ROL(ptDw^,8) AND 16#FF00FF00) OR (ROR(ptDw^,8) AND 16#00FF00FF);
ptFl:=ADR(SWAP_BYTE_C);
height:=ptFl^;
(*Или этот вариант*)
SWAP_BYTE_C:=(ROR(ptDw^,8) AND 16#FF00FF00) OR (ROL(ptDw^,8) AND 16#00FF00FF);
ptFl:=ADR(SWAP_BYTE_C);
height_2:=ptFl^;
Тут два варианта для разных значений Byte Sequence в UMD - height и height_2
height_tmp - это именованная переменная в слейве ПЛК
Захват-2.png
Результат с Вашим значением
Захват-1.png
Можно код оформить в виде функции