Modbus RTU 协议是一种开放的串行协议,广泛应用于当今的工业监控设备中。该协议使用 RS-232 或 RS-485 串行接口进行通信,并得到市场上几乎所有商业 SCADA、HMI、OPC 服务器和数据采集软件程序的支持。因此,很容易将 Modbus 兼容设备集成到新的或现有的监控应用程序中,并具有即时的软件支持。
Modbus RTU 协议使用主/从技术在设备之间进行通信。这意味着,任何使用 Modbus RTU 协议的应用程序都将有一个 Modbus 主站和至少一个 Modbus 从站。Modbus Master 通常是一台运行软件的主机监控计算机,它将与一个或多个 Modbus Slave 设备进行通信。
Modbus 从设备是执行系统参数测量和控制系统中的开/关设备的设备。为了执行这些任务,主站向 Modbus 从站发送消息,请求执行特定任务。
Modbus RTU 协议使用格式化的消息在主机和从机之间进行通信。消息由系统 Master 发起并发送到 Slave 设备。然后,从站以请求的数据进行响应,或者确认它执行了请求的功能。所有进出主站的消息都包含一个两字节(16 位)CRC(循环冗余校验)校验和值,用于错误检查。如果将无效请求传输到 Modbus 从站,则会返回一个字节(8 位)错误代码值,说明请求错误的原因。
Modbus 主站消息包含几个重要的信息。每条消息都以接受消息的设备的从地址开始。接下来是要执行的功能编号(或命令)。后面是指定函数正确执行所需的任何数据。从地址是一个单字节(8 位)值,可用值范围在 0-247 之间。Modbus 功能号也是一个字节值,并且在协议中定义了许多标准化功能号。支持所请求功能所需的任何数据值的长度将是一个或多个字节。Modbus 从站响应消息将包含响应的从站地址、功能编号和主站请求的任何必要数据。
Modbus RTU 协议是一种开放协议,可以免版税使用。这允许制造商在其设备中使用通用 Modbus 协议结构,并添加自定义功能以访问其硬件中的功能。虽然这可能是一个很大的好处,但它可能会导致与不支持新定义功能的商业软件程序的兼容性问题。
Modbus 协议包含当今市场上几乎所有 SCADA、HMI 和数据采集程序都支持的功能列表。以下是用于执行大多数 Modbus 设备读取和控制的协议功能的简要列表。从列表中,“线圈”通常是继电器或数字输出,“寄存器”代表从系统状态到模拟输入或输出信号值的任何内容。每个硬件供应商都有一个“寄存器映射”,详细说明每个寄存器位置和该寄存器的可能数据值。
Modbus RTU 功能 01 用于从 Modbus 从站数据采集设备读取线圈状态或数字输出状态。请参阅下面的典型命令和响应以及使用说明。
命令用法:
回应讯息:
最后,在指定 Modbus 硬件或软件时,请花点时间查看每个设备的文档,并确保硬件和软件都支持正常运行所需的功能。出现问题的情况很少见,但此审查过程将消除以后出现意外的可能性。
Modbus RTU 功能 03 用于读取 Modbus 从设备中的保持寄存器(4x 寄存器引用)。寄存器从零开始寻址:这意味着寄存器 1-10 的寻址为 0-9。
Modbus 功能 03 还包括要从 Modbus 从设备读取的寄存器数量。请参见下面的示例命令,该命令从 Modbus 从站地址 01 读取一个寄存器 40010。
命令用法:
回应讯息:
Modbus RTU 功能 04 用于读取 Modbus 从设备中的输入寄存器(3x 寄存器引用)。寄存器从零开始寻址:这意味着寄存器 1-10 的寻址为 0-9。
Modbus 功能 04 还包括要从 Modbus 从设备读取的寄存器数量。请参阅下面的示例命令,该命令从 Modbus 从站地址 01 读取一个寄存器 30010。
命令用法:
回应讯息: