【功能码】

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

posted on 2024-01-04 11:43  海湾的贝壳  阅读(28)  评论(0编辑  收藏  举报