Имитация ведомого Modbus с использованием красного узла - PullRequest
1 голос
/ 13 января 2020

Я пытаюсь использовать красный узел для подключения к мастеру с использованием Modbus и имитации подчиненных устройств, отправляя данные на мастер, когда он запрашивает. Я попытался найти повсюду подсказки о том, как начать работу, и единственные примеры использования модуля node-red-contrib-modbus, по-видимому, имитируют ведомое устройство и ведущее устройство или просто ведущее устройство. Я знаю, что модуль поставляется с примером, помеченным как ведомый Modbus, но я не уверен, действует ли сервер Modbus Flex как ведомый. Первоначально я думал, что это так, однако, поскольку pi подключен к шлюзу через ethe rnet, коллеги сказали мне, что мне не нужно вводить IP-адрес et c хоста, поскольку только хосту нужен IP-адрес раб не наоборот. Я не уверен, использовать ли узел записи Modbus или нет.

1 Ответ

0 голосов
/ 14 января 2020

Расширение моего комментария, потому что кажется, что это может ответить на ваш вопрос. Как отмечается в комментарии, поле IP-адреса в Modbus-Flex-Server является «адресом привязки» (снимок экрана ниже), оно контролирует, какой IP-адрес (а) будет прослушивать ведомый Modbus. Если оставить этот параметр равным 0.0.0.0, он будет прослушивать все IP-адреса, настроенные на машине.

Screenshot

Лучший способ понять, как использовать Modbus -Flex-Server - посмотреть демонстрационный поток. Чтобы получить доступ к этому, выберите «Импорт» в главном меню узла красного цвета и выберите Примеры-> nod-red-contrib-modbus-> Modbus-Slave:

Import Demo screenshot

Импортированный поток демонстрирует довольно простой способ установки регистров (обратите внимание, что вы также можете сделать это с помощью записи 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.

...