当前位置: 首页 > news >正文

IEC 61850:GOOSE报文详细解析(下篇)

🐈前置知识

🐈一、GOOSE报文结构

🐈‍⬛1.1 报文头(共26字节)

1、MAC地址(12字节)

2、Tag标签头信息(4字节)(可选字段)

3、Ethertype以太网类型值(2字节)

4、APPID应用标识(2字节)

5、Length长度字段(2字节)

6、Reserved保留位(4字节)

🐈‍⬛1.2 应用协议数据单元APDU

1、APDU数据T-L(TL格式)

2、GoCBRef(TLV格式):GOOSE控制块引用

3、Time Allowed to Live(TLV格式):最长等待时长

4、DataSet(TLV格式):数据集引用名

5、GoID(TLV格式):GOOSE报文唯一标识

6、StNum时间(TLV格式):事件时标(t)

7、StNum值(TLV格式):状态号

8、SqNum值(TLV格式):顺序号

9、Test(TLV格式):检修标识

10、ConfRev(TLV格式):配置版本号

11、NdsCom(TLV格式):未配置标志

12、NumDataSetEntries(TLV格式):数据集条目数

13、GOOSE数据T-L(TL格式):字节数量Data

14、AllData(TLV格式):全体数据项,由许多TLV链组成

15、补充说明GOOSE数据的q属性

🐈‍⬛1.3 尾部填充与帧校验域(PAD/FCS 段)

1、MAC 填充(PAD,若干0x00)

2、MAC 计算检验(CRC,4 字节)⭐⭐⭐

🐈二、GOOSE报文字段速查表⭐⭐⭐⭐⭐⭐

🐈‍⬛2.1 GOOSE的报文帧格式

🐈‍⬛2.2 GOOSE的APDU格式


🐈前置知识

详见GOOSE报文详细解析(上篇)

GOOSE报文详细解析(上篇)https://blog.csdn.net/m0_62876521/article/details/161718719

🐈一、GOOSE报文结构

🐈‍⬛1.1 报文头(共26字节)

GOOSE报文头由以太网数据帧18字节 + GOOSE报文头8字节组成,共计26字节。

1、MAC地址(12字节)
  • 目的地址(6字节):GOOSE报文目的地址前四个字节固定为"01-0C-CD-01",第四个字节为"01"时代表GOOSE。后两字节按应用层 GOOSE 控制块 APPID分配,拥有相同APPID的MAC也是相同的。

    IEC61850规定GOOSE报文目的地址取值范围为01-0C-CD-01-00-00到01-0C-CD-01-01-FF,一共有512个可用组播MAC地址

  • 源地址(6字节):发送方设备的MAC地址。

2、Tag标签头信息(4字节)(可选字段)

TPID(2字节)+ TCI(2字节),共4字节。

IEC61850仅推荐 GOOSE 划分 VLAN,VLAN 标签在 GOOSE 协议定义里是可选字段,非强制必填,这个点我们会在后续其他文章中继续关注。

(1)TPID(Tag Protocol Identifier)标签协议标识(2字节)

  • 固定为0x8100

  • 交换机接收到帧,读到0x8100就判定帧携带VLAN标签,继续解析后面TCI

(2)TCI(Tag Control Information)标签控制信息(2字节)

TCI=PCP+DEI+VID

字段位数说明
PCP3bit用户优先级代码点,定义数据链路层转发优先级(802.1p),用于QoS流量调度,交换机端口队列按PCP值区分调度,高优先级流量优先转发,减少延迟。
DEI1bit丢弃指示位,拥塞时的丢弃标记。0=默认不可优先丢弃(重要流量),1=允许优先丢弃(多用于日志、备份、监控等)。
CFI1bit规范格式指示,和DEI复用。0=标准以太网格式(默认固定值),1=令牌环等非以太网格式,目前CFI 彻底废弃恒为 0,不计入2字节TCI
VID12bitVLAN编号,VLAN唯一标识。VID=0保留(仅透传PCP优先级),VID=1~4094用户可配置,VID=4095系统内部保留。
3、Ethertype以太网类型值(2字节)
  • 0x88B8,代表该数据帧是一个GOOSE报文

  • 0x88BA,代表该数据帧是一个SMV报文

  • 0x88B9,代表该数据帧是一个GSSE报文

  • IEC 61850中各种报文的以太网类型已经由IEEE的著作权注册机构进行了注册,是独一无二的

