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

文档序号:8301363阅读:来源:国知局
2。
[0087]步骤S802出现错误提示并跳出程序:如果上述步骤S801的判断结果为否,则执行本步骤。本步骤中,出现错误提示并跳出程序。
[0088]步骤S803获取goose报文中结构体的个数:如果上述步骤S801的判断结果为是,则执行本步骤。本步骤中,获取goose报文中结构体(asdu)的个数。执行完本步骤,执行步骤S804。
[0089]步骤S804依次解析控制块引用、生成时间、数据集引用、goose应用标识、事件时间、状态计数、序列计数、测试、版本、需要重新配置和数据集条目数:本步骤中,依次解析控制块引用、生成时间、数据集引用、goose应用标识、事件时间、状态计数、序列计数、测试、版本、需要重新配置(ndscom)和数据集条目数。执行完本步骤,执行步骤S805。
[0090]步骤S805判断goose报文的标识是否为0x82:本步骤中,判断goose报文的标识是否为0x82,则执行步骤S806 ;否则,返回步骤S802。
[0091]步骤S806将其解析为bool类型:如果上述步骤S805的判断结果为是,则执行本步骤。本步骤中,将其解析为bool类型。执行完步骤,执行步骤S807。
[0092]步骤S807判断goose报文的标识是否为0x84:本步骤中,判断goose报文的标识是否为0x84,如果判断的结果为是,则执行步骤S808 ;否则,返回步骤S802。
[0093]步骤S808将其解析为bit-string类型:如果上述步骤S807的判断结果为是,则执行本步骤。本步骤中,将其解析为bit-string类型。执行完步骤,执行步骤S809。
[0094]步骤S809判断goose报文的标识是否为0x85:本步骤中,判断goose报文的标识是否为0x85,如果判断的结果为是,则执行步骤S810 ;否则,返回步骤S802。
[0095]步骤S810将其解析为int类型:如果上述步骤S809的判断结果为是,则执行本步骤。本步骤中,将其解析为int类型。执行完步骤,执行步骤S811。
[0096]步骤S811判断goose报文的标识是否为0x86:本步骤中,判断goose报文的标识是否为0x86,如果判断的结果为是,则执行步骤S812 ;否则,返回步骤S802。
[0097]步骤S812将其解析为unsigned类型:如果上述步骤S811的判断结果为是,则执行本步骤。本步骤中,将其解析为unsigned类型。执行完步骤,执行步骤S813。
[0098]步骤S813判断goose报文的标识是否为0x87:本步骤中,判断goose报文的标识是否为0x87,如果判断的结果为是,则执行步骤S814 ;否则,返回步骤S802。
[0099]步骤S814将其解析为float类型:如果上述步骤S813的判断结果为是,则执行本步骤。本步骤中,将其解析为float类型。执行完步骤,执行步骤S815。
[0100]步骤S815判断goose报文的标识是否为0x91:本步骤中,判断goose报文的标识是否为0x91,如果判断的结果为是,则执行步骤S816 ;否则,返回步骤S802。
[0101]步骤S816将其解析为UTC类型:如果上述步骤S815的判断结果为是,则执行本步骤。本步骤中,将其解析为UTC类型。执行完本步骤,执行步骤S817。
[0102]步骤S817判断goose报文的标识是否为0xa2:本步骤中,判断goose报文的标识是否为0xa2,如果判断的结果为是,则执行步骤S818 ;否则,返回步骤S812。
[0103]步骤S818将其解析为数据结构体类型:如果上述步骤S817的判断结果为是,则执行本步骤。本步骤中,将其解析为数据结构体类型。值得一提的是,上述0x80、0x82、0x84、0x85、0x86、0x87、0x91和0xa2均为十六进制数值,这样就实现了对goose报文的解码。
[0104]本实施例还涉及一种实现上述数字化变电站网络报文的解码方法的装置,其结构示意图如图4所示。图4中,该装置包括报文接收解析单元1、smv报文判断单元2、smv报文数据头类型判断单元3、goose报文判断单元4、goose报文数据头类型判断单元5和解析判断单元6 ;其中,报文接收解析单元I用于接收数据报文,并对其进行解析获取报文类型;smv报文判断单元2用于判断数据报文是否是smv报文,如是,获取smv报文的长度;否则,继续判断是否为goose报文;smv报文数据头类型判断单元3用于判断smv报文的数据头类型并依据其数据头类型的内容解析数据内容;g00Se报文判断单元4用于判断数据报文是否是goose报文,如是,获取goose报文的长度;否则,不执行任何操作;goose报文数据头类型判断单元5用于判断goose报文的数据头类型并依据其数据头类型的内容解析数据内容;解析判断单元6用于判断数据内容是否解析完毕,如是,结束;否则,返回。由于其根据数据结构直接进行数据解析,其无需根据ASN.1的自描述特性,逐层对数据进行剖析,所以其解码效率较高、提高处理性能。值得一提的是,在smv报文判断单元2中,获取smv报文的长度后,还根据smv报文的长度进行数据的有效性验证。在goose报文判断单元4中,获取goose报文的长度后,还根据goose报文的长度进行数据的有效性验证。
[0105]本实施例中,smv报文数据头类型判断单元3进一步包括第一 smv报文标识判断模块31、第一错误提示模块32、第二 smv报文标识判断模块33、第三smv报文标识判断模块34和smv报文解析模块35 ;其中,第一 smv报文标识判断模块31用于判断smv报文的标识是否为0x80,如是,获取smv报文中结构体的个数;否则,出现错误提示并跳出程序;第一错误提示模块32用于出现错误提示并跳出程序;第二 smv报文标识判断模块33用于判断smv报文的标识是否为0x81,如是,获取smv报文的安全等级数据;否则,返回;第三smv报文标识判断模块34用于判断smv报文的标识是否为0xa2,如是,获取smv报文中结构体的数据内容;否则,返回;smv报文解析模块35用于依次解析采样值ID、数据集字符串、采样计数、配置版本、刷新时间、采样同步和采样率。这样就实现了对smv报文的解码。
[0106]本实施例中,goose报文数据头类型判断单元5进一步包括第一 goose报文标识判断模块50、第二错误提示模块51、goose报文解析模块52、第二 goose报文标识判断模块53、第三goose报文标识判断模块54、第四goose报文标识判断模块55、第五goose报文标识判断模块56、第六goose报文标识判断模块57、第七goose报文标识判断模块58和第八goose报文标识判断模块59 ;其中,第一 goose报文标识判断模块50用于判断goose报文的标识是否为0x80,如是,获取goose报文中结构体的个数;否则,出现错误提示并跳出程序;第二错误提示模块51用于出现错误提示并跳出程序;g00Se报文解析模块52用于依次解析控制块引用、生成时间、数据集引用、goose应用标识、事件时间、状态计数、序列计数、测试、版本、需要重新配置和数据集条目数;第二 goose报文标识判断模块53用于判断goose报文的标识是否为0x82,如是,将其解析为bool类型;否则,返回;第三goose报文标识判断模块54用于判断goose报文的标识是否为0x84,如是,将其解析为bit_string类型;否贝1J,返回;第四goose报文标识判断模块55用于判断goose报文的标识是否为0x85,如是,将其解析为int类型;否则,返回;第五goose报文标识判断模块56用于判断goose报文的标识是否为0x86,如是,将其解析为unsigned类型;否则,返回;第六goose报文标识判断模块57用于判断goose报文的标识是否为0x87,如是,将其解析为float类型;否则,返回;第七goose报文标识判断模块58判断goose报文的标识是否为0x91,如是,将其解析为UTC类型;否则,返回;第八goose报文标识判断模块59用于判断goose报文的标识是否为0xa2,如是,将其解析为数据结构体类型;否则,返回。这样就实现了对断goose报文的解码。
[0107]总之,ASN.1是一种自描述语言,因此传统的ASN.1解码是根据自描述类型逐层的解析。传统解码方法,是将数据逐个字符的读取出来,然后根据结构,将数据逐一获取。对于复杂的编码方式,传统解码可以准确有效的将数据解析出来。然而变电站中goose报文和smv报文中使用的数据类型是可以穷举的有限类型,数据格式基本固定,所以不需要逐一的进行数据解码,因此,在本实施例中,在解码的过程中,可以直接根据固有类型进行匹配,然后进行解析。
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1