当前位置: 首页 » 技术支持 » 博文资讯 »

Modbus协议详解:原理及应用入门

Modbus协议详解:原理及应用入门

Modbus 是一种广泛应用于工业自动化领域的串行通信协议,由 Modicon 公司于 1979 年开发。它的主要功能是允许电子设备之间通过串行线路进行信息传输,特别适用于可编程逻辑控制器(PLC)之间的通信。
在 Modbus 网络中,设备分为两类:请求信息的设备称为 Modbus Master,而提供信息的设备称为 Modbus Slave。一个标准的 Modbus 网络通常由一个主站和多个从站组成,每个从站都有唯一的地址,范围从 1 到 247。
Modbus 协议的核心优势在于其开放性,制造商可以自由使用该协议而无需支付版权费用。这使得 Modbus 成为行业标准通信协议,广泛应用于各种工业电气设备的连接与控制。
Modbus 的工作原理相对简单。数据通过串行线路在设备之间传输,最基础的配置是两台设备(一主一从)通过电缆连接其串行端口。数据以“1”和“0”的序列(位)形式发送,每个位作为电压信号传输传输速率通常为 9600 波特(每秒传输的位数)。
Modbus 协议支持多种数据类型,包括16位和32位整数、浮点数以及ASCII字符串等。数据存储在从设备的四个不同表格中,分别用于存储开/关状态值(线圈)和数值(寄存器)。每个表格包含 9999 个值,地址范围从 0000 到 270E。
在实际应用中,Modbus 协议的灵活性和可扩展性使其能够满足各种复杂场景的需求。例如,系统可以测量温度和湿度,并将结果发送到中央计算机进行集中控制和数据采集。
此外,Modbus 协议还支持扩展寄存器地址,将寄存器的数量从 40001 扩展到 105536,极大地增加了数据存储能力。尽管大多数 Modbus 软件驱动程序和从设备默认支持有限的地址范围,但一些高级设备和支持扩展寄存器的软件可以实现更广泛的应用。
总的来说,Modbus 作为一种成熟且广泛应用的工业通信协议,以其简洁、高效和开放的特点,在工业自动化领域发挥着不可替代的作用。无论是简单的设备控制还是复杂的数据采集系统,Modbus 都能提供可靠的通信保障

什么是Modbus?

Modbus 是由 Modicon 开发的串行通信协议,由 Modicon® 于 1979 年发布,用于可编程逻辑控制器 (PLC)。简单来说,它是一种在电子设备之间通过串行线路传输信息的方法。

请求信息的设备称为Modbus Master,提供信息的设备称为Modbus Slave。在标准的 Modbus 互联网网络中,可能有一个主站和一个从站,每个站有 1 到 247 个不同的从站

它是干什么用的?

Modbus 是一种开放协议,这意味着制造商可以自由构建 Modbus,而无需为其硬件支付版权费用。

Modbus 已成为行业标准通信协议,现已成为广泛使用的工业电气设备的连接点。它被许多行业的大多数制造商使用。

用于Modbus设备和控制设备到主控制器或数据采集系统的信号传输。例如,系统测量温度和湿度,然后将结果发送到计算机。

Modbus通常将中央计算机连接到远程连接单元(RTU)以进行集中控制和数据收集。Modbus 协议版本可用于串行线路(Modbus RTU 和 Modbus ASCII)和以太网(Modbus TCP)。

它是如何工作的?

它通过 Modbus 设备之间的串行线路传输。最简单的安装,两台设备,一主一从,用一根电缆连接其上的串行端口。

该数据以“1”和“0”序列发送,称为“位”。每个位都作为电压发送。

零作为正电压发送,零作为负电压发送。

虱子的传播速度非常快。传输速率一般为960波特(每秒的位数)。

什么是十六进制?

在解决问题时,查看传输的原始数据可能会有所帮助。这些位显示为十六进制(16 个字符串),因为很难读取长字符串和零字符串。每个 4 位块由 0 到 F 的 16 个字符之一表示。

0001 = 1 0101 = 5 1001 = 9 1101 = D

0010 = 2 0110 = 6 1010 = A 1110 = E

0011 = 3 0111 = 7 1011 = B 1111 = F

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

标准 Modbus 中如何存储数据?

该信息存储在从设备上的四个不同图表中。

两个表存储开/关状态值(线圈),另外两个表存储数值(寄存器)。

线圈和寄存器各有只读和读写图表。每个图表有 9999 个值。每个线圈或触点为 1 位,数据地址分配在 0000 至 270E 之间。

每个寄存器为 1 个字 = 16 位 = 2 个字节,并且还有一个数据

地址在 0000 到 270E 之间。

线圈/寄存器编号 数据地址 类型  海图编号
1-9999 0000 至 270E 读写 离散输出线圈
10001-19999 0000 至 270E 只读 离散输入/触点
30001-39999 0000 至 270E 只读 模拟输入/寄存器
40001-49999 0000 至 270E 读写 模拟输出/保持寄存器

因为它们并没有真正出现在消息中。数据地址用于消息中。

例如; 第一个持有寄存器的编号为 40001,

0000 数据地址。

