发表于:2008-02-29 11:50:00
1楼
6. 异常代码
在出问题的时候,有一系列定义过的异常代码被从站送回。注意到主站会“投机地”发送指令,利用接收到的成功或异常代码来确定支配设备的哪一个MODBUS愿意响应以及从站不同可用数据区的大小。
所有的异常通过添加0x80 到请求的功能代码来标记,跟随此字节的是一个单一的原因字节如下例所示:
03 12 34 00 01 => 83 02
当索引0x1234响应异常类型2-“非法的数据地址”时请求读1寄存器
异常情况列举如下:
01 非法的功能
对从站来说,在询问过程中收到的功能代码是不允许的行为。这可能是由于功能代码只适用于新近的控制器,而不能在所选的单元使用。也可推断出从站处于错误的状态而发出这样的一种请求,例如未经配置而被要求返回寄存器值。
02 非法的数据地址
对从站来说,在询问过程中收到的数据地址不是允许的地址。更明确一点,参考数值和传输长度的结合是无效的。对于一个有100个寄存器的控制器来说,具有偏移96和长度4的请求将能成功,而具有偏移96和长度5的请求将产生异常02。
03 非法的数据值
对从站来说,在询问数据区段所包含的值是不允许的。这推断出在复杂请求余额的结构中的一个错误,例如隐含长度是不正确的。既然MODBUS协议不了解一些 特殊寄存器的特殊值的意义,因此这并不意味着寄存器中被提交用于存储的数据对象有一个应用程序期望值之外的值,
04非法的响应长度
指出加外框的请求将产生一个尺寸超出可用MODBUS数据尺寸的响应。仅用于由功能所产生的多部分响应,如功能20和21。
05 确认
专用于关联程序设计指令。
06 从站设备忙
专用于关联程序设计指令。
07 否认
专用于关联程序设计指令。
08 存储器奇偶校验错误
专用于关联功能代码20和21,指出扩展文件区没通过一致性检验。
0A 网关通路不可用
专用于关联Modbus Plus 网关, 指出网关未能分配Modbus Plus路径以处理请求。通常意味着网关配置错误。
0B 网关目标设备响应失败
专用于关联Modbus Plus网关,指出从目标设备未能获得响应。通常意味着设备没有连接到网络上。