什么是 Modbus 以及它如何工作?插图1

什么是 Modbus?

Modbus 是一种串行通信协议,由 Modicon 公司于 1979 年发布,用于与其可编程逻辑控制器(PLC)一起使用。简而言之,它是用于在电子设备之间的串行线路上传输信息的方法。请求信息的设备被称为 Modbus 客户端,提供信息的设备是 Modbus 服务器。在标准 Modbus 网络中,有一个客户端和多达 247 个服务器,每个服务器都有从 1 到 247 的唯一服务器地址。客户端还可以向服务器写入信息。

它用于什么?

Modbus 是一种开放协议,这意味着制造商可以在其设备中构建它,而无需支付专利费用。它已成为工业界的标准通信协议,并现在是连接工业电子设备的最常见手段。它被广泛用于许多制造商的各个行业。Modbus 通常用于从仪器和控制设备传输信号到主控制器或数据采集系统,例如用于测量温度和湿度并将结果传输到计算机的系统。Modbus 通常用于将监控计算机与远程终端单元(RTU)连接在一起,这在监控和数据采集(SCADA)系统中使用。Modbus 协议的版本存在于串行线路(Modbus RTU 和 Modbus ASCII)和以太网(Modbus TCP)中。

它如何工作?

Modbus 是在设备之间通过串行线路传输的。最简单的设置是单个串行电缆连接两个设备的串行端口,即客户端和服务器。

什么是 Modbus 以及它如何工作?插图3

数据被发送为一系列称为位的一和零。每个位都作为电压发送。零以正电压发送,而一以负电压发送。这些位发送得非常快。典型的传输速度为 9600 波特率(每秒位数)。

什么是十六进制?

在解决问题时,查看实际的原始数据被发送是有帮助的。长串的1和0很难阅读,所以位被组合并以十六进制形式显示。每个 4 位块由从 0 到 F 的十六个字符之一表示。

什么是 Modbus 以及它如何工作?插图5

每个 8 位块(称为字节)由从 00 到 FF 的 256 个字符对之一表示。

数据如何存储在标准 Modbus 中?

信息存储在服务器设备中,有四种不同的表。两个表存储开/关的离散值(线圈),而另外两个表存储数字值(寄存器)。线圈和寄存器都有只读表和读写表。每个表有 9999 个值。每个线圈或接点都是 1 位,并分配了数据地址从 0000 到 270E。每个寄存器都是 1 字 = 16 位 = 2 字节,也有数据地址从 0000 到 270E。

什么是 Modbus 以及它如何工作?插图7

线圈/寄存器编号可以被看作是位置名称,因为它们不出现在实际的消息中。数据地址用于消息中。例如,第一个保持寄存器,编号为 40001,具有数据地址 0000。这两个值之间的差异是偏移量。每个表都有不同的偏移量,分别为 1、10001、30001 和 40001。

服务器 ID 是什么?

网络中的每个服务器都被分配一个唯一的单元地址,从 1 到 247。当客户端请求数据时,它发送的第一个字节是服务器地址。这样,每个服务器在第一个字节后就知道是否要忽略消息。

什么是功能码?

客户端发送的第二个字节是功能码。这个数字告诉服务器要访问哪个表,以及是从表中读取还是写入。

什么是 Modbus 以及它如何工作?插图9

CRC 是什么?

CRC 代表循环冗余检查。它是添加到每个 Modbus 消息末尾以用于错误检测的两个字节。消息中的每个字节都用于计算 CRC。接收设备还计算 CRC 并将其与发送设备的 CRC 进行比较。如果消息中的一个位接收错误,CRC 将不同,将导致错误。

Modbus 命令和响应的格式是什么?

数据类型是什么?

FC03 的示例显示,寄存器 40108 包含 AE41,它转换为 16 位 1010 1110 0100 0001。但这是什么意思?嗯,它可以表示几种不同的 16 位数据类型:

  • 16 位无符号整数(介于 0 到 65535 之间的整数)寄存器 40108 包含 AE41 = 44609(十六进制转十进制)
  • 16 位有符号整数(介于 -32768 到 32767 之间的整数)AE41 = -20927(将十六进制转换为十进制后的包装,如果大于 32767,则减去 65536)
  • 两个字符的 ASCII 字符串(2 个字符字母)AE41 = ® A
  • 离散的开/关值(与 16 位整数相同,具有值 0 或 1。十六进制数据将是 0000 或 0001)寄存器 40108 还可以与 40109 结合以形成这些 32 位数据类型中的任何一种:
  • 32 位无符号整数(介于 0 到 4,294,967,295 之间的数字)40108,40109 = AE41 5652 = 2,923,517,522
  • 32 位有符号整数(介于 -2,147,483,648 到 2,147,483,647 之间的数字)AE41 5652 = -1,371,449,774
  • 32 位双精度 IEEE 浮点数。这是一个允许使用约七位小数的 32 位数表示任何实数(带有小数点的数字)的数学公式。AE41 5652 = -4.395978E-11。这是一个用于 4 字节或 2 个字的输入的 IEEE 浮点计算器。要下载副本,请右键单击并选择“另存为…”。
  • 四个字符的 ASCII 字符串(4 个字符字母)AE41 5652 = ® A V R更多寄存器可以组合以形成更长的 ASCII 字符串。每个寄存器用于存储两个 ASCII 字符(两个字节)。

