Modbus协议详解2:通信方式、地址规则、主从机通信状态

2023-11-05

首先我们要清楚:Modbus是一种串行链路上的主从协议,在通信线路上只能有一个主机存在,不会有多主机存在的情况。虽然主机只有一个,但是从机是可以有多个的。

Modbus的通信过程都是由主机发起的,从机在接收到主机的请求后再进行响应,从机不会主动进行数据的发送。并且从机之间也不会互相发送数据。

1、Modbus的地址规则

Modbus中的每个从机为了能在通信时被主机识别,都会有一个地址,也称为从节点地址。

从节点地址对从设备而言必须是唯一的,在总线上也只能有唯一的一个设备地址,即从机设备的地址在总线上也不能冲突。

从机是有唯一的设备地址的,而主机本身是没有地址的。

Modbus支持的寻址空间为256个,如下:

从上图中可以看到,给子节点使用的地址范围是1 ~ 247,248 ~255是被保留着的。非常重要的一点,0是广播地址,所有的子节点都必须要能够识别广播地址。

2、Modbus的通信模式

Modbus的通信模式有两种:单播模式和广播模式。

(1)单播模式

单播模式:主机要访问某个子节点的时候,是通过子节点的地址进行的一对一的访问方式。子节点在收到主节点发过来的请求以后,根据请求的类型完成相应处理后,子节点会向主节点返回一个报文,也就是我们常说的“应答”。示意图如下:

从上图中是可以看到的:主节点通过发送请求命令到从节点,从节点会从总线上接收到来自主节点的请求,然后解析主节点的请求指令,根据指令完成相应的动作,然后再给主节点的请求作出一个回应,便完成了一次单播通信的过程。

其实大家应该也能看到:在单播模式下,一个Modbus的事务它包含了两个报文,一个是由主机主动发出的“请求”报文,另一个是由从机返回的“应答”报文。

并且主机能准备访问到某个从机是通过从机的唯一地址实现的,从机识别主机发出的指令是否是发送到自己这边的,也是通过从机的唯一地址进行甄别的。

(2)广播模式

广播模式是主机用于向总线上的所有的从机发送请求的指令。

主机的广播指令一般都是用于写命令的,对于来自于主机的广播指令,从机是不需要进行应答的。广播模式的示意图如下:

从图中可以看出,广播模式时单向的,主机发送出广播指令,而从机不再对广播指令进行应答,数据流只在一个方向上流动。

注意:总线上所有的从机都必须要能够识别主机的广播指令,并且地址0是用于广播的,不能作为从机的地址。

3、主从机的状态特征

既然Modbus是主从机的通信模式,那么在通信过程中就需要清楚主从机之间的状态,通过状态去理解Modbus的通信流程。

(1)主机的状态特征

如下图:

根据上图可以分析得到主机的通信过程的一些信息:

1"空闲" = 无等待的请求。 这一般是在初始上电之后所处的状态。 主机只有在"空闲"状态才能发送请求。发送一个请求后,主机会离开"空闲"状态, 进入“忙”的状态,此时不能再发送其他的请求。

2)当单播请求发送到一个从机上,主将进入"等待应答" 状态, 同时一个临界超时定时计数器会启动。这个超时称为 "响应超时"。 它避免主节点永远处于"等待应答" 状态。 响应超时的时间依赖于实际的应用场景

3)当收到一个应答时,主节点在处理数据之前检验应答。在某些情况下,检验的结果可能为错误。如收到来自非期望的子节点的应答,或接收的帧错误,响应超时继续计时;当检测到帧错时,可以执行一个重试。

4)响应超时但没有收到应答时,则产生一个错误。那么主节点会重新进入”空闲” 状态, 并发出一个重试请求。重试的最大次数取决于主节点 的设置。

5)当广播请求发送到串行总线上,没有响应从子节点返回。然而主节点需要进行延迟以便使子节点在发送新的请求处理完当前请求。该延迟被称作 "转换延迟"。因此,主节点会在返回能够发送另一个请求的“空闲”状态之前,到" 等待转换延迟"状态。

6)在单播方式,响应超时必须设置到足够的长度以使任何子节点都能处理完请求并返回响应。而广播转换延迟必须有足够的长度以使任何子节点都能只处理完请求而可以接收新的请求。 因此,转换延迟应该比响应超时要短。

帧错误常见的有:对每个字符的奇偶校验、 对整个帧的冗余校验。

(2)从机的状态特征

如下图:

从上图中可以知道:

1)“空闲” = 没有等待的请求。 这一般是初始上电后的状态。

