IEC 61850 系列(三):通信协议栈——MMS、GOOSE、SV 三驾马车
IEC 61850通信机制解析摘要 IEC 61850标准定义了三种核心通信机制:MMS(制造报文规范)、GOOSE(面向通用对象的变电站事件)和SV(采样值)。 MMS基于TCP/IP,采用客户端-服务器模式,用于监控数据采集和设备控制,延迟在100ms~1s,支持ACSI抽象服务映射。其协议栈包含多层ISO标准,使用ASN.1 BER编码,通过$符号转换对象引用路径。 GOOSE工作在数据链路
核心目标:掌握 IEC 61850 三种通信机制的原理、报文格式和适用场景,能读懂 Wireshark 抓包并理解协议交互过程。
前置知识:Part 2 的信息模型概念(LD/LN/DO/DA/DataSet),TCP/IP 基础知识。
3.1 通信架构总览
3.1.1 三驾马车的定位
IEC 61850 的通信架构在设计上区分了三种不同的通信需求,每种需求对实时性、可靠性和数据量的要求都不相同。
3.1.2 协议栈对比
| 特性 | MMS | GOOSE | SV |
|---|---|---|---|
| OSI 层级 | 7 层(应用层) | 2 层(数据链路层)或 3 层 | 2 层或 3 层 |
| 传输方式 | TCP 可靠连接 | 以太网组播(无连接) | 以太网组播(无连接) |
| 通信模式 | Client → Server 请求/响应 | Publisher → Subscriber 发布/订阅 | Publisher → Subscriber 发布/订阅 |
| 典型延迟 | 100ms ~ 1s | < 4ms(甚至 < 1ms) | < 0.02ms(采样周期级) |
| 服务类型 | 确认服务 + 非确认服务 | 非确认服务 | 非确认服务(连续流) |
| 主要用途 | 监控数据采集、参数设置、控制命令 | 跳闸信号、状态联锁、保护启动 | 电流/电压波形采样 |
| 带宽占用 | 低(按需传输) | 低(事件触发+心跳) | 高(连续传输) |
| 网络协议 | TCP/IP + TPKT + COTP + MMS | IEEE 802.3 + GOOSE APDU | IEEE 802.3 + SV APDU |
| 标准 | IEC 61850-8-1 | IEC 61850-8-1 | IEC 61850-9-2 |
| 端口/协议标识 | TCP 102(MMS 默认) | EtherType 0x88B8 | EtherType 0x88BA |
3.1.3 三种协议在变电站中的协作场景
以一个典型的"保护跳闸"场景为例,三种协议协同工作:
3.2 MMS 协议深析
3.2.1 MMS 的起源与角色
MMS(Manufacturing Message Specification)并非 IEC 61850 独有的协议。它源于 ISO/IEC 9506 标准,最初是为制造业自动化设计的通用报文规范。IEC 61850 选择 MMS 作为站控层通信协议,利用其成熟的面向对象服务能力来承载 IEC 61850 的抽象服务。
简单理解:MMS = IEC 61850 信息模型的"传输载体"。
3.2.2 MMS 协议栈
MMS 的协议栈在 TCP/IP 之上叠加了多层 ISO 协议:
编码方式:MMS 使用 ASN.1 BER(Basic Encoding Rules)进行编码。每个 MMS 报文由 TLV(Tag-Length-Value)三元组序列组成。
3.2.3 报文结构逐层解析
下面抓取一个典型的 MMS Read 请求和响应,从以太网帧开始逐层拆解:
以太网帧头(14 字节):
Destination MAC: 00:1a:xx:xx:xx:01
Source MAC: 00:1a:xx:xx:xx:02
EtherType: 0x0800 (IPv4)
IP 头(20 字节)
TCP 头(20 字节): 源端口 102(MMS 默认服务端端口)
TPKT 头(4 字节):
Byte 0-2: 版本标志 + 保留 (0x03 0x00)
Byte 3: 包体长度 (0x31 = 49 字节后续数据)
COTP 头(ISO 8073)—— 传输连接:
TPDU Type: 0xf0 (DT - Data Transfer)
TPDU NR: 0x12
Last Data Unit: 0x00
Session/Presentation 层 —— 主要是 PDU 编码协商:
Session Identifier: ...
Presentation Context ID: 1 (MMS)
MMS 层(核心)—— Confirmed-Request PDU:
invokeID: 3 ← 请求 ID,用于匹配响应
service: read (0xa4) ← 服务类型
└─ variableAccessSpecification
├─ List of Variable
├─ variableSpecification: OBJECT_INSTANCE_NAME
│ └─ domainSpecific
│ ├─ domainId: "PROT" ← LD 名称
│ └─ itemId: "PTOC1$ST$Op$general" ← LN.DO.DA 路径
│ ↑ MMS 使用 $ 作为分隔符!
└─ ...
MMS 响应 —— Confirmed-Response PDU:
invokeID: 3 ← 匹配请求 ID
service: read (0xa4)
└─ accessResult
└─ success
└─ data: BOOLEAN (true) ← 返回值:true(动作已启动)
关键发现:IEC 61850 的对象引用路径在 MMS 中转换为以
$分隔的格式:
- IEC 61850 路径:
PROT/PTOC1.Op.general(FC=ST)- MMS 编码路径:
PROT/PTOC1$ST$Op$general路径映射规则:
LD/LN$FC$DO$DA
3.2.4 MMS 核心 ACSI 服务映射
以下是 IEC 61850 ACSI 服务到 MMS 服务的映射关系:
| ACSI 服务 | 对应的 MMS 服务 | 用途 |
|---|---|---|
| GetServerDirectory | identify + getNameList |
获取 Server 信息及所有 LD 列表 |
| GetLogicalDeviceDirectory | getNameList |
获取 LD 下所有 LN |
| GetLogicalNodeDirectory | getNameList |
获取 LN 下所有 DO |
| GetDataObjectDefinition | getVariableAccessAttributes |
获取 DO 的类型定义 |
| Read | read |
读取 DA 的值 |
| Write | write |
写入 DA 的值 |
| GetDataSetValue | read(数据集) |
读取数据集中的所有值 |
| SetDataSetValue | write(数据集) |
写入数据集中的所有值 |
| CreateDataSet | createNamedVariableList |
动态创建数据集 |
| DeleteDataSet | deleteNamedVariableList |
删除动态数据集 |
| GetDataSetDirectory | getNameList(数据集) |
获取数据集的 FCDA 成员列表 |
| Report (BRCB/URCB) | informationReport |
主动上报数据变化 |
| Select | write(ctlVal + 特定控制模式) |
选择控制对象 |
| SelectWithValue | write(ctlVal + 控制值 + 控制模式) |
带值选择控制对象 |
| Cancel | write(取消控制操作) |
取消控制 |
| Operate | write(ctlVal + 操作值 + 控制模式) |
执行控制操作 |
| CommandTermination | informationReport |
控制执行完成通知 |
| GetCBValues | read(控制块参数) |
读取控制块参数 |
| SetCBValues | write(控制块参数) |
设置控制块参数 |
3.2.5 Report 机制详解
Report 是 MMS 中最核心的"主动推送"机制,在监控后台实时更新场景中至关重要。
Report 的交互过程:
报告触发条件(TrgOps):
| 触发标志 | 名称 | 含义 | 典型场景 |
|---|---|---|---|
| dchg | Data Change | 数据值发生变化时触发 | 断路器位置变化、保护动作 |
| qchg | Quality Change | 数据品质位变化时触发 | 数据从 good 变 invalid |
| dupd | Data Update | 数据被更新时触发(值可能未变) | 周期性状态刷新 |
| IntgPd | Integrity Period | 定时周期上报所有数据值 | 测量值定期刷新 |
BRCB(缓冲报告)vs URCB(非缓冲报告):
| 特性 | BRCB(缓冲) | URCB(非缓冲) |
|---|---|---|
| 缓存机制 | 事件按序号缓存,确认前保留 | 不缓存,发送即丢弃 |
| 有序性 | 顺序严格保证(客户端必须 ACK) | 不保证顺序 |
| 丢网络时 | 事件保留在缓存,恢复后补发 | 事件丢失 |
| sqNum 变化 | 递增(客户端确认后) | 递增(每包独立) |
| 适用场景 | 保护动作事件(不可丢失) | 测量值上报(可容忍丢包) |
缓冲报告确认流程:
如果网络断开后恢复:
3.2.6 控制模型详解
IEC 61850 定义了五种控制模型,安全级别由低到高:
| 控制模型 | 编码 | 含义 | 安全性级别 | 典型应用 |
|---|---|---|---|---|
| Status Only | 0 | 只读状态,不执行控制 | — | 仅监视的控制点 |
| Direct-with-normal-security | 1 | 直接操作,无安全校验 | 低 | 简单遥调 |
| SBO-with-normal-security | 2 | 先选后操,无安全校验 | 中 | 普通遥控 |
| Direct-with-enhanced-security | 3 | 直接操作,带安全校验 | 高 | 带身份验证的控制 |
| SBO-with-enhanced-security | 4 | 先选后操,带安全校验 | 最高 | 保护/安全相关的控制 |
SBO 控制完整交互时序(最常用模式):
安全注意:SBO-with-enhanced-security 要求:
- 每次操作必须由具有适当权限的 Client 发起(身份验证)
- Operate 的值必须与 Select 时的值严格一致(防止篡改)
- 操作必须在 sboTimeout 内完成(超时自动取消选中状态)
3.3 GOOSE 协议深析
3.3.1 GOOSE 的原理
GOOSE(Generic Object Oriented Substation Event)是 IEC 61850 中最重要的实时通信机制,用于在同一网络的设备之间快速交换状态和命令信息。
GOOSE 的核心特性:
- 基于组播:一个设备发布,多个设备可同时接收
- 无连接:不依赖 TCP 握手,直接工作在以太网层
- 自动重传:事件发生后按指数退避策略重复发送
- 心跳机制:无事件时周期性发送心跳,用于通信监视
3.3.2 GOOSE 报文结构
GOOSE 报文直接封装在以太网帧中(不经过 IP 和 TCP/UDP),EtherType 为 0x88B8。
3.3.3 GOOSE 关键字段详解
| 字段 | 类型 | 含义 | 说明 |
|---|---|---|---|
| gocbRef | VisibleString | GOOSE 控制块引用 | 唯一标识,格式:LD/LN.GOCB名称 |
| timeAllowedToLive | INTEGER (ms) | 允许存活时间 | 接收端用此值判断 GOOSE 是否超时,通常为 4 倍心跳间隔 |
| datSet | VisibleString | 数据集引用 | 指向 LLN0 下的 DataSet 定义 |
| goID | VisibleString | GOOSE 标识 | 可选的人类可读标识 |
| t | UTC Time | 时间戳 | 当前事件的 UTC 时间(纳秒精度) |
| stNum | INTEGER | 状态变更序号 | 每次数据值变化时递增(事件发生后 sqNum=0) |
| sqNum | INTEGER | 重传序号 | 同一 stNum 内重传次数,每次重传递增 |
| test | BOOLEAN | 测试模式 | true 时接收端不应执行实际操作(用于调试) |
| confRev | INTEGER | 配置版本号 | GOOSE 控制块配置变更时递增,接收端应检查 |
| ndsCom | BOOLEAN | 需要重新配置 | true 表示发布端配置无效,需要重新配置 |
| numDatSetEntries | INTEGER | 数据集条目数 | allData 数组的长度 |
| allData | SEQUENCE OF Data | 数据值列表 | 按数据集定义的顺序排列的实际数据值 |
3.3.4 GOOSE 发布机制
GOOSE 的一个关键设计是事件触发的重传机制。当数据变化时,GOOSE 以极快的速度连续发送多帧,然后逐渐降低重传频率,直到恢复心跳周期。
重传时间序列(指数退避):
以 MaxRetransmissionTime = 2000ms 和 MinRetransmissionTime = 4ms 为例:
| 重传次数 | 等待时间 | 发送时刻(ms) |
|---|---|---|
| 0(事件) | — | 0 |
| 1 | 4ms | 4 |
| 2 | 8ms | 12 |
| 3 | 16ms | 28 |
| 4 | 32ms | 60 |
| 5 | 64ms | 124 |
| 6 | 128ms | 252 |
| 7 | 256ms | 508 |
| 8 | 512ms | 1020 |
| 9 | 1024ms | 2044 |
| 10 | 2000ms | 4044(进入心跳稳定阶段) |
设计目的:在事件发生后的最初阶段以最高频率重传,确保哪怕丢失几帧,接收端也能在极短时间内收到有效数据,既满足实时性要求,又不至于永远高频广播占用带宽。
3.3.5 GOOSE 订阅机制
接收端需要做的几件事:
- 组播过滤:监听目标组播 MAC 地址(基于 APPID 映射),或者接收所有 GOOSE 帧后按 APPID 过滤
- 订阅解码:解析 APDU,提取数据
- 状态机跟踪:跟踪 stNum/sqNum 的变化(防止重复处理)
- 超时检测:如果超过「timeAllowedToLive」时间未收到新帧,认为发布端丢失,进入 “GOOSE 丢失” 告警状态
GOOSE 接收状态机(简化):
stNum/sqNum 的处理规则:
| 场景 | stNum 变化 | sqNum 变化 | 接收端行为 |
|---|---|---|---|
| 首次接收 | — | — | 接受数据,记录 stNum/sqNum |
| 心跳包(无变化) | 不变 | 递增 | 仅重置超时计时器,不处理数据 |
| 事件发生 | 递增 | 0 | 处理新数据值,重置计时器 |
| 事件重传 | 不变 | 递增 | 忽略重复数据(已处理过) |
| stNum 回退 | 变小 | — | 忽略,IED 可能重启过(需要输出告警) |
3.3.6 VLAN 与优先级
GOOSE 报文在实际网络中通常使用 VLAN Tagging 来确保 QoS:
VLAN Tag (IEEE 802.1Q):
├── TPID: 0x8100 (VLAN 标识)
├── PCP: 4 (Priority Code Point, 0-7, 4 = 优先转发)
├── DEI: 0 (Drop Eligible Indicator)
└── VID: 100 (VLAN ID, 0-4094)
GOOSE 的组播 MAC 地址生成规则:
组播 MAC = 01:0C:CD:01:00:00 + APPID 的低 12 位
例如 APPID = 0x1001 → MAC = 01:0C:CD:01:00:01
APPID = 0x1002 → MAC = 01:0C:CD:01:00:02
IEC 61850 保留了 01:0C:CD:01:00:00 ~ 01:0C:CD:01:FF:FF 范围(共 4096 个)用于 GOOSE 组播。
3.4 SV 协议深析
3.4.1 SV 的定位
SV(Sampled Values)用于传输电流/电压互感器的原始采样数据,是过程层通信的核心。SV 协议定义在 IEC 61850-9-2(及 9-2 LE Light Edition),EtherType 为 0x88BA。
SV 与 GOOSE 的关键区别:
| 特性 | GOOSE | SV |
|---|---|---|
| 数据性质 | 离散事件(跳闸/状态) | 连续流采样数据 |
| 发送方式 | 事件触发 + 心跳 | 持续周期发送(每个采样点一帧或一个 ASDU 多帧聚合) |
| 实时性 | < 4ms | 采样周期级别(~0.02ms 对应 80 点/周波@50Hz) |
| 数据量 | 小(几十字节) | 大(每个 ASDU 带多通道采样值) |
| 时间同步 | 可选 | 必须(IEEE 1588 PTP) |
3.4.2 SV 报文结构
3.4.3 采样率配置
IEC 61850-9-2 LE 定义了两种最常见的采样率:
| 保护应用 | 计量/电能质量应用 |
|---|---|
| 80 样本/工频周波 | 256 样本/工频周波 |
| 50Hz: 4000 样本/秒 | 50Hz: 12800 样本/秒 |
| 60Hz: 4800 样本/秒 | 60Hz: 15360 样本/秒 |
| 1 个 ASDU 每帧 | 1 个 ASDU 每帧 或 8 个 ASDU 聚合每帧 |
对应采样间隔:
- 80 点/周波(50Hz):间隔 = 20ms / 80 = 250μs → 帧率 = 4000 帧/秒
- 256 点/周波(50Hz):间隔 = 20ms / 256 = 78.125μs → 帧率 = 12800 帧/秒
3.4.4 时间同步要求
SV 的关键是所有合并单元必须严格同步采样时序,否则保护装置计算的差动电流、向量和将出现严重误差。
smpCnt(采样计数)同步:
smpCnt 是 SV 帧中的重要字段,它标识当前帧在整个工频周期中的位置,用于接收端对齐来自不同 MU 的采样数据。
smpCnt 循环(80 点/周波 @ 50Hz):
0 → 1 → 2 → ... → 79 → 0 → 1 → ... (每 20ms 循环一次)
↑
smpSynch=true 脉冲
smpCnt 的连续性检查:
正常: ... → smpCnt=33 → smpCnt=34 → smpCnt=35 → ...
丢帧: ... → smpCnt=33 → smpCnt=35 → ... (34 丢失!)
不同步: ... → smpCnt=33 → smpCnt=33 → ... (相同计数重复出现)
3.5 控制模型详解
3.5.1 五种控制模型
在 3.2.6 节中我们简要介绍了五种控制模型,这里从更深层的角度分析它们的设计意图:
Status-only (ctlModel = 0):
- 该控制对象只读,不能执行任何控制操作
- 适用于作为状态监视点而非可操作点的 DO
Direct-with-normal-security (ctlModel = 1):
- 一次 Operate 即完成控制,无需先 Select
- 没有时序上的安全保证(任何 Client 任何时候都能操作)
- 使用简单,但缺少防冲突机制
SBO-with-normal-security (ctlModel = 2):
- Select → Operate 两阶段流程
- Select 锁定控制对象,其他 Client 无法操作
- 需要 sboTimeout 超时自动释放
- 满足大多数控制场景
Direct-with-enhanced-security (ctlModel = 3):
- 单次操作,但增加了安全校验和身份认证
- 在 Operate 中包含 origin(操作源)、ctlNum(操作序号)等信息
- 适用于需要追溯操作源的场景
SBO-with-enhanced-security (ctlModel = 4):
- Select + Operate + 安全校验 + 身份认证
- 最高安全等级的保护控制
- 要求 Operate 时 ctlVal 与 Select 时保持一致
- 通常用于保护跳闸、断路器控制等关键操作
3.5.2 控制服务参数详解
Select 服务参数:
Select Request:
├── ctlVal: BOOLEAN ← 要控制的期望值(合=1/分=0)
├── origin: ← 操作源
│ ├── orCat: {0=远程控制, 1=就地控制, 2=远方继电保护, 3=自动}
│ └── orIdent: "SCADA_01" ← 操作者标识
├── ctlNum: INTEGER ← 操作序号(防止重放攻击)
├── T: Timestamp ← 操作时间戳
├── test: BOOLEAN ← 测试模式标志
└── Check: SBO ──→ ctlModel = 2/4 时有效
Operate 服务参数:
Operate Request:
├── ctlVal: BOOLEAN ← 必须与 Select 的值完全一致!
├── origin: {orCat, orIdent}
├── ctlNum: INTEGER ← 同一控制序列中与 Select 的 ctlNum 相同
├── T: Timestamp
├── test: BOOLEAN
└── Check:
├── synchrocheck: BOOLEAN ← 是否需做同期检查
└── interlockCheck: BOOLEAN ← 是否需做联锁检查
3.5.3 联锁与同期检查
联锁(Interlocking)—— CILO LN:
联锁逻辑确保不满足安全条件时,控制操作会被拒绝。
典型的联锁规则示例(隔离开关操作):
1. XSWI(隔离开关)只能在 XCBR(断路器)断开时分合
2. 接地刀闸只能在相应隔离开关断开时操作
3. 母线隔离开关不能在有负荷的情况下操作
CILO 的输出 DO:
├── EneRel: 使能/禁止操作的逻辑条件
├── OpOpn: 允许分闸的条件
└── OpCls: 允许合闸的条件
同期检查(Synchrocheck)—— RSYN LN:
当断路器合闸时,需要检查两侧(母线侧和线路侧)是否满足同期条件:
RSYN 检查的典型条件:
├── ΔV < V_max ← 电压差阈值
├── ΔF < F_max ← 频率差阈值
├── ΔΦ < Φ_max ← 相角差阈值
└── DEAD_BUS_CHECK ← 是否允许"死母线"合闸(母线无电压时)
3.6 Wireshark 报文分析实战
3.6.1 配置 Wireshark
在 Wireshark 中成功解析 IEC 61850 协议需要以下配置:
- 安装解析器:Wireshark 3.x 以上版本自带 MMS/GOOSE/SV 解析器
- 配置 GOOSE APPID 过滤:
Display Filter: goose Capture Filter: ether proto 0x88B8 - 配置 SV 过滤:
Display Filter: sv Capture Filter: ether proto 0x88BA - MMS 过滤(默认在 TCP 102 端口):
Display Filter: mms
3.6.2 典型报文分析
场景:抓取 GOOSE 布跳闸报文
Frame 367: 72 bytes on wire (576 bits)
├── Ethernet II
│ ├── Destination: 01:0c:cd:01:00:01 (GOOSE 组播)
│ ├── Source: 00:1a:xx:xx:xx:01
│ ├── Type: 0x8100 (802.1Q Tag)
│ │ ├── .000 0100 0000 0000 = VLAN ID: 100
│ │ └── 100. .... .... .... = Priority: 4
│ └── Type: 0x88B8 (GOOSE)
│
├── GOOSE (IEC 61850-8-1)
│ ├── gocbRef: "PROT/LLN0.gocbTrip"
│ ├── timeAllowedToLive: 5000
│ ├── datSet: "PROT/LLN0.dsTrip"
│ ├── goID: "GOOSE_prot_trip"
│ ├── t: May 5, 2026 10:30:00.123456 UTC
│ ├── stNum: 47
│ ├── sqNum: 0 ← 第一次重传(stNum 刚变化)
│ ├── test: False
│ ├── confRev: 2
│ ├── ndsCom: False
│ ├── numDatSetEntries: 4
│ └── allData: BOOLEAN[4]
│ ├── BOOLEAN: True (PTOC1.Op.general = 过流I段动作!)
│ ├── BOOLEAN: False
│ └── BOOLEAN: False
└── Padding: ...
Wireshark 分析要点:
- 检查
stNum是否在之前的帧基础上递增了 1——确认数据确实发生了变化 - 检查
sqNum= 0 —— 这是事件发生后的第一帧,最重要 - 检查
allData中的值——过流 I 段动作了 - 检查
timeAllowedToLive= 5000ms —— 5 秒内收不到新帧则认为通信丢失
3.6.3 常见异常场景
场景1:GOOSE 丢帧
收到帧序列:
stNum=1, sqNum=0 → stNum=1, sqNum=1 → stNum=1, sqNum=3
↑ sqNum 跳跃了!
中间有 sqNum=2 丢失
分析:sqNum 为连续序号,中间出现跳跃说明存在丢帧。
如果丢帧持续累积,且总接收间隔 > timeAllowedToLive,
接收端应置品质为 invalid。
场景2:SV 采样不同步
MU#1 的 smpCnt: ... → 33 → 34 → 35 → 36 → ...
MU#2 的 smpCnt: ... → 33 → 35 → 36 → ...
↑ MU#2 的 34 号样本丢失!
分析:smpCnt 出现跳跃说明 MU#2 发生了采样丢失。
接收端(保护 IED)需要检测并处理此类异常,可能
导致差动保护闭锁或报警。
场景3:MMS 连接失败
TCP 三次握手成功(SYN/SYN-ACK/ACK)
COTP 连接请求成功(CR/CC)
MMS Initiate 请求/响应成功
然后 Read 请求 → 但响应包含 negative response (service error)
├─ service-error: object-access-denied
└─ 尝试访问的数据对象的读取权限未授予该客户端
分析:不是网络问题,是权限问题——需要检查 SCL 中
对应 FCDA 的访问权限配置。
3.7 三种协议部署对比总结
| 方面 | MMS | GOOSE | SV |
|---|---|---|---|
| 网络层 | TCP/IP 网络,路由可达 | 通常限制在二层交换网络 | 通常限制在二层交换网络 |
| 端口/协议 | TCP 102 | 以太网帧 0x88B8 | 以太网帧 0x88BA |
| 冗余 | TCP 重传 + 应用层冗余连接 | 双网冗余(PRP/HSR) | 双网冗余(PRP/HSR) |
| QoS 要求 | 低(尽力而为) | 中(VLAN PCP 4) | 高(VLAN PCP 6) |
| 带宽要求 | 低(按需) | 低(事件+心跳) | 高(连续采样流) |
| 时间同步 | NTP 即可 | PTP 可选 | PTP 强制 |
| 配置方式 | SCL 定义 + 运行时动态 | SCL 定义 + 预配置 | SCL 定义 + 预配置 |
| 故障排查 | Wireshark 按 TCP 流追踪 | Wireshark 分析 stNum/sqNum | Wireshark 分析 smpCnt 连续性 |
3.8 小结
本期是 IEC 61850 系列中篇幅最长、内容最深的一篇,我们全面贯通了三大协议的原理与细节:
- MMS —— 站控层协议,基于 TCP/IP,面向请求-响应的数据访问与报告推送
- GOOSE —— 过程层实时信号,二层组播,事件触发 + 指数退避重传
- SV —— 过程层采样值,周期组播,依赖 PTP 同步
- 控制模型 —— 五种控制模型的原理与 SBO 完整交互流程
- 报文分析 —— Wireshark 实战,常见异常场景
这三者在变电站中构成一个完整的通信生态——MMS 负责"慢但全面"的监控数据,GOOSE 负责"快但精简"的信号传递,SV 负责"连续且海量"的采样数据传输。
下期预告
[Part 4:SCL 配置工程] 将详解 IEC 61850 的配置语言:
- ICD、SSD、SCD、CID、SED 五种文件的完整体系
- SCL 文件的 XML 结构逐层解析
- 通信参数、GOOSE/SV 控制块、Report 控制块的配置方法
- 从零编写一个完整的 ICD 文件
参考标准
- IEC 61850-8-1: Specific communication service mapping (SCSM) - Mappings to MMS
- IEC 61850-9-2: Specific communication service mapping (SCSM) - Sampled Values over ISO/IEC 8802-3
- IEC 61850-7-2: ACSI
推荐工具
- Wireshark + 完整 IEC 61850 解析插件(必备工具)
- Linux 下的
tshark命令行工具(批量报文分析)- IEC 61850 IED Scout(商业,功能完善的 MMS 客户端调试工具)
- libIEC61850
goose_subscriber和goose_publisher示例(开源,适合学习源码级 GOOSE 处理)
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)