05(0x05)写单个线圈
在一个远程设备上,使用该功能码写单个输出为ON 或OFF。请求PDU说明了强制的线圈地址。从零开始寻址线圈。因此,寻址线圈地址1为0。线圈值域的常量说明请求的ON/OFF 状态。十六进制值0xFF00请求线圈为ON。十六进制值0x0000请求线圈为OFF。其它所有值均为非法的,并且对线圈不起作用。
正确的响应应答是和请求一样的。
功能码05举例,设置通道DO0为ON,也就是为1,寄存器地址00001:
请求 | 响应 | ||||
字段名称 | 十六进制 | 字段名称 | 十六进制 | ||
MBAP报文头 | 传输标识 | 01 |
MBAP报文头 | 传输标识 | 01 |
00 | 00 | ||||
协议标志 | 00 | 协议标志 | 00 | ||
00 | 00 | ||||
长度 | 00 | 长度 | 00 | ||
06 | 06 | ||||
单元标识符 | 01 | 单元标识符 | 01 | ||
功能码 | 05 | 功能码 | 05 | ||
输出地址Hi | 00 | 输出地址Hi | 00 | ||
输出地址Lo | 00 | 输出地址Lo | 00 | ||
输出值Hi | FF | 输出值Hi | FF | ||
输出值Lo | 00 | 输出值Lo | 00 |
06(0x06)写单个寄存器
在一个远程设备中,使用该功能码写单个保持寄存器。请求PDU说明了被写入寄存器的地址。从零开始寻址寄存器。因此,寻址寄存器地址1为0。
正确的响应应答是和请求一样的。
功能码06举例,设置通道DO0~DO7全部为1,16进制为0xFF,寄存器地址40001:
请求 | 响应 | ||||
字段名称 | 十六进制 | 字段名称 | 十六进制 | ||
MBAP报文头 | 传输标识 | 01 |
MBAP报文头 | 传输标识 | 01 |
00 | 00 | ||||
协议标志 | 00 | 协议标志 | 00 | ||
00 | 00 | ||||
长度 | 00 | 长度 | 00 | ||
06 | 06 | ||||
单元标识符 | 01 | 单元标识符 | 01 | ||
功能码 | 06 | 功能码 | 06 | ||
寄存器地址Hi | 00 | 寄存器地址Hi | 00 | ||
寄存器地址Lo | 00 | 寄存器地址Lo | 00 | ||
寄存器值Hi | 00 | 寄存器值Hi | 00 | ||
寄存器值Lo | FF | 寄存器值Lo | FF |
15(0x0F)写多个线圈