Modbus TCP/IP之异常响应

这篇具有很好参考价值的文章主要介绍了Modbus TCP/IP之异常响应。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、异常响应

  1. 对于查询报文,存在以下四种处理反馈:
    • 正常接收,正常处理,返回正常响应报文;
    • 因为通信错误等原因,造成从站设备没有接收到查询报文,主站设备将按超时处理;
    • 从站设备接收到的查询报文存在通信错误(如:Modbus串行的LRC、CRC错误),此时从站设备将丢弃报文不响应,主站设备按超时处理;
    • 从站设备接收到正确报文,但超出处理范围,此时从站设备将返回包含异常码的响应报文。
  2. 本文将围绕Modbus TCP/IP的异常响应进行讨论,并通过Modbus Slave和Poll进行举例。
  3. Modbus TCP/IP正常响应的常用功能码格式见本文:Modbus协议在TCP/IP上的运用
  4. 正常响应和异常响应最大的区别是从功能码开始的,异常响应的功能码为:正常功能码+0x80,然后跟一个占1字节的异常码,其目的是通知客户机异常原因。
    modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus

二、异常码分析

下面是针对几种异常码的介绍。

2.1 异常码0x01

  1. 概念:0x01异常码,即非法功能码。对于服务器(从站)来说,询问中收到的功能码是不可允许的操作,即从站设备不支持此功能码。
  2. 例子:主站发出功能码为0x03的报文,但从站支持0x04功能码。
  3. Modbus Poll配置
    modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus
    图1. Modbus Poll的connection配置

modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus

图2. Modbus Poll的setUp配置
  1. Modbus Slave配置
    modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus
    图3. Modbus Slave的connection配置

modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus

图4. Modbus Slave的setUp配置
  1. 通信结果
    modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus

    图5. 通信结果
  2. 结果分析:salve和poll连接后,poll报错Illegal Function,即非法功能码。再打开通信展示,对接收报文进行分析,其功能码为0x83=0x03+0x80,后再跟一字节的异常码0x01

2.2 异常码0x02

  1. 概念:0x02异常码,即非法数据地址。对于服务器(从站)来说,询问中收到的数据地址是不可允许的地址,即指定的数据地址在从站设备中不存在。特别是,起始地址和读取数量的组合是无效的。比如:对带有100个寄存器的slave来说,带有起始地址96和读取数量4的请求会成功,但带有起始地址96和读取数量5的请求将产生异常码02。

  2. 例子:poll和slave的配置如2.1中的操作,但把poll的功能码改为0x04,把quantity改为15。如下图:
    modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus

    图6. poll的setUp配置
  3. 通信结果
    modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus

    图7. 通信结果
  4. 结果分析:salve和poll连接后,poll报错Illegal Data Address,即非法数据地址。再打开通信展示,对接收报文进行分析,其功能码为0x84=0x04+0x80,后再跟一字节的异常码0x02

2.3 异常码0x03

  1. 概念:0x03异常码,即非法数据值。对于服务器(从站)来说,询问中包括的值是不可允许的值,即指定的数据超过范围或不允许使用。当主机软件发送一个写入请求时,如果请求中的数据值无效或超出从机设备可接受的范围,从机会返回错误码0x03。这表示主机发送了一个无效的数据值,从机无法接受并处理该数据。

  2. 例子1:slave寄存器的数值无效,poll和slave的配置如2.2中的操作,但把poll的quantity改回10,把poll第一个寄存器(编号0)显示设为有符整型,Signed;把slave对应的寄存器(编号0)显示设为有符整型,Signed。通过导航栏的Dispay选择。 可以不用设置,默认就是这个。我只是提一下修改显示的步骤。
    modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus

    图8. Display
  3. 在slave的该寄存器中写值32768时,无法写出去。因为超出了数值范围,是无效数。我认为可能和软件机制有关,为了避免了这种错误,所以超出范围的无效值不允许发送。不过,这个错误码是我根据概念解释自己理解和模拟的,如果有错误的地方或者其他意见欢迎讨论。
    modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus

图9. 错误提示
  1. 例子2:请求数量超额,由于Modbus工具限制,poll、slave只能读取、发送125个寄存器。如果想把poll的quantity设为126(大于125)时,会弹出“Enter an integer between 1 and 125.”的弹框。所以使用poll和slave没法模拟该情景。但当写有一个主端程序,申请读126个寄存器值时,应答报文显示0x03的错误。因为slave只能发125个寄存器的值。

2.4 异常码0x06

  1. 概念:0x06异常码,即从属设备忙。与编程命令一起使用。服务器正在处理长持续时间的程序命令。当服务器空闲时,客户机稍后重新传输保文。

  2. 例子:poll和slave的配置如2.1中的操作,但poll和slave的功能码统一为0x03。然后在slave中选择”setUp->slave definition“,并勾选弹窗中的Return exception 06, Busy,即返回设备繁忙状态。这是slave的故障模拟功能。配置如下:
    modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus

    图10. slave配置
  3. 通信结果:poll红字报错Slave Device Busy,且通信中响应报文功能码0x83=0x03+0x80,再加一个异常码0x06。
    modbus 错误返回,工业协议,tcp/ip,网络协议,网络,Modbus文章来源地址https://www.toymoban.com/news/detail-717829.html

    图11. poll结果显示

2.5 异常码0x04、0x05等

