【功能码】
0x01: 读线圈寄存器
0x02: 读离散输入寄存器
0x03: 读保持寄存器
0x04: 读输入寄存器
0x05: 写单个线圈寄存器
0x06: 写单个保持寄存器
0x0f: 写多个线圈寄存器
0x10: 写多个保持寄存器
【存储区】
区号 名称 读、写 地址范围
----------------------------------------------------------------------------------------------------------------------------------------------------
0区 线圈寄存器(本质是开关) 读写(bool) 00001-09999
1区 离散输入寄存器(也是线圈,一般存储外设的状态) 只读(bool) 10001-19999
2区 输入寄存器(双字节,一般存外部输入的量) 只读(双字节) 30001-39999
3区 保持寄存器(双字节,正常的可读写存储) 读写寄存器(双字节) 40001-49999
【消息方向】
Rx : 接收到的主机消息帧(from master to salve)
Tx : 发送给主机消息帧(from salve to master)
【主机对从机发送报文格式】
例:主机向01从机发送读保持寄存器(3区)的从0开始的10个数据 -> 01 03 00 00 00 0A 62 67
从机地址 功能码 起始地址(高) - 起始地址(低) 数量 (高)- 数量 (低) [如果有数据段] CRC(低)-CRC(高)
0x01 0x03 0x00 0x00 0x00 0x0A [0x14(表示后面数据的长度) ....(20个字节)...] 0x62 0x67
【从机回主机报文格式】
从机地址 功能码 字节计数 字节1 ... 字节20 CRC(低)-CRC(高)
0x01 0x03 0x14 0x00 ... 0x00 0x62 0x17