1. Modbus 协议概述

Modbus 是工业自动化领域应用最广泛的通信协议之一,自 1979 年由 Modicon(现施耐德电气)发布以来,凭借其开放、简单、可靠的特点,已成为连接现场设备与控制系统的事实标准。本章从发展历史、应用领域和协议栈结构三个维度,帮助学员建立对 Modbus 协议的整体认知。

1.1 Modbus 协议发展历史

Modbus 协议的发展经历了三个关键阶段,从串行总线到工业以太网,始终保持着向后兼容的设计哲学。

阶段 时间 关键事件 协议版本
诞生与串行时代 1979 年 Modicon 发布 Modbus 协议,用于 PLC 与智能设备通信 Modbus RTU / ASCII
开放与标准化 1999 年 施耐德电气将 Modbus 协议规范公开,成为工业领域开放协议 Modbus TCP
以太网与泛化 2006 年 Modbus-IDA 组织推动,Modbus TCP 成为 GB/T 19582 国家标准 Modbus TCP / RTU over TCP
关键认知: Modbus 协议不依赖特定硬件平台,任何微控制器只要实现协议栈即可互操作。这是它历经 40 余年仍活跃在工厂一线的根本原因。

1.2 应用领域

Modbus 协议在厂务监控系统(FMS)、楼宇自控、能源管理、过程控制等领域占据主导地位。以下列出典型应用场景:

  • 厂务监控(FMS): 空调机组、空压机、水泵、风机、变配电设备的参数采集与控制。
  • 能源管理: 智能电表、水表、气表、热表的能耗数据读取。
  • 环境监测: 温湿度传感器、PM2.5 检测仪、VOC 报警器、液位变送器。
  • 过程控制: 变频器、软启动器、电动调节阀、执行机构的远程设定与反馈。
  • 楼宇自控: 照明控制、电梯监控、消防系统联动。
实战提示: 在厂务项目中,超过 80% 的从站设备(传感器、执行器、仪表)都支持 Modbus RTU 或 Modbus TCP 接口。掌握地址映射与调试方法,是解决现场通信问题的核心技能。

1.3 协议栈结构(物理层、数据链路层、应用层)

Modbus 协议遵循 OSI 模型的简化分层设计,主要聚焦在物理层、数据链路层和应用层。下面通过一张协议栈结构图展示各层的关系。

Modbus 协议栈结构(OSI 简化模型) 应用层(Application Layer) Modbus 应用协议规范:功能码(01~FF)、数据模型、地址映射 PDU(协议数据单元):功能码 + 数据 数据链路层(Data Link Layer) 串行链路:RTU 帧(CRC 校验)/ ASCII 帧(LRC 校验) 以太网链路:TCP 报文封装(MBAP 头 + PDU) 物理层(Physical Layer) RS-232 / RS-485(两线制/四线制) / 以太网 RJ45 波特率:9600 / 19200 / 38400 / 115200 bps 数据封装方向: 应用层 → 数据链路层 → 物理层

1.3.1 物理层

物理层定义了电气接口、传输介质和信号特性。Modbus 主要支持两种物理层:

  • RS-485(最常用): 差分信号传输,最大传输距离 1200 米,支持多点连接(最多 32 个节点),半双工通信。
  • RS-232: 点对点通信,传输距离约 15 米,常用于调试口或单设备连接。
  • 以太网(Modbus TCP): 使用标准 RJ45 接口和 TCP/IP 协议栈,传输距离受交换机限制,支持全双工。

1.3.2 数据链路层

数据链路层负责帧封装、地址识别和差错校验。Modbus 定义了三种帧格式:

帧格式 传输介质 帧结构 校验方式 典型应用
Modbus RTU RS-232 / RS-485 地址(1B) + 功能码(1B) + 数据(NB) + CRC(2B) CRC-16 (Modbus) 厂务传感器、PLC、变频器
Modbus ASCII RS-232 / RS-485 起始符(:) + 地址(2B) + 功能码(2B) + 数据(NB) + LRC(2B) + 结束符(CRLF) LRC (纵向冗余校验) 老旧设备、调试场景
Modbus TCP 以太网 MBAP头(7B) + 功能码(1B) + 数据(NB) 无(依赖 TCP 校验) 上位机、网关、控制器
常见误区: Modbus RTU 和 Modbus TCP 的 PDU(协议数据单元)结构不同。RTU 的地址和 CRC 属于数据链路层封装,而 TCP 的 MBAP 头替代了地址和校验功能。在地址映射时,务必确认从站设备使用的是哪种帧格式。

1.3.3 应用层

应用层定义了功能码、数据模型和地址映射规则。Modbus 应用层核心要素包括:

  • 功能码: 01(读线圈)、02(读离散输入)、03(读保持寄存器)、04(读输入寄存器)、05(写单线圈)、06(写单寄存器)、15(写多线圈)、16(写多寄存器)等。
  • 数据模型: 四种基本数据对象——线圈(DO)、离散输入(DI)、输入寄存器(AI)、保持寄存器(AO)。
  • 地址映射: 从站设备将内部参数(温度、压力、频率、状态)映射到 Modbus 地址空间,主站通过功能码+地址组合访问。
Modbus 应用层数据模型与地址空间 线圈 (Coil) DO - 数字量输出 地址:00001~09999 功能码:01 / 05 / 15 离散输入 (DI) DI - 数字量输入 地址:10001~19999 功能码:02 输入寄存器 (IR) AI - 模拟量输入 地址:30001~39999 功能码:04 保持寄存器 (HR) AO - 模拟量输出 地址:40001~49999 功能码:03 / 06 / 16 地址映射实战要点 • 地址编号通常从 1 开始(PLC 习惯),但协议报文中的地址从 0 开始(协议习惯)。 • 保持寄存器(HR)是厂务设备最常用的数据对象,用于读写温度、压力、频率等参数。 • 地址映射表是调试的核心文档,必须包含:设备参数名、Modbus 地址、数据类型、缩放系数。

1.4 本章小结

本章从发展历史、应用领域和协议栈结构三个维度建立了 Modbus 协议的整体框架。学员应重点掌握:

  • Modbus 协议从串行总线到以太网的演进路径,以及 RTU / ASCII / TCP 三种帧格式的差异。
  • 物理层 RS-485 的接线规范与波特率配置对通信稳定性的影响。
  • 应用层四种数据对象(线圈、离散输入、输入寄存器、保持寄存器)的地址范围与对应功能码。
  • 地址映射时“PLC 地址”与“协议地址”的偏移关系(差 1 问题)。