Расширение моего комментария, потому что кажется, что это может ответить на ваш вопрос. Как отмечается в комментарии, поле IP-адреса в Modbus-Flex-Server является «адресом привязки» (снимок экрана ниже), оно контролирует, какой IP-адрес (а) будет прослушивать ведомый Modbus. Если оставить этот параметр равным 0.0.0.0, он будет прослушивать все IP-адреса, настроенные на машине.
Лучший способ понять, как использовать Modbus -Flex-Server - посмотреть демонстрационный поток. Чтобы получить доступ к этому, выберите «Импорт» в главном меню узла красного цвета и выберите Примеры-> nod-red-contrib-modbus-> Modbus-Slave:
Импортированный поток демонстрирует довольно простой способ установки регистров (обратите внимание, что вы также можете сделать это с помощью записи Modbus). Полезная нагрузка выглядит примерно так:
msg.payload = {
'value': 1,
'register': 'coils',
'address': 0 ,
'disablemsg' : 1
} ;
return msg
если мастер просто подключится к ведомому через IP-адрес ведомого, тогда
Исправить. Если они находятся в одном окне, просто используйте 127.0.0.1; если в разных полях вам также может понадобиться добавить правила брандмауэра.
Наконец, как вы должны обнаружить запрос, отправленный ведущим, чтобы подчиненный отвечал только тогда, когда его попросили
Не совсем уверен, что вы подразумеваете под этим - раб будет отвечать только на запросы, которые он получает. Вы можете проверить значения регистров Modbus, используя 'inject' topi c, который заставит подчиненный узел отправлять свои регистры на соответствующие выходы (см. Демонстрацию). В качестве альтернативы вы можете добавить пользовательский код, который будет запускаться при получении команды modbus в свойствах Modbus-Flex-Server.