01H–读线圈状态
- 描述:读从站(Slave)线圈寄存器,位操作,可读单个或者多个
- 主站发送请求:假设从站地址为1,寄存器开始地址0x0023,寄存器结束地址0x0038,总共读取21个线圈。协议格式如下:
- 从站响应主站请求:返回数据的每一位对应线圈状态:1-ON,0-OFF
3.1 数据Byte1表示0x0023~0x002A的线圈状态,Byte1的最低位代表最低地址的线 圈状态,可以理解为小端模式
3.2 数据Byte2表示0x002B~0x0032的线圈状态
3.3 数据Byte3表示0x0033~0x0037的线圈状态,不够8位,字节高位填充为0
02H–读离散输入状态
- 读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议
03H–读保持寄存器
- 描述:读保持寄存器,字节指令操作,可读单个或者多个(保持寄存器是一个字:word)
- 主站发送请求:从站地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器
- 从站响应主站请求:
数据存储顺序
04H–读输入寄存器
- 描述:读输入寄存器,字节指令操作,可读单个或者多个
- 主站发送请求:同0x03功能码
- 从站响应主站请求:同0x03功能码
05H–写单个线圈
- 描述:写单个线圈,位操作,只能写一个,写0xFF00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF
- 主站发送请求:设置0x0032线圈为ON
- 从站响应主站请求:同发送指令
0FH–写多个线圈
- 描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF
- 主站发送请求:线圈地址为0x04A5,写12个线圈
- DATA1的数据为0x0C
- DATA2的数据为0x02,不够8位,字节高位填充0
- 从站响应主站请求:
06H–写单个保持寄存器
- 描述:写单个保持寄存器,字节指令操作,只能写一个
- 主站发送请求:写0x0032保持寄存器为0x1232
- 从站响应主站请求:同发送指令
10H–写多个保持寄存器
- 描述:写单个保持寄存器,字节指令操作,只能写一个
- 主站发送请求:保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据
数据存储顺序
- 从站响应主站请求: