К сожалению вложение ModBus-master в ModBus-slave не работает с любыми input module из Universal Modbus device.
ModBus-slave не присваивает им MB адреса. Ouput модулям присваивает, а input модулям нет.
Рис 1.jpg
В результате OPC сервер получает в ответ на запрос ответ об ошибке.
Если добавить Ouput модуль то ModBus-slave игнорируя input модули назначает ему MB адрес.
Рис 2.jpg
Кроме того, непонятно, как выровнять адрес Command (BYTE) и надо ли?
Разработчики об этой проблеме знают, но почему то не исправляют.
Проще сделать отдельно ModBus-master и ModBus-slave, и программно назначить переменные ModBus-master переменным ModBus-slave.
По поводу Ваших вопросов:
1. Адреса в ModBus-slave задаются автоматически, подробнее читайте в Руководстве пользователя по ПЛК (ModBus Slave и выравнивание адресов в памяти). Ну, если упрощено, количество байт в MB-адресе должно быть четным и не меньше двух.
2. Данные будут доступны ПЛК если Вы назначите регистрам в ModBus-master переменные (ткнуть левой кнопкой мыши в AT%, появится окно ввода). Опрос в ModBus-master определяется в настройке Universal Modbus device - Work Mode.
По времени (ниже настройка времени опроса)
По изменению значения (актуально для записи в Ouput регистры однократно при изменении значения)
Оба предыдущих типа
По команде (это по регистру Command, который стоит сразу после Universal Modbus device)




Ответить с цитированием