Показать сообщение отдельно
Старый 24.07.2008, 11:26   #164
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 157
Благодарил(а): 15 раз(а)
Поблагодарили: 665 раз(а) в 607 сообщениях
По умолчанию Ответ: Диспетчеризация, OPC-сервер и modbus

Цитата:
Сообщение от gtfox
Во первых открыл английский вариант описания протокола (в руском переводе ошибки б... ).
Наверное, с этого и стоило начинать

Хотя у данфоса, например, чувствуется, что инструкцию с китайского перевели на французский, затем на английский, а только потом - на русский Мясо полное



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



Цитата:
Сообщение от gtfox
Берем в лоджике тип 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.
А вот тут - не так. Будет использована ф-ция 04h, а не 02h. Input registers это не то же самое, что Input status.

Запрос: 01_04_00 01_00 01_xx xx

Ответ: 01_04_02_значение_xx xx

Так гласит закон джунглей, т.е. описание modbus PI–MBUS–300.

В общем случае адреса у регистров и статусов не пересекаются, т.е. чтение функцией 01h с адреса 0000h даст один результат, чтение ф-цией 02h с адреса 0000h даст другой результат, ф-ция 03h даст третий результат, ф-ция 04h - четвёртый.

Не то, чтобы данные интерпретируются по разному, данные _приходят_ разные и источники этих данных также разные.

Но это в общем случае, конкретному производителю не запрещено объединять эти четыре адресных пространства в любых комбинациях.



Цитата:
Сообщение от gtfox
Теперь берем модуль 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), и если в документации верно написано.
Я бы не спешил делать вывод, что под словом "пакет" подразумевается именно байт, а не последовательность битов.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием