10.5.13
(0x11)报告从站ID(仅用于串行链路)
1. 功能说明
17功能码用于读取从站设备的ID、类型描述、当前状态以及其他信息,不支持广播模式。响应消息的构成依赖于设备而不尽相同。
2. 查询报文
查询报文中不包含请求数据字段。举例说明,从站设备地址为5,获取相关信息,如下表所示。
功能码17查询报文示例:
(Hex) ASCII
模式字符型 RTU模式8位
(Hex) 帧头 “:” 从设备地址 0x05 “0”,“5” 0x05 功能码 0x11 “1”,“1” 0x11 差错校验 LRC(2字符) CRC(2字节) 帧尾 CR/LF 合计字节数 9 4
3. 响应报文
对于从设备,在正常情况下,响应报文包括从站ID、运行状态以及其他附加信息,如下表所示。运行状态字段占用1字节,且0x00=OFF,0xFF=ON,而响应报文的组成则由开发者决定。
功能码17响应报文示例:
(Hex) ASCII
模式字符型 RTU模式8位
(Hex) 帧头 “:” 从设备地址 0x05 “0”,“5” 0x05 功能码 0x11 “1”,“1” 0x11 字节数 设备相关 设备相关 设备相关 从设备ID 设备相关 设备相关 设备相关 运行状态 0xFF “F”,“F” 0xFF 附加情报1 设备相关 设备相关 设备相关 …… 设备相关 设备相关 设备相关 差错校验 LRC(2字符) CRC(2字节) 帧尾 CR/LF 合计字节数 17 8
10.5.14
Modbus异常响应
以上介绍了一些常见的公共功能码的报文(消息顿)构成,广播模式以外的查询报文都希望能够获取一个正常的响应报文。在通常情况下,从站设备将返回一个正常响应报文,但是在某些特殊情况下将返回异常响应报文。
对于查询报文,存在以下4种处理反馈:
①正常接收,正常处理,返回正常响应报文。
②因为通信错误等原因造成从站设备没有接收到查询报文,主站设备将按超时处理:从站设备接收到的查询报文存在通信错误(如LRC、CRC错误等),此时从站设备将丢弃报文不响应,主站设备将按超时处理。
③从站设备接收到正确的报文,但是超过处理范围(如不存在的功能码或者寄存器等),此时从站设备将返回包含异常码(Exception Code)的响应报文。
④异常响应报文由从站地址、功能码以及异常码构成。其中,功能码与正常响应报文不同,在异常响应报文中,功能码最高位(即MSB)被设置为1。因为Modbus协议中的功能码占用1字节故用表达式描述为:
异常功能码=正常功能码+0x80
举例说明,如下表所示,查询报文的起始地址为0x012C(十进制300),即需要读取寄存器地址为30301开始的值。若从站设备中不存在输入寄存器30301,则从站设备将返回一个异常响应报文,参见下表的功能码和异常码。
异常响应示例(功能码04查询报文):
(Hex) ASCII
模式字符型 RTU模式8位
(Hex) 帧头 “:” 从设备地址 0x07 “0”,“7” 0x07 功能码 0x04 “0”,“4” 0x04 起始地址
(高位) 0x01 “0”,“1” 0x01 起始地址
(低位) 0x2c “2”,“c” 0x2c 寄存器数
(高位) 0x00 “0”,“0” 0x00 寄存器数
(低位) 0x03 “0”,“3” 0x03 差错校验 LRC(2字符) CRC(2字节) 帧尾 CR/LF 合计字节数 17 8
异常响应示例(功能码04响应报文):
(Hex) ASCII
模式字符型 RTU模式8位
(Hex) 帧头 “:” 从设备地址 0x07 “0”,“7” 0x07 功能码 0x84 “8”,“4” 0x84 异常码 0x02 “0”,“2” 0x02 差错校验 LRC(2字符) CRC(2字节) 帧尾 CR/LF 合计字节数 11 5
常见的异常码如下表所示:
常见异常码说明:
到此这篇bt1120协议(bt1120协议详解 422)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/51364.html