Modbus协议诊断功能说明

描述

 

10.5.8

(0x08)诊断功能

1. 功能说明

08功能码仅用于串行链路,主要用于检测主设备和从设备之间的通信故障,或检测从设备的各种内部故障,该功能码不支持广播。为了区别各诊断类型,查询报文中提供了2字节的子功能码字段。

通常在正常的响应报文中,从设备将原样回复功能码和子功能码。

2. 查询报文

查询报文中需要指定从设备地址、功能码以及子功能码。

例如,下表中标识了子功能码“原样返回查询数据”的诊断功能,其中子功能码为0(0x0000)。在子功能码为0x0000的情况下,数据字段可以为任意值。各子功能码的详细意义可参考下表。

功能码08查询报文示例:

字段
(Hex)
ASCII模式字符型 RTU模式8位
(Hex)
帧头   “:”  
从设备地址 0x05 “0”,“5” 0x05
功能码 0x08 “0”,“8” 0x08
子功能码
(高位)
0x00 “0”,“0” 0x00
子功能码
(低位)
0x00 “0”,“0” 0x00
数据
(高位)
0x04 “0”,“4” 0x04
数据
(低位)
0xB0 “B”,“0” 0xB0
差错校验   LRC(2字符) CRC(2字节)
帧尾   CR/LF  
  合计字节数 17 8

本功能码中,子功能码由2字节构成,取值则根据意义而不同;数据字段由2字节构成,其取值由子功能码确定。

3. 响应报文

响应报文的各项构成和意义如下表所示。对于从设备,在保持寄存器正常变更的情况下会返回与查询报文相同的响应报文。如果修改失败,则返回一个异常响应。

功能码08响应报文示例:

字段
(Hex)
ASCII模式字符型 RTU模式8位
(Hex)
帧头   “:”  
从设备地址 0x05 “0”,“5” 0x05
功能码 0x08 “0”,“8” 0x08
子功能码
(高位)
0x00 “0”,“0” 0x00
子功能码
(低位)
0x00 “0”,“0” 0x00
数据
(高位)
0x04 “0”,“4” 0x04
数据
(低位)
0xB0 “B”,“0” 0xB0
差错校验   LRC(2字符) CRC(2字节)
帧尾   CR/LF  
  合计字节数 17 8

4. 诊断子功能码

各常用的诊断子功能码的定义如下。

Return Query Data(00)

诊断内容 原样返回查询报文
子功能码 0x00 0x00
查询报文数据字段 任意16为数据
响应报文数据字段 同查询报文

Restart Communication Option(01)

诊断内容 重启通信选项;用于初始化并重新启动从站设备,清楚所有通信事件计数器;如果端口处于 Listen Only Mode,则不返回响应;否则在重启之前返回响应
子功能码 0x00,0x01
查询报文数据字段 0x00,0x00保持事件记录;0xFF,0x00清除事件记录
响应报文数据 同查询报文
诊断内容 重启通信选项;用于初始化并重新启动从站设备,清楚所有通信事件计数器;如果端口处于 Listen Only Mode,则不返回响应;否则在重启之前返回响应
字段  

Return Diagnostics Register(02)

诊断内容 返回诊断寄存器
子功能码 0x00,0x04
查询报文数据字段 0x00,0x00
响应报文数据字段 诊断寄存器的内容

Force Listen Only Mode

诊断内容 强制只听模式;强制被寻址的从站设备进入只听模式,使得此设备与网络中的其他设备断开,不返回响应
子功能码 0x00,0x04
查询报文数据字段 0x00,0x00
响应报文数据字段 不返回响应

Clear Counters and Diagnostic Register

诊断内容 清除计数器和诊断寄存器
子功能码 0x00,0x0A
查询报文数据字段 0x00,0x00
响应报文数据字段 同查询报文

Return Bus Message Count(11,0x0B)

诊断内容 返回总线报文计数
子功能码 0x00,0x0B
查询报文数据字段 0x00,0x00
响应报文数据字段 返回报文的技数值

Return Bus Communication Error Count(12,0x0C)

诊断内容 返回总线通信CRC差错计数
子功能码 0x00,0x0C
查询报文数据字段 0x00,0x00
响应报文数据字段 返回报文的CRC出错总数

Return Bus Exception Error Count(13,0x0D)

诊断内容 返回总线异常差错计数
子功能码 0x00,0x0D
查询报文数据字段 0x00,0x00
响应报文数据字段 返回异常响应的总数

Return Slave Message Count(14,0x0E)

诊断内容 返回从站设备报文总数
子功能码 0x00,0x0E
查询报文数据字段 0x00,0x00
响应报文数据字段 返回从站设备接收报文总数

Return Slave No Response Counrt(15,0x0F)

诊断内容 返回从站设备无响应计数
子功能码 0x00,0x0F
查询报文数据字段 0x00,0x00
响应报文数据字段 返回加电后没有返回响应的报文的保文数量

Return Slave Busy Count(17,0x11)

诊断内容 返回从站设备忙计数
子功能码 0x00,0x11
查询报文数据字段 0x00,0x00
响应报文数据字段 返回加电后异常响应忙的报文数量

Return Bus Character Overrun Count(18,0x12)

诊断内容 返回总线字符超限计数
子功能码 0x00,0x12
查询报文数据字段 0x00,0x00
响应报文数据字段 返回超限的报文数量

 

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分