这两个值之间的差异被抵消。

每个图表都有不同的偏移量。1、10001、30001 和 40001。

什么是从属 ID?

网络中的每个Slave都有自己的地址号,范围从1到247。当Master请求数据时,Slave的地址信息是发送的第一个字节。因此,每个 Slave 都知道

是否忽略第一个字节之后的消息。

什么是功能码?

主站发送的第二个字节称为功能码。

这些数字告知从站它将访问的图表

以及是否会读取或写入。

功能码  行动  表名
01(01 十六进制) 读者 离散输出线圈
05(05 十六进制) 写单曲 离散输出线圈
15(0F 十六进制) 写多个 离散输出线圈
02(02 十六进制) 读者 离散输入触点
04(04 十六进制) 读者 模拟输入寄存器
03(03 十六进制) 读者 模拟输出保持寄存器
06(06 十六进制) 写单曲 模拟输出保持寄存器

什么是CRC?

CRC 代表循环冗余校验。CRC 是添加到每个 modbus 消息末尾的两个字节,用于错误检查。

发送消息中的每个字节以计算 CRC。接收设备还计算 CRC 并将其与来自发送设备的 CRC 进行比较。即使消息中的一位被错误接收,CRC 也会不同,并且会发生错误。

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

您可以在下表中找到请求和响应的示例。

数据地址 读者 写单曲 写入多个
离散输出线圈 0xxxx FC01 FC05 FC15
离散输入触点 1xxxx FC02 不适用 不适用
模拟输入寄存器 3xxxx FC04 不适用 不适用
模拟输出保持寄存器 4xxxx FC03 FC06 FC16

数据类型有哪些?

以 FC03 为例,寄存器 40108 包含 AE41,16 位转换为 1010 1110 0100 0001。

寄存器40108可以被定义为这些16位(16-bit)数据中的任何一个。

16 位无符号整数(0 到 65535 之间的整数)

寄存器 40108 AE41 的内容 = 44,609(从十六进制转换为十进制)

16 位无符号整数(-32768 到 32767 之间的整数)

AE41 = -20,927(从十六进制转换为十进制,完成后为-32767,然后为65536)

两个字符的 ASCII 字符串(2 个字母)

AE41 = ® A

离散开/关值(如 16 位整数,该值以 0 或 1 运行。这里 hax 数据为 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 浮点数。这是一个数学公式,为任何实数(小数点数字)提供 7 位 32 位函数。字节和2个字母。

1 个 4 字符 ASCII 字符串(4 个字母)

AE41 5652 = ® AVR

可以组合更多寄存器来创建更长的 ASCII 字符串。

每个寄存器由两个 ASCII 字符(2 个字节)组成。

字节和字母顺序(字顺序)是什么意思?

Modbus 通告没有完全解释数据如何存储在寄存器中。因此,制造商将Modbus应用到他们的硬件中,先存储和传输高字节,然后再存储和传输低字节。(41 之前的 AE)

或者,其他存储并传输低字节,然后传输高字节。(AE前41)

同样,当寄存器组合为 32 位数据类型时,某些设备首先存储较高的 16 位数据(高位字),然后存储剩余的低位数据(AE41 之后的 5652),其他设备则相反(AE41 之后的 5652)

如果接收设备知道字节或字的形式,那么字节或字的发送顺序并不重要。

例如; 如果数字 2,923,517,522 作为 32 位无符号整数发送,则可以作为以下 4 种不同组合之一发送。

AE41 5652 高字节在前 高字在前

5652 AE41 高字节在前 低字在前

41AE 5256 低字节先高字先

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

什么是Modbus映射(Map)?

  • 数据是什么(例如压力或温度读数)
  • 数据保存位置(图表和数据地址)
  • 数据如何保存(数据类型、字节和字母顺序)

一些设备安装在制造商定义的固定设备上,而另一些设备则允许客户对设备进行配置或编程以满足他们的需求。

什么是扩展寄存器地址?

由于模拟输出寄存器是从40001到49999,这意味着寄存器不能超过9999个。虽然这对于大多数应用程序来说已经足够了,但有时拥有更多寄存器很有用。

如果我们将 270F 到 FFFF 的剩余地址提高效率,那么总共将有 65536 个,换句话说,六倍多的寄存器可用。这将寄存器的数量从 40001 扩展到 105536。

大多数Modbus软件驱动程序(用于主PC)提供从40001到49999的有限范围,在这种情况下,无法访问从设备上的扩展寄存器。还有大多数奴隶

设备不支持使用扩展寄存器的地图。另一方面,一些从设备支持这些寄存器,而一些主软件提供访问(如果专门编写的话)。

2 字节从机寻址如何工作?

网络上从站的数量限制为 256 个,因为它用于定义单字节从站地址并分配一个地址。要克服此限制,可以修改协议以在地址中使用两个字节。

所有的主人和奴隶都必须支持这一改变。2 字节寻址将网络上的从站数量增加到 65535 个。

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

在线咨询
未经允许不得转载: 汇鑫科服|一站式ICT服务商 » Modbus协议详解:原理及应用入门

Modbus相关文章

微信扫码咨询

contact