Modbus协议定义了一系列的错误码(也称异常码),用来指示在执行Modbus请求时可能发生的错误情况。这些错误码可以帮助诊断通信问题,并且在接收到异常响应时进行适当的错误处理。
错误码
错误码 |
描述 |
0x01 |
非法功能 (Illegal Function) |
0x02 |
非法数据地址 (Illegal Data Address) |
0x03 |
非法数据值 (Illegal Data Value) |
0x04 |
设备故障 (Slave Device Failure) |
0x05 |
设备忙 (Acknowledge) |
0x06 |
负号应答 (Negative Acknowledge) |
0x07 |
内存区保留 (Memory Parity Error) |
0x08 |
Gateway路径不存在 (Gateway Path Not Available) |
0x0A |
Gateway目标失败 (Target Device Failed to Respond) |
0x01 (1) - 非法功能,请求的功能未被从设备识别或不支持。
0x02 (2) - 非法数据地址,数据地址不在设备的可访问范围内。
0x03 (3) - 非法数据值,请求的操作尝试设置一个无效或非法的值。
0x04 (4) - 从设备故障,未知的设备故障。
0x05 (5) - 从设备繁忙,设备正在执行另一个任务,无法立即响应请求。
0x06 (6) - 负号应答,请求的操作不能被执行,因为它是非法的(例如试图清除一个只读存储区)。
0x08 (8) - 内存溢出,执行请求时内存溢出。
0x0A (10) - 通讯超时,请求超出了允许的时间限制。
0x0B (11) - 从设备内部操作失败,设备内部发生了一个错误。
0x0C (12) - 从设备不支持此功能,设备不支持请求的功能。
0x0D (13) - 从设备不支持此数据类型,设备不支持请求的数据类型。
0x0E (14) - 从设备不支持此数据地址,设备不支持请求的数据地址。
0x0F (15) - 从设备不支持此数据长度,设备不支持请求的数据长度。
处理措施
1.验证功能码
检查发送的功能码是否正确,是否与设备上安装的Modbus协议版本匹配。如果不匹配,可以尝试升级或降级Modbus协议版本,以使功能码与设备上安装的Modbus协议版本匹配。
序号 |
功能码 |
描述 |
请求数据 |
预期响应 |
实际响应 |
测试结果 |
1 |
0x01 |
读取线圈状态 |
地址: 0x0000, 数量: 10 |
状态: [0x01, 0x00, ...] |
- |
成功/失败 |
2 |
0x02 |
读取离散输入 |
地址: 0x0000, 数量: 10 |
状态: [0x01, 0x00, ...] |
- |
成功/失败 |