行业常识_Modbus

news2025/1/18 17:05:22

文章目录

    • 1 Modbus
      • 1.1 Modbus是啥
      • 1.2 应用
      • 1.3 协议变体及区别
        • 1.3.1 物理层
        • 1.3.2 帧结构
        • 1.3.3 传输速率
        • 1.3.4 连接方式
        • 1.3.5 网络依赖性
        • 1.3.5 安全性
      • 1.4 传输方式
        • 1.4.1 协议数据单元
      • 1.5 Modbus协议数据模型
      • 1.6 Modbus地址模式

1 Modbus

1.1 Modbus是啥

Modbus是一种协议。
其名称源于Modicon + Bus,其中Modicon是现在施耐德公司旗下的品牌,Bus是总线的意思。所以Modbus是Modicon公司在1979年为PLC通信而发表的一种串行通信协议。

1.2 应用

通过此协议,控制器(如PLC)可以相互之间、也可以经由网络(以太网)和其他设备之间通信。由于它早期的开放、公开、无版权要求、免费,并且使用简单,现在已经成为了通用的工业标准。有了它,不同厂商生产的设备可以连成工业网络,进行集中监控。

该协议采用主从通信的模式,典型的主设备(master)包括现场仪表、工控机、显示面板,典型的从设备(slave)为可编程逻辑控制器(PLC)。

1.3 协议变体及区别

Modbus协议包括ASCII、RTU、TCP,并没有规定物理层。
此协议定义了控制器能够识别和使用的消息结构,而不管它是经过何种网络进行通信的。

Modbus的两种常见变体:Modbus RTU和Modbus TCP。下面讨论一下两者的区别。

1.3.1 物理层

Modbus RTU采用串行通信方式,利用RS-232或RS-485进行数据传输(规定了传输的电气标准、机械接口标准等)。它使用二进制编码来实现通信。与之相反,Modbus TCP采用以太网的通信方式,使用TCP/IP协议栈在网络上进行数据传输。(由此可见,Modbus协议是在物理层之上的,它不依赖于具体的物理实现;也是网络层之上的,因为它可以用TCP/IP传输;它是应用层的协议)

1.3.2 帧结构

Modbus RTU采用紧凑的二进制格式对数据帧进行封装。每个数据帧包含从站地址、功能码、数据和错误校验等字段。而Modbus TCP则采用基于TCP/IP的报文结构,将Modbus数据帧封装在TCP报文中,然后通过IP网络进行传输。

在这里插入图片描述

1.3.3 传输速率

由于Modbus RTU是基于串行通信的,因此其传输速率受限于串行接口的性能。通常情况下,Modbus RTU的传输速率较低,在几千比特每秒到几十千比特每秒之间。与之相比,Modbus TCP使用以太网作为物理介质,支持更高的传输速率,可以达到以太网的标准速率,如10Mbps、100Mbps或1Gbps。

1.3.4 连接方式

Modbus RTU采用点对点的连接方式,也就是一对一的通信模式。一个主站可以连接多个从站,但每次只能与一个从站进行通信。相反,Modbus TCP采用基于IP的客户端-服务器模型,支持多对多的连接方式。多个客户端可以同时与一个Modbus TCP服务器进行通信。

1.3.5 网络依赖性

Modbus RTU不依赖于网络基础设施,可以在简单的串行连接上进行通信,适用于较小的局域网。Modbus TCP则依赖于TCP/IP网络,需要可靠的网络基础设施支持,适用于更大规模的分布式系统。

1.3.5 安全性

Modbus RTU没有内置的安全机制,通信数据未经加密,因此容易受到安全威胁。Modbus TCP可以利用TCP/IP的安全特性,例如加密和认证,提供更高的安全性。

1.4 传输方式

1.4.1 协议数据单元

Protocol Data Unit,即协议数据单元,缩写PDU,由功能码+数据组成,
在这里插入图片描述
功能码——1字节,表示要执行的功能;
数据长度——表示要读取的地址或要写入的值,不同的功能码对应的数据有所不同。

PDU有三种类型:

  • 请求型协议数据单元(Request PDU);
  • 应答型协议数据单元(Response PDU);
  • 异常应答型协议数据单元(Exception Response PDU)。

PDU是Modbus协议通用数据结构,它与底层物理结构无关。但通信时,需要依赖于物理网络。因此要把PDU映射到物理网络上,这就形成了应用数据单元(Application Data Unit,ADU)。由于底层网络不同,RTU应用数据单元的结构与TCP应用数据单元的结构不通。
在这里插入图片描述

在这里插入图片描述
TCP ADU在PDU的基础上,添加了一个叫MBAP头的结构,即 ModBus Application 应用数据单元。

