第三章:通信协议基础——Modbus RTU/TCP、OPC UA、MQTT、IEC 61850、DNP3协议原理与适用场景

各位同学,大家好。我是老张,干SCADA这行快十五年了。

今天咱们聊点硬核的——通信协议。说白了,SCADA系统就是个“传话筒”,把现场设备的数据传到中控室。但传什么、怎么传、传多快,全靠协议说了算。

我见过不少项目,设备选型没问题,网络也通,就是数据死活上不来。最后查来查去,协议配置错了。嗯,这坑我踩过不止一次。

核心观点:没有万能的协议,只有合适的场景。选对协议,项目就成功了一半。

SCADA通信协议知识体系 SCADA 通信协议 Modbus RTU/TCP 串口/以太网 OPC UA 跨平台/安全 MQTT 物联网/轻量级 IEC 61850 变电站/电力 DNP3

3.1 Modbus RTU/TCP——工业界的“普通话”

Modbus,这玩意儿太经典了。1979年Modicon公司搞出来的,到现在四十多年了,还在大量用。为什么?简单、稳定、便宜。

Modbus RTU走的是串口(RS-232/RS-485),一主多从。主站问,从站答。数据格式是二进制,效率高。

Modbus TCP就是把RTU的报文封装到TCP/IP包里,走以太网。端口号502,记住这个数字,配防火墙的时候用得上。

我的经验:Modbus RTU的RS-485总线,最长能到1200米。但别真跑1200米,我建议留20%余量。还有,终端电阻一定要加,不加的话信号反射会让你怀疑人生。

适用场景:

  • PLC、变频器、智能仪表等简单设备
  • 数据量不大(一次读写几十个寄存器)
  • 对实时性要求不极端(100ms级别够用)

举个例子。我做过一个水厂项目,200多台仪表,全是Modbus RTU。一条485总线挂了30多台设备,轮询一遍大概3秒。够用,而且成本极低。

3.2 OPC UA——跨平台的“翻译官”

OPC UA,全称是OPC统一架构。它不是协议,是规范。说白了,它定义了一套标准的数据模型和通信机制。

为什么需要OPC UA?因为工业现场太乱了。西门子的PLC用S7协议,罗克韦尔用CIP,三菱用MC协议……每个厂家各玩各的。OPC UA就是那个“翻译官”,让不同厂家的设备能互相理解。

核心特点:

  • 跨平台:Windows、Linux、嵌入式都能跑
  • 安全:支持加密、签名、认证
  • 信息模型:不只是传数值,还能传设备描述、报警、历史数据

注意:OPC UA的客户端和服务端版本要匹配。我遇到过OPC UA 1.0的客户端连不上1.4的服务端,折腾了两天才发现是版本兼容性问题。

适用场景:

  • 大型SCADA系统,需要集成多种品牌设备
  • 需要安全通信的场合(比如电力、化工)
  • 需要传输复杂数据结构的场景

3.3 MQTT——物联网的“快递员”

MQTT,消息队列遥测传输。名字挺长,但原理很简单:发布/订阅模式。

想象一下,你订了份外卖。你(订阅者)不用一直盯着厨房(发布者),外卖到了骑手(Broker)会通知你。MQTT就是这个机制。

为什么MQTT适合SCADA?

  • 轻量级:报文头只有2字节,适合窄带宽、低功耗场景
  • QoS等级:0(最多发一次)、1(至少发一次)、2(恰好发一次)
  • 遗嘱消息:设备掉线了,Broker会发一条“我挂了”的消息

我记得有个光伏电站项目,几千个逆变器分布在山上,4G信号时好时坏。用MQTT的QoS 1,数据基本不丢。要是用Modbus TCP,断线重连能把你搞疯。

适用场景:

  • 物联网、边缘计算场景
  • 网络不稳定、带宽有限的场合
  • 需要大量设备接入的分布式系统

3.4 IEC 61850——电力系统的“国际语言”

IEC 61850,这是电力行业的专用协议。变电站自动化系统里,它就是标准。

这协议很复杂,但核心就几点:

  • 抽象通信服务接口(ACSI):定义了读、写、报告、控制等操作
  • 面向对象的建模:把断路器、变压器都建模成对象
  • GOOSE报文:用于快速跳闸,延时小于3ms
  • SV报文:采样值传输,用于保护

关键点:IEC 61850的GOOSE和SV报文是直接走二层网络的,不经过TCP/IP。所以配置VLAN和优先级标签(802.1Q)非常重要,否则网络拥堵时保护会误动。

适用场景:

  • 智能变电站、数字化变电站
  • 新能源场站(风电场、光伏电站)的监控系统
  • 对实时性和互操作性要求极高的电力系统

3.5 DNP3——电力与水务的“老将”

DNP3,分布式网络协议。1993年出来的,比IEC 61850早,在北美和澳洲用得特别多。

DNP3和Modbus有点像,但更强大:

  • 支持事件驱动:设备状态变化时才上报,不用轮询
  • 时间戳:每个数据点都带时间,方便事后分析
  • 安全认证:DNP3 Secure Authentication,防止恶意操作

我做过一个水务项目,调度中心需要远程控制几百个阀门。用DNP3的事件上报机制,平时网络负载几乎为零。只有阀门动作了,才发一条报文。比Modbus轮询省带宽多了。

适用场景:

  • 电力调度自动化系统(SCADA/EMS)
  • 水务、油气管道等远程监控系统
  • 需要事件驱动和可靠传输的场合

3.6 协议选型对比表

协议 传输层 实时性 安全性 复杂度 典型场景
Modbus RTU RS-232/485 中等 PLC、仪表
Modbus TCP TCP/IP 中等 工业以太网
OPC UA TCP/IP 中等 系统集成
MQTT TCP/IP 物联网
IEC 61850 以太网二层 极高 极高 变电站
DNP3 TCP/IP/串口 电力/水务

我的建议:别一上来就选最复杂的协议。先搞清楚需求:数据量多大?实时性多高?网络稳不稳定?有没有安全要求?然后对着表选,基本不会错。

好了,通信协议这块就聊到这儿。这些协议我每个都在项目里摸爬滚打过,踩过的坑比你们走过的路还多。但记住一点:协议是工具,不是目的。把数据稳定、安全地传上来,才是硬道理。


公众号:蓝海资料掘金营,微信deep3321