在 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 个。
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。