Codesys 3.5
Подключил счетчик энергии, в нем полная активная энергия представлена в Int64 - 4 байта информации (т.е. 4 WORD числа, если смотреть в регистрах), как преобразовать в REAL (число с плавающей запятой)?
Codesys 3.5
Подключил счетчик энергии, в нем полная активная энергия представлена в Int64 - 4 байта информации (т.е. 4 WORD числа, если смотреть в регистрах), как преобразовать в REAL (число с плавающей запятой)?
Не зная броду, не суйся в воду. (Пословица.)
Век живи, век учись(а умрешь дураком).
Опыт растет прямо пропорционально выведенному из строя оборудованию.
Вы запросите у них точный формат.
Обычно так:
A5: DWORD;
A5: REAL;
pt: POINTER TO REAL;
pt :=ADR(A5); (*Копируем в префикс*)
A6:=pt^; (*Превращение в реал(флоат)*)
а что конкретно смущает?
у меня так с расходомера уже 7 лет пересчитывает из 2х ворд, в одном из которых мантиса, в другом экспонента.
сложение в дворд я опустил, а результат такой.
я с адресациями не очень
Не зная броду, не суйся в воду. (Пословица.)
Век живи, век учись(а умрешь дураком).
Опыт растет прямо пропорционально выведенному из строя оборудованию.
FUNCTION two_word_TO_real : REAL
VAR_INPUT
IN_Data: POINTER TO ARRAY[0..1] OF DWORD; (*Указатель на массив регистров для Float*)
END_VAR
VAR
p1: POINTER TO BYTE;
p2: POINTER TO BYTE;
END_VAR
------------------------------------------------------------
p1:=ADR(two_word_to_real);
p2:=ADR(IN_Data^[1]);
p1^:=p2^;
p1:=p1+1;
p2:=p2+1;
p1^:=p2^;
p1:=p1+1;
p2:=ADR(IN_Data^[0]);
p1^:=p2^;
p1:=p1+1;
p2:=p2+1;
p1^:=p2^;
---------------------------
этот код, работает для 2х байтов, но как преобразовать в 4 не пойму.
Не зная броду, не суйся в воду. (Пословица.)
Век живи, век учись(а умрешь дураком).
Опыт растет прямо пропорционально выведенному из строя оборудованию.
не нужно так усложнять.
в прг. складываю регистры, вам это не нужно.
что нужно я написал в первом сообщении.
программа такая.
Что-то не совсем в сообщении задание понимаю.
Int64 это же 8 байт, 4 слова, два двойных слова. А предлагают обычное преобразование в 4 -х байт в Real?
Нужно 8 байт в Real?