4、APPID应用标识(2字节)
  • 取值范围:0x0001 ~ 0x3FFF,代表当前数据流的应用编号。

  • 同一变电站内/同一组播网段里,所有GOOSE、SV流的APPID不能重复,用来唯一标识一组GOOSE控制块/SV采样值流,拥有相同APPID的MAC也是相同的。

  • 收到报文后,设备通过APPID匹配本地配置,判断是哪一路业务数据。

有时候,APPID和MAC地址最后两个字节完全一样,因为都具有唯一性,所以常作为标识。

5、Length长度字段(2字节)
  • 表示数据帧从应用标识APPID(2字节)开始到应用协议数据单元APDU结束的部分共有多少个字节,注意虽然Length排在APPID之后,但是总长度是从APPID开始算的

6、Reserved保留位(4字节)
  • Reserved 1(2字节)+ Reserved 2(2字节),共4字节

  • 默认值为"00 00 00 00"

🐈‍⬛1.2 应用协议数据单元APDU

1、APDU数据T-L(TL格式)

标记61H,长度可变。标志GOOSE的APDU正式开始。

2、GoCBRef(TLV格式):GOOSE控制块引用

(1)作用:用于在SCD/ICD模型、报文、配置文件中精准定位某一个GOOSE控制块。遵循IEC 61850分层命名规则,全站唯一。

(2)命名格式IED名称/访问点/逻辑设备/逻辑节点.控制块名

  • 举例IED1/AP1/LD1/XCBR1.GO$GOOSE1

(3)功能约束 FC

给数据对象划分用途标签,限定这条数据能干什么、哪种报文能带它

  • gocbRef → GOOSE 控制块 → FC=GO,数据进入 GOOSE 数据集,通过 GOOSE(0x88B8)组播发送。

  • svcbRef → SV 采样控制块 → FC=SV,数据进入 SV 数据集,通过 SV(0x88BA)组播发送。

3、Time Allowed to Live(TLV格式):最长等待时长
  • 允许生存时间 / 存活超时时间

  • 心跳保活机制:GOOSE除了变位突发报文,还会周期发送心跳报文

    • 正常工况:发送端按固定周期发GOOSE心跳帧,接收端每次收到报文,刷新本地超时计时器。心跳发送间隔 < TAL,计时器永远达不到TAL,链路状态正常

    • 异常工况:接收端持续收不到报文,计时器不断累加;一旦计时 ≥ TAL,则判定断网/装置死机/链路中断,立即上送GOOSE通信中断告警

4、DataSet(TLV格式):数据集引用名

(1)本质:把多个遥信、遥测等数据打包成一组,GOOSE/SV 按整包上送,不单点单发。

(2)绑定关系

  • 1 个 GOCB(GOOSE 控制块)只能绑定 1 个 DataSet

  • 1 个 DataSet可被多个 GOCB/SVCB 共用

(3)报文作用:报文中携带数据集名称,接收方依靠名称匹配本地数据集,解包取出所有点位数据。

(4)命名规则:全站唯一,防止订阅匹配错误。

5、GoID(TLV格式):GOOSE报文唯一标识
  • 每个GOOSE报文的唯一性标识

  • 接收方通过对目的地址、APPID和goID等参数进行检查,判断是否是其所订阅的报文

订阅过滤机制🔅

接收端收到GOOSE帧后,依次校验:目的MAC地址 → APPID → GOID,全部匹配才解析数据,否则直接丢弃报文。

  • 目的MAC:大铁门(拦大流量)

  • APPID:应用门(区分不同业务流)

  • GOID:身份牌(最终确认是不是我要订阅的这路GOOSE)

6、StNum时间(TLV格式):事件时标(t)
  • GOOSE报文产生时的时标,其值为GOOSE数据发生变位的时间,即状态号StNum加1时候的UTC格林威治时间,国内本地时间 = UTC时间 + 8小时。

    记录数据变位、stNum自增的真实发生时刻,而不是报文发送时间!

  • 最后一个字节代表品质因数,时间品质反应最后一次状态变位发生时候的时间品质,而不是当前状态的时间品质

7、StNum值(TLV格式):状态号
  • 用于记录GOOSE数据发生变位的总次数。

  • 变位时自增1,稳态保持不变。

  • 稳态周期补发报文,stNum 数值不变

8、SqNum值(TLV格式):顺序号
  • 用于记录稳态情况下报文重复发出的帧数。

  • 装置每发出一帧GOOSE报文,SqNum应加1。

  • 当有GOOSE数据变化时,StNum+1 ,SqNum归0,从头开始重新计数。

