goose报文解析
Posted software4y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了goose报文解析相关的知识,希望对你有一定的参考价值。
goose报文理论相关可以查看上一篇随笔:https://www.cnblogs.com/software4y/p/10017602.html
GOOSE报文在MAC层的帧结构包括:源MAC地址、目的地址即组播地址、报文类型、四字节Tag、APPID、报文长度、四字节的保留和APDU。
GOOSE的帧格式见下表:
Header MAC |
MAC目的地址(6字节) |
MAC源地址(6字节) |
|
Priority tagged |
TPID(2字节标记)= 0x8100 |
TCI(2字节) |
|
网络数据类型 |
Ethertype(2字节)=0x88B8 |
APPID (2字节)=0x0000~0x3FFF |
|
Length(2字节)= 8+m |
|
Reserved 1(2字节)=0x0000 |
|
Reserved 2(2字节)=0x0000 |
|
APDU |
GOOSE的APDU报文格式见下表
APDU数据T-L |
标记61H,长度 |
GoCBRef字符串 |
标记80H,长度≤65,GOOSE控制块索引 |
允许生存时间 |
标记81H,长度,t |
Datset字符串 |
标记82H,长度≤65,Datset字符串 |
GoID |
标记83H,长度≤65 |
StNum 时间 |
标记84H,长度=8,t |
StNum 值 |
标记85H,长度≤5,StNum值 |
SqNum |
标记86H,长度≤5,SqNum值 |
Test位 |
标记87H,长度=1,test值 |
配置版本号 |
标记88H,长度≤5,ConfRev |
未配置好标志 |
标记89H,长度=1,Needs?commissioning |
GOOSE的ASN.1编码单元个数 |
标记8aH,长度≤5,总个数 |
GOOSE数据T-L |
标记abH,长度 |
GOOSE状态 |
标记83H,长度=1,stVal |
标记84H,长度=2,q |
|
标记91H,长度=8,t |
|
GOOSE整型 |
标记85H,长度=4,值(4字节) |
GOOSE浮点 |
标记87H,长度=5,08H,浮点(4字节) |
…… |
|
解析注意事项:
1.Length-ASN.1的字节数不确定。假定数据域的字节数为n。按ASN.1的编码规则,当n≤127时Length只有一个字节,值为n;当n>127时,Length有2~127字节,第一个字节的Bit7为1,Bit0~6为Length总字节数减1,第二个字节开始给出n,基于256,高位优先(例子:200用ASN.1表示就是0x81C8)
2.StNum 时间为UTC时间,此时间格式共占8个字节,其中的前四个字节是从1970年1月1日0时0秒0分0秒至今流过的秒数,紧跟着的3个字节是秒的小数部分,最后的一个字节是时间的品质和精度
3.GOOSE数据部分,数据集中具体的数据顺序,需要根据goose配置文件进行解析
以上是关于goose报文解析的主要内容,如果未能解决你的问题,请参考以下文章
「 Modbus-RTU报文解析」解析030610功能码报文示例