Modbus故障码速查手册
@[toc]
引言
当涉及到Modbus通信协议的故障排查和调试时,速查手册是一项极为重要的资源。了解故障码及其含义能够帮助工程师在通信问题出现时迅速定位和解决相关故障。
本篇文章旨在为读者提供一个方便快速查阅的资源,以便快速获取有关Modbus通信中可能出现的故障码的信息。通过仔细研究这些故障码,读者可以更有效地诊断和解决通信问题,减少故障排查的时间。
深入了解故障码使得我们可以快速、准确地解决Modbus通信中的问题,提高系统的稳定性和可靠性。因此,我希望这份速查手册能成为大家在处理Modbus通信问题时的重要参考资源。
故障码表
故障码码 | 英文名 | 中文名 | 英文描述 | 中文描述 |
---|---|---|---|---|
01 | IllegalFunction | 非法功能码 | The function code received in the query is not recognized or allowed by the device | 大多数情况下是由于主站发送了非法的功能码,例如读取了不支持的寄存器类型或者写入了只读的寄存器。 |
02 | IllegalDataAddress | 非法数据地址 | The data address received in the query is not allowed by the device | 典型的情况是主站设备发起了一个超出从站设备寄存器范围的读/写操作。 |
03 | IllegalDataValue | 非法数据值 | A value contained in the query data field is not an allowable value for the device | 通常是由于主站设备试图写入一个超出从站设备可接受范围的值。 |
04 | SlaveDeviceFailure | 从设备故障 | An unrecoverable error occurred while the slave was attempting to perform the requested action | 表示从站设备在尝试执行请求操作时发生了无法恢复的错误。 |
05 | Acknowledge | 应答 | Specialized use in conjunction with programming commands. The device has accepted the request and is processing it | 通常在写入命令后出现,表示设备已经接受了请求并正在处理。 |
06 | SlaveDeviceBusy | 从设备忙 | The device is engaged in processing a long-duration program command | 表明从站设备正在处理持续时间较长的程序命令。 |
08 | MemoryParityError | 存储器奇偶校验错 | The parity of the memory module is not consistent with the memory module state | 表明内存模块的奇偶校验不一致。 |
0A | GatewayPathUnavailable | 网关路径不可用 | Specialized for Modbus gateways. Indicates a misconfigured gateway | 专用于Modbus网关。表示网关配置错误。 |
0B | GatewayTargetDeviceFailedToRespond | 网关目标设备未响应 | Specialized for Modbus gateways. No response was received from the target device | 专用于Modbus网关。表示未收到目标设备的响应。 |
故障详解
0x01 IllegalFunction
中文名称: 非法功能码
故障描述: 大多数情况下是由于主站发送了非法的功能码,例如读取了不支持的寄存器类型或者写入了只读的寄存器。
The function code received in the query is not recognized or allowed by the device
故障分析:
当使用Modbus主站发送读取函数(如读取线圈状态、读取输入状态、读取保持寄存器或读取输入寄存器)的请求时,从站可能会返回错误码01。 这可能是由于以下几种情况引起的:
- 请求的功能码(FunctionCode)无效:错误码01表示请求的功能码不在从站所支持的范围内。每个从站都有特定的功能码支持,如果主站发送的功能码不是从站支持的,从站会返回该异常码。
- 请求的数据地址无效:错误码01也可能表示请求的数据地址超出了从站支持的范围。每个从站都有特定的数据地址范围,如果主站发送的读取请求包含了不支持的地址,从站将返回该异常码。
0x02 IllegalDataAddress
中文名称: 非法数据地址
故障描述: 典型的情况是主站设备发起了一个超出从站设备寄存器范围的读/写操作。
The data address received in the query is not allowed by the device
故障分析:
当Modbus主站向从站发送读取或写入请求时,从站可能会返回这个异常码,以指示所请求的数据地址无效。
这个异常码发生的情况包括但不限于以下几种可能的原因:
- 请求的数据地址超出了从站支持的范围。每个从站设备都有特定的数据地址范围,如果主站发送的请求包含了不在范围内的地址,从站会返回此异常码。
- 请求的数据地址未对齐。根据Modbus协议规范,某些数据类型(如保持寄存器和输入寄存器)需要按字(16位)对齐。
- 请求的数据地址不符合从站的规范。不同的从站可能对数据地址有不同的规则要求,例如某些从站可能要求地址从1开始,而不是从0开始。
- 从站设备无法识别或处理请求中的数据地址。(可能是由于从站设备的硬件故障、配置错误或其他原因导致的)
修复此异常通常需要确保主站发送的请求的数据地址符合从站支持的范围、对齐要求和规范。
0x03 IllegalDataValue
中文名称: 非法数据值
故障描述: 通常是由于主站设备试图写入一个超出从站设备可接受范围的值。
A value contained in the query data field is not an allowable value for the device
故障分析:
- 这可能是因为数据值超出了从站支持的范围。每个从站设备对允许的数据值范围有限制,如果主站发送的请求中包含了超出这个范围的数据值,从站会返回此异常码。
- 可能是由于所请求的写入值与从站设备的功能不匹配。例如,从站设备配置为只读方式,因此无法处理写入请求,从而返回该异常码。
0x04 SlaveDeviceFailure
中文名称: 从设备故障
故障描述: 表示从站设备在尝试执行请求操作时发生了无法恢复的错误。
An unrecoverable error occurred while the slave was attempting to perform the requested action
故障分析:
- 可能是由于从站设备的通信模块或处理器故障导致的。
- 可能是由于从站设备正在进行重启或其他处理导致无法响应请求。
0x05 Acknowledge
中文名称: 应答
故障描述: 通常在写入命令后出现,表示设备已经接受了请求并正在处理。
Specialized use in conjunction with programming commands. The device has accepted the request and is processing it
故障分析:
这个错误码通常在从设备(例如传感器或执行器)因为一些原因无法立即响应主站设备(如控制器或监视器)时产生。
当主站设备发送请求并收到Acknowledge错误码时,它意识到从设备已经收到请求并正在处理,但需要额外的时间。这通常发生在从设备需要进行一些计算或处理数据的情况下,或者如果从设备正在处理其他请求时。主站设备通常会等待一段时间,然后重新发送请求,或者根据具体的情况采取其他操作。
0x06 SlaveDeviceBusy
中文名称: 从设备忙
故障描述: 表明从站设备正在处理持续时间较长的程序命令。
The device is engaged in processing a long-duration program command
故障分析:
从站设备当前无法立即响应主站的请求,因为它正忙于执行其他任务。这可以是由于以下几种情况造成的:
- 从站设备正在进行处理或执行其他请求:从站设备可能正在进行耗时的操作,比如执行复杂的计算、进行与其他设备的通信、进行数据存储器的擦除等。在这种情况下,从站设备会返回错误码06,以表明它无法立即响应主站的请求。
- 从站设备的通信资源被占用:如果从站设备的通信资源(如串口或网络接口)被其他任务或设备占用,它可能无法处理主站请求,而返回错误码06。这可以是由于通信故障、通信资源分配不当或其他因素导致的。
0x08 MemoryParityError
中文名称: 存储器奇偶校验错
故障描述: 表明内存模块的奇偶校验不一致。
The parity of the memory module is not consistent with the memory module state
故障分析:
这种错误可能是由于以下原因造成的:
- 内存故障:从站设备的内部存储器可能存在硬件问题,如存储单元损坏或数据线路干扰,导致内存读写操作时出现校验错误。
- 数据传输错误:在数据传输期间,可能发生了临时的干扰或噪声,导致内存中的数据校验错误。
0x0A GatewayPathUnavailable
中文名称: 网关路径不可用
故障描述: 专用于Modbus网关。表示网关配置错误。
Specialized for Modbus gateways. Indicates a misconfigured gateway
故障分析:
这个异常码通常是在Modbus RTU over TCP/IP或Modbus TCP中使用的,用于指示网关设备无法获取到它所连接的Modbus从站设备的响应。
当网关设备发出一个请求到Modbus从站设备,但没有收到从站的响应时,网关会返回错误码0A。这通常表示从站设备出现了故障,或者由于其他原因无法响应网关的请求。
0x0B GatewayTargetDeviceFailedToRespond
中文名称: 网关目标设备未响应
故障描述: 专用于Modbus网关。表示未收到目标设备的响应。
Specialized for Modbus gateways. No response was received from the target device
故障分析:
这个异常码通常是在Modbus RTU over TCP/IP或Modbus TCP中使用的,用于指示网关设备无法获取到它所连接的Modbus从站设备的响应。
当网关设备发出一个请求到Modbus从站设备,但未能收到从站的响应时,网关会返回错误码0B。这通常表示从站设备出现了故障,或者由于其他原因无法响应网关的请求
结语
希望本篇速查手册对您在处理Modbus通信问题时能够提供帮助。如果您对本文有所收获,欢迎点赞收藏,以便随时在需要时查阅。我们也欢迎您分享给其他人,让更多的人受益。