关于node.js:Modbus的报文格式plc

4次阅读

共计 1306 个字符,预计需要花费 4 分钟才能阅读完成。

网络上的 modbus 阐明都是 读放弃寄存器 之类很难懂的词汇,在这里做个简化阐明的笔记。modbus 具体性能码及错误码参考【其余】局部的链接

plc 的寄存器分类:

开关量通道,用 x、y 示意,寄存器序号 8 进制计数,x0-x7,x10-x15 为输出,只读。y0-y7,y10-y15 为输入。内存变量记为 m,寄存器序号十进制,比方 m19。单变量长度为 1 位

模拟量通道,sd 示意。内存模拟量记为 d,寄存器序号十进制。单变量长度为 2 字节

罕用性能码

0x01: 读线圈寄存器 ---------- 批量读 y
0x02: 读离散输出寄存器 ----------  批量读 x
0x03: 读放弃寄存器 ---------- 批量读 d
0x04: 读输出寄存器 ---------- 读输出模拟量通道 sd(未测试)0x05: 写单个线圈寄存器 ----------  写输入模拟量通道 sd(未测试)0x06: 写单个放弃寄存器 ----------  单个写 d
0x0f:  写多个线圈寄存器 ----------  批量写输入模拟量通道 sd(未测试)0x10: 写多个放弃寄存器 ---------- 批量写 d 

详解:

0x01 批量读 y

发送:站号 1 字节 -0x01,性能码 1 字节 -0x01,起始地址 2 字节 -0x00 0x00,数据长度 2 字节 -0x00 0x10,crc2 字节

返回:站号 1 字节 -0x01,性能码 1 字节 -0x01,数据字节计数 1 字节 -0x02,数据 2 字节 -0x20 0x00,crc2 字节
解释:申请读 y0 起 16 个开关量状态,响应 0x20 0x00, 即 y7-y0 状态为 0010 0000,y17-y10 状态为 0000 0000,只有 y5 是 1(依据设施大小端不同留神程序)

0x02 批量读 x
同 0x01

0x03 批量读 d
发送:站号 1 字节 -0x01,性能码 1 字节 -0x03,起始地址 2 字节 -0x00 0x00,数据长度 2 字节 -0x00 0x02,crc2 字节

返回:站号 1 字节 -0x01,性能码 1 字节 -0x03,数据字节计数 1 字节 -0x04,数据 4 字节 -0x06 0xa4 0x0a 0x8c,crc2 字节

解释:申请读 d0 起 2 个模拟量状态,响应 0x06 0xa4 0x0a 0x8c, 即 d1 为 0x06 0xa4=1700,d2 为 2700

0x06 单个写 d
发送:站号 1 字节 -0x01,性能码 1 字节 -0x06,起始地址 2 字节 -0x00 0x07,数据 2 字节 -0x0a 0xa0,crc2 字节

返回:同发送
解释:申请写 d7 模拟量状态,响应雷同报文,写入 0x0a 0xa0

0x10 批量写 d
发送:站号 1 字节 -0x01,性能码 1 字节 -0x10,起始地址 2 字节 -0x00 0x07,数据长度 2 字节 -0x00 0x02,数据字节数 1 字节 -0x04,数据 4 字节 -0xab 0xcd 0x98 0x76,crc2 字节

返回:站号 1 字节 -0x01,性能码 1 字节 -0x10,起始地址 2 字节 -0x00 0x07,操作数据长度 2 字节 -0x00 0x02,crc2 字节

解释:申请写 d7 起 2 个模拟量状态,响应批改的变量总数 2。

其余:

crc16 校验 -nodejs https://blog.csdn.net/yaojinj…

性能码及错误码 https://www.cnblogs.com/fishp…

正文完
 0