字节和字排序是什么?

Modbus 规范没有精确定义数据存储在寄存器中的方式。因此,一些制造商在其设备中实现了 Modbus 以存储和传输高字节,然后是低字节(AE 在 41 之前)。

另外,其他设备存储并传输低字节(41 在 AE 之前)。同样,当寄存器组合以表示 32 位数据类型时,一些设备将高 16 位(高字)存储在第一个寄存器中,剩下的低字存储在第二个寄存器中(AE41 在 5652 之前),而其他设备则相反(5652 在 AE41 之前)。

字节或字以任何顺序发送无所谓,只要接收设备知道期望的方式是哪一种。例如,如果要将 29,235,175,522 作为 32 位无符号整数发送,它可以以这四种方式之一排列。

AE41 5652 高字节在前 高字在前

5652 AE41 高字节在前 低字在前

41AE 5256 低字节在前 高字在前

5256 41AE 低字节在前 低字在前

什么是 Modbus 映射?

Modbus 映射只是为一个个体服务器设备定义的列表,它定义了数据是什么(例如压力或温度读数),数据存储在哪里(哪个表和数据地址)

数据如何存储(数据类型、字节和字排序)

一些设备内置了制造商定义的固定地图。而其他设备允许操作员配置或编程自定义地图以满足其需求

Modbus ASCII 和 Modbus RTU 之间有什么区别?

Modbus RTU 和 Modbus ASCII 使用相同的协议。唯一的区别是在电线上传输的字节与 RTU 以二进制形式呈现,并且使用 Modbus RTU 时以可读的 ASCII 形式呈现。需要注意的是,RTU 消息没有Start_of_text 标志。通信中的接收方使用“静默”时间来确定新消息的开始。ASCII 具有文本标记。二进制消息比 ASCII 消息要短,因此在理论上传输/接收速度更快。您可能会对 HMI/SCADA 中的更新速度约 100 毫秒感到满意,可以选择任何一种通信方式。

总结:一般情况推荐使用 RTU;如果在 WinNT 上使用 RTU 出现超时问题或者使用较慢的通信媒体,如 300 bps 或拨号调制解调器时,请使用 ASCII。对于 Modbus 的大多数 OPC 服务器支持 ASCII 和 RTU 通信。

什么是扩展寄存器地址?

由于模拟输出保持寄存器的范围为 40001 到 49999,这意味着寄存器不能超过 9999 个。虽然这通常对大多数应用足够,但也有一些情况下需要更多的寄存器。寄存器 40001 到 49999 对应数据地址 0000 到 270E。如果我们使用剩余的数据地址 270F 到 FFFF,将有多达 6 倍多的寄存器可用,总计 65536 个。这将对应于寄存器编号从 40001 到 105536。许多 Modbus 软件驱动程序(用于客户端 PC)是根据 40001 到 49999 的限制编写的,无法访问服务器设备中的扩展寄存器。而且,许多服务器设备不支持使用扩展寄存器的地图。但另一方面,某些服务器设备支持这些寄存器,某些客户端软件可以访问它,尤其是如果编写了自定义软件。

如何使用 2 字节服务器地址?

由于通常使用一个字节来定义服务器地址,并且网络上的每个服务器都需要唯一的地址,所以网络上的服务器数量是有限的,最多为 256。Modbus 规范中定义的限制甚至更低,为 247。要超越这个限制,可以对协议进行修改,以使用两个字节作为地址。客户端和服务器都需要支持此修改。使用两字节地址可以将网络中服务器的数量限制扩展到 65535。默认情况下,Simply Modbus 软件使用 1 字节地址。输入地址大于 255 时,软件会自动切换到 2 字节地址,并保持在此模式下,直到手动关闭 2 字节寻址。

如何发送事件和历史数据?

Enron Modbus 包括用于移动事件和历史数据的命令。

什么是 Enron Modbus?

Enron Modbus 是由 Enron 公司开发的对标准 Modicon Modbus 通信协议的修改。请参阅 Enron Modbus 以获取详细信息。

