4. 通信协议基础:IEC 60870-5-101/104、DNP3、Modbus 在 EMS 中的应用

各位同学,咱们今天聊聊 EMS 的“神经系统”——通信协议。

做 EMS 这么多年,我最大的感触就是:算法再牛,模型再准,数据上不来,一切都是白搭。通信协议就是干这个的——把现场那些乱七八糟的设备(电表、RTU、保护装置)的数据,规规矩矩地送到你的系统里。

说白了,这就是一套“翻译规则”。设备说方言,系统要听普通话,协议就是那个翻译官。

4.1 为什么 EMS 需要多种协议?

你可能会问:为什么不能统一用一种协议?

嗯,理想很丰满,现实很骨感。电力系统发展了上百年,设备来自不同年代、不同厂家。老设备跑着老协议,新设备用着新协议。你想想看,一个变电站里,可能有 90 年代的进口保护装置,也有去年刚装的智能电表。

所以,一个合格的 EMS 架构师,必须得懂几种主流协议。不是让你去写协议栈,而是要知道:

  • 每种协议擅长干什么
  • 有什么坑
  • 怎么配置才能稳定

核心原则:协议是手段,不是目的。我们的目标是——数据准确、实时、不丢包。

4.2 IEC 60870-5-101 协议

先聊 101 协议。这是 IEC 专门为电力系统制定的远动协议,跑在串口上。

我记得刚入行那会儿,去一个 35kV 变电站调试。现场工程师跟我说:“小伙子,101 协议很简单,就是发报文收报文。”结果我调了整整三天,数据就是不对。后来发现是串口参数没对齐——波特率、校验位、停止位,差一点都不行。

101 协议的核心特点:

  • 物理层:RS-232/RS-485,串口通信
  • 传输方式:问答式(主站问,从站答)
  • 数据格式:FT1.2 帧格式,带校验
  • 典型应用:变电站到调度中心的远动通信

101 协议有个好处:抗干扰能力强。串口通信嘛,距离短,但稳定。坏处也很明显:速度慢,一条线只能接一个设备。

我的经验:101 协议调试时,先确认物理连接。拿万用表量一下电压,看看 TX/RX 有没有接反。我曾经被这个问题坑过整整一个下午。

4.3 IEC 60870-5-104 协议

104 协议是 101 的“网络版”。说白了,就是把 101 的报文封装到 TCP/IP 里跑。

现在新建的变电站,基本都用 104 协议了。为什么?因为网络通信太方便了。一根网线,可以接几十个设备,速度还快。

104 协议的关键点:

  • 传输层:TCP/IP,端口号 2404
  • 连接方式:长连接,心跳保活
  • 数据模型:公共地址 + 信息对象地址
  • 传输模式:支持主动上报(变化遥测)

这里有个重要的概念:变化遥测。什么意思呢?就是数据变了才上报,没变就不报。这样可以大大节省带宽。

我在一个光伏电站项目里,遇到过一个问题:逆变器数据上报太频繁,把调度端的服务器搞崩了。后来一查,是变化遥测的死区设得太小。稍微调大一点,问题就解决了。

避坑指南:104 协议有个“心跳超时”参数。我曾经遇到过,设备心跳间隔设了 30 秒,但网络偶尔抖动一下,就断连了。后来改成 10 秒,稳如老狗。

4.4 DNP3 协议

DNP3 是北美那边流行起来的协议,现在国内也越来越多。它比 IEC 104 更灵活,功能也更强大。

DNP3 的独特之处:

  • 分层架构:数据链路层、传输层、应用层
  • 事件机制:支持事件记录和事件上报
  • 时间同步:精度高,支持 IRIG-B
  • 安全认证:支持 SAv5 安全认证

我个人觉得,DNP3 最大的优势是它的“事件机制”。比如一个断路器跳闸了,DNP3 可以记录下跳闸的精确时间(毫秒级),然后主动上报。这对于故障分析太重要了。

但 DNP3 也有缺点:协议栈复杂,实现起来成本高。小厂家的设备,DNP3 实现往往有 bug。

对比一下:

特性 IEC 104 DNP3
传输层 TCP/IP TCP/IP 或串口
事件机制 有限 强大
时间同步 一般 高精度
安全认证
国内普及度 中等

4.5 Modbus 协议

Modbus 是工业界的“通用语言”。它简单、轻量、容易实现。在 EMS 里,Modbus 主要用于采集电表、逆变器、UPS 等设备的数据。

Modbus 的两种变体:

  • Modbus RTU:串口通信,二进制编码,效率高
  • Modbus TCP:网络通信,端口 502

Modbus 的数据模型很简单:线圈、离散输入、保持寄存器、输入寄存器。说白了,就是一堆地址,每个地址对应一个数据点。

举个例子:一个电表的电压值,可能映射到保持寄存器的地址 0x0000。你读这个地址,就能拿到电压值。

我的习惯:用 Modbus 时,先画一张“地址映射表”。把每个设备的寄存器地址、数据类型、缩放系数都列清楚。不然调试的时候,你会疯掉。

Modbus 有个大问题:安全性差。没有认证,没有加密。所以,在 EMS 里,Modbus 一般只用在局域网内部,不会直接暴露到公网。

4.6 通信协议在 EMS 中的应用架构

好了,四种协议都聊完了。那在真实的 EMS 系统里,它们是怎么配合的呢?

我画了一张图,你看看就明白了。

EMS 通信协议应用架构 现场设备层 智能电表 (Modbus) 保护装置 (103/104) RTU (DNP3) 逆变器 (Modbus) 通信网关 / 协议转换器 协议转换、数据缓存、断点续传 通信网络层 以太网 / 光纤 / 4G / 5G EMS 主站系统 104 协议栈 DNP3 协议栈 Modbus 协议栈 101 协议栈

从这张图你可以看到:

  1. 现场设备用各自的协议(Modbus、103、DNP3)把数据发出来
  2. 通信网关负责协议转换,把不同协议的数据统一成一种格式
  3. 通信网络负责传输,可能是光纤、4G 或者 5G
  4. EMS 主站同时跑着多个协议栈,接收不同来源的数据

这里有个关键点:协议转换。网关不是简单地把报文透传,而是要解析、重组、缓存。我见过一个项目,网关直接把 Modbus 报文原封不动地转成 104 报文,结果调度端解析不出来。为什么?因为数据模型不对应。

避坑指南:协议转换时,一定要注意数据类型的映射。比如 Modbus 的 16 位整数,转到 104 里可能是 32 位整数。不做转换,数据就错了。

4.7 选型建议

最后,给各位一些选型建议。这完全是我个人的经验,不一定适合所有场景,但可以参考:

场景 推荐协议 理由
变电站到调度中心 IEC 104 国内标准,兼容性好
北美项目 DNP3 当地主流,功能强大
采集电表/逆变器 Modbus 简单,设备支持度高
老旧设备改造 IEC 101 串口通信,兼容老设备
分布式光伏 Modbus TCP 网络化,便于集中管理

记住一句话:没有最好的协议,只有最合适的协议。选协议的时候,要考虑设备支持度、网络条件、运维成本。

好了,这一章就聊到这里。通信协议是 EMS 的基础,也是很多问题的根源。搞懂了协议,你就成功了一半。


专注资料整理