前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Modbus初学者教程,第六章:Modbus 答疑

Modbus初学者教程,第六章:Modbus 答疑

原创
作者头像
用户3871926
发布于 2024-08-23 00:29:30
发布于 2024-08-23 00:29:30
2650
举报

第六章:Modbus 答疑

我从哪里开始与我的 Modbus 设备通信?

以下是需要了解的几件事:

(1) 物理连接是什么?

Modbus RTU 使用 RS-485 或 RS-232。Modbus TCP 使用以太网。如果您正在寻找网关,则需要选择与要连接的设备的电气接口相匹配的型号。

(2) 寄存器如何映射?

当使用网关将 Modbus 设备连接到非 Modbus 网络时,您需要从设备制造商处获取描述可用寄存器及其寻址方法的文档。Modbus 协议不提供寄存器自动识别自身的方法。

(3) 通信参数是什么?

Modbus RTU 要求您了解或定义波特率、字符格式(8 位无奇偶校验等)和从站 ID(又称从属地址、单元编号、单元 ID)。任何一项不匹配都将导致无法通信。

Modbus TCP 要求您了解或定义网络上的 IP 地址。在某些情况下,您还需要单元 ID。 Modbus TCP 设备可能会使用单元 ID,也可能会忽略它,具体取决于设备和应用程序。

Modbus:当 40001 真正意味着 1,或 0 真正意味着 1 时

Modbus 的文档没有很好的标准化。实际上有一个标准,但在文档方面没有得到很好的遵循。您必须执行以下一项或多项操作才能解读制造商真正指的是哪个寄存器:

a) 查找寄存器描述,例如保持寄存器、线圈等。如果文档中说的是 #1,并告诉您它们是保持寄存器,那么您拥有的就是保持寄存器 #1。您还拥有用户友好的文档。

b) 查看数字本身。如果您看到列表中的第一个寄存器的编号为 40001,这实际上告诉您它是寄存器 #1,并且它是一个保持寄存器。这种表示形式通常被称为旧的 Modicon 约定。

c) 查找要使用的功能代码的定义。如果您看到寄存器 #1,以及告诉您使用功能代码 3 和 16 的表示法,这也告诉您它是保持寄存器 #1。

重要提示:寄存器 1 的地址为 0。请继续阅读……

d) 文档中的数字是指寄存器编号还是地址?寄存器 #1 的地址为零。如果您的文档中提到的是寄存器还是地址不清楚,并且您没有得到预期的结果,请尝试将寄存器编号加一或减一。有些产品均在配置软件或网页中引用寄存器编号。但是,一些制造商在记录其设备时显示的是地址,而不是寄存器编号。

40001:Modicon 寄存器的 Modicon 约定符号

Modbus 最初由 Gould-Modicon(现为施耐德电气)开发。Modicon 最初使用的符号至今仍经常使用,尽管目前的 Modbus-IDA 标准认为它已过时。使用 Modicon 符号的优点是,一个数字中包含两条信息:(a) 寄存器类型;(b) 寄存器编号。寄存器编号偏移量定义类型。

Modbus 设备中引用的寄存器类型支持的寄存器类型包括:

  • 线圈(离散输出)
  • 离散输入(或状态输入)
  • 输入寄存器
  • 保持寄存器

对于上述每种寄存器类型,Modbus 最初定义的有效地址范围为 0 到 9999。当前规范中允许的有效范围为 0 到 65,535。

地址范围适用于每种类型的寄存器,需要查看 Modbus 消息包中的功能代码来确定引用的寄存器类型。Modicon 约定使用寄存器引用的第一位数字来识别寄存器类型。

使用 Modicon 符号识别的寄存器类型和引用范围如下:

  • 0x = 线圈 = 00001-09999
  • 1x = 离散输入 = 10001-19999
  • 3x = 输入寄存器 = 30001-39999
  • 4x = 保持寄存器 = 40001-49999

有时,需要访问超过 10,000 个寄存器类型。基于最初的约定,还有另一个看起来非常相似的事实上的标准。使用 Modicon 表示法识别的其他寄存器类型和参考范围如下:

  • 0x = 线圈 = 000001-065535
  • 1x = 离散输入 = 100001-165535
  • 3x = 输入寄存器 = 300001-365535
  • 4x = 保持寄存器 = 400001-465535

当使用扩展寄存器引用时,所有寄存器引用必须恰好是六位数字。

寄存器是 16 位 - 如何读取浮点或 32 位数据?

Modbus 协议将保持寄存器定义为 16 位宽;但是,对于读取和写入宽度超过 16 位的数据,存在一个广泛使用的事实标准。最常见的是 IEEE 754 浮点和 32 位整数。该约定也可以扩展到双精度浮点和 64 位整数数据。

宽数据仅由两个连续的“寄存器”组成,被视为单个宽寄存器。32 位 IEEE 754 标准中的浮点和 32 位整数数据被广泛使用。尽管寄存器对的约定得到广泛认可,但关于高阶或低阶寄存器应该先出现的约定尚未标准化。因此,许多设备都支持“交换”选项。这意味着,在某些情况下,“交换”选项更明确地标识为“高阶数据在第一个寄存器中”或类似内容。

大多数产品默认将高位寄存器放在第一位,或放在低位寄存器中。这称为“大端”,与 Modbus 协议一致,该协议本身就是大端。所有 16 位值的字节顺序都是最高有效字节在前。

40001:7 等符号是什么意思?

这是引用寄存器中各个位的常用符号。此特定示例引用(Modicon 表示法)寄存器 40001,位 7。位通常从位 0 开始编号,这是 Modbus 寄存器中 16 位字段中的最低有效位或最右边的位。如果使用此样式表示法,您可能会看到 40001:0 到 40001:15。

如何读取寄存器中的各个位?

每个 Modbus 设备的文档往往略有不同。但是,如果您的设备将多个位打包到一个保持寄存器中,文档将记录在同一寄存器编号或地址中找到的最多 16 个不同项目。这些位可以用“Bn”或“Dn”或只是“位 n”来标识。大多数情况下,最低有效位将称为位 0,最高有效位将是位 15。您可能会找到对位 1 到位 16 的引用,在这种情况下,只需从数字中减一即可参考下表。

您无法从保持寄存器中只读取一位。没有办法做到这一点 - Modbus 协议根本不提供该功能。您必须读取所有 16 位,然后测试您感兴趣的单个位是真还是假(1 或 0)。

Modbus 网络上可以有多少个设备?

从逻辑上讲,您可以寻址超过 250 个设备;然而,RS-485 收发器无法物理驱动那么多设备。 Modbus 协议规定限制为 32 个设备,大多数 RS-485 收发器都同意这一点。只有当网络上的所有设备都具有低负载收发器时,您才能拥有超过 32 个设备。

在哪里可以获取 Modbus 协议规范的副本?

