4. 具体通信服务映射(SCSM):MMS、GOOSE、SV三种报文的映射关系与区别

好,咱们今天聊点硬核的。SCSM,全称是 Specific Communication Service Mapping,翻译过来就是“具体通信服务映射”。

说白了,它就是一套规则。告诉IEC 61850这个抽象的大框架,到底该用哪种“方言”去跟设备说话。

我个人习惯把SCSM理解成“翻译官”。抽象的数据模型是“想法”,SCSM就是把这个想法变成实实在在能在网线上跑的“字节流”。

在变电站自动化里,最常用的三种“方言”就是:MMS、GOOSE 和 SV。它们仨各有各的脾气,也各有各的活儿。今天我就把它们的映射关系和区别给你掰扯清楚。

4.1 三种报文的基本定位

先给个总览。你想想看,一个变电站里,信息流大概分三类:

  • 控制与监视类:比如后台要读个遥测值,或者下发个遥控命令。这类数据量不大,但对完整性要求高,丢了得重传。
  • 跳闸与信号类:比如保护动作了,要告诉断路器赶紧跳。这类数据要求极快,毫秒级甚至微秒级,绝对不能等重传。
  • 采样值类:比如合并单元把CT/PT的电压电流值发出去。这类数据量大,实时性要求最高,而且是周期性发送。

嗯,这三种需求,正好对应了三种报文:

  • MMS:面向连接的、客户端/服务器模式。用于后台与IED之间的读写操作。
  • GOOSE:面向无连接的、发布者/订阅者模式。用于设备间的快速状态交换和跳闸命令。
  • SV:也是发布者/订阅者模式。专门用于传输采样值,比如9-2LE。

核心区别一句话总结:

MMS是“打电话”,有问有答,确保信息完整;GOOSE是“广播喊话”,一呼百应,追求速度;SV是“定时播报”,周期性地把采样数据甩到网上。

4.2 MMS:面向连接的“老大哥”

MMS,全称制造报文规范。它是最早用在工业控制里的协议,IEC 61850把它拿过来,作为站控层通信的主力。

我在项目中遇到过,很多刚接触61850的工程师,总觉得MMS就是“读个值”那么简单。其实不然。MMS的映射非常复杂,它把61850的抽象数据模型(比如逻辑节点、数据对象)映射成了MMS的虚拟制造设备(VMD)。

举个例子:你后台要读一个断路器的位置。在61850模型里,它叫 XCBR1.Pos.stVal。MMS会把这个路径映射成一个MMS的命名变量。然后通过 readwrite 服务来操作。

// 抽象模型:XCBR1.Pos.stVal
// MMS映射:Domain = "XCBR1", VariableName = "Pos$stVal"
// 实际报文:MMS Confirmed-Request (read)
// 对象:DomainSpecific
// 变量名:XCBR1.Pos$stVal

这里有个坑,我提醒你一下。MMS的变量名里,路径分隔符用的是 $ 而不是 .。很多人在配置ICD文件时,容易搞混这个符号。我曾经因为这个,在联调时查了半天,最后发现是IED的配置文件里路径写错了。

个人经验:

MMS报文在Wireshark里抓包时,你会看到大量的ASN.1编码。看着很头疼。我建议你重点关注 confirmed-requestconfirmed-response 这两个服务。只要看到它们成对出现,就说明通信是正常的。

4.3 GOOSE:面向无连接的“快枪手”

GOOSE,全称通用面向对象变电站事件。它跟MMS完全不同。

MMS是“你问我答”,GOOSE是“我主动告诉你”。而且它不建立连接,直接往以太网里发多播报文。速度极快,通常在4毫秒以内。

为什么会这么快?因为它跳过了TCP/IP那套复杂的握手和重传机制。GOOSE直接映射到以太网数据链路层,用的是ISO/IEC 8802-3帧。

// GOOSE报文结构(简化)
// 以太网头部:目的MAC(多播地址)
// 优先级标签:VLAN Priority (通常为4)
// EtherType:0x88B8
// GOOSE PDU:
//   gocbRef: "IED1/LLN0$GO$GoCB1"
//   timeAllowedtoLive: 4000 (ms)
//   datSet: "IED1/LLN0$GooseDataSet1"
//   goID: "IED1/GOOSE1"
//   t: 当前时间戳
//   stNum: 状态序列号
//   sqNum: 事件序列号
//   simulation: False
//   data: [布尔值, 浮点数, ...]

注意看 stNumsqNum。这是GOOSE的重传机制核心。当有事件发生时(比如保护动作),stNum 加1,然后以最快速度连续发几帧(比如间隔1ms、2ms、4ms...)。之后进入稳态,sqNum 递增,发送间隔逐渐拉长到 timeAllowedtoLive

嗯,这里有个避坑指南。我曾经在现场遇到过,某个智能终端老是误动。查了半天,发现是GOOSE报文的 timeAllowedtoLive 设置得太短,而网络又有点拥塞,导致接收方认为链路中断,进入了“安全状态”。所以,这个参数一定要根据网络实际情况来配,别照抄别人的模板。

