)
前置知识一、GOOSE报文结构⬛1.1 报文头共26字节1、MAC地址12字节2、Tag标签头信息4字节可选字段3、Ethertype以太网类型值2字节4、APPID应用标识2字节5、Length长度字段2字节6、Reserved保留位4字节⬛1.2 应用协议数据单元APDU1、APDU数据T-LTL格式2、GoCBRefTLV格式GOOSE控制块引用3、Time Allowed to LiveTLV格式最长等待时长4、DataSetTLV格式数据集引用名5、GoIDTLV格式GOOSE报文唯一标识6、StNum时间TLV格式事件时标t7、StNum值TLV格式状态号8、SqNum值TLV格式顺序号9、TestTLV格式检修标识10、ConfRevTLV格式配置版本号11、NdsComTLV格式未配置标志12、NumDataSetEntriesTLV格式数据集条目数13、GOOSE数据T-LTL格式字节数量Data14、AllDataTLV格式全体数据项由许多TLV链组成15、补充说明GOOSE数据的q属性⬛1.3 尾部填充与帧校验域PAD/FCS 段1、MAC 填充PAD若干0x002、MAC 计算检验CRC4 字节⭐⭐⭐二、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字节可选字段TPID2字节 TCI2字节共4字节。IEC61850仅推荐 GOOSE 划分 VLANVLAN 标签在 GOOSE 协议定义里是可选字段非强制必填这个点我们会在后续其他文章中继续关注。1TPIDTag Protocol Identifier标签协议标识2字节固定为0x8100交换机接收到帧读到0x8100就判定帧携带VLAN标签继续解析后面TCI2TCITag Control Information标签控制信息2字节TCIPCPDEIVID字段位数说明PCP3bit用户优先级代码点定义数据链路层转发优先级802.1p用于QoS流量调度交换机端口队列按PCP值区分调度高优先级流量优先转发减少延迟。DEI1bit丢弃指示位拥塞时的丢弃标记。0默认不可优先丢弃重要流量1允许优先丢弃多用于日志、备份、监控等。CFI1bit规范格式指示和DEI复用。0标准以太网格式默认固定值1令牌环等非以太网格式目前CFI 彻底废弃恒为 0不计入2字节TCI。VID12bitVLAN编号VLAN唯一标识。VID0保留仅透传PCP优先级VID1~4094用户可配置VID4095系统内部保留。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字节表示数据帧从应用标识APPID2字节开始到应用协议数据单元APDU结束的部分共有多少个字节注意虽然Length排在APPID之后但是总长度是从APPID开始算的。6、Reserved保留位4字节Reserved 12字节 Reserved 22字节共4字节默认值为00 00 00 00⬛1.2 应用协议数据单元APDU1、APDU数据T-LTL格式标记61H长度可变。标志GOOSE的APDU正式开始。2、GoCBRefTLV格式GOOSE控制块引用1作用用于在SCD/ICD模型、报文、配置文件中精准定位某一个GOOSE控制块。遵循IEC 61850分层命名规则全站唯一。2命名格式IED名称/访问点/逻辑设备/逻辑节点.控制块名举例IED1/AP1/LD1/XCBR1.GO$GOOSE13功能约束 FC给数据对象划分用途标签限定这条数据能干什么、哪种报文能带它gocbRef → GOOSE 控制块 → FCGO数据进入 GOOSE 数据集通过 GOOSE0x88B8组播发送。svcbRef → SV 采样控制块 → FCSV数据进入 SV 数据集通过 SV0x88BA组播发送。3、Time Allowed to LiveTLV格式最长等待时长允许生存时间 / 存活超时时间心跳保活机制GOOSE除了变位突发报文还会周期发送心跳报文正常工况发送端按固定周期发GOOSE心跳帧接收端每次收到报文刷新本地超时计时器。心跳发送间隔 TAL计时器永远达不到TAL链路状态正常异常工况接收端持续收不到报文计时器不断累加一旦计时 ≥ TAL则判定断网/装置死机/链路中断立即上送GOOSE通信中断告警4、DataSetTLV格式数据集引用名1本质把多个遥信、遥测等数据打包成一组GOOSE/SV 按整包上送不单点单发。2绑定关系1 个 GOCBGOOSE 控制块只能绑定 1 个 DataSet1 个 DataSet可被多个 GOCB/SVCB 共用。3报文作用报文中携带数据集名称接收方依靠名称匹配本地数据集解包取出所有点位数据。4命名规则全站唯一防止订阅匹配错误。5、GoIDTLV格式GOOSE报文唯一标识每个GOOSE报文的唯一性标识接收方通过对目的地址、APPID和goID等参数进行检查判断是否是其所订阅的报文订阅过滤机制接收端收到GOOSE帧后依次校验目的MAC地址 → APPID → GOID全部匹配才解析数据否则直接丢弃报文。目的MAC大铁门拦大流量APPID应用门区分不同业务流GOID身份牌最终确认是不是我要订阅的这路GOOSE6、StNum时间TLV格式事件时标tGOOSE报文产生时的时标其值为GOOSE数据发生变位的时间即状态号StNum加1时候的UTC格林威治时间国内本地时间 UTC时间 8小时。记录数据变位、stNum自增的真实发生时刻而不是报文发送时间最后一个字节代表品质因数时间品质反应最后一次状态变位发生时候的时间品质而不是当前状态的时间品质7、StNum值TLV格式状态号用于记录GOOSE数据发生变位的总次数。变位时自增1稳态保持不变。稳态周期补发报文stNum 数值不变。8、SqNum值TLV格式顺序号用于记录稳态情况下报文重复发出的帧数。装置每发出一帧GOOSE报文SqNum应加1。当有GOOSE数据变化时StNum1 SqNum归0从头开始重新计数。9、TestTLV格式检修标识布尔型True/False用于标记发送端装置检修状态跨装置检修闭锁的核心机制只要装置检修压板状态改变后续所有发出的GOOSE报文test位同步更新检修压板投入 → test True检修压板退出 → test False接收装置必须比对自身检修压板状态与报文内test位状态一致同为检修/非检修报文判定有效正常解析、执行动作、上送信号状态不一致报文判定无效直接闭锁不执行跳闸、联跳等危险动作仅可做监视10、ConfRevTLV格式配置版本号整型字段标记GOOSE数据集的配置变更次数1初始值数据集首次配置完成后赋予初始版本2触发自增只要数据集内容/结构改动confRev就1模型中增、删数据成员调整数据项排列顺序修改数据集关联属性3不触发自增仅修改压板、APPID、MAC、心跳周期、TAL、goID等非数据集本身参数版本号不变4接收端校验逻辑接收装置本地缓存已订阅流的ConfRev若报文版本号 ≠ 本地记录判定两端数据集配置不一致上送配置不匹配告警停止解析执行业务避免因点位错位导致误动。11、NdsComTLV格式未配置标志布尔型变量用于指示GOOSE链路/控制块是否需要进一步配置校验优先级很高接收设备收到报文后会先检查该位为True判定链路未就绪通常闭锁业务动作、仅做状态监视不上送有效遥信/不执行联跳。抓包看到ndsComTrue直接定位模型/配置未下装完整不用逐条核对参数为False配置正常结合test、confRev等其他校验项正常处理报文触发ndsCom变更的场景状态触发场景置为True装置恢复出厂、清空配置重新导入ICD/SCD文件、修改GOCB/Dataset后未完成重启/生效链路、订阅关系、通信参数未完整配置置为False完整下装配置、装置重启生效所有关联参数APPID、MAC、订阅、数据集配置齐全并自检正常12、NumDataSetEntriesTLV格式数据集条目数GOOSE数据的ASN.1编码单元个数其值为多少即代表该GOOSE数据集中含有多少个成员相应地报文AllData部分含有多少个数据项一整个TLV链算一个数据项13、GOOSE数据T-LTL格式字节数量DataGOOSE数据T-L格式该部分是GOOSE报文所传输的数据当前值。该部分各个条目的含义、先后次序和所属的数据类型都是由配置文件中的GOOSE数据集定义的。长度即为AllData中全部数据的总字节长度。14、AllDataTLV格式全体数据项由许多TLV链组成8301 00是一个数据项对应NumDataSetEntries1对应Data38301 008403 03 00 009108 00 00 00 00 00 00 00 00是三个数据项对应NumDataSetEntries3对应Data18。1GOOSE状态RPIT/XCBR1.Pos.stVal数据1标记83H长度1字节含义断路器本体实际分合位置值双点位用途GOOSE 核心变位数据分合闸变位优先触发 GOOSE 推送双点规范取值0中间位置、1分位、2合位、3异常故障位2GOOSE状态RPIT/XCBR1.Pos.q数据2标记84H长度2字节含义位置数据质量品质码2 字节 IEC61850 品质标志用途用来判断 stVal 位置数据是否可信、有无异常失真3GOOSE状态RPIT/XCBR1.Pos.t数据3标记91H长度8字节含义断路器位置最近一次变位的 UTC 高精度时间戳IEEE64bit 时间秒 纳秒用途记录分合闸动作发生时刻故障时序溯源、多间隔开关动作先后顺序校对4GOOSE整型RPIT/DT1ZBAT1.Vol.mag.i数据4标记85H长度4字节5GOOSE浮点RPIT/DT1ZBAT1.Vol.mag.f数据5标记87H长度5字节固定前缀08H15、补充说明GOOSE数据的q属性GOOSE状态RPIT/XCBR1.Pos.q数据2标记84H长度2字节bit15bit14bit13bit12bit11bit10bit9bit8bit7bit6bit5bit4bit3bit2bit1/0未用未用未用操作员闭锁测试源不精确不一致旧数据故障抖动坏基准值超值域溢出有效性00 好01 无效10 保留11 可疑⬛1.3 尾部填充与帧校验域PAD/FCS 段1、MAC 填充PAD若干0x001位置APDU之后、CRC 之前字段长度可变、按需添加若干0x00无则空缺。2作用以太网整帧目的 MAC末尾 CRC最小 64 字节。标准无 VLAN 帧以太网帧头固定DMAC (6)SMAC (6)EtherType (2) 14字节末尾CRC固定4字节APDUPAD最小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字节APDUPAD最小42字节若APDU 实际长度42 字节 → 补充 PAD全 0x00补齐至 42 字节若APDU≥42 字节 → 无填充字节2、MAC 计算检验CRC4 字节⭐⭐⭐1长度固定4 字节32bit2范围从 GOOSE 报文头起到 APDU 最后一字节包含PAD不含 CRC本身。3CRC报文存放低字节在前、高字节在后小端 例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寄存器异或多项式 0xEDB883204. 如果XOR 结果 0不异或直接继续然后处理字节的bit1 → bit2 → ... → bit7;5. 一个字节处理完继续下一个字节所有字节算完后用此结果再次异或0xFFFFFFFF最后得到最终 CRC 结果。5算法过程示例CRC初始值0xFFFFFFFF待检验数据00000000第一次循环开始bit0 0XOR 结果 bit0 ⊕ CRC最低位 0 ^ 1 1CRC右移1位低位去1高位补0 0xFFFFFFFF→ 0x7FFFFFFFXOR 结果 1寄存器 0x7FFFFFFF异或多项式 0xEDB883200x7FFFFFFF ^ 0xEDB88320 0x92477CDF仿照次循环进行剩余7此循环循环结束后结果为0xD202EF8D用此结果再次异或0xFFFFFFFF得到最终结果最终结果为0x2DFD1072小端方式存放到报文中为72 10 FD 2D6作用链路差错校验接收方重新计算整包 CRC和报文末尾 4 字节比对不一致直接丢弃报文 完全一样则校验正确报文有效。防止传输中 AllData 内点位值、品质 q、时标 t、浮点数据出现比特畸变。二、GOOSE报文字段速查表⭐⭐⭐⭐⭐⭐⬛2.1 GOOSE的报文帧格式说明报文内容MAC目的地址6字节01-0C-CD-01-00-00到01-0C-CD-01-01-FFMAC源地址6字节发送方设备的MAC地址TPID2字节固定值0x8100TCI2字节默认值0x4000可修改Ethertype2字节固定值0x88B8APPID2字节0x0000~0x3FFFLength2字节APPIDLengthReserved 1/ 2APDU共2222m字节Reserved 12字节默认值0x0000Reserved 22字节默认值0x0000APDUm字节m个字节 1493MAC填充若干字节若干字节MAC计算检验4字节CRC4字节⬛2.2 GOOSE的APDU格式说明报文内容TLV格式APDU数据T-L标记61H长度后续全部字节数量GoCBRef标记80H长度≤65GOOSE控制块索引TAL标记81H长度≤5允许生存时间DataSet标记82H长度≤65DataSet字符串GoID标记83H长度≤65GoID字符串t标记84H长度8事件时标UTC时间StNum标记85H长度≤5StNum初始值为1值0保留SqNum标记86H长度≤5SqNum初始值为1StNum变化时值为0Test标记87H长度1bool值ConfRev标记88H长度1配置版本号NdsCom标记89H长度1未配置好标志NumDataSetEntries标记8aH长度≤5ASN.1编码单元总个数GOOSE数据T-L标记abH长度为所传输全部数据的总字节长度GOOSE状态标记83H/84H/91H长度1/2/8stVal/q/tGOOSE整型标记85H长度4INIT324字节GOOSE浮点标记87H长度5含固定前缀08HINIT324字节