对数据字节太少的modbus请求的正确响应是什么?

时间:2014-05-08 12:55:30

标签: modbus

在Modbus服务器实现中,如果服务器收到来自客户端的包含太少(或没有)数据字节要求正确解释的请求,服务器应该发送什么响应?

例如,modbus RTU服务器(地址为0x01)接收ADU数据报:0x01,0x01,0xE0,0xC1。在这种情况下,没有检测到物理传输层错误,地址正确,CRC正确并且功能(读取线圈)正确并在服务器上实现,但PDU不包含所需的起始地址或输入数量字段处理请求。

服务器是否应该假设发生了(非常罕见的)位错误并且根本没有响应? 服务器是否应将此解释为服务器不允许的“查询数据字段中的值”并使用ILLEGAL DATA VALUE异常进行响应? 服务器应该做一些完全不同的事情吗?

2 个答案:

答案 0 :(得分:0)

根据我的经验,至少使用Modbus TCP,设备往往会忽略格式错误的请求。

答案 1 :(得分:0)

根据规范MODBUS APPLICATION PROTOCOL SPECIFICATION V1.1b3,异常(代码3)是正确的。图9 MODBUS事务状态图清楚地表明对错误形成的消息的异常响应。

我怀疑拒绝邮件的常见响应与传输错误无法区分,然后会诱导错误客户端的实现者纠正其实现。

您建议通信错误触发此操作是可能的,但前提是基础链接未检测到丢失的字节。除0xFF之外的任何字节都会将一个起始位引入串行通道,并且TCP / UDP实现中的丢失字节更不可能发生。