10.5.6
(0x05)写单个线圈
1. 功能说明
05功能码用于将单个线圈寄存器(或离散输入)设置为ON或OFF,该功能码支持广播模式在广播模式下,所有从站设备的同一地址的值将被统一修改。查询报文中的ON/OFF状态由报文数据字段的常数指定,0xFF00表示 ON状态,0x0000表示OFF状态。其他值均是非法的,并且对寄存器不起作用,将会返回异常响应。
2. 查询报文
查询报文中需要指定从设备地址以及需要变更的线圈地址和设定的状态值。需要注意的是,在查询报文中,线圈地址从地址0开始计数。例如,如下表所示,从设备地址为 3,设置线圈地址00150为ON状态,则查询报文中的线圈地址设置为0x95(149)。
功能码05查询报文示例:
字段 |
例 (Hex) |
ASCII 模式字符型 |
RTU模式8位 (Hex) |
帧头 | “:” | ||
从设备地址 | 0x03 | “0”,“3” | 0x03 |
功能码 | 0x05 | “0”,“5” | 0x05 |
起始地址 (高位) |
0x00 | “0”,“0” | 0x00 |
起始地址 (低位) |
0x95 | “9”,“5” | 0x95 |
变更数据 (高位) |
0xFF | “F”,“F” | 0xFF |
变更数据 (低位) |
0x00 | “0”,“0” | 0x00 |
差错校验 | LRC(2字符) | CRC(2字节) | |
帧尾 | CR/LF | ||
合计字节数 | 17 | 8 |
本功能码中,起始地址由2字节构成,取值范围为 0x0000~0xFFFF:变更目标数据由2字节构成,取值只能为0xFF00或0x0000。
3. 响应报文
响应报文的各项构成和意义如下表所示。对于从设备,在线圈或离散输出寄存器正常变更的情况下会返回与查询报文相同的响应报文。如果修改失败,则会返回一个异常响应,对于异常响应,后续章节会进一步详细介绍。
功能码05响应报文示例:
字段 |
例 (Hex) |
ASCII 模式字符型 |
RTU模式8位 (Hex) |
帧头 | “:” | ||
从设备地址 | 0x03 | “0”,“3” | 0x03 |
功能码 | 0x05 | “0”,“5” | 0x05 |
起始地址 (高位) |
0x00 | “0”,“0” | 0x00 |
起始地址 (低位) |
0x95 | “9”,“5” | 0x95 |
变更数据 (高位) |
0xFF | “F”,“F” | 0xFF |
变更数据 (低位) |
0x00 | “0”,“0” | 0x00 |
差错校验 | LRC(2字符) | CRC(2字节) | |
帧尾 | CR/LF | ||
合计字节数 | 17 | 8 |
10.5.7
(0x06)写单个保持寄存器
1. 功能说明
06功能码用于更新从设备的单个保持寄存器的值,该功能码支持广播模式,在广播模式下所有从设备的同一地址的值将被统一修改。
2. 查询报文
查询报文中需要指定从设备地址以及需要变更的保持寄存器地址和设定的值。需要注意的是查询报文中,寄存器地址从地址0开始计数。例如,如下表所示,从设备地址为3,设置寄存器地址40150为1200(即0x04B0),则查询报文中的地址字段设置为0x95(149)。
功能码06查询报文示例:
字段 |
例 (Hex) |
ASCII 模式字符型 |
RTU模式8位 (Hex) |
帧头 | “:” | ||
从设备地址 | 0x03 | “0”,“3” | 0x03 |
功能码 | 0x06 | “0”,“6” | 0x06 |
起始地址 (高位) |
0x00 | “0”,“0” | 0x00 |
起始地址 (低位) |
0x95 | “9”,“5” | 0x95 |
变更数据 (高位) |
0x04 | “0”,“4” | 0x04 |
变更数据 (低位) |
0xB0 | “B”,“0” | 0xB0 |
差错校验 | LRC(2字符) | CRC(2字节) | |
帧尾 | CR/LF | ||
合计字节数 | 17 | 8 |
本功能码中,起始地址由2节构成,取值范围为 0x0000~0xFFFF;变更目标数据由2字节构成,取值范围为0x0000~0xFFFF。
3. 响应报文
响应报文的各项构成和意义,如下表所示。对于从设备,在保持寄存器正常变更的情况下会返回与查询报文相同的响应报文。如果修改失败,则返回个异常响应。
功能码06响应报文示例:
字段 |
例 (Hex) |
ASCII 模式字符型 |
RTU模式8位 (Hex) |
帧头 | “:” | ||
从设备地址 | 0x03 | “0”,“3” | 0x03 |
功能码 | 0x06 | “0”,“6” | 0x06 |
起始地址 (高位) |
0x00 | “0”,“0” | 0x00 |
起始地址 (低位) |
0x95 | “9”,“5” | 0x95 |
变更数据 (高位) |
0x04 | “0”,“4” | 0x04 |
变更数据 (低位) |
0xB0 | “B”,“0” | 0xB0 |
差错校验 | LRC(2字符) | CRC(2字节) | |
帧尾 | CR/LF | ||
合计字节数 | 17 | 8 |
全部0条评论
快来发表一下你的评论吧 !