2)当收到一个请求时,子节点在处理请求中要求的动作前要先检验报文包。当检测到错误时,必须向主节点发送应答告知错误。(错误包含:请求的格式错误、非法动作、非法的访问地址......)。

3)当要求的动作完成后,单播报文要求必须按格式应答主节点。

4)如果子节点在接收到的帧中检测到错误, 则没有响应返回到主节点。

5)任何子节点均应该定义并管理 Modbus 诊断计数器以提供诊断信息。通过使用 Modbus 诊断功能码,可以得到这些计数值。

最后再补充一个主从机的通信时序图:

上面的时序图中描述的就是上面所说的主从机状态特征,对比来看就能看明白是什么意思了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Modbus协议详解2:通信方式、地址规则、主从机通信状态 的相关文章

  • 最简单的鼠标放置悬停显示省略的内容,为标签的title赋值

    翻了一下午没看到能看懂的代码 对于我这个后台开发实在天书一般 原始需求为 内容过长显示为省略号 鼠标放置时再将全部内容悬浮展示出来 内容是放置在p标签中的 设置一下style即可 注意这四个属性缺一不可 p style width 100
  • 雪花算法记录

    引子 伴随着业务的日渐庞大 单库单表的数据库可能无法支持业务的读写 需要对数据库进行分库分表 原来数据库中 通常使用自增id的方式生成主键 分库分表之后 如果仍然采用原来的方式 在多个表之间主键会发生重复 分库分表后 如何保证多张表中的 i
  • webpack5+mockjs

    上篇提到升级 vue cli 5 0 1后 发现webpack 是v5 之前配置devServer after异常 于是认真看了一下文档 webpack v5文档 v5的devServer去掉了get和after 添加了setupMiddl
  • 日期的生成

    获取系统当前时间 日期类型为timestamp 日期格式为2010 11 04 16 19 42 方法1 Timestamp d new Timestamp System currentTimeMillis 方法2 Date date ne
  • 实对称矩阵的性质_今天行列式的矩阵是一个实对称矩阵, 主对角线是同一个元素, 其余位置是另一元素。该矩阵的行列式有相当好的性质, 同学们要加以记忆...

    行列式计算 5 01 前言 1 今天我们继续讨论特殊行列式的计算思路与方法 今天这组题的行列式的矩阵是一个实对称矩阵 主对角线是同一个元素 其余位置是另一元素 该矩阵的行列式有相当好的性质 需要同学们加以记忆 2 第1题 第一个行列式的计算
  • MyBatis - 14 - 分页插件的配置及使用

    文章目录 1 分页插件配置 1 在pom xml中添加依赖 2 在MyBatis的核心配置文件中配置插件 2 分页插件的使用 回顾Mysql分页功能 MyBatis分页插件的使用 测试显示第1页 每页显示4条数据 打印page对象 测试获取