您可以访问 www.modbus.org 获取 Modbus 协议规范的副本。主要关注三个文件: (1) 应用层协议,定义功能代码和寻址; (2)串行线路(RTU)使用的定义; (3)以太网使用(TCP)的定义。您将被要求接受使用条款,但这些规范无需支付任何费用。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.redisant.cn/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
【MODBUS】Modbus协议入门简介
Modbus(Modicon Communication Protocol)是一种用于工业自动化领域的通信协议,最初由Modicon(现在是施耐德电气的一部分)开发。Modbus协议被广泛应用于连接不同厂商的工业设备,实现设备之间的通信和数据交换。以下是Modbus协议的一些基本概念和特点:
帐篷Li-物联网布道师
2024/03/20
6510
​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
MCP(Modbus Communication Protocol)是一种基于主从架构的串行通信协议,最初由Modicon公司(现为施耐德电气旗下品牌)于1979年开发,用于工业自动化领域中的可编程逻辑控制器(PLC)通信。作为工业控制领域的”元老级”协议,MCP已经演变为工业物联网(IIoT)的基础通信标准之一。
卓伊凡
2025/04/29
4580
网络基础 Modbus协议学习总结
Modbus协议,首先从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,总线就意味着有主机,有从机,这些设备在同一条总线上。
授客
2024/11/21
4070
网络基础 Modbus协议学习总结
一文看懂Modbus协议
Modbus协议,从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,和I2C、SPI类似,总线就意味着有主机,有从机,这些设备在同一条总线上。
单片机点灯小能手
2021/07/14
4.1K0
图文详解Modbus-RTU协议
[导读] 大家好,我是逸珺,前面总结了一下RS-485的一些要点,今天来总结一下Modbus-RTU协议,原本想把实现思路也一起发出来,但是感觉太长了,就拆开了。
wenzid
2021/07/20
5.4K0
图文详解Modbus-RTU协议
一文讲透Modbus协议
Modbus是一种串行通讯协议,是Modicon公司(现在的施耐德电气 Schneider Electric) 于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议事实上的业界标准,并且现在是工业电子设备之间常见的连接方式。
sanshengshui
2020/05/26
2.6K0
modbus协议讲解及实现_通俗易懂近义词
简单地说,在我们的单片机之间互相通信,以及单片机和上位机通信中,规定了不同的内容规范,这个规范是通信的双方都需要遵守的,这样就可以实现两者的通信。
全栈程序员站长
2022/11/07
1.8K0
modbus协议讲解及实现_通俗易懂近义词
Modbus 通讯协议 (RTU传输模式)「建议收藏」
GB/T 19582.2-2008 《基于Modbus协议的工业自动化网络规范 第1部分:Modbus协议在串行链路上的实现指南》
全栈程序员站长
2022/09/14
5.8K0
Modbus RTU vs. Modbus TCP
Modbus RTU和Modbus TCP/IP的本质都是Modbus协议,它们都通过Modbus寄存器地址交换数据。
Hello工控
2024/07/20
3640
Modbus RTU vs. Modbus TCP
完整的Modbus指南
尽管它已经很老了,但Modbus仍然是现场通信最常用的协议之一。它的相对简单性、稳健性和开放性使其成为许多自动化硬件和软件供应商的首选协议。因此,Modbus是组织承诺的安全选择,因为总有设备支持它。
科控物联
2022/03/29
4.7K0
Modbus通讯协议详细解释
Modbus一个工业上常用的通讯协议、一种通讯约定。Modbus协议包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现。
全栈程序员站长
2022/09/14
1.3K0
工业物联网数据桥接教程:Modbus 桥接到 MQTT
Modbus 是一种串行通信协议,用于连接工业自动化设备,最初由 Modicon 公司开发,诞生于 1979 年,现在已成为通用的通讯标准之一,广泛用于工业自动化场景。
EMQ映云科技
2023/08/13
1.4K0
工业物联网数据桥接教程:Modbus 桥接到 MQTT
一文秒懂Modbus协议如何工作的!
这期我们重点了解Modbus协议的工作机制。到底Modbus在主从设备之间是如何工作的呢?
Hello工控
2024/06/25
6720
一文秒懂Modbus协议如何工作的!
Modbus协议介绍
MODBUS 是一个请求/应答协议,包括ASCII、RTU、TCP等,是1979年开发出的一种工业通信协议,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是通过何种硬件方式进行通信的。所以硬件接口可以是RS-232、RS-422、RS-485和以太网等设备。TCP和RTU比ASCII常见,其中TCP的使用频率更高一些。
用户5908113
2019/11/18
16.5K0
Modbus协议详解
Modbus通信协议由Modicon公司(现已经为施耐德公司并购,成为其旗下的子品牌)于1979年发明的,是全球最早用于工业现场的总线规约。由于其免费公开发行,使用该协议的厂家无需缴纳任何费用,Modbus通信协议采用的是主从通信模式(即Master/Slave通信模式),其在分散控制方面应用极其广泛,从而使得Modbus协议在全球得到了广泛的应用。
苏州程序大白
2021/08/13
2.3K0
Modbus协议详解
Modbus初学者教程,第五章:Modbus 中的功能码和异常码
Modbus 从设备可以想象为具有一个内部电子表格,其中填满了数字。Modbus 主设备将向从设备询问其在给定行和列中找到的数据值或数字,从设备将通过将该数据发送回主设备来响应。当然,这个过程可以逆转,Modbus 主设备告诉从设备在给定行和列处将什么数字放入其数据表中。
用户3871926
2024/08/23
7460
Modbus初学者教程,第五章:Modbus 中的功能码和异常码
【※ ※ ※】流量积算仪Modbus通信的一些小问题
笔者在前段时间的一个应用测试中,一天测试了多种流量积算仪/流量计算机的Modbus通信。由于测试的仪表来自于不同厂家,不同时期的产品(最早的出厂时间为2004年),故虽其标识的均为标准Modbus通信,但其中一些产品有其各自的不同”特点”,在这里聊聊供大家鉴赏。
剑指工控
2021/11/09
6780
Modbus测试工具ModbusPoll与Modbus Slave使用方法「建议收藏」
Modbus Poll :Modbus主机仿真器,用于测试和调试Modbus从设备。该软件支持ModbusRTU、ASCII、TCP/IP。用来帮助开发人员测试Modbus从设备,或者其它Modbus协议的测试和仿真。它支持多文档接口,即,可以同时监视多个从设备/数据域。每个窗口简单地设定从设备ID,功能,地址,大小和轮询间隔。你可以从任意一个窗口读写寄存器和线圈。如果你想改变一个单独的寄存器,简单地双击这个值即可。或者你可以改变多个寄存器/线圈值。提供数据的多种格式方式,比如浮点、双精度、长整型(可以字节序列交换)。
全栈程序员站长
2022/08/14
20.4K0
Modbus测试工具ModbusPoll与Modbus Slave使用方法「建议收藏」
Modbus报文详解
Modbus是一种串行通信协议,最初由Modicon公司(现为施耐德电气的一部分)在1979年为使用其PLC(可编程逻辑控制器)而开发。Modbus已成为工业领域内广泛使用的一种通信协议,特别是对于监控和控制系统。Modbus协议支持多种通信方式,包括RTU(Remote Terminal Unit,远程终端单元模式)、TCP/IP和ASCII(美国标准信息交换码)等。
杜衡老师
2024/03/26
1K0
Modbus RTU 通讯之西门子Smart 200
在工业自动化领域使用最多的免费通讯协议就是Modbus协议,而小型自动化领域西门子PLC也是占据了很大的份额。
剑指工控
2021/11/09
2.9K0
Modbus RTU 通讯之西门子Smart 200
相关推荐
【MODBUS】Modbus协议入门简介
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档