什么是 Modbus,它是如何工作的?
1. Modbus的应用场景
Modbus 它是一种开放协议,这意味着制造商可以将其嵌入到自己的设备中而无需支付专利费。它已成为工业领域的标准通信协议,并且是目前连接工业电子设备最常用的方式,被众多制造商广泛应用于各个行业。
Modbus 通常用于将仪器和控制设备发出的信号传输到主控制器或数据采集系统。例如,测量温度和湿度并将测量结果传输到计算机的系统。
Modbus 也常用于将监控计算机与远程终端单元 (RTU) 连接起来,这在监控和数据采集 (SCADA) 系统中得到应用。
Modbus 协议有在串行线路上运行的版本(Modbus RTU 和 Modbus ASCII)和在以太网上运行的版本(Modbus TCP)。
1.1 工作原理 Modbus
Modbus 通过串行线路在设备之间传输数据。最简单的配置是用一根串行电缆连接客户端和服务器两台设备的串行端口。
数据以一系列比特(0 和 1)的形式发送,每个比特都通过电压传输:正电压发送 0,负电压发送 1。这些比特以非常快的速度传输,典型的传输速率为 9600 波特率(比特/秒)。
2.不同版本 Modbus协议
2.1 Modbus RTU
Modbus RTU(远程终端单元)是 Modbus 协议的二进制实现。它通常用于串行通信,并以其紧凑的数据表示而著称,这使得它高效且快速。这种高效率极大地简化了其在硬件设备上的实现。该协议下的通信使用 RS-485 或 RS-232 等物理接口。
Modbus RTU over TCP 是 Modbus RTU 和 Modbus TCP 协议的混合体。虽然物理介质是以太网,但数据传输遵循 RTU 格式。这种混合模式的显著优势在于,只需极少的硬件升级即可将原有的基于 RTU 的系统迁移到以太网。因此,设计人员在扩展控制范围时,通常会选择这种方案,以便尽可能多地复用现场设备和结构。
2.2 Modbus ASCII
Modbus ASCII(美国信息交换标准代码)是 Modbus 协议的 ASCII 实现。它的效率低于 Modbus RTU,但它使用人类可读的字符,因此更容易操作和调试。
2.3 Modbus TCP/IP
Modbus TCP/IP 是运行在 TCP/IP 网络上的 Modbus 协议版本,支持跨不同网络的远距离通信。
2.4 Modbus UDP
Modbus UDP(用户数据报协议)是 Modbus 协议的一个版本,它通过 UDP 传输协议进行传输。与 Modbus TCP/IP 相比,它的可靠性较低,因为它无法保证数据包的送达或传输顺序的正确性,但它的速度更快,占用带宽更少。
2.5 Modbus Plus
Modbus Plus(MB+ 或 Modbus+)是施耐德电气推出的 Modbus 协议的专有变体。它是一种点对点通信协议,与标准 Modbus 相比,可以提供更高的速度和更确定的数据传输。
3. Modbus 使用的通信介质
3.1RS-232

3.2RS-422

3.3以太网

4. Modbus 中的主站和从站
4.1 主定义
主站是发起 Modbus 通信的设备。它控制整个通信过程,向从站发送请求,并处理从站返回的响应数据。一个主站可以连接多个从站,每个从站都必须有一个唯一的地址。
4.2 奴隶的定义
从设备接收并响应来自主设备的请求。从设备不能主动发起通信;它只能在主设备发送请求时才进行响应。从设备的地址用于唯一标识其在通信网络中的位置。
4.3 主设备和从设备之间的功能差异
主设备通常具有强大的计算和控制能力,可以同时发起和管理与多个从设备的通信。从设备的功能则较为简单,仅响应主设备的请求并反馈数据。
4.4 主从角色互换
主设备和从设备的角色可以互换。例如,一个设备可以作为主设备,在一个通信过程中向多个从设备发送请求;在另一个通信过程中,同一个设备可以作为从设备,接收来自其他主设备的请求。
5.什么是波特率?
5.1 波特率的定义
波特率,也称为比特率,是指串行通信中每秒传输的比特数。它表示单位时间内传输的数据量,单位是“波特”或bps(比特每秒)。
Modbus 支持的标准波特率:
300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200 bps
5.2 波特率的功能
波特率是串行通信的核心参数,它决定了数据传输速度和通信效率。具体来说,波特率越高,数据传输速度越快,通信效率也越高。但是,波特率的选择并非一成不变,需要根据具体的应用场景和硬件设备进行调整。
5.3 选择合适波特率的规则
1.确认沟通需求
明确需要高速海量数据传输还是低速小量数据传输,并根据实际需要确定波特率范围。
2.考虑硬件限制
不同的硬件设备都有最大波特率限制;所选波特率不能超过硬件支持的上限。
3.考虑传输距离
较长的传输电缆需要较低的波特率才能确保可靠的数据传输。
4.考虑误码率
高波特率会因传输速度快而增加传输错误的概率,因此应选择适中的波特率以降低错误率。
5.测试和验证
在缩小可选波特率范围后,进行实际通信测试,比较不同波特率的通信效果和传输速度,并选择最佳参数。
5.4概括
波特率是串行通信中最基本也是最重要的参数,它决定了传输速度和通信可靠性。合理选择波特率需要综合考虑通信需求、硬件限制、传输距离和误码率等因素,并通过实际测试确定最佳值,以实现稳定高效的串行通信。
6. 连接到单个 Modbus 主站的最大从站数量
连接到主设备的最大从设备数量因通信介质的不同而有所差异,如下表所示:

7. Modbus寄存器分类和地址分配
寄存器是Modbus协议的核心概念,所有数据都存储在寄存器中。寄存器的概念最初源于PLC(可编程逻辑控制器),随着Modbus的广泛应用,其含义也随之扩展——它不仅指物理硬件寄存器,还可以表示一块内存空间。
根据数据类型和读写属性,Modbus寄存器分为四类。这四类寄存器的地址空间可以是连续的,也可以是不连续的,具体由设备开发人员定义。
地址分配说明
不同设备的可访问地址范围不同;上表仅显示每种寄存器类型的标准定义。

8. Modbus ASCII 和 Modbus RTU 的区别
1.编码和校验模式
Modbus RTU:采用二进制编码,使用CRC错误检测。
Modbus ASCII:传输效率低,采用LRC错误检测,性能较弱。
2.帧构图模式
ASCII 模式使用特殊的 ASCII 字符作为消息的开始和结束标记;RTU 使用 3.5 个字符的静默间隔来区分消息帧。
3.相互兼容性
这两种模式不兼容。配置为ASCII模式的设备无法与运行RTU模式的设备通信。
4.数据量开销
Modbus ASCII 消息传输相同数据内容所需的字节数是 Modbus RTU 消息的两倍,传输效率较低。









