MODBUS-RTU异常码

原文链接:https://wenku.baidu.com/view/5f9b1b9f85c24028915f804d2b160b4e767f8195.html

 

Modbus协议主要构成是地址码/标识码,功能码,寄存器地址,数据报文等内容。由于modbus协议是请求/应答通信协议,其其中功能码主要用于表述该数据报文执行的功能,当服务器对客户机进行响应时,它使用功能码域来指示正常响应(无差错)或者异常响应(即出现某种差错),其中的modbus协议的功能码众多,在此我们一一列出与大家分享。

功能码表

 数据类型功能描述功能码功能码(十六进制)异常功能码
比特访问物理离散量输入读输入离散量020x020x82
内部比特或者物理线圈读线圈010x010x81
写单个线圈050x050x85
写多个线圈150x0F0x8F
 
16比特访问输入存储器读输入寄存器040x040x84
内部存储器或物理输出存储器(保持寄存器)读多个寄存器030x030x83
写单个寄存器060x060x86
写多个寄存器160x100x90
读/写多个寄存器230x170x97
屏蔽写寄存器220x160x96
 
文件记录访问读文件记录200x14 
写文件记录210x15 

 

其中物理离散量输入和输入寄存器只能有I/O系统提供的数据类型,即只能是由I/O系统改变离散量输入和输入寄存器的数值,而上位机程序不能改变的数据类型,在数据读写上表现为只读,而内部比特或者物理线圈和内部寄存器或物理输出寄存器(保持寄存器)则是上位机应用程序可以改变的数据类型,在数据读写上表现为可读可写。

错误代码表

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

我们以Modbus RTU协议为例,地址码为0x01,写操作0x10,寄存器地址为0x018E,CRC校验。如寄存器可读写的话,返回正常,如寄存器只读,返回异常。

下发指令:01 10 01 8E 00 01 02 00 00 69 BE(向寄存器0x018E写入一个数值为0的数据)

正确回应指令:01 10 01 8E 00 01 60 1E(向寄存器地址0x018E写操作一个寄存器)

错误回应指令:01 90 01 8D C0(写操作非法功能,可能是向输入寄存器写数据)

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Modbus-RTU调试助手是一种用于调试Modbus-RTU通信协议的工具。Modbus-RTU是一种常用的串行通信协议,广泛应用于工业自动化领域。调试助手可以帮助工程师们检测和诊断Modbus-RTU通信中的问题。 Modbus-RTU调试助手具有以下功能和特点: 1. 支持串口通信:调试助手可以通过串口与Modbus设备建立通信连接,实现与设备的数据交互。 2. 支持Modbus-RTU协议:调试助手能够解析和封装Modbus-RTU协议数据包,实现对Modbus设备的控制与查询。 3. 数据监测与分析:调试助手可以实时监测并显示Modbus通信中的数据,包括发送的命令和接收的响应。工程师们可以通过分析这些数据来判断通信是否正常,并找出问题的来源。 4. 数据读写:调试助手可以模拟Modbus主站或从站的功能,实现对Modbus设备的读写。工程师们可以使用调试助手向设备发送读取寄存器或写入寄存器的命令,以验证设备的功能和数据的准确性。 5. 异常处理:调试助手可以捕获并显示Modbus通信过程中的异常情况,如通信超时、通信错误等。工程师们可以根据异常信息来定位和解决问题。 总之,Modbus-RTU调试助手是一种功能强大的工具,可以帮助工程师们方便地调试和排除Modbus-RTU通信中的问题,提高工作效率和准确性。 ### 回答2: Modbus-RTU调试助手是一种用于帮助调试和测试Modbus-RTU通信协议的工具。Modbus-RTU是一种常用的串行通信协议,广泛应用于工业自动化系统中。 调试助手通常具备以下功能: 1. 串口设置:可以选择并设置与设备通信的串口参数,例如波特率、数据位、校验位和停止位等。 2. Modbus地址设置:可以设置设备的Modbus地址,以便与设备正确进行通信。 3. 数据读取和写入:可以读取和写入设备的寄存器数据,包括输入寄存器、保持寄存器、线圈和离散输入等。调试助手可以提供一个用户界面,方便用户输入和查看数据。 4. 报文分析:调试助手可以将发送和接收的Modbus报文进行解析,并显示相关的信息,如功能、地址和数据等。这有助于用户了解数据通信的情况和问题定位。 5. 日志记录:调试助手可以记录与设备的通信过程,包括发送和接收的报文、时间戳以及通信结果等。这有助于用户追踪和分析通信过程,以解决问题。 6. CRC校验:调试助手可以计算并验证Modbus报文的CRC校验,确保数据的完整性和正确性。 通过使用Modbus-RTU调试助手,用户可以方便地进行Modbus设备的调试和测试工作,发现和解决通信问题,确保系统的稳定性和可靠性。它可以提高工作效率,减少调试时间,为工程师和技术人员提供便利和支持。同时,调试助手的功能和灵活性也可以根据用户需求进行定制和扩展,以满足不同应用场景的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值