modbus协议与nodejs modbus-serial实现

nodejs可通过modbus-serial库来实现modbus协议

npm install modbus-srial

安装完后在examples目录下有例子说明如何使用,本文主要讲述作为客户端的使用方式。

 polling_RTU是使用485串口来实现modbus通信, polling_TCP和 polling_UDP则使用TCP/UDP来实现通信。

使用TCP/UDP模式时,modbus-serial发送的指令码格式如下,总共6个字节

 

如下为使用modbus-seria的polling_TCPl发码,并使用wireshark抓包:

 

 使用RTU(485串口)模式时,发送的指令码格式如下所示,总共8个字节,比TCP、UDP模式增加了2个字节的CRC校验码。

 

 如下为使用modbus-serial的polling_RTU发码,并使用串口抓包工具抓包的发码情况:

 

以上发码对应某空调协议的发码要求:

 slave地址在modbus-serial中使用setID来设置,如下:

 功能码一般分为0x03(读Holding寄存器功能码)和0x04(读Input寄存器功能码)

这两个功能码对应modbus-serial中使用两个函数

readHoldingRegisters(对应0x03)

readInputRegisters(对应0x04)

readInputRegisters、readHoldingRegisters这两个函数入口的两个参数则分别为寄存器地址和要读取的字节数。

 

对于RTU(485串口)模式,modbus-serial自动在数据包末尾添加2个字节的CRC校验码,不需要显式添加。

写入单个寄存器,对应的功能码0x06

client.writeRegister(0x0B/*寄存器地址*/, 0xdc/*寄存器值*/)

抓包发码

对应的文档如下指令码

写入多个寄存器,对应的功能码为16(0x10)

client.writeRegisters(1, [100, 90, 80, -200 + 65535, -100 + 65535])

 补充modbus的功能码

在这里插入图片描述

其他参考:

NPM 包 modbus-serial 使用教程-JavaScript中文网-JavaScript教程资源分享门户

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值