А как, предполагаете, данные с того устройства появятся на ЖКИ здесь, на ПЛК ?
(что то подсказывает что скоро от ТС будет 2й вопрос, про ЖК, или здесь все норм - разобрались? )
Вид для печати
Вложение 62271
Здесь два буфера, потому что опрашивается два регистра?
Буфер один - байтовый. Регистр состоит из двух байт. С помощью указателя (Ptb) "разбираем" буфер, "склеивая" по два байта в один регистр, в приведённом Вами куске кода, в один INT.
Здесь выкладывал в последнем сообщении пример чтения МВ110-8А, с Функц. блоком склейки двух WORD в REAL. По аналогии склеиваются и байты https://owen.ru/forum/showthread.php?t=35094#10
Можно склеить прямо в программе из буфера. Это есть в примерах, ссылки давал в начале. Пример первых двух REAL. Вложение 62277
Пример для МВ110-8А, данные перемешаны, поэтому пропуски.
Для вашего МВ110-8АС, данные REAL подряд (читать с первого адреса REAL) будет так,Код:d: ARRAY [0..23] OF REAL; (*считанное значение*)
ptr_D:POINTER TO BYTE;
END_VAR
__________________________________________________
(* Вставить, в след. шаге CASE где склеиваете INT (WORD) *)
ptr_D:=ADR(d)+8; ptr_D^:=buffer[11]; ptr_D:=ptr_D+1; ptr_D^:=buffer[10]; ptr_D:=ptr_D+1; ptr_D^:=buffer[9]; ptr_D:=ptr_D+1; ptr_D^:=buffer[8];
ptr_D:=ptr_D+9; ptr_D^:=buffer[23]; ptr_D:=ptr_D+1; ptr_D^:=buffer[22]; ptr_D:=ptr_D+1; ptr_D^:=buffer[21]; ptr_D:=ptr_D+1; ptr_D^:=buffer[20];
первые 2 REAL, для правильного отображения данные из буфера присваиваем в обратном порядке:
Код:d: ARRAY [0..7] OF REAL; (*считанное значение*)
ptr_D:POINTER TO BYTE;
END_VAR
__________________________________________________
(* Вставить, в след. шаге CASE где склеиваете INT (WORD) *)
ptr_D:=ADR(d); ptr_D^:=buffer[3]; ptr_D:=ptr_D+1; ptr_D^:=buffer[2]; ptr_D:=ptr_D+1; ptr_D^:=buffer[1]; ptr_D:=ptr_D+1; ptr_D^:=buffer[0];
ptr_D:=ptr_D+1; ptr_D^:=buffer[9]; ptr_D:=ptr_D+1; ptr_D^:=buffer[8]; ptr_D:=ptr_D+1; ptr_D^:=buffer[7]; ptr_D:=ptr_D+1; ptr_D^:=buffer[6];
В примере всё есть, и чтение буфера в INT, и (чуть ниже, в этом же коде) в REAL.
Вложение 62286
Другого производителя ИМ2300.
Вложение 62287
Тяжеловато мне в ST ориентироваться( Пытаюсь Ваш пример соотнести с примером FBD. Не могу правильно склеить два регистра во FLOAT, данные на выходе не правильно отображаются(