Node.js-如何充当Modbus RTU服务器

时间:2019-07-08 04:24:29

标签: node.js npm modbus

我正在尝试设置一个接受modbus RTU轮询的侦听器。

我发现了很多与Modbus相关的npm库,但是它们都与从其他Modbus从站轮询或充当Modbus TCP服务器有关。我需要模拟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 :(得分:0)

服务器仅在等待客户端连接。为了使 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)
})