Modbus TCP/IP之异常响应

news2024/11/17 5:49:40

文章目录

    • 一、异常响应
    • 二、异常码分析
      • 2.1 异常码0x01
      • 2.2 异常码0x02
      • 2.3 异常码0x03
      • 2.4 异常码0x04、0x05等

一、异常响应

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

二、异常码分析

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

2.1 异常码0x01

  1. 概念:0x01异常码,即非法功能码。对于服务器(从站)来说,询问中收到的功能码是不可允许的操作,即从站设备不支持此功能码。
  2. 例子:主站发出功能码为0x03的报文,但从站支持0x04功能码。
  3. Modbus Poll配置
    在这里插入图片描述
    图1. Modbus Poll的connection配置

在这里插入图片描述

图2. Modbus Poll的setUp配置

  1. Modbus Slave配置
    在这里插入图片描述
    图3. Modbus Slave的connection配置

在这里插入图片描述

图4. Modbus Slave的setUp配置
  1. 通信结果
    在这里插入图片描述

    图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。如下图:
    在这里插入图片描述

    图6. poll的setUp配置

  3. 通信结果
    在这里插入图片描述

    图7. 通信结果

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

2.3 异常码0x03

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

  2. 例子:poll和slave的配置如2.2中的操作,但把poll的quantity改回10,把poll第一个寄存器(编号0)显示设为有符整型,Signed;把slave对应的寄存器(编号0)显示设为有符整型,Signed。通过导航栏的Dispay选择。 可以不用设置,默认就是这个。我只是提一下修改显示的步骤。
    在这里插入图片描述

    图8. Display

  3. 在slave的该寄存器中写值32768时,无法写出去。因为超出了数值范围,是无效数。我认为可能和软件机制有关,为了避免了这种错误,所以超出范围的无效值不允许发送。不过,这个错误码是我根据概念解释自己理解和模拟的,如果有错误的地方或者其他意见欢迎讨论。
    在这里插入图片描述

图9. 错误提示

2.4 异常码0x04、0x05等

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/797861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我对牟长青分享的各个私董会数据分析

我是卢松松,点点上面的头像,欢迎关注我哦! 其实之前,我也想写一个关于各个草根社群的数据分析,但这样的文章容易得罪人,因为我一直喜欢直言不讳,所以一直没有动笔。例如,我在6月份写…

OpenGl中的VAO、VBO与EBO

文章目录 VBO(顶点缓冲区对象)VBO的使用 EBO(索引缓冲对象)EBO的使用 VAO(顶点数组对象)VAO的使用 三者的区别someting。。。 哎,很离谱,上个月学learnopengl学到一半跑去看庄懂老师的视频,结果该还的东西迟早得还,再打开之前的工…

NineData支持最受欢迎数据库PostgreSQL

根据在 Stack Overflow 发布的 2023 开发者调研报告中显示,PostgreSQL 以 45% vs 41% 的受欢迎比率战胜 MySQL,成为新的最受欢迎的数据库。NineData 也在近期支持了 PostgreSQL,用户可以在 NineData 平台上进行创建数据库/Schema、管理用户与…