名称长度描述客户端服务器
Transaction Identifier /传输标识符2字节用来标识请求/应答帧由客户端初始化服务器拷贝该标识
Protocol Identifier 协议标识符2字节0 = Modbus由客户端初始化服务器拷贝该标识
Length 长度2字节接下来发送数据的长度由客户端初始化服务器拷贝该标识
Unit Identifier 单元标识符1字节串行链路或其他总线上的站标识由客户端初始化服务器拷贝该标识

其中:

  • 传输标识符:用于标识ADU,即请求和应答之间的配对;客户端对该部分进行初始化,服务端将其拷贝到自己的ADU中;
  • 协议标识符:系统间的协议标识,0代表Modbus;
  • 长度:接下来要发送的数据长度,即:单元标识符+PDU的总长度,以字节为单位;
  • 单元标识符:用于系统间的站寻址,比如在以太网+串行链路中,远程站的地址;

1.5 Modbus协议数据模型

Modbus协议允许设备将四种数据分别映射到不同的存储区中,各个区块之间相互独立,使用不同的功能码可以读取到相应的数值,如下图:
在这里插入图片描述
Modbus数据模型映射到不同的存储区块
协议也允许设备将四种数据映射到同一存储区块中,这样通过不同的功能码读取数据可能会得到相同的数据(比如:输入寄存器和保持寄存器位于同一物理区块)。

数据模型中的数据最大允许有65536个元素,编号从1开始:1~65536,元素地址从0开始:0~65535。
需要说明的是,65536只是协议允许的最大元素范围,但并不要求全部实现。Modbus协议允许设备根据自己的实际情况实现部分元素,甚至不要求实现模型中的全部四种数据。

1.6 Modbus地址模式

为了简化数据模型与设备存储区的对应关系,引入了一种地址模型,该模型通过编号的方式对不同类型数据区分,各数据的地址编号如下:

Modbus数据模型/数据区Modbus地址编号
线圈0
离散量输入1
输入寄存器3
保持寄存器4

Modbus地址模型
Modbus地址模型的编号从1开始,由于每种数据最大支持65536个元素,因此理论上,

  • 线圈型数据,地址范围为:000001~065536;
  • 离散型输入,地址范围为:100001~165536;
  • 输入寄存器,地址范围为:300001~365536;
  • 存储寄存器,地址范围为:400001~465536;

由于65536是较大的数值,实际应用一般不需要过大的存储区,因此PLC厂家普遍采用的是10000以内的地址范围,即:

  • 线圈型数据:00001~09999;
  • 离散型输入:10001~19999;
  • 输入寄存器:30001~39999;
  • 存储寄存器:40001~49999;

下面是两款PLC的地址表:

各PLC厂家根据PLC的实际情况,将Modbus的地址模型映射到实际的存储区。一般来说:

  • 线圈——过程输出区(Q);
  • 离散量输入——过程输入区(I);
  • 输入寄存器——模拟量输入(AI);
  • 保持寄存器——数据块或V存储区或M存储区。

Modbus地址模型对RTU、ASCII和TCP都适用。

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

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

相关文章

AUTOSAR规范与ECU软件开发(实践篇)3.2 ETAS AUTOSAR系统解决方案介绍(上)

1、ETAS AUTOSAR系统解决方案介绍 博世集团ETAS公司基于其强大的研发实力为用户提供了一套高效、 可靠的AUTOSAR系统解决方案, 该方案覆盖了软件架构设计、 应用层模型设计、 基础软件开发、 软件虚拟验证等各个方面, 如图3.5所示, 其中深色…

什么是接口测试,如何做接口测试?

比起点点点的功能测试,“接口测试”显得专业又高大上,也因此让有些初级测试人员“望而生畏”。别担心,其实接口测试也是功能测试的一种,它是针对接口进行的功能测试。 写在前面:本文参考了茹炳晟老师的《测试工程师 全…

四张图片道清AI大模型的发展史(1943-2023)

四张图片道清AI大模型的发展史(1943-2023) 现在最火的莫过于GPT了,也就是大规模语言模型(LLM)。“LLM” 是 “Large Language Model”(大语言模型)的简称,通常用来指代具有巨大规模参数和复杂架构的自然语言处理模型,…

NuGet控制台命令初步使用

查看所有安装的包, 查找包,提示Nuget版本低;安装一个更高版本; 查看所有安装的包, 查找名字包含某字符串的包, 查找名字包含某字符串的包, 安装,使用-version指定版本,可…

AUTOSAR规范与ECU软件开发(实践篇)3.3 AUTOSAR系统解决方案介绍(下)

示例将遵循AUTOSAR方法论来进行开发, 所用的AUTOSAR解决方案如图3.6所示。 图3.6 AUTOSAR系统解决方案 首先, 使用Matlab/Simulink来实现部分软件组件级的开发, 主要包括LightRequestSWC和LightControlSWC, 并自动生成应用层软件组…

Python是什么?它有什么用途?