9、Test(TLV格式):检修标识
  • 布尔型(True/False),用于标记发送端装置检修状态

  • 跨装置检修闭锁的核心机制

只要装置检修压板状态改变,后续所有发出的GOOSE报文,test位同步更新:

  • 检修压板投入 → test = True

  • 检修压板退出 → test = False

接收装置必须比对自身检修压板状态与报文内test位:

  • 状态一致(同为检修/非检修):报文判定有效,正常解析、执行动作、上送信号

  • 状态不一致:报文判定无效,直接闭锁,不执行跳闸、联跳等危险动作,仅可做监视

10、ConfRev(TLV格式):配置版本号
  • 整型字段,标记GOOSE数据集的配置变更次数

(1)初始值:数据集首次配置完成后,赋予初始版本

(2)触发自增:只要数据集内容/结构改动,confRev就+1

  • 模型中增、删数据成员

  • 调整数据项排列顺序

  • 修改数据集关联属性

(3)不触发自增:仅修改压板、APPID、MAC、心跳周期、TAL、goID等非数据集本身参数,版本号不变

(4)接收端校验逻辑

接收装置本地缓存已订阅流的ConfRev;若报文版本号 ≠ 本地记录,判定两端数据集配置不一致,上送配置不匹配告警,停止解析执行业务,避免因点位错位导致误动。

11、NdsCom(TLV格式):未配置标志
  • 布尔型变量,用于指示GOOSE链路/控制块是否需要进一步配置

  • 校验优先级很高

接收设备收到报文后,会先检查该位

  • 为True:判定链路未就绪,通常闭锁业务动作、仅做状态监视,不上送有效遥信/不执行联跳。抓包看到ndsCom=True,直接定位模型/配置未下装完整,不用逐条核对参数

  • 为False:配置正常,结合test、confRev等其他校验项,正常处理报文

触发ndsCom变更的场景:

状态触发场景
置为True装置恢复出厂、清空配置;重新导入ICD/SCD文件、修改GOCB/Dataset后未完成重启/生效;链路、订阅关系、通信参数未完整配置
置为False完整下装配置、装置重启生效;所有关联参数(APPID、MAC、订阅、数据集)配置齐全并自检正常
12、NumDataSetEntries(TLV格式):数据集条目数
  • GOOSE数据的ASN.1编码单元个数

  • 其值为多少即代表该GOOSE数据集中含有多少个成员,相应地报文AllData部分含有多少个数据项(一整个TLV链算一个数据项)

13、GOOSE数据T-L(TL格式):字节数量Data
  • GOOSE数据T-L格式,该部分是GOOSE报文所传输的数据当前值。

  • 该部分各个条目的含义、先后次序和所属的数据类型都是由配置文件中的GOOSE数据集定义的。长度即为AllData中全部数据的总字节长度。

14、AllData(TLV格式):全体数据项,由许多TLV链组成

8301 00是一个数据项,对应NumDataSetEntries=1,对应Data=3;

8301 008403 03 00 009108 00 00 00 00 00 00 00 00是三个数据项,对应NumDataSetEntries=3,对应Data=18。

(1)GOOSE状态:RPIT/XCBR1.Pos.stVal(数据1),标记=83H,长度=1字节

含义:断路器本体实际分合位置值(双点位)

用途:GOOSE 核心变位数据,分合闸变位优先触发 GOOSE 推送

双点规范取值:0:中间位置、1:分位、2:合位、3:异常故障位

(2)GOOSE状态:RPIT/XCBR1.Pos.q(数据2),标记=84H,长度=2字节

含义:位置数据质量品质码(2 字节 IEC61850 品质标志)

用途:用来判断 stVal 位置数据是否可信、有无异常失真

(3)GOOSE状态:RPIT/XCBR1.Pos.t(数据3),标记=91H,长度=8字节

含义:断路器位置最近一次变位的 UTC 高精度时间戳(IEEE64bit 时间,秒 + 纳秒)

用途:记录分合闸动作发生时刻,故障时序溯源、多间隔开关动作先后顺序校对

(4)GOOSE整型:RPIT/DT1ZBAT1.Vol.mag.i(数据4),标记=85H,长度=4字节

(5)GOOSE浮点:RPIT/DT1ZBAT1.Vol.mag.f(数据5),标记=87H,长度=5字节,固定前缀08H

15、补充说明GOOSE数据的q属性

