早期计算机通信使用的网络协议栈在传输数据时,没有采用统一的编码规则,不同编码规则的信息如果要再两台计算机之间通信,开发人员要实现不同信息的编解码。
ASN.1(抽象语法标记)规范的应用,对计算机网络通信来说是一个具有里程碑意义的变革,它使得通信双方更加关注信息交换的内容,而不是具体编解码过程。
IEC61850协议定义的ACSI(抽象通信服务接口)具体映射至MMS(制造报文规范)协议,而MMS协议正是采用了ASN.1的编码规范。IEC61850标准不再关心具体的通信过程,而是把重点放在变电站内IED之间的数据交换模型和互操作上,因此ASN.1的应用是IEC61850标准在实用性、规范性、灵活性和易扩展性都强于传统规约的原因之一。
主要内容
ASN.1规范位于ISO/OSI七层开放互连模型的第六层表示层,主要分为语法规则和编码规则两部分:语法规则用于描述信息对象的具体构成,包括数据类型、内容顺序或结构;编码规则定义了信息的具体编解码语法。
ASN.1定义的数据类型既有简单的基本数据类型,也有复杂的结构类型,如下表所示。
编码规则:
ASN.1提供了多种编码规则,如BER(Basicencodingrules)、DER、CER、PER等,本文主要介绍IEC61850在MMS编解码中使用的基本编码规则BER,其他编码规则可参考ASN.1官网文档。
ASN.1基本编码规则BER采用的编码结构由标记Tag、长度Length、内容Value三部分组成,简称TLV结构,基本编码规则采用8位位组作为基本传送单元。
标记Tag共4种类型,通用类、应用类、上下文相关类以及专用类。分类信息如下:
ASN.1BER编码规则定义了一批简单类型的Tag值,但这些Tag值无法满足MMS应用需要,如无法区分整型和无符号整型,因此MMS扩展定义了一组专用的Tag值,具体可查阅ISO/IEC9506-2规范。
长度Length字段指明Value部分所含的8位位组的数目。
内容Value部分对于简单类型来说,Value字段是数据的实际值,对于结构类型来说,Value字段是一个或者多个数据的TLV结构,形成分层嵌套的结构。
ASN.1提供了丰富的数据组织形式和灵活的扩展机制,可以描述结构非常复杂的数据。
MMS语法规范实现:
ISO/IEC9506–1以及ISO/IEC9506–2定义了MMS的服务规范和协议规范,这两部分是MMS协议的核心部分,规范主要由ASN.1语法组成,如:
VariableSpecification::=CHOICE{
nameObjectName,
invokeIDUnsigned32,
variableDescriptionIMPLICITSEQUENCE{
addressAddress,
typeSpecificationTypeSpecification
},
}
定义了一个选择复杂结构类型VariableSpecification,第一个成员是一个BITSTRING位串,第二个成员是无符号32位整型,第三个成员是一个强调成员顺序的复杂类型的序列。
由上述内容可看出,ASN.1规范在MMS协议实现过程中起到非常重要的作用,正确的数据编码是确保IEC61850应用的重要前提。