Nodejs - Как действовать как сервер Modbus RTU - PullRequest
1 голос
/ 08 июля 2019

Я пытаюсь настроить прослушиватель, который принимает опросы Modbus RTU.

Я обнаружил много библиотек npm, связанных с Modbus, но все они связаны с опросом от другого ведомого устройства Modbus или действуют как TCP-сервер Modbus.Мне нужно смоделировать ведомое устройство Modbus, а не устройство опроса (выступать в роли сервера Modbus RTU)

Редактировать: я нашел эту библиотеку https://github.com/Cloud-Automation/node-modbus

Существует файл modbus-rtu-server.jsв источнике, поэтому я пытался использовать это.Однако у меня возникли проблемы с пониманием и использованием библиотеки без документации.Вот что я попробовал:

const modbus = require('jsmodbus')
const SerialPort = require('serialport')
const options = {
    baudRate: 9600
}
const socket = new SerialPort("/dev/ttyUSB0", options)
const server = new modbus.server.RTU(socket)
server.on('connect', function (client) {
    console.log(client);
});

Это то, что у меня есть до сих пор, но событие «подключения» никогда не происходило, что я делаю не так?

1 Ответ

0 голосов
/ 08 июля 2019

Сервер просто ожидает подключения клиента.Чтобы произошло событие connect , необходимо запустить запрос с клиента.Это означает, что вам нужно подключить второй последовательный порт к вашему /dev/ttyUSB0 и инициировать запрос Modbus с него.Для этого вы можете использовать ту же библиотеку или любой другой инструмент, такой как modpoll или QModMaster .

Вам также нужно немного разработать свой сервер, потому что прямо сейчас онне определены никакие регистры, поэтому он будет бесполезен.

Посмотрите примеры TCP, в частности SimpleServer .Как вы можете видеть, вам необходимо определить регистры или катушки Modbus на вашем сервере, например:

server.on('readCoils', function (request, response, send) {
/* Implement your own */

response.body.coils[0] = true
response.body.coils[1] = false

send(response)
})
...