代码 名称
含义
0x04 从站设备故障 当服务器(或从站)正在设法执行请求的操作时,产生不可重新获得的差错。即从站设备处理响应的过程中,出现未知错误等。
0x05 确认 与编程命令一起使用。服务器已经接受请求,并且正在处理这个请求,但是需要长的持续时间进行这些操作。返回这个响应防止在客户机中发生超时错误。客户机可以继续发生轮询程序完成保文来确定是否完成处理。
0x08 存储奇偶性差错 指示扩展文件区不能通过一致性校验。
0x0A 不可用网关路径 与网关一起使用,指示网关不能为处理请求分配输入端口至输出端口的内部通信路劲。通常意味着网关是错误配置的或过载的。
0x0B 网关目标设备响应失败 与网关一起使用,指示没有从目标设备中获得响应。通常意味着设备未在网络中。

到了这里,关于Modbus TCP/IP之异常响应的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [工业互联-12]:主流的工业以太网技术简介(PROFINET、POWERLINK、ETHERNET/IP、ETHERCAT、SERCOSIII、MODBUS TCP、CC-LINK IE)

    目录 前言: 1、工业通信要求 1.1 工业通信网络分层模型 1.2 工业控制的实时性要求 2.  以太网技术 2.1 协议分层 2.2 实时应用 3. 常见工业以太网技术 3.1 PROFINET通信 3.2 POWERLINK通信 3.3 EtherNet/IP通信 3.4 EtherCAT通信 3.5 SERCOSIII通信 4.  工业以太网技术比较 4.1 市场占有 4.2 实时性

    2024年02月10日
    浏览(52)
  • 纸鸢|工业物联网通讯协议Modbus协议详解

    目录 Modbus简介 格式总览 从机地址 功能码和寄存器 PLC地址和Modbus协议地址 功能码总览 异常分析 Modbus 是一种串行通信协议,是 Modicon 于 1979 年,为使用可编程逻辑控制器(PLC)而发表的。Modbus 是工业领域通信协议的业界标准,并且现在是工业电子设备之间相当常用的连接方

    2024年02月09日
    浏览(49)
  • 嵌入式通信协议【Modbus】Modbus TCP的帧格式

    Client request:例: 19 B2 00 00 00 06 06 03 00 27 00 02 上面是modbus客户端发出的报文内容,为modbus tcp/ip协议格式,其前面的六个字节为头字节( header handle); 19 B2 00 00 00 06 19 B2  00 00 00 06 两个Client发出的检验信息,Sever端只是需要将这两个字节的内容copy以后再放到response的报文的相应位

    2024年02月05日
    浏览(81)
  • Modbus TCP通信协议详解

    一、Modbus TCP通信概述 MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品,显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC,I/O模块,以及连接其它简单域总线或I/O模块的

    2024年02月08日
    浏览(159)
  • C# Modbus通信从入门到精通(21)——Modbus TCP协议原理

    Modbus TCP是走网口的,也可以在同一时间内有多个从站访问主站,并且通过Modbus事务处理标识来区分同一时刻的不同Modbus事务,这是区别于Modbus ASCII和Modbus RTU的地方。 Modbus客户端通常输入Modbus服务器的IP地址和端口号来建立TCP连接,然后根据从站地址来确定具体访问哪个从站

    2024年02月15日
    浏览(60)
  • Modbus-TCP协议说明

    文章要说明Modbus TCP协议的相关内容。此协议是1996年施耐德公司推出的基于TCP/IP协议的Modbus协议。 此协议与Modbus-RTU协议最大的不同就是,使用了在TCP/IP协议上的专用的报文头识别Modbus应用数据单元。这种报文头被称为MBAP报文头。  报文头的长度是7个字节,分别有: 事务处理

    2024年02月11日
    浏览(58)
  • Modbus/Modbus TCP/EtherNet IP转MQTT物联网网关

    MQT-805是基于RS485、10M/100M网口通讯,支持Modbus总线协议、Modbus TCP协议(双网口)、支持EtherNet/IP协议(双网口)透明传输、2路数字量输入(DI)、2路数字量输出(DO)、GPS定位和4G(全网通)无线数据通讯网络的一款远程监控终端,主要针对需要无人值守和远程监控的工业监控现场,可用于

    2024年02月22日
    浏览(44)
  • modbus-tcp-rtu协议图表

    MODBUS TCP 读寄存器 请求 序号 意义 所占字节 字节存放格式 1 事务处理标识 2个字节 高字节在前 2 协议标识 2个字节 高字节在前 3 长度 2个字节 高字节在前 4 单元标识 1个字节 0x00-0xff 5 功能码 1个字节 0x03 6 起始寄存器地址 2个字节 高字节在前 7 寄存器个数 2个字节 高字节在前

    2024年01月23日
    浏览(37)
  • MODBUS TCP协议实例数据帧详细分析

    Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的Modbus协议:ModbusTCP。Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式

    2024年02月05日
    浏览(71)
  • Modbus tcp和Tcp/ip有什么区别

             Modbus TCP是一种基于TCP/IP协议的应用层协议 ,它是Modbus协议的扩展。Modbus协议是一种串行通信协议,最初是由Modicon公司在1979年开发的,用于工业自动化控制系统中设备之间的通信。 Modbus TCP则是将Modbus协议转换为基于以太网的TCP/IP协议 ,以支持更广泛的设备和系

    2024年02月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包