js实现modbus
Modbus协议简介
Modbus是一种串行通信协议,广泛应用于工业自动化领域。协议分为RTU(二进制)、ASCII(文本)和TCP(基于以太网)三种模式。JavaScript可通过以下方式实现ModBus通信。
Modbus TCP实现(Node.js)
使用modbus-serial库实现TCP客户端:
-
安装依赖:

npm install modbus-serial -
示例代码:
const ModbusRTU = require("modbus-serial"); const client = new ModbusRTU.ClientTCP({ host: "192.168.1.1", // 设备IP port: 502, // 默认端口 timeout: 2000 // 超时设置 }); // 读取保持寄存器 client.readHoldingRegisters(0, 10) .then(data => console.log("Registers:", data.data)) .catch(err => console.error("Error:", err));
Modbus RTU实现(串口通信)
依赖serialport和modbus-serial库:

-
安装依赖:
npm install serialport modbus-serial -
示例代码:
const SerialPort = require("serialport"); const ModbusRTU = require("modbus-serial"); const client = new ModbusRTU.Client( new SerialPort("/dev/ttyUSB0", { baudRate: 9600 }) ); // 读取线圈状态 client.readCoils(0, 5) .then(data => console.log("Coils:", data.data)) .catch(err => console.error("Error:", err));
关键参数说明
- 功能码:
1: 读线圈3: 读保持寄存器6: 写单个寄存器
- 地址映射:
- 寄存器地址通常从0开始,实际设备可能偏移(如
40001对应地址0)。
- 寄存器地址通常从0开始,实际设备可能偏移(如
注意事项
- 超时处理:工业设备响应较慢,需合理设置
timeout。 - 错误校验:RTU模式需启用CRC校验,TCP模式依赖底层协议。
- 数据类型转换:寄存器数据可能为16/32位整数或浮点数,需按设备文档解析。
扩展工具
- 调试工具:Modbus Poll、QModMaster等可模拟设备测试通信。
- Web实现:浏览器端可通过WebSocket中转或使用
modbus-tcp-client库(需后端代理)。
通过上述方法,JavaScript可实现Modbus协议的通信需求。






