Modbus RTU
Modbus RTU
Modbus RTU(Remote Terminal Unit)是一种在工业环境中广泛使用的串行通信协议。它基于Modbus协议的一种实现,通过串行线(如RS-232或RS-485)进行通信,主要用于设备间的简单通信。由于其开放性、简单性和广泛的支持,Modbus RTU成为了工业通信中的事实标准之一。
基本概念
Modbus RTU帧结构:每个Modbus RTU消息帧以设备地址开始,后跟功能码、数据、以及一个循环冗余检查(CRC)校验码结束。设备地址标识了网络上的特定设备,功能码指定了要执行的操作(如读取数据、写入数据等),数据部分包含了指令或指令的回复,CRC校验码用于检测传输错误。
主站/从站模式:Modbus RTU采用主站/从站(或主从)模式。在任何给定的Modbus网络中,有一个设备充当主站,负责发起请求。其余设备作为从站,响应主站的请求。每个从站设备都有一个唯一的地址。
串行通信:Modbus RTU通过串行通信端口进行数据传输,典型的接口是RS-232或RS-485。RS-485尤其受到欢迎,因为它支持长距离通信和多设备网络。
功能码
Modbus RTU定义了一系列功能码,用于读取和写入数据,以及进行设备控制。这些功能码包括但不限于:
- 读取线圈状态(01):读取从站的一组数字输出(线圈)的状态。
- 读取输入状态(02):读取从站的一组数字输入的状态。
- 读取保持寄存器(03):读取从站的一组保持寄存器中的值,这些寄存器可以由主站读写。
- 读取输入寄存器(04):读取从站的一组输入寄存器中的值,这些寄存器只能由主站读取。
- 写单个线圈(05):写一个数字输出(线圈)的状态。
- 写单个寄存器(06):写单个保持寄存器的值。
通信流程
- 请求:主站发送一个请求给从站,请求中包括从站的地址、一个功能码、以及根据所请求操作的需要可能包含的数据。
- 处理:从站接收到请求后,解析功能码并执行相应的操作。
- 响应:从站处理完请求后,回送一个响应给主站。响应可能包含所请求的数据或执行操作的结果。
- 错误处理:如果请求不能被正确执行,从站会返回一个错误响应,其中包含错误码指示问题所在。
在Modbus RTU通信协议中,从机通常是执行实际控制任务的物理设备,比如传感器、执行器、PLCs(可编程逻辑控制器)等。下面我将列举几个常用的从机类型,并提供各种功能码的请求与回复例子,同时解释报文中的含义。
常用从机类型
- 温度传感器:用于测量温度,通常会通过保持寄存器或输入寄存器提供测量值。
- 电机控制器:用于控制电机的启动、停止和速度调节,可能会使用线圈进行开/关控制和保持寄存器来设置参数。
- PLC:可编程逻辑控制器,用于自动化控制生产过程,可以通过Modbus RTU读写其输入/输出接口和参数设置。
- 变频器:用于调节电机的速度,通过读写保持寄存器来设置和读取运行参数。
功能码的请求与回复例子
读取保持寄存器(功能码03)
请求:从主站读取从站保持寄存器的值。例如,主站请求从一个PLC(设备地址为01)的保持寄存器开始,读取3个寄存器的值。
请求报文示例:
01 03 00 64 00 03 76 87
01
:从站地址。03
:功能码,表示读取保持寄存器。00 64
:起始寄存器地址(100)。00 03
:要读取的寄存器数量(3个)。76 87
:CRC校验码。
回复:从站回复所请求的保持寄存器的值。
回复报文示例:
01 03 06 00 0A 01 2B 00 0C 45 E8
01
:从站地址。03
:功能码。06
:字节计数(读取3个寄存器,每个寄存器2字节,共6字节)。00 0A
:第一个寄存器的值(10)。01 2B
:第二个寄存器的值(299)。00 0C
:第三个寄存器的值(12)。45 E8
:CRC校验码。
写单个寄存器(功能码06)
请求:主站设置从站单个保持寄存器的值。例如,主站设置一个温度控制器(设备地址为02)的目标温度。
请求报文示例:
02 06 00 01 04 D2 F8 14
02
:从站地址。06
:功能码,表示写单个寄存器。00 01
:寄存器地址(1)。04 D2
:要写入的值(1234,假设这是一个温度值)。F8 14
:CRC校验码。
回复:从站确认写入的寄存器地址和值。
回复报文示例:
02 06 00 01 04 D2 F8 14
- 报文结构与请求相同,确认已正确写入值。
这些例子展示了Modbus RTU协议中请求与回复报文的结构和含义。通过这些例子,可以看到Modbus RTU协议在工业通信中的灵活性和实用性,允许主站与从站之间进行高效的数据交换。
通信设置
Modbus RTU通信设置包括波特率(例如9600或19200 bps)、数据位(通常是8位)、停止位(1或2位)、以及奇偶校验(无、奇校验或偶校验)。这些参数必须在通信设备间事先协商一致。
应用场景
Modbus RTU广泛应用于各种工业自动化系统,如PLC(可编程逻辑控制器)、温度控制器、变频器、传感器网络等。它使得不同制造商的设备能够通过标准化方式互相通信,极大地促进了工业设备的兼容性和互操作性。
总而言之,Modbus RTU协议以其简单、高效和灵活的特点,在工业通信领域占据了重要地位。它不仅适用于小型简单系统,也能扩展以满足更复杂网络的需求。