注意:

GOOSE没有确认机制。发送方发完就不管了。接收方必须自己判断数据是否有效。判断依据就是:如果在 timeAllowedtoLive 时间内没收到新报文,就认为通信断了,然后执行预设的“安全逻辑”(比如跳闸或报警)。

4.4 SV:面向采样的“数据搬运工”

SV,全称采样值。它跟GOOSE很像,也是发布者/订阅者模式,也是直接映射到以太网链路层。但它的用途非常专一:传输采样值。

我记得在数字化变电站刚兴起那会儿,SV报文是最大的流量来源。一个合并单元,每秒钟要发4000帧(80点/周波)甚至4800帧(96点/周波)。如果全站有几十个合并单元,那网络压力是相当大的。

// SV报文结构(9-2LE标准)
// 以太网头部:目的MAC(多播地址)
// 优先级标签:VLAN Priority (通常为4)
// EtherType:0x88BA
// SV PDU:
//   svID: "MU1/LLN0$MSVCB01$SmpV"
//   smpCnt: 采样计数器 (0-3999)
//   confRev: 配置版本号
//   smpSynch: 同步状态
//   seqData:
//     - 电流A相: 0x1234
//     - 电流B相: 0x5678
//     - 电流C相: 0x9ABC
//     - 电压A相: 0xDEF0
//     - ...

SV报文最大的特点是:周期性。它不像GOOSE那样有“事件触发”和“稳态心跳”两种模式。SV就是一直发,每秒钟发固定数量的帧。而且,SV报文里没有 stNumsqNum,它靠 smpCnt 来保证数据的连续性。

你想想看,如果 smpCnt 从100直接跳到了102,中间缺了一帧。那接收方(比如保护装置)就知道丢数据了。这时候,保护装置通常会闭锁一段时间,或者用插值算法补一个值。但如果是跳闸逻辑,丢数据可能导致误判。

映射关系对比表:

特性 MMS GOOSE SV
通信模式 客户端/服务器 发布者/订阅者 发布者/订阅者
传输层 TCP/IP 直接映射到以太网 直接映射到以太网
EtherType 0x0800 (IP) 0x88B8 0x88BA
实时性 秒级 毫秒级 微秒级
重传机制 TCP确认重传 快速重传+心跳 无重传,周期性发送
典型应用 后台监控、定值读写 跳闸、联锁、状态交换 采样值传输
数据量

4.5 三种报文的协同工作

在实际的变电站里,这三种报文不是孤立的。它们协同工作,构成了一个完整的自动化系统。

我画个图给你看看,它们之间的关系:

IEC 61850 三种报文协同工作示意图 站控层 (Station Level) 后台监控系统 | 远动网关 | 工程师站 MMS (TCP/IP) — 读取遥测、下发遥控、修改定值 间隔层 (Bay Level) 保护装置 | 测控装置 | 智能终端 GOOSE (0x88B8) — 保护跳闸、断路器位置、联锁信号 过程层 (Process Level) 合并单元 | 电子式互感器 | 智能开关 SV (0x88BA) — 电流、电压采样值 MMS负责站控层与间隔层通信 | GOOSE负责间隔层之间通信 | SV负责过程层向间隔层传输采样值

你看这个图,层次非常清楚:

  • 站控层:后台通过MMS跟间隔层的保护测控装置通信。读数据、写定值、看波形,都走MMS。
  • 间隔层:保护装置之间、保护与智能终端之间,用GOOSE交换状态和命令。比如A套保护动作了,通过GOOSE告诉B套保护,同时告诉智能终端跳闸。
  • 过程层:合并单元把CT/PT的采样值,通过SV报文发给间隔层的保护装置。保护装置收到SV后,进行计算,判断是否要动作。

嗯,这里有个关键点。你想想看,保护装置既要收SV(采样值),又要收GOOSE(状态),还要发GOOSE(跳闸)。它怎么保证实时性?

答案是:硬件优先级。在交换机和网卡里,SV和GOOSE报文通常被标记为高优先级(VLAN Priority=4或5),而MMS是低优先级(通常为0)。这样,当网络拥塞时,交换机会优先转发SV和GOOSE,保证保护功能不受影响。

我的建议:

在做网络规划时,一定要把SV、GOOSE、MMS划分到不同的VLAN里。或者至少用优先级标签把它们区分开。我曾经见过一个项目,因为没做VLAN划分,结果MMS的大文件传输把网络堵了,导致GOOSE跳闸报文延迟了十几毫秒。这在电力系统里是绝对不能接受的。

4.6 总结一下

好了,三种报文的核心区别,我基本讲完了。最后给你一个速记口诀:

  • MMS:有连接,有确认,适合后台读写。
  • GOOSE:无连接,快重传,适合跳闸联锁。
  • SV:无连接,周期发,适合采样传输。

记住这三句话,你在配置SCD文件时,就不会搞混该用哪种报文了。


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