BTTES,2101505-88-6,是各种化学生物实验中生物偶联的理想选择

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ 规格单位:g |货期:按照具体的库存进行提供 | 纯度:95% PART1----​试剂描述: BTTES是铜(I)催化的叠氮化物-炔烃环加成(CuAAC&#x…

整数替换(力扣)HashMap + 递归 JAVA

给定一个正整数 n ,你可以做如下操作: 如果 n 是偶数,则用 n / 2替换 n 。 如果 n 是奇数,则可以用 n 1或n - 1替换 n 。 返回 n 变为 1 所需的 最小替换次数 。 示例 1: 输入:n 8 输出:3 解释…

系统架构设计师-软件架构设计(4)

目录 一、软件架构评估 1、敏感点 2、权衡点 3、风险点 4、非风险点 5、架构评估方法 5.1 基于调查问卷或检查表的方式 5.2 基于度量的方式 5.3 基于场景的方式 6、基于场景的评估方法 6.1 软件架构分析法(SAAM) 6.2 架构权衡分析法(ATAM&am…

vue 封装一个鼠标拖动选择时间段功能

<template><div class"timeRange"><div class"calendar"><table><thead><tr><th rowspan"6" class"weekRow"><b>周/时间</b></th><th colspan"24"><…

docker容器引擎(三)

docker 一、Docker 的数据管理1&#xff0e;数据卷2&#xff0e;数据卷容器 二、容器互联&#xff08;使用centos镜像&#xff09;三、docker镜像的创建创建镜像的方法DockerfileDocker 镜像结构的分层Dockerfile 操作常用的指令&#xff1a; 四、Dockerfile 案例 一、Docker 的…

Java从入门到精通(一)

Java从入门到精通&#xff08;一&#xff09; 前言 温故而知新&#xff0c;闲着没事干&#xff0c;准备将Java编程语言的知识点从头梳理一遍&#xff0c;整理成笔记&#xff0c;逐篇发布。 部分图片素材来源与B站“黑马程序员”的课程。 一 Java背景 Java是1995年 由Sun公司…

error CS0246: 未能找到类型或命名空间名“Newtonsoft”(是否缺少 using 指令或程序集引用?)

error CS0246: 未能找到类型或命名空间名“Newtonsoft”(是否缺少 using 指令或程序集引用?) 如图&#xff0c;明明已经引用了命名空间&#xff0c;可以点击生成报错。找了很长时间的原因&#xff0c;最后终于解决了问题。 原因是Newtonsoft这个dll文件只支持.net 4.5框架&…

互联网搜索的学习笔记

1. 参考资料 《Internet Search Tips》《Google Search Operators: The Complete List (42 Advanced Operators)》 2. 预备知识 2.1 查询语法 2.1.1 -&#xff1a;排除符 用于排除指定关键字。例如&#xff0c;如果想搜索“苹果”但不想看到“苹果手机”的结果&#xff0c;…

【Spring】IOC的原理

一、 IOC 的概念 Spring 的 IOC &#xff0c;即控制反转&#xff0c;所谓控制反转 —— 本来管理业务对象&#xff08;bean&#xff09;的操作是由我们程序员去做的&#xff0c;但是有了 Spring 核心容器后&#xff0c;这些 Bean 对象的创建和管理交给我们Spring容器去做了&am…

疫苗生产精细困难,有了物联网网关,让生产 更轻松

疫苗生产背景 生产出现的问题 项目工期十分紧张 无法及时获知产线生产进度&#xff0c;不易进行计划调整 无法准确的安排现场生产计划 产品线数量多&#xff0c;纸质记录及流程近10万页 设备采集数量庞大&#xff0c;超过40000点 设备管理不明确、报修维修等无法及时通知…

QPoint、QLine、QSize、QRect

QPoint、QLine、QSize、QRect QPointQLineQSizeQRect QPoint // 构造函数 // 构造一个坐标原点, 即(0, 0) QPoint::QPoint(); // 参数为 x轴坐标, y轴坐标 QPoint::QPoint(int xpos, int ypos);// 设置x轴坐标 void QPoint::setX(int x); // 设置y轴坐标 void QPoint::setY(in…

Linux操作系统~必考面试题⑦

1、vim 命令 Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富&#xff0c;在程序员中被广泛使用。 打开文件并跳到第 10 行&#xff1a; vim 10 filename.txt 打开文件跳到第一个匹配的行&#xff1a; vim /search-term filenam…

基于传统网络架构训练图像分类模型(上传到colab中进行运算)

一 部署colab环境 部署colab参考网站 相关文件&#xff1a;提取码&#xff1a;o2gn 在google drive中部署以上涉及的相关文件夹 二 对这个项目的解释 这个项目主要是对5类花的图像进行分类 采用迁移学习的方法&#xff0c;迁移学习resnet网络&#xff0c;利用原来的权重作…

stm32f103VET6和stm32f103c8t6有什么区别?

我来终结下这个问题。 这两款单片机我都用过&#xff0c;其中无际单片机特训营其中一款wifi报警主机项目就是用了stm32f103c8t6。 stm32f103VET6和stm32f103c8t6都是STMicroelectronics公司推出基于ARM Cortex-M3内核的单片机。 它们在硬件规格和性能上存在一些差异&#xff…

SpringSecurity认证授权具体流程步骤(具体实例)

本案例是通过使用SpringSecurity来实现通过读取数据库中的数据&#xff0c;来完成认证授权的案例。 1. 向数据库中添加具体实例 创建出五个表&#xff0c;五个表之间的关系为&#xff1a; sys_user&#xff1a;登录表&#xff0c;用于登陆后查询id sys_user_role&#xff1a;…

Flink集群运行模式--Standalone运行模式

Flink集群运行模式--Standalone运行模式 一、实验目的二、实验内容三、实验原理四、实验环境五、实验步骤5.1 部署模式5.1.1 会话模式&#xff08;Session Mode&#xff09;5.1.2 单作业模式&#xff08;Per-Job Mode&#xff09;5.1.3 应用模式&#xff08;Application Mode&a…

三层交换机实现DHCP功能

典型操作&#xff1a;三层交换机VLAN实现网络 可以实现基本的企业需求 华为的三层交换机实现DHCP功能&#xff0c;需要给vlan划分地址池 1.网络拓扑图 2.三层交换机的配置 //三层交换机的配置 //配置IP地址池&#xff0c;实现DHCP时分配给vlan下的终端 [Huawei]ip pool vl…