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

news/2024/9/20 3:57:30/ 标签: modbus, 物联网, 工控, 协议, 教程, mqtt, iec104

第六章:Modbus 答疑

平时调试Modbus设备,或者学习Modbus协议,推荐一款Modbus主从站模拟器:

主站下载地址:Modbus从站模拟器

从站下载地址: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/


http://www.ppmy.cn/news/1514356.html

相关文章

无人机:航拍书籍推荐

写在前面 学习航拍,整理一些书籍分享理解不足小伙伴帮忙指正 😃,生活加油 99%的焦虑都来自于虚度时间和没有好好做事,所以唯一的解决办法就是行动起来,认真做完事情,战胜焦虑,战胜那些心里空荡荡的时刻&…

克服编程挫折:从Bug的迷宫中寻找出口与面对算法保持冷静的策略

在编程学习的道路上,挫折感无疑是每个学习者都必须面对的挑战之一。它们仿佛是一座座高墙,阻挡我们前进的步伐。然而,正如许多有经验的编程高手所证明的那样,挫折并不是终点,而是成长和进步的催化剂。本文将分享一些有…

【实战场景】如何优雅实现分页

【实战场景】如何优雅实现分页 开篇词:干货篇:1.添加PageHelper依赖2.添加PageHelper配置3.使用 PageHelper4.自定义Pageable注解 总结:1.执行查询2.处理分页结果3.注意事项 我是杰叔叔,一名沪漂的码农,下期再会&#…

数据仓库ETL开发

在企业数字化转型的过程中,数据仓库已经成为了企业管理和决策的重要工具。数据仓库ETL开发是构建数据仓库的关键步骤之一,它可以帮助企业从源系统中抽取、清洗、转换和整合数据,方便企业进行管理和分析。本文将介绍如何高效实现数据仓库ETL开…

Notepad--文本编辑工具 for Mac教程【苹果电脑-简单轻松上手-免费Mac软件推荐】

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件,将其拖入应用程序中,等待安装完毕2、应用程序显示软件图标,表示安装成功 三、运行测试解决“软件已损坏,无法打开”问题,若没有该问题,可…

Vue3 指令 6

Vue3 指令(Directive)是 Vue3 中的一种特殊的语法,用于在模板中添加自定义的行为。指令可以用来修改 DOM、监听事件、绑定数据等。下面是 Vue3 指令的主要类型: 1. v-binding v-binding 指令用于绑定数据到 HTML 属性上。例如&a…

深入理解SQL中的INNER JOIN操作

本文介绍了INNER JOIN的定义、使用场景、计算方法及与其他JOIN的比较。INNER JOIN是关系数据库中常用的操作,用于返回两个表中匹配的行,只有在连接条件满足时才返回数据。本文详细解释了INNER JOIN的语法及其在一对多、多对多关系中的应用,通…

【论文阅读】Enhance Model Stealing Attack via Label Refining(2022)

摘要 With machine learning models(机器学习模型) being increasingly(越来越多) deployed(部署), model stealing attacks(模型窃取攻击) have raised an increasing interest. Extracting decision-based models(基于决策的模型窃取) is a more challenging task…

【工具类】Java优雅的将XML转为JSON格式、XML转JSON

Java优雅的将XML转为JSON格式、XML转JSON 1. 导入依赖1.1 Maven使用1.2 Gradle使用 2. 代码编写3.运行示例 1. 导入依赖 1.1 Maven使用 <dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</vers…

《计算机操作系统》(第4版)第4章 存储器管理 复习笔记

第4章 存储器管理 一、存储器的层次结构 1. 多层结构的存储器系统 如图4-1所示&#xff0c;在存储层次中越往上&#xff0c;存储介质的访问速度越快&#xff0c;价格也越高&#xff0c;相对存储容量也越小。 图4-1 计算机系统存储层次示意 2.三级存储系统 (1)Cache- 主存存储体…

linux下搭建MySQL8.0.25一主一从

一、主从复制概述 1.1、概述 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这些日志重新执行&#xff08;也叫重做&#xff09;&#xff0c;从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行…

AI大模型开发——7.百度千帆大模型调用

本节旨在为读者提供一个实用指南&#xff0c;探讨如何有效地利用百度千帆大模型平台的强大功能。从基础的账号注册和密钥申请入手&#xff0c;逐步引领用户通过案例&#xff0c; 理解并掌握如何调用文本和图像处理的大模型 API&#xff0c; 包括但不限于 NLP、对话生成、文本续…

windows bash获取一个目录下所有的文件

在Windows系统中&#xff0c;我们可以使用命令行工具来获取文件夹下的所有文件名。具体操作如下&#xff1a; 1. 打开命令提示符&#xff08;WinR&#xff0c;输入cmd&#xff0c;回车&#xff09;&#xff1b; 2. 进入需要提取文件名的文件夹&#xff08;使用cd命令&#xf…

sqlilabs less16-20关手工注入

第16关 一.判断闭合方式 闭合方式点“&#xff09; admin")and11# 二.判断数据库长度 admin") and if(length(database())>7, 0, sleep(5))# 页面无延迟 admin") and if(length(database())>8, 0, sleep(5))# 页面有延迟说明数据库长度为8 三.判断数…

spark全面个人总结(20个面试点)非网文

1. 请简述Spark的工作原理和架构&#xff1f; 基于RDD&#xff0c;一种数据结构&#xff0c;含数据项、处理函数、血缘。spark解析任务&#xff0c;生成rdd&#xff0c;并将系列rdd转换成一系列物理计划&#xff0c;然后发送到集群上的各个节点执行。spark负责管理这些任务&a…

UV LED供电为什么要选择使用恒流驱动电源

LED为何一定要恒流供电? 在讨论此议题之前&#xff0c;什么是电源的恒流恒压&#xff1f; 什么是电源的恒流恒压   恒流&#xff0c;就是输出电流是恒定的&#xff0c;但电源电流却不是固定的&#xff0c;标称的电压只是安全上限&#xff1b;恒压&#xff0c;就是输出电压是…

Mysql varchar的最大值到底有多少

MySQL中varchar类型的最大值受到多个因素的影响&#xff0c;包括MySQL的版本、字符集以及行的其他字段配置。以下是对varchar最大值的一个详细解析&#xff1a; 1. MySQL版本差异 MySQL 4.1及以前版本&#xff1a;varchar的最大长度限制为255字节。MySQL 5.0及以后版本&#…

Ps:首选项 - 图像处理

Ps菜单&#xff1a;编辑/首选项 Edit/Preferences 快捷键&#xff1a;Ctrl K Photoshop 首选项中的“图像处理” Image Processing选项卡让用户可以根据当前工作任务的需要&#xff0c;在处理速度和结果的精细度之间找到平衡。这些设置可以帮助优化 Photoshop 的处理性能&…

STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(2)

STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(2) 简介 实验 2&#xff1a;在单片机搭建好 tcp 服务器后&#xff0c;编写传送文件的上位机。 整体实现 - 利用qt的tcpsocket简单封装 - 每次发送512字节&#xff0c;这样小的tcp包就不会自动分包。保证每一个51…

无人驾驶,并非无人之地

图片&#xff5c;Photo by 萝卜快跑 ©自象限原创 作者丨罗辑 老司机又双叒叕被“抢”了&#xff1f; 随着武汉无人驾驶的Robotaxi在各社交媒体平台出圈&#xff0c;自动驾驶安全员的职业从幕后走向台前&#xff0c;近期&#xff0c;招聘平台信息也显示&#xff0c;萝卜…