随机推荐

  • java Collection和Map接口的区别

    一 Collection接口 Collection是最基本的集合接口 一个Collection代表一组Object 即Collection的元素 Elements 一些Collection允许相同的元素而另一些不行 一些能排序而另一些不行
  • 荔枝派Zero(全志V3S)驱动开发之hello驱动程序

    文章目录 前言 一 设备驱动分类 二 字符设备驱动简介 三 字符设备驱动开发 1 APP打开的文件在内核中如何表示 2 编写驱动程序的步骤 3 hello 驱动程序编写 lt 1 gt 试验程序编写 lt 2 gt 测试程序编写 lt 3
  • Maven的Pom文件中的隐式依赖导致Jar包冲突的问题

    分享一下我老师大神的人工智能教程 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 造福人民 实现我们中华民族伟大复兴 在一次的maven项目中遇到这样一个bug 编译器没有报什么错 但无法编
  • python爬取boss直聘招聘信息_python学习之路-爬取boss直聘的岗位信息

    背景 想了解从事python相关岗位需要具备什么技能 于是就想从招聘网站上的职位需求入手 把信息获取下来后 生成词云 这样就能很直观的看出来哪些技能是python相关岗位需要具备的了 技术概览 scrapy request wordclou
  • 面试官:说一下单点登录的几种实现方式

    Java面试笔试面经 Java技术每天学习一点 Java面试 关注不迷路 作者 张永恒 来源 https www cnblogs com yonghengzh p 13712729 html 在 B S 系统中 登录功能通常都是基于Cook
  • centos ip 没有显示

    进入 cd etc sysconfig network scripts 编辑网卡设置 我的网卡默认是ifcfg ens33 有的网卡默认是ifcfg eth0 执行 vi ifcfg ens33 将onboot no 改为onboot ye
  • MPU6500驱动调试笔记(STM32F407+SPI)

    一 问题背景 本来最开始实验室使用MPU6050芯片 采集陀螺仪原始数据做生理信号采集 但算法发现用IIC接口采样率 200hz 达不到要求 故寻找同类型支持SPI协议的芯片去替代 发现了这块MPU6500 还便宜 就用起来 在读写寄存器费
  • ST 电机控制工作台帮助文档翻译 之 STM32F3x 的 OCP 和 OVP(使用嵌入式模拟的过压保护(仅限 STM32F3x))

    ST 电机控制工作台 使用嵌入式模拟的过压保护 仅限 STM32F3x 图5显示了可以使用 STM32F30x 的内部资源实现的过压保护网络的基本实现 图5 过压保护网络 原理类似于 过流保护
  • linux-目录相关作用

    文章来自狂神老师的笔记 同时会有自己的体会 狂神老师课程的链接 https www bilibili com video BV187411y7hF from search seid 10463862828616102628 注意 linux
  • 基于SpringBoot的实习管理系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SpringBoot 前端 Vue HTML 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse
  • 一位技术主管的十年编程经验总结 .

    一位技术主管的十年编程经验总结 有天和朋友聊天 朋友是国内一家大型互联网企业的一位技术主管 朋友把他将近十年研发工作积累的心血总结成两点 这两点朋友刚一提出来我并没有马上明白 只是大约有这么一个概念 我还没达到朋友在技术领域的那种高度 不能
  • PAT乙级1041 考试座位号 (15 分)

    1041 考试座位号 15 分 一 问题描述 每个 PAT 考生在参加考试时都会被分配两个座位号 一个是试机座位 一个是考试座位 正常情况下 考生在入场时先得到试机座位号码 入座进入试机状态后 系统会显示该考生的考试座位号码 考试时考生需要
  • 机器学习:Jupyter Notebook中numpy的使用

    一 Jupyter Notebook的魔法命令 模块 方法 或者help 模块 方法 查看模块 方法的解释文档 1 run 机械学习中主要应用两个魔法命令 run timeit 魔法命令格式 命令 run 将模块引用并在Jupyter No
  • Java设计模式——备忘录模式

    文章目录 备忘录模式 备忘录模式 主要目的是保存一个对象的某个状态 以便在适当的时候恢复对象 个人觉得叫备份模式更形象些 通俗的讲下 假设有原始类A A中有各种属性 A可以决定需要备份的属性 备忘录类B是用来存储A的一些内部状态 类C呢 就
  • PyQt5 pyqtSignal: 自定义信号传入的参数方法

    PyQt5 pyqtSignal 自定义信号传入的参数方法 在PyQt5当中 用户是可以自定义信号与槽函数的 这里想讲的是如何在pyqtSignal中传入任何的参数 一般来说 我们会在pyqtSignal 中传入不同的参数 以便完成不同类之
  • 我去公司面试,人事经理面试没有过,我却把责任链模式学会了

    设计模式在开发当中是运用特别多的 设计模式就是参照我们日常生活特性 抽象出特性 从而某种实现达到具体要求 当然这当中一定是灵活转变 责任链正式拉开序幕 我去某某互联网公司去面试 好的方向的流程大致应该是 你上招聘软件投递简历 简历筛选通过
  • 查看电脑是否开启虚拟化

    第一步 win R快捷键输入cmd 第二步 输入systeminfo命令 即可查看电脑配置信息
  • 5.1 数组

    C 为基本的数据类型 整数 浮点数 字符型和布尔型 提供了内置的支持 就像在上一章我们为复数类定义了重载的运算符那样 内置的支持也称为协助函数 helper function 支持这些数据类型完成各种允许的运算 也就是说基本数据类型也可以说
  • 【华为OD机试真题2023B卷 JAVA&JS】计算最接近的数

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 计算最接近的数 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 给定一个数组X和正整数K 请找出使表达式X i X i 1 X i K 1 结果最接近于数组中位数的下标
  • Modbus协议详解2:通信方式、地址规则、主从机通信状态

    首先我们要清楚 Modbus是一种串行链路上的主从协议 在通信线路上只能有一个主机存在 不会有多主机存在的情况 虽然主机只有一个 但是从机是可以有多个的 Modbus的通信过程都是由主机发起的 从机在接收到主机的请求后再进行响应 从机不会主