Подскажите возможна ли такая связка?
Контроллер WB8.5-> Шлюз MQTT - Modbus RTU/TCP slave->Ethernet->WB-MGE v3 (slave) ->RS485->Сторонний контроллер Modbus Master
Добрый день!
Правильно ли я понимаю, что вы хотите, чтобы WB-MGE работал как Modbus RTU slave на шине RS-485, а по Ethernet пересылал запросы на контроллер Wiren Board, который выступает в роли Modbus TCP slave, и затем возвращал бы ответы обратно стороннему Modbus-мастеру как ответы RTU-slave?
Такой режим одним WB-MGE v3 реализовать не получится. Чтобы сторонний контроллер-мастер по RS-485 мог опрашивать Wiren Board как slave, нужны два WB-MGE v3, соединённые по Ethernet (Wi-Fi) и настроенные как прозрачный RS-485-туннель. При этом сам контроллер Wiren Boardнадо будет подключать к соответствующему WB-MGE по RS-485, не Ethernet, и настраивать как Modbus RTU slave.
Можно, наверное, придумать схему со сторонним контрроллером и двумя контроллерами Wiren Board, которая будет реализовывать схему, которую вы описали (то есть еще один контроллер Wiren Board вместо WB-MGE), но она, в общем случае, кажется избыточной.
Добрый день! Скажите, остались ли у вас еще вопросы по этой теме?
Я вашу идею понял, что мост из двух MGE v3 может решить любой вопрос. но все же хотелось
Да все понятно.
Порты на устройстве могут быть как мастер так и слейв, порты удаленные по TCP только мастер, но их количество не ограничено.
Спасибо! Передал ваше пожелание разработчикам – если это будет реализовано, информация появится в нашей документации.
Коллеги предложили идею, как можно подключить наш контроллер через один WB-MGE v.3 как Modbus-slave по вашей схеме. Проверил решение на стенде – работает.
Расскажу, что нужно сделать для этого.
- Портебуется на нашем контроллере установить утилиту socat. С ее помощью можно создать виртуальный tty-порт, доступный приложениям на slave-контроллере. все что приложения будут писать в этот порт, будет отправляться на WB-MGE, и, соотвтетственно, в обратную сторону.
apt-get update
apt-get install -y socat
-
Порт шлюза WB-MGE, к которому будет подключаться master-контроллер по RS-485, надо настроить в прозрачном режиме, как сервер.
-
Теперь можно запустить socat на slave-контроллере:
socat -d -d \
pty,link=/dev/ttyMBGATE,raw,echo=0 \
tcp:<IP-адрес_WB-MGE>:502,keepalive
Этак команда создает на контроллере порт /dev/ttyMBGATE, и подключается к WB-MGE к TCP-порту 502, -d -d – выводить отладочную информацию.
В дальнейшем будет нужно сдалать для этой команды systemd-юнит, чтобы она автоматически запускалась при старте контроллера.
- На slave-контроллере в настройках
Шлюз MQTT - Modbus RTU/TCP slaveвыбрать режим работы шлюзаRTU, Путь к устройству:/dev/ttyMBGATE, а дальше настраивать соответствия каналов и регистров по документации.
После этого вы сможете опрашивать настроенные каналы/регистры master-контроллером, возможно, придется увеличть таймауты.