а как получить из массива байт собрать real?
а как получить из массива байт собрать real?
может есть у кого нибудь пример на CDS2.3 в котором полученное число типа real переделываетсья в другое число типа real с другим порядком байт?
скажите хотябы как обратиться указателем pt:POINTER TO BYTE; ко второму байту переменной?
Я был в гостях у компании 3S в германии. Рассказал им, что многие наши пользователи имеют проблемы со сбором переменных Real из пары переменных Word.
Даже рассказал, что они имеют несколько разновидностей передачи и т.п.
В общем компания 3S сейчас думает как лучше реализовать карту Modbus в нужные типы данных.
Как только появятся данные я обязательно сообщу в данной ветке. И сообщу в какой версии CODESYS появится данная реализация.
Здравствуйте. Столкнулся с той же проблемой конвертации 2-х WORD в REAL при работе с МВ110-2А в CodeSys 3.5. Нашел простенькое решение: В адресах регистров МВ110-2А есть отдельно адрес регистра целой части (мантиссы) и регистра положения десятичной точки. Организовал вывод температуры так:
temp1:=WORD_TO_REAL(Mant1)/EXPT(10,WORD_TO_REAL(DP1));
temp2:=WORD_TO_REAL(Mant2)/EXPT(10,WORD_TO_REAL(DP2));
Вложение 12050
Вложение 12051
Последний раз редактировалось Medyv; 23.02.2014 в 11:16.
Искал решение для DELPHI, в интернете особо не нашел, но помогли примеры выше,оказалось все просто. Возможно кому нибудь поможет:
var
a,b:Word; //Исходные данные, 2 ячейки по 2 байта
c:Single; //Результирующая ячейка, действительное число 4 байта
d:^Cardinal; //Указатель на целочисленную 4х байтовую переменную
begin
a:=64; //Для примера
b:=16440;
d:=@c; // Присваиваем целочисленной 4х байтовой переменной тот же адрес что и действительной
d^:=MakeLong(a,b); // Объединяем 2 слова в одно 4х байтовое
Caption:=FloatToStr(c); // Получаем результат 2.875015259
end