相关新闻

  • Modbus Poll 异常功能解释与详细说明

    Modbus Poll 异常功能解释与详细说明

    Modbus Poll是一种广泛用于Modbus通信协议的测试工具,它允许用户模拟主设备(通常是客户端)与从设备(通常是服务器)之间的通信,以验证通信的正常性。在Modbus Poll的使用中,用户可能会遇到各种异常功能,这些异常功能对于故障诊断和问题解决至关重要。本文将深入探讨Modbus Poll中的异常功能,为用户提供详细的解释和说明。 Modbus Poll 异常功能的概述 Modbus Poll异常功能是指在使用该工具时可能出现的不正常行为或错误情况。这些异常功能是用户了解问题并采取适…

    Modbus技术文档 2023年11月3日
  • Modbus异常相应代码说明

    Modbus异常相应代码说明

    Modbus通信协议是工业自动化中常用的协议,它允许主设备(通常是客户端)与从设备(通常是服务器)之间进行数据交换。在Modbus通信中,服务器(从设备)必须生成适当的响应来处理请求,并在必要时发送异常响应。本文将深入探讨Modbus响应的生成和异常处理。 Modbus响应类型 Modbus通信中,根据请求的处理结果,可以生成两种类型的响应: Modbus异常响应的目的 Modbus异常响应的主要目的是向客户端提供与请求处理过程中检测到的错误相关的信息。它帮助客户端了解通信问题的具体原因,从而采…

    Modbus技术文档 2023年11月3日
  • 在Modbus通讯中发送时间戳的参考方法

    在Modbus通讯中发送时间戳的参考方法

    在Modbus协议中嵌入时间戳需要一些谨慎考虑,因为Modbus本身没有定义专门的时间戳对象。以下是如何在Modbus(RS485)通信中发送时间戳的一些建议方法和步骤: 如何在Modbus (RS485)通信中发送时间戳 在工业自动化和远程监测应用中,时间戳对于确切的数据关联至关重要。尤其是在Modbus通信中,没有内置的时间戳机制,因此需要特别关注如何嵌入时间戳。以下是实现这一目标的方法和步骤: 步骤1:选择时间戳格式 首先,您需要选择适当的时间戳格式。常见的时间戳格式之一是使用POSIX(…

    Modbus技术文档 2023年10月31日
  • 渐进式解决Modbus通信问题的方法

    渐进式解决Modbus通信问题的方法

    在工业自动化领域,Modbus通信协议是一种常见的选择,但有时会出现通信问题。本文将介绍一些渐进式步骤,以帮助您排查和解决Modbus通信问题。 1:确认从站是否支持Modbus 首先,确保每个从站都真正支持Modbus协议。有时,设备具备Modbus连接器,但却没有可用的硬件或固件支持。因此,在问题排查的第一步,您需要验证每个从站是否具备硬件和固件支持,并且已启用Modbus功能。 2:选择协议 -Modbus RTU还是Modbus ASCII? Modbus协议有两种常见的变种:RTU和A…

    Modbus技术文档 2023年10月30日
  • Modbus如何读取单个及多个寄存器的方法

    Modbus如何读取单个及多个寄存器的方法

    当你涉及工业自动化、传感器和设备之间的通信时,Modbus协议通常会出现在你的工具箱中。Modbus是一种用于读取和控制设备数据的通信协议,它在工业控制系统中得到了广泛的应用。现在,让我们以小白理解的方式来解释Modbus如何读取保持寄存器的数据,包括单个寄存器和多个寄存器的读取。 什么是Modbus? Modbus是一种通信协议,用于连接各种工业设备、传感器和控制器。它允许这些设备之间进行数据交换,以实现监控、控制和数据采集。Modbus协议有不同的变种,包括Modbus RTU、Modbus…

    Modbus技术文档 2023年10月29日
  • 用 Modbus 总线控制 ABB ACS800 系列变频器的方法

    用 Modbus 总线控制 ABB ACS800 系列变频器的方法

    一、硬件的安装和连接: 二、变频器参数设置: 三、变频器的 Modbus 寻址: 地址 数据集 内容 40001 数据字 1.1 控制字 40002 数据字 1.2 给定 1 40003 数据字 1.3 给定 2 40004 数据字 2.1 状态字 40005 数据字 2.2 实际值 1 40006 数据字 2.3 实际值 2 40101-49999 40101-49999 用于参数寄存器,千位和百位对应于参数组号,十位和个位对应于组内参数号&n…

    Modbus技术文档 2023年10月26日

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

邮箱

cloud@modbus.cn

QQ
QQ
微信
微信
分享本页
返回顶部