跳至主要內容

Modbus RTU

约 1668 字大约 6 分钟

Modbus RTU

Modbus RTU(Remote Terminal Unit)是一种在工业环境中广泛使用的串行通信协议。它基于Modbus协议的一种实现,通过串行线(如RS-232或RS-485)进行通信,主要用于设备间的简单通信。由于其开放性、简单性和广泛的支持,Modbus RTU成为了工业通信中的事实标准之一。

提示

ThingsCloud 平台对接入设备提供了内置的 Modbus 编解码支持,详细介绍请浏览:

基本概念

  • 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):写单个保持寄存器的值。

通信流程

  1. 请求:主站发送一个请求给从站,请求中包括从站的地址、一个功能码、以及根据所请求操作的需要可能包含的数据。
  2. 处理:从站接收到请求后,解析功能码并执行相应的操作。
  3. 响应:从站处理完请求后,回送一个响应给主站。响应可能包含所请求的数据或执行操作的结果。
  4. 错误处理:如果请求不能被正确执行,从站会返回一个错误响应,其中包含错误码指示问题所在。

在Modbus RTU通信协议中,从机通常是执行实际控制任务的物理设备,比如传感器、执行器、PLCs(可编程逻辑控制器)等。下面我将列举几个常用的从机类型,并提供各种功能码的请求与回复例子,同时解释报文中的含义。

常用从机类型

  1. 温度传感器:用于测量温度,通常会通过保持寄存器或输入寄存器提供测量值。
  2. 电机控制器:用于控制电机的启动、停止和速度调节,可能会使用线圈进行开/关控制和保持寄存器来设置参数。
  3. PLC:可编程逻辑控制器,用于自动化控制生产过程,可以通过Modbus RTU读写其输入/输出接口和参数设置。
  4. 变频器:用于调节电机的速度,通过读写保持寄存器来设置和读取运行参数。

功能码的请求与回复例子

读取保持寄存器(功能码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协议以其简单、高效和灵活的特点,在工业通信领域占据了重要地位。它不仅适用于小型简单系统,也能扩展以满足更复杂网络的需求。