GOOSE状态:RPIT/XCBR1.Pos.q(数据2),标记=84H,长度=2字节

bit15bit14bit13bit12bit11bit10bit9bit8bit7bit6bit5bit4bit3bit2bit1/0
未用未用未用操作员闭锁测试不精确不一致旧数据故障抖动坏基准值超值域溢出有效性:00 = 好,01 = 无效,10 = 保留,11 = 可疑

🐈‍⬛1.3 尾部填充与帧校验域(PAD/FCS 段)

1、MAC 填充(PAD,若干0x00)

(1)位置:APDU之后、CRC 之前,字段长度可变、按需添加若干0x00,无则空缺。

(2)作用:以太网整帧(目的 MAC~末尾 CRC)最小 64 字节

  • 标准无 VLAN 帧

    • 以太网帧头固定:DMAC (6)+SMAC (6)+EtherType (2) = 14字节

    • 末尾CRC固定:4字节

    • APDU+PAD最小:46字节

      • APDU 实际长度<46 字节 → 补充 PAD(全 0x00)补齐至 46 字节

      • APDU≥46 字节 → 无填充字节

  • 带 VLAN (802.1Q) 标签

    • 以太网帧头固定:DMAC (6)+SMAC (6)+VLAN(TPID(2)+TCI(2))+EtherType (2) = 18字节

    • 末尾CRC固定:4字节

    • APDU+PAD最小:42字节

      • APDU 实际长度<42 字节 → 补充 PAD(全 0x00)补齐至 42 字节

      • APDU≥42 字节 → 无填充字节

2、MAC 计算检验(CRC,4 字节)⭐⭐⭐

(1)长度:固定4 字节(32bit)

(2)范围:从 GOOSE 报文头起到 APDU 最后一字节,包含PAD,不含 CRC本身。

(3)CRC报文存放:低字节在前、高字节在后(小端 )

例:CRC 计算结果 = 0x11223344

报文存放:44 33 22 11(首字节:低 8 位,第四字节:高 8 位)

(4)算法:CRC-32-IEEE(标准 IEEE 802.3 CRC32)

  • 初始值0xFFFFFFFF

  • 多项式0xEDB88320

  • 结果异或值0xFFFFFFFF

运算过程描述:

1. 寄存器一开始 =0xFFFFFFFF,把每一个字节依次丢进去运算;

2. 先取当前字节最低 1 位(bit0),与寄存器最低位 XOR寄存器右移 1 位;

3. 如果XOR 结果 = 1,寄存器异或多项式 0xEDB88320;

4. 如果XOR 结果 = 0,不异或,直接继续,然后处理字节的bit1 → bit2 → ... → bit7;

5. 一个字节处理完,继续下一个字节,所有字节算完后,用此结果再次异或0xFFFFFFFF,最后得到最终 CRC 结果。

(5)算法过程示例:

CRC初始值:0xFFFFFFFF

待检验数据:00000000

  • 第一次循环开始:bit0 = 0

  • XOR 结果 = bit0 ⊕ CRC最低位 = 0 ^ 1 = 1

  • CRC右移1位,低位去1,高位补0 :0xFFFFFFFF→ 0x7FFFFFFF

  • XOR 结果 = 1,寄存器 0x7FFFFFFF异或多项式 0xEDB88320

  • 0x7FFFFFFF ^ 0xEDB88320= 0x92477CDF

  • 仿照次循环进行剩余7此循环

  • 循环结束后结果为0xD202EF8D,用此结果再次异或0xFFFFFFFF得到最终结果

  • 最终结果为0x2DFD1072

  • 小端方式存放到报文中为72 10 FD 2D

(6)作用

  • 链路差错校验:接收方重新计算整包 CRC,和报文末尾 4 字节比对,不一致直接丢弃报文; 完全一样则校验正确,报文有效。

  • 防止传输中 AllData 内点位值、品质 q、时标 t、浮点数据出现比特畸变。

🐈二、GOOSE报文字段速查表⭐⭐⭐⭐⭐⭐

🐈‍⬛2.1 GOOSE的报文帧格式

说明报文内容
MAC目的地址(6字节)01-0C-CD-01-00-00到01-0C-CD-01-01-FF
MAC源地址(6字节)发送方设备的MAC地址
TPID(2字节)固定值0x8100
TCI(2字节)默认值0x4000,可修改
Ethertype(2字节)固定值0x88B8
APPID(2字节)0x0000~0x3FFF
Length(2字节)APPID+Length+Reserved 1/ 2+APDU(共2+2+2+2+m字节)
Reserved 1(2字节)默认值0x0000
Reserved 2(2字节)默认值0x0000
APDU(m字节)m个字节 < 1493
MAC填充(若干字节)若干字节
MAC计算检验(4字节)CRC(4字节)

🐈‍⬛2.2 GOOSE的APDU格式

说明报文内容(TLV格式)
APDU数据T-L标记=61H,长度=后续全部字节数量
GoCBRef标记=80H,长度≤65,GOOSE控制块索引
TAL标记=81H,长度≤5,允许生存时间
DataSet标记=82H,长度≤65,DataSet字符串
GoID标记=83H,长度≤65,GoID字符串
t标记=84H,长度=8,事件时标,UTC时间
StNum标记=85H,长度≤5,StNum初始值为1,值0保留
SqNum标记=86H,长度≤5,SqNum初始值为1,StNum变化时值为0
Test标记=87H,长度=1,bool值
ConfRev标记=88H,长度=1,配置版本号
NdsCom标记=89H,长度=1,未配置好标志
NumDataSetEntries标记=8aH,长度≤5,ASN.1编码单元总个数
GOOSE数据T-L标记=abH,长度为所传输全部数据的总字节长度
GOOSE状态标记=83H/84H/91H,长度=1/2/8,stVal/q/t
GOOSE整型标记=85H,长度=4,INIT32(4字节)
GOOSE浮点标记=87H,长度=5,含固定前缀08H,INIT32(4字节)
http://www.jsqmd.com/news/987751/

相关文章:

  • Web分布式网站架构之-Squid缓存【20260608】003篇-Squid 工作流程图
  • 2026年|知网、维普AIGC检测率差46%!同一论文AI率该信谁?必备降AI工具推荐
  • 防爆AP怎么选?一文读懂选型要点+合规标准
  • JavaScript/TypeScript为何成为TVA的“交互皮肤”(5)
  • 项目实训个人工作记录(四):用户管理模块全流程开发
  • 2026标准数字时钟系统品牌排行与价格选购攻略 - 品研笔录
  • 鸿蒙原生应用实战(一):Stage模型项目搭建与页面架构设计
  • 无锡高考复读学校核心提分技术与管理体系深度拆解 - 起跑123
  • 视频水印处理三大场景总结,多款轻量化工具实测分享
  • 【NLP自然语言处理】4.基础-文本特征处理文本数据增强
  • 上海出手爱彼手表避坑攻略:警惕虚高报价引流、到店压价等套路 - 奢侈品回收评测
  • Function Calling 与 MCP 深度对比:从原理到实践,一文讲透区别与关系
  • 第一讲:C语言的常见概念
  • Web分布式网站架构之-Squid缓存【20260608】004篇-【传统代理】
  • 鸿蒙原生应用实战(二):首页开发与全局数据流设计
  • 【Uniapp 插件 una-banner 】轮播图 / banner / swiper
  • 在Python中,不可变(immutable)数据类型是指一旦创建后,其内容不能被修改的数据类型
  • 2026 香奈儿名牌包包回收规则,无锡门店回收对哪些款式更热忠 - 奢侈品回收评测
  • 分公司越来越多,网络越用越卡?教你用“智能网关”把企业专线成本砍掉50%
  • 宁波精装房石材改造指南:不砸不拆怎么提升质感(2026版) - 宁波融诚石业
  • YOLOv5 实战:不修改 `detect.py`,让检测结果图中的置信度随机显示为自己想要的
  • 零基础玩转大数据!800万条浏览器行为数据ETL实战,从零搞定可视化大屏底层数据
  • 2026年 膜分离设备厂家推荐:辽宁膜分离工艺与管式膜分离系统,青花椒油分离/食品级膜分离/医药膜分离技术优选指南 - 品牌发掘
  • 2026上海百达翡丽回收价格怎么算?全套、单表、成色差价明细解析 - 奢侈品回收评测
  • 多 Agent 协作的“终极难题”:如何解决冲突、分歧与无限循环?
  • 素材去水印实用技巧:按场景选择工具,兼顾效率与画质
  • Web分布式网站架构之-Squid缓存【20260608】005篇-【传统代理】
  • 知识图谱 Graph Rag 方法横向对比
  • 伺服电机仿真(3):PMSM在三相静止坐标系下的数学模型
  • 系统规划与管理师选老师:案例不好的人,需要什么样的老师?