当客户机设备向服务器设备发送请求时,客户机希望一个正常的响应。从主站询问中出现下面四种可能事件
1. 如果服务器设备接收到无通信错误的请求,并且可以正常地处理询问,那么服务器设备将返回一个正常响应。
2. 如果由于通信错误,服务器没有接收到请求,那么不能返回响应。客户机程序将最终处理请求的超时状态。
3. 如果服务器接收到请求,但是检测到一个通信错误(奇偶校验、LRC、CRC、.....),那么不能返回响应。客户机程序将最终处理请求超时状态。
4. 如果服务器接受到无通信错误的请求,但不能处理这个请求(例如,如果请求读一个不存在的输出或寄存器),服务器将返回一个异常响应,通知用户错误的本质特性。
异常响应报文有两个与正常响应不同的域:
功能码域: 在正常响应中,服务器利用响应功能码域来应答最初请求的功能码。所有功能码的最高有效位(MSB)都为0(它们的值都低于十六进制80)。在异常响应中,服务器设置功能码的MSB为1。这使得异常响应中的功能码值比正常响应中的功能码值高十六进制80
数据域: 在正常响应中,服务器可以返回数据域中数据或统计表(请求中要求的任何报文)。在异常响应中,服务器返回数据域中的异常码。这就是定义了产生异常的服务器状态。
MODBUS异常码
代码 名称 含义
01 非法功能 对于服务器(或从站)来说,询问中接收到的功能码是不可允许的操作。这也许是因为功能码仅仅适用于 新设备而在被选单元中是不可实现的。同时,还指出服务器(或从站)在错误状态中处理这种请求。 例如: 因为它是未配置的,并且要求返回寄存器值。
02 非法数据地址 对于服务器(或从站)来说,询问中接收到的数据地址是不可允许的地址。特别是,参考号和传输长度的 组合是无效的。对于带有100个寄存器的控制器来说,带有偏移量96和长度4的请求会成功,带有偏移量 96和长度5的请求将产生异常码02
03 非法数据值 对于服务器(或从站)来说,新闻中包括的值是不可允许的值。这个值知识了组合请求剩余结构中的故障 例如:遗憾长度是不正确的。并不意味着,因为MODBUS协议不知道任何特殊寄存器的任何特殊值 的重要意义,寄存器中被提交存储的数据项由一个应用程序期望之外的值
04 从站设备故障 当服务器(或从站)正在设法执行请求的操作时,产生不可重新获得的差错。
05 确认 与编程命令一起使用,服务器(或从站)已经接受请求,并且正在处理这个请求,但是需要长的持续时间 进行这些操作。返回这个响应防止在客户机(或主站) 中发生超时错误。客户机(或从站)可以继续发送 轮询程序完成报文来确定是否完成处理。
06 从属设备忙 与编程命令一起使用。服务器(或从站)正在处理长持续时间的程序命令。等服务(或从站)空闲时,用户 (或主站)应该稍后重新传输报文。
08 存储奇偶性差错 与功能码20和21以及参考类型6一起使用,指示扩展文件区不能通过一致性校验。 服务器(或从站)设法读取记录文件,但是在存储器中发现一个奇偶校验错误。 客户机(或主站)可以重新发送请求,但可以在服务器(或从站)设备上要求服务。
0A 不可用网关路径 与网关一起使用,指示网管不能为处理请求分配输入端至输出口的内部通信路径。童话村那个意味着 网关是错误配置的或过载的。
0B 网关目标设备响应失败 与网关一起使用,指示没有从目标设备中获得响应。通常意味着设备未在网络中。