一种数字化变电站网络报文的解码方法及装置的制造方法_2

文档序号:8301363阅读:来源:国知局
d类型;否则,返回;
[0052]第六goose报文标识判断模块:用于判断所述goose报文的标识是否为0x87,如是,将其解析为float类型;否则,返回;
[0053]第七goose报文标识判断模块:判断所述goose报文的标识是否为0x91,如是,将其解析为UTC类型;否则,返回;
[0054]第八goose报文标识判断模块:用于判断所述goose报文的标识是否为0xa2,如是,将其解析为数据结构体类型;否则,返回。
[0055]在本发明所述的装置中,在所述smv报文判断单元中,获取所述smv报文的长度后,还根据所述smv报文的长度进行数据的有效性验证。
[0056]在本发明所述的装置中,在所述goose报文判断单元中,获取所述goose报文的长度后,还根据所述goose报文的长度进行数据的有效性验证。
[0057]实施本发明的实现上述数字化变电站网络报文的解码方法及装置,具有以下有益效果:由于通过对数据报文进行解析获取报文类型;当为smv报文时,获取smv报文的长度,判断所述smv报文的数据头类型并依据其数据头类型的内容解析数据内容;当为goose报文时,获取goose报文的长度,判断goose报文的数据头类型并依据其数据头类型的内容解析数据内容,其根据智能变电站的报文特点,从而明确报文数据结构,然后根据数据结构直接进行数据解析,其无需根据ASN.1的自描述特性,逐层对数据进行剖析,所以其解码效率较高、提高处理性能。
【附图说明】
[0058]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0059]图1为本发明数字化变电站网络报文的解码方法及装置一个实施例中方法的流程图;
[0060]图2为所述实施例中判断smv报文的数据头类型并依据其数据头类型的内容解析数据内容的具体流程图;
[0061]图3为所述实施例中判断goose报文的数据头类型并依据其数据头类型的内容解析数据内容的具体流程图;
[0062]图4为所述实施例中装置的结构示意图。
【具体实施方式】
[0063]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0064]在本发明数字化变电站网络报文的解码方法及装置实施例中,其数字化变电站网络报文的解码方法的流程图如图1所示。图1中,该数字化变电站网络报文的解码方法及装置包括如下步骤:
[0065]步骤SOl接收数据报文,并对其进行解析获取报文类型:本步骤中,接收数据报文,并对接收的数据报文进行解析获取报文类型。
[0066]值得一提的是,ASN.1是ITU-T的一个标准集,其用来编码及表示通用数据类型,这些数据类型有可打印串值,八位位组串值,位串值,整数值以及用可移值方式组合而成的其他类型序列值.简单的说,ASN.1指定了以何种方式对非平凡的数据类型进行编码,以便其他任何平台及第三方工具都能够解释其内容。比如,字母a在一些平台以ASCII编码为十进制数值97,而在其他非ASCII平台上可能会是另外的编码。而ASN.1指定了一种编码方式,在任何平台上,字母a的编码都是统一的。由于数字化变电站的建模需要灵活多样,适应变电站的各种需求,所以报文采用ASN.1编码。本实施例中的报文也采用ASN.1编码。
[0067]步骤S02判断数据报文是否是smv报文:值得一提的是,站内报文主要针对goose报文和smv报文,这两种报文中,数据的格式基本固定,因此无需根据ASN.1的自描述特性逐层对数据进行剖析,可以直接根据数据编码的标识,将数据直接进行分类,根据数据结构的具体类型,直接获取数据内容。本步骤中,判断上述接收的数据报文是否是smv报文,如果判断的结果为是,则执行步骤S03 ;否则,执行步骤S05。
[0068]步骤S03获取smv报文的长度:如果上述步骤S02的判断结果为是,则执行本步骤。本步骤中,获取smv报文的长度。值得一提的是,本实施例中,在解析获取smv报文的长度后,还根据smv报文的长度进行数据的有效性验证。执行完本步骤,执行步骤S04。
[0069]步骤S04判断smv报文的数据头类型并依据其数据头类型的内容解析数据内容:本步骤中,判断smv报文的数据头类型,并依据该smv报文的数据头类型的内容解析数据内容,其具体步骤后续会进行详细描述。执行完本步骤,执行步骤S09。
[0070]步骤S05判断数据报文是否是goose报文:如果上述步骤S02的判断结果为否,则执行本步骤。本步骤中,判断数据报文是否是goose报文,如果判断的结果为是,则执行步骤S07 ;否则,执行步骤S06。
[0071]步骤S06不执行任何操作:如果上述步骤S05的判断结果为否,则执行本步骤。本步骤中,不执行任何操作。
[0072]步骤S07获取goose报文的长度:如果上述步骤S05的判断结果为是,则执行本步骤。本步骤中,获取goose报文的长度。值得一提的是,本实施例中,在解析获取goose报文的长度后,还根据goose报文的长度进行数据的有效性验证。执行完本步骤,执行步骤S08。
[0073]步骤S08判断goose报文的数据头类型并依据其数据头类型的内容解析数据内容:本步骤中,判断goose报文的数据头类型,并依据该goose报文的数据头类型的内容解析数据内容,其具体步骤后续会进行详细描述。执行完本步骤,执行步骤S09。
[0074]步骤S09判断数据内容是否解析完毕:本步骤中,判断数据内容是否解析完毕,如果判断的结果为是,则执行步骤SlO ;否则,返回步骤S04或步骤S08。
[0075]步骤SlO结束:如果上述步骤S09的判断结果为是,则执行本步骤。本步骤中,结束本次报文解码算法。由于其根据数据结构直接进行数据解析,其无需根据ASN.1的自描述特性,逐层对数据进行剖析,所以其解码效率较高、提高处理性能。
[0076]对于本实施例而言,上述步骤S04还可进一步细化,细化后的流程图如图2所示。图2中,上述步骤S04进一步包括:
[0077]步骤S41判断smv报文的标识是否为0x80:本步骤中,判断smv报文的标识(tag)是否为0x80,如果判断的结果为是,则执行步骤S43 ;否则,执行步骤S42。值得一提的是,这里的0x80为十六进制数值。后续出现的0x81和0xa2也均为十六进制数值。
[0078]步骤S42出现错误提示并跳出程序:如果上述步骤S41的判断结果为否,则执行本步骤。本步骤中,出现错误提示并跳出程序。
[0079]步骤S43获取smv报文中结构体的个数:如果上述步骤S41的判断结果为是,则执行本步骤。本步骤中,获取smv报文中结构体(asdu)的个数。执行完本步骤,执行步骤S44。
[0080]步骤S44判断smv报文的标识是否为0x81:本步骤中,判断smv报文的标识是否为0x81,如果判断的结果为是,则执行步骤S45 ;否则,返回步骤S42。
[0081]步骤S45获取smv报文的安全等级数据:如果上述步骤S44的判断结果为是,则执行本步骤。本步骤中,获取smv报文的安全等级(security)数据。执行完本步骤,执行步骤 S46。
[0082]步骤S46判断smv报文的标识是否为0xa2:本步骤中,判断smv报文的标识是否为0xa2,如果判断的结果为是,则执行步骤S47 ;否则,返回步骤S42。
[0083]步骤S47获取smv报文中结构体的数据内容:如果上述步骤S46的判断结果为是,则执行本步骤。本步骤中,获取smv报文中结构体(asdu)的数据内容。执行完本步骤,执行步骤S48。
[0084]步骤S48依次解析采样值ID、数据集字符串、采样计数、配置版本、刷新时间、采样同步和采样率:本步骤中,依次解析采样值ID、数据集字符串、采样计数、配置版本、刷新时间、采样同步和采样率。这样就实现了对smv报文的解码。
[0085]对于实施例而言,上述步骤S08还可进一步细化,其细化后的流程图如图3所示。图3中,上述步骤S08进一步包括:
[0086]步骤S801判断goose报文的标识是否为0x80:本步骤中,判断goose报文的标识是否为0x80,如果判断的结果为是,则执行步骤S803 ;否则,执行步骤S80
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1