Автор: Сергей Васильев
Дата: 25.08.11 13:13
Да простит меня модератор за длинное сообщение, но поскольку эта ситуация
встречается часто, попробую пояснить подробнее.Для всех
известных мне модбас китайских устройств, включающих как последовательный
так и Ethernet интерфейсы, ПО пишется по следующей схеме: 1 функции для
обработки пакетов ModbusRTU 2 Обработка ТСР сокетов вычленение пакета
модбас и передача его на обработку в библиотеку RTU. Я и сам так делаю,
потому что очень просто и логично. Пакет ТСР ничем не отличается от RTU
кроме 6 ведущих байтов, которые как правило установлены в 0.Разработчик ПО
высокого уровня пишет непосредственно для ТСР и не вдается в детали RTU. В
официальной спецификации (modbus.org) для ТСР сказано, что байт номера
станции использовать не обязательно, поскольку устройство однозначно
идентифицируется IP адресом. Т.е его (номер станции) можно обнулять. И много
разработчиков так и делают чтоб не создавать себе дополнительных трудностей
из-за избыточной (с их точки зрения )информации.
Так вот в нежных китайских устройствах, при передаче пакета из ТСР функции в
RTU функцию, при обнуленном номере станции этот пакет отбрасывается. Потому
как для RTU номер станции это единственный идентификатор.
Вот чему приводят неоднозначности спецификаций. Одним словом везде где есть
возможность выставить ModbusID для ТСР - его надо выставлять. Модикону
модиконово, китайцам китайцево.
25 августа 2011 г. 11:49 пользователь ХиМ <forumasutp@xxxxx.xx.xx> написал:
> ОГРОМНОЕ СПАСИБО за идею!!!!! Всё заработало на Шнайдеровском МВЕ. Суть:
> указал номер модбас-устройства (в MBE UnitID), поигрался с параметрами:
> PrimaryRate (01), SecondaryRate(10), Phase (0), AccessTime (01:40:00) на
> Device0 и DataBlock-ах. Пока работает без единой ошибки, без оверранов.
> Если кому-то это поможет - буду рад. Простораньше мы на эти параметры не
> обращали внимания, всё оставалось по дефолту.
>
> ----
> E-mail автора: hcorp@xxxxxx.xx
> (по данным регистрации на iprog.pp.ru/forum)
>
--
С уважением Сергей Васильев
|
|