node-modbus-serial核心功能解析:从RTU到TCP的全协议支持
【免费下载链接】node-modbus-serialA pure JavaScript implemetation of MODBUS-RTU (and TCP) for NodeJS项目地址: https://gitcode.com/gh_mirrors/no/node-modbus-serial
node-modbus-serial是一个纯JavaScript实现的Modbus协议库,专为Node.js环境设计,支持RTU和TCP等多种通信方式。作为工业自动化领域广泛应用的串行通信协议,Modbus自1979年问世以来,已成为连接工业设备的事实标准。node-modbus-serial通过纯JavaScript实现这一协议,让开发者能够轻松构建跨平台的工业控制应用。
🌟 核心功能概览
node-modbus-serial提供了完整的Modbus协议支持,涵盖从传统串行通信到现代网络通信的全方位解决方案。无论是连接PLC、传感器还是工业控制器,都能通过简洁的API实现数据读写与设备控制。
🔌 多协议支持体系
该库支持多种Modbus通信方式,满足不同场景需求:
- Modbus RTU:通过串行端口(RS485/RS232)通信,需依赖serialport)和标准模式
- Modbus ASCII:基于串行端口的ASCII编码协议(ports/asciiport.js)
- Modbus TCP:通过TCP/IP网络通信(ports/tcpport.js)
- Modbus RTU over TCP:在TCP网络上传输RTU帧(ports/tcprtubufferedport.js)
- 特殊协议:支持C701服务器、Telnet服务器等特殊网络桥接设备(ports/c701port.js、ports/telnetport.js)
🛠️ 完整功能实现
node-modbus-serial实现了全部常用Modbus功能码,包括:
- 读取线圈状态(FC=01)
- 读取输入状态(FC=02)
- 读取保持寄存器(FC=03)
- 读取输入寄存器(FC=04)
- 强制单一线圈(FC=05)
- 预设单个寄存器(FC=06)
- 强制多个线圈(FC=15)
- 预设多个寄存器(FC=16)
- 读取设备标识(FC=20/43)
这些功能通过index.js中的API对外暴露,开发者可直接调用相应方法完成数据交互。
🚀 快速上手指南
安装与配置
通过npm即可完成安装,支持选择性安装依赖以减小体积:
# 完整安装(包含serialport依赖) npm install modbus-serial # 仅安装核心功能(用于TCP/UDP通信) npm install modbus-serial --no-optional如需后续添加串行通信支持,可单独安装serialport:
npm install serialport基础使用示例
1. 串行端口连接(RTU模式)
const ModbusRTU = require("modbus-serial"); const client = new ModbusRTU(); // 打开串行端口连接 client.connectRTUBuffered("/dev/ttyUSB0", { baudRate: 9600 }, (err) => { if (err) throw err; console.log("Connected to Modbus RTU device"); }); // 读取保持寄存器 client.readHoldingRegisters(0, 10, (err, data) => { if (err) console.error(err); else console.log("Registers:", data.data); });2. TCP网络连接
const ModbusRTU = require("modbus-serial"); const client = new ModbusRTU(); // 连接到Modbus TCP服务器 client.connectTCP("192.168.1.100", { port: 502 }, () => { client.setID(1); // 设置从站地址 // 读取线圈状态 client.readCoils(0, 16, (err, data) => { if (err) console.error(err); else console.log("Coils:", data.data); }); });💻 服务端功能
node-modbus-serial不仅支持客户端功能,还提供了完整的服务端实现,可用于构建Modbus从站设备模拟器或自定义Modbus服务器。
TCP服务器实现
通过servers/servertcp.js可快速创建Modbus TCP服务器:
const ModbusRTU = require("modbus-serial"); const server = new ModbusRTU.ServerTCP({ coil: [true, false, true], holding: [100, 200, 300] }, { port: 502 }); server.on("connection", (client) => { console.log("New client connected"); });串行服务器实现
通过servers/serverserial.js可创建Modbus RTU服务器,用于模拟串行总线上的从站设备。
🧪 测试与调试
项目提供了完善的测试用例和调试工具,帮助开发者快速定位问题:
- 测试端口:ports/testport.js提供模拟端口,用于离线测试
- 调试日志:设置
DEBUG=modbus-serial环境变量可启用详细日志输出 - 测试套件:test/目录包含各模块的单元测试和集成测试
📚 进阶资源
- API文档:详细的方法说明和参数定义可参考项目Wiki
- 示例代码:examples/目录提供各种场景的使用示例,包括:
- 简单读写操作(examples/simple.js)
- 轮询示例(examples/polling_RTU.js、examples/polling_TCP.js)
- 服务器实现(examples/server.js)
- 设备标识读取(examples/device-identification.js)
node-modbus-serial凭借纯JavaScript实现和跨平台特性,为工业物联网应用开发提供了灵活高效的解决方案。无论是构建简单的设备监控工具还是复杂的工业控制系统,都能满足开发需求,帮助开发者快速实现Modbus协议通信。
【免费下载链接】node-modbus-serialA pure JavaScript implemetation of MODBUS-RTU (and TCP) for NodeJS项目地址: https://gitcode.com/gh_mirrors/no/node-modbus-serial
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考