Показать сообщение отдельно
Старый 23.07.2008, 20:08   #163
gtfox
Новичок
 
Регистрация: Dec 2007
Сообщения: 28
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Unhappy Ответ: Диспетчеризация, OPC-сервер и modbus

Во первых открыл английский вариант описания протокола (в руском переводе ошибки б... ).

Берем в лоджике тип boolean, направление R(in) => будет отправлен такой запрос
А_Ф_Адрес перемен_ Кол-во перем._CRC
01_02_00 01_00 01_xx xx
Ответ придет
А_Ф_Число байт_Сост. входов_CRC
01_02_01_01_xx xx
Сост. входов = 01h = 0000 0001b и на выходе блока будет 1, т.е. нулевой бит в этом байте.

Берем в лоджике тип integer, направление R(in) => будет отправлен такой запрос
А_Ф_Адрес перемен_Кол-во перем._CRC
01_02_00 01_00 10_xx xx
т.к. integer занимает 2 байта = 16 бит = 10h бит
Ответ придет
А_Ф_Число байт_Сост. входов_CRC
01_02_02_00 01_xx xx
Сост. входов = 00 01h = 0000 0000 0000 0001b и на выходе блока будет 1 в формате integer.

Теперь берем модуль LD-IR (из документации на модули ) "получить принятый ИК пакет" => это не не булева переменная, а значит тип нужен минимум integer (или byte, если бы он был)
надо сделать запрос(по документации)
А_Ф_Адрес перемен_Кол-во перем._CRC
01_02_00 01_00 01_xx xx
а лоджик сделает запрос
А_Ф_Адрес перемен_Кол-во перем._CRC
01_02_00 01_00 10_xx xx
и что об этом запросе подумает LD-IR
Это все верно, если я правильно понимаю как работает тип integer - направление R(in), и если в документации верно написано.
gtfox вне форума   Ответить с цитированием