Python是什么? Python是一门具有优雅和简洁语法的高级编程语言。它由荷兰程序员Guido van Rossum创造并于上世纪90年代初发布。Python的设计理念强调可读性和清晰性,使得代码编写变得轻松且容易理解。这门语言以其独特的缩进方式来标记代码块&#xff0…

手撕LFU缓存

手撕LRU缓存_右大臣的博客-CSDN博客 是LRU的升级,多了一个访问次数的维度 实现 LFUCache 类: LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象int get(int key) - 如果键 key 存在于缓存中,则获取键的值,否则返…

16.3.4 【Linux】系统资源的观察

free :观察内存使用情况 系统当中有 2848MB 左右的实体内存,我的 swap 有 1GB 左右, 那我使用free -m 以 MBytes 来显示时,就会出现上面的信息。Mem 那一行显示的是实体内存的量,Swap 则是内存交换空间的量。 total 是…

Espresso测试用例运行前置配置条件

(一)【开发者选择】将USB调试/USB安装/USB调试(安全设置)开启; (否则运行测试用例时,无法安装) (二)开启【自启动】 (需要授权,否则无…

51单片机的管脚介绍

图文介绍 纯文字说明 单片机管脚相关结构及其作用如下 电源正极引脚 一般接5V电源,为单片机提供正常工作时的电压。 电源负极引脚 接地。然后才开始工作。 时钟引脚 18、19脚为时钟引脚(XTAL2、XTAL1)。单片机内部有大量的数字电路&a…

Docker部署ES服务,canal全量同步的时候内存爆炸,ES/Canal Adapter自动关闭,CPU100%

文章目录 问题解决方案1. 对ES的限制2. 对Canal-Adapter的限制 问题 使用canal-adapter全量同步(参考Canal Adapter1.1.5版本API操作服务,手动同步数据(4))的时候 小批量数据可以正常运行(几千条&#xf…

Python获取、修改主机名称和IP地址实践

Python获取、修改主机名称和IP地址的方法有多种,内置socket模块、执行系统命令、第三方模块等等,本文只是完成功能的一次成功的实践。 1. 获取、修改主机名称 本案例使用python的socket模块获取、修改主机名称,socket模块是一个用于实现网络…

对抗通胀的信心回升,美国消费者预期短期通胀降至两年多低点

KlipC报道:据纽约联储最新消费者预期调查显示美国消费者预计一年后短期通胀从3.8%下降至3.5%,创2021年4月以来新低,为连续第四个月下降。三年期和五年期的通胀预期也下降,未来几年通胀将会走弱。 与此同时他们对个人的财务状况也趋…

JDK8 Optional优雅的判空操作

一、前言 在我们编程过程中因为疏忽经常会遇到NullPointerException空指针异常,所以与此同时就避免不了对变量一层一层的进行判空。JDK8新特性所提供的Optional类,可以让我们更优雅的进行判空操作。学习其的意义就是提醒开发者注意空值情况,…

怎么自己制作动图表情包?在线gif生成的操作步骤

gif表情包在我们平时的生活里斗图的时候经常会用到,那么如何用图片制作gif(https://www.gif.cn)表情包呢?今天就分享一个在线gif生成的简单方法,利用gif制作工具将图片转gif动图,下面是详细的操作步骤。 打…

爬楼梯(一次爬1或2层)

一,题目描述 二,解题思路 动态规划 动规五部曲: 1. 确认dp数组以及下标含义 2. 推导递推公式 3. 确认dp数组如何初始化 4. 确认遍历顺序 5. 打印dp数组 dp数组含义:到第i层的方法数目 下标含义:层数 递推公式&…

2023年服贸会在哪里举行?北京有哪些媒体可以做宣传?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 8月14日,”2023年服贸会新闻发布会在北京首钢园举行,宣布2023年服贸会将于9月2日至6日在国家会议中心和首钢园区举办,采用‘线下线上’‘综合专题’办…

跳跳!(贪心)

题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去。 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 i 块的石头高度为 h_i,地面的高度是 h_0 0。你估计着,从第 i 块石…

eNSP:mplsvpn综合实验

要求完成下图实验&#xff1a; 拓扑信息标注&#xff1a; 命令操作&#xff1a; r1: <Huawei>sys [Huawei]sys r1 [r1]int lo0 [r1-LoopBack0]ip add 192.168.1.1 24 [r1-LoopBack0]int g 0/0/0 [r1-GigabitEthernet0/0/0]ip add 192.168.2.1 30[r1]ip route-static 19…

【BASH】回顾与知识点梳理(二十九)

【BASH】回顾与知识点梳理 二十九 二十九. 进程和工作管理29.1 什么是进程 (process)进程与程序 (process & program)子进程与父进程&#xff1a;fork and exec&#xff1a;进程呼叫的流程系统或网络服务&#xff1a;常驻在内存的进程 29.2 Linux 的多人多任务环境多人环境…