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 系统里,它们是怎么配合的呢?
我画了一张图,你看看就明白了。
从这张图你可以看到:
- 现场设备用各自的协议(Modbus、103、DNP3)把数据发出来
- 通信网关负责协议转换,把不同协议的数据统一成一种格式
- 通信网络负责传输,可能是光纤、4G 或者 5G
- EMS 主站同时跑着多个协议栈,接收不同来源的数据
这里有个关键点:协议转换。网关不是简单地把报文透传,而是要解析、重组、缓存。我见过一个项目,网关直接把 Modbus 报文原封不动地转成 104 报文,结果调度端解析不出来。为什么?因为数据模型不对应。
避坑指南:协议转换时,一定要注意数据类型的映射。比如 Modbus 的 16 位整数,转到 104 里可能是 32 位整数。不做转换,数据就错了。
4.7 选型建议
最后,给各位一些选型建议。这完全是我个人的经验,不一定适合所有场景,但可以参考:
| 场景 | 推荐协议 | 理由 |
|---|---|---|
| 变电站到调度中心 | IEC 104 | 国内标准,兼容性好 |
| 北美项目 | DNP3 | 当地主流,功能强大 |
| 采集电表/逆变器 | Modbus | 简单,设备支持度高 |
| 老旧设备改造 | IEC 101 | 串口通信,兼容老设备 |
| 分布式光伏 | Modbus TCP | 网络化,便于集中管理 |
记住一句话:没有最好的协议,只有最合适的协议。选协议的时候,要考虑设备支持度、网络条件、运维成本。
好了,这一章就聊到这里。通信协议是 EMS 的基础,也是很多问题的根源。搞懂了协议,你就成功了一半。