4. MMS协议基础:MMS是什么?它在IEC61850中扮演什么角色?
好,咱们今天聊聊MMS。很多刚接触IEC61850的朋友,一看到这三个字母就头大。说实话,我当年刚入行时也一样,翻了一堆资料,越看越迷糊。后来在变电站现场调了两年装置,才慢慢摸清楚它的脾气。
MMS的全称是制造报文规范(Manufacturing Message Specification)。名字挺长,但说白了,它就是一套工业设备之间互相通信的“普通话”。你想想看,一个变电站里有几十台智能电子设备(IED),有保护装置、测控装置、智能终端……它们来自不同厂家,怎么让它们互相理解?MMS就是干这个的。
核心一句话:MMS是IEC61850的“通信骨架”,它负责把变电站里那些复杂的电力数据(比如电压、电流、开关状态)打包成标准格式,在设备之间可靠地传来传去。
4.1 MMS在IEC61850中的角色定位
我习惯把IEC61850比作一个三层蛋糕:
- 最底层:网络通信层(以太网、TCP/IP)——负责把数据比特流发出去
- 中间层:MMS协议层——负责把数据“翻译”成双方都懂的格式
- 最上层:应用功能层(GOOSE、SV、报告等)——负责具体业务逻辑
MMS就在中间,承上启下。没有它,上层那些花里胡哨的功能根本跑不起来。
我在项目中遇到过一件事:有个站调试时,保护装置和后台监控怎么都连不上。查了两天,最后发现是MMS的应用关联参数没配对。说白了,就是两边的“握手暗号”没对上。从那以后,我每次做系统集成,第一件事就是检查MMS的关联配置。
4.2 MMS到底干了哪些活?
MMS在IEC61850里主要干三件事:
- 读数据:客户端(比如后台监控)向服务器(比如保护装置)请求某个数据值。比如“请把A相电流值发给我”。
- 写数据:客户端修改服务器里的数据。比如“把保护定值从100A改成120A”。
- 报告数据:服务器主动把变化的数据推送给客户端。比如“开关跳闸了,我主动告诉你”。
嗯,这里要注意:报告是MMS里最常用的功能。变电站里那么多遥信、遥测,如果每个数据都要客户端去轮询问一遍,网络早就炸了。所以MMS设计了报告机制——数据变了才上报,没变就不报。这个设计非常聪明。
4.3 MMS的报文长什么样?
你可能好奇,MMS报文在网络上到底长什么样?我拆一个给你看。
MMS报文是封装在TCP/IP里面的。它的结构大致是:
以太网帧头 | IP头 | TCP头 | TPKT头 | OSI会话层 | OSI表示层 | MMS报文
看着复杂,但实际工作中你不需要记这么多层。你只需要知道:MMS报文的核心是“请求-响应”模式。
举个例子,客户端想读保护装置的“A相电流”值:
客户端发送:MMS请求(读变量 "PROT1/MMXU1.A.phsA.cVal.mag.f")
服务器回复:MMS响应(值 = 523.4 A)
你看,MMS用的是面向对象的寻址方式。那个长长的字符串“PROT1/MMXU1.A.phsA.cVal.mag.f”就是IEC61850定义的数据路径。路径里的每一段都有含义:
- PROT1:逻辑设备名(保护装置1)
- MMXU1:逻辑节点(测量单元1)
- A:数据对象(A相)
- phsA:数据属性(A相电流)
- cVal.mag.f:子属性(复数值的幅值,浮点数)
这种命名方式,说白了就是把电力系统的物理量映射成了计算机能理解的对象树。我第一次看到这个路径时也觉得啰嗦,但用久了发现,这种设计让数据定位非常精确,不会产生歧义。
4.4 MMS的避坑指南
我曾经踩过的坑:
- 关联数限制:MMS服务器能同时处理的客户端连接数是有限的。有次我在一个站里接了20台后台,结果保护装置直接罢工了。后来查手册才发现,那台装置最多支持8个MMS关联。
- 报文超时:MMS请求如果没收到响应,客户端会重发。但重发间隔和次数如果设置不当,会导致网络风暴。我建议把超时时间设在5-10秒,重试次数不超过3次。
- 数据类型匹配:MMS支持多种数据类型(整数、浮点、布尔、字符串等)。读写数据时,两边的数据类型必须一致。我曾经遇到过把32位浮点数当16位整数读的情况,结果读出来的值完全不对。
4.5 MMS与GOOSE/SV的区别
很多新手会问:MMS和GOOSE、SV有什么区别?我简单说一下:
| 特性 | MMS | GOOSE | SV |
|---|---|---|---|
| 通信模式 | 客户端-服务器(请求/响应) | 发布者-订阅者(多播) | 发布者-订阅者(多播) |
| 实时性 | 中等(毫秒级) | 高(微秒级) | 极高(微秒级) |
| 典型用途 | 后台监控、定值读写、报告 | 跳闸信号、联闭锁 | 采样值传输(电流、电压波形) |
| 可靠性机制 | TCP重传、确认机制 | 重发机制(无确认) | 重发机制(无确认) |
说白了,MMS适合不要求极速但要求可靠的场景。比如后台监控读个遥测值,晚几百毫秒问题不大,但数据不能丢。而GOOSE和SV适合要求极速但可以容忍偶尔丢包的场景。比如跳闸信号,必须1毫秒内送到,丢一包没关系,下一包马上就到。
4.6 一张图看懂MMS在IEC61850中的位置
下面这张图是我自己画的,帮你理清MMS在整个协议栈里的位置:
我的个人建议:学习MMS,不要一开始就扎进ASN.1编码细节里。先理解它的通信模型(客户端-服务器)和核心服务(读、写、报告)。等你把这两个概念吃透了,再去研究报文编码,会轻松很多。
好了,关于MMS的基础就聊到这里。记住一句话:MMS是IEC61850的“脊梁骨”,所有非实时性的数据交互,几乎都靠它完成。下一节我们会深入MMS的报文结构,手把手教你拆解一个真实的MMS报文。
公众号:蓝海资料掘金营,微信deep3321