1、DLMS 电能表通讯协仪(2003 6 26)本文是对于 IEC62056 协议族,即 DLMS 协议族的中文说明手册。本文并没有包含DLMS 协议族的全部,但解释了在应用中可能出现的大多数情况。本文的目的是为电能量数据采集终端提供与使用 DLMS 协议族的电能表通讯的协议说明。本文参考文献如下:(1)DLMS User Association , COSEM Identification System and Interface Objects , Third Edition(2)IEC62056 53 Electricity metering - Data exchange for met
2、er reading, tariff and load control -Part 53: COSEM application layer(3)IEC62056 46Electricity metering - Data exchange for meter reading, tariff and load control -Part 46: Data link layer using HDLC protocol(4)IEC62056 42 Electricity metering - Data exchange for meter reading, tariff and load contr
3、ol -Part 42: Physical layer services and procedures for connection-oriented asynchronous data exchange(5)IEC62056 61 Electricity metering - Data exchange for meter reading, tariff and load control -Part 61: Object identification system (OBIS)(6)Amber Management logical deviceFR:AMBER/FW TECH_SPEC MA
4、NAGEMENT_LOGICAL_DEVICE(7)Amber Electricity Logical Device FR:AMBER/FW TECH_SPEC ELECTRICITY_LOGICAL_DEVICE(8)A Laymans Guide to a Subset of ASN.1, BER, and DERAn RSA Laboratories Technical NoteBurton S. Kaliski Jr.Revised November 1, 1993(9)IEC61334 采用配线载波的配电自动化,译文汇编。一、本文的结构由于 DLMS 协议族的复杂性,必然导致本文篇幅
5、较长,涉及的内容比较多。这里有必要把本文的内容,做一个综述,并解释各部分之间的相互关系。一、DLMS 协仪模型:从整体上介绍 DLMS 协议。二、DLMS 物理层协议:讲述 DLMS 物理层在整个协议族中的作用。三、DLMS 链路层协议:讲述 HDLC 链路层协议在整个协议族中的作用。四、DLMS 应用层协议:讲述 DLMS 应用层协议在整个协议族中的作用。这一部分又包括如下几部分内容。(一、 )ASN.1 语法:这个语法是用来描述 DLMS 应用层协议帧的组成的。(二、 )BER 编码与 AXDR 编码:这两种编码是用来实现 ASN.1 语法的。(三、 )AARQ 与 AARE 数据帧:这是
6、两个特殊的数据帧,它用来构筑 DLMS 协议中的 client 端与 server 端的应用层连接。(四、 )数据请求过程描述:介绍请求数据时所用的的数据帧。五、请求数据实例:这里提供了几个请求数据的实际范例的数据包文。1、 请求电量2、 请求瞬时量(电压、电流、功率)3、 请求负荷曲线4、 请求时间一、DLMS 协仪模型下图从整体上描述了 DLMS 协仪模型。协仪共分为 3 层,物理层,链路层,应用层。层与层之间使用指定的服务通讯。通讯的双方采用 ClientServer 结构,数据请求端(采集器)为 Client,数据提供端(电表)为 Server.通讯过程描述:(一) 建立物理层连接物理
7、层位于通讯模型的最底层。DLMS 规约可以建立在多种物理层之上,物理 层的做用主要是对底层通讯硬件的操做(如对 PSTN MODEM 的初始化,打开, 关闭。 )(二) 建立链路层连接物理层连接建立之后,数据通讯的第一步是建立链路层的连接,链路层主要负 责数据传输的可靠性,包括以下几个方面,地址校验,帧长校验,数据的 CRC 校验。长数据帧的拆包组包。同时向应用层提供链路传输的服务。(三) 建立应用层连接链路层连接建立之后,在 DLMS 协仪中还要建立应用层连接,才可进行数据通讯。这个应用层连接建立过程被称为 Negotiation。这个过程是为数据通讯提供一些配置参数。应用层连接请求由 Cl
8、ient 端发起,Client 端发 aarq 帧,Server 端响应 aare 帧(四) 进行数据通讯当连接建立起后,就可进行数据通讯了。Client 端发送数据请求帧 Server 端以数据响应。Client 在请求不同的数据时,要使用特定数据的独有的 class id 和 OBIS,用以标识不同类型的数据。(五) 数据通讯结束,释放链路,解除连接。数据通讯结束后,发链路结束帧,结束一次通讯过程。一次数据通讯结束后,可以通过发链路结束帧,来结束一次通讯过程。也可以,不发任何数据帧,依靠 server端的超时挂断机制,来结束一次通讯过程。一般应使用前者。(六) 解除物理层连接关闭物理端口(
9、如挂断 Modem) 。从物理上结束一次通讯。二、DLMS 物理层协议物理层协议位于 DLMS 协议族的最底层,负责数据通讯的物理传输。DLMS 可以工作于多种不同的物理介质上(PSTN,网络,串行通道等) 。物理层的功能是接受链路层数据,发送到物理介质上,传送到通信的对端。或是接收通信的对端传送来得数据,再传送到链路层,供更高层的协议处理数据。DLMS 物理层协议,主要规定了物理层应实现的服务,如:打开端口,初始化端口,收发数据,关闭端口等。在通常的嵌入式系统中(如电能量采集装置) ,物理层对应于系统的底层驱动部分。这部分一般不被通讯规约控制。因此,在不影响通讯协议功能实现的前提下,本文将不
10、具体讨论物理层服务。三、DLMS 链路层协议物理层之上即为链路层,链路层是物理层与应用层通信的通道。DLMS 链路层使用的是 HDLC 高速链路控制协议。链路层的构成:链路层由两个子层构成,即 LLC 子层,和 MAC 子层。(一) 、LLC 子层(逻辑链路控制子层)这一层的功能是将 MAC 子层的数据转发到应用层,或将应用层的数据转发到 MAC子层。LLC 子层只是作转发而不对数据做出处理。其存在的重要性在于向应用层提供链路传输的服务(从链路层接收或发送数据) 。具体到数据通讯时,对于 client 端应用层发送的数据,要加上 LLC 帧头(0xe6 , 0xe6, 0x00),server
11、 端应用层发送的数据,要加上 LLC 帧头 ( 0xe6 , 0xe7 , 0x00) 。由于 LLC 子层链路传输服务的具体实现,可以不受 DLMS 协议的限制,由应用程序实现。故本文不具体说明 LLC 子层的各种服务。(二) 、MAC 子层(媒体访问控制子层)MAC 子层在链路层中负责数据传输的可靠性,包括地址检查,数据的 CRC 校验,长数据帧的打包拆包等。这些工作对于数据通讯都是必不可少的,MAC 子层功能的说明将是以下的重点。1 HDLC 帧格式(1) 不包含应用层数据信息0x7e 帧类型与帧长 目的地址域 源地址域 控制域 数据帧校验 0x7e两个 0x7e 是 HDLC 数据帧固
12、定的帧头与帧尾,两个 0x7e 之间是链用户数据。(2) 包含应用层数据信息0x7e 帧类型与帧长目的地址域源地址域控制域帧头校验LLC帧头用户数据信息数据帧校验0x7e与不包含应用层数据信息的数据帧相比这里多了 3 项:帧头校验:为增强通讯的可靠性,对帧头的数据也加上 CRC 校验。帧头包括如下字段:帧类型与帧长、目的地址域、源地址域、和控制域LLC 帧头:用户数据信息前要加 0xe6 , 0xe6, 0x00 或 0xe6 , 0xe7, 0x00。用户数据信息:应用层处理的数据。注:出于数据完整性的考虑,用户数据信息的最大长度,默认为 128 字节。如果想要更多的字节,可以在 SNRM
13、数据帧中协议。2 帧类型字段与S位帧类型与帧长字段,共两个字节。内容如下:Frame Type :用于指出当前数据帧的类型。HDLC 有多种数据帧类型,DLMS 使用 Frame Type 3。Frame Type 恒为 A(1010) 。S:(segmentation Bit)这个字段只有一位,它用于说明数据帧是否被分割。在长数 据帧传输时要使用到这一位。长数据帧的传输将在后面解释。Frame Length Subfield :这个字段用于说明当前数据帧的长度, (以字节为单位,不包括两个 0x7e)3 地址解析地址域分为两部分。目的地址域和源地址域。对于 client 端,目的地址为 se
14、rver的地址,源地址为 client 的地址。对于 server 端正好相反。(1)扩展编址技术HDLC 使用扩展编址技术,即某一个地址字节的最低位如为 0,则表明该地址域没有结束,仍有后续字节是该地址域的一部分。若某一地址字节最低位为 1,则说明该地址域已经结束,没有后续字节。(2)地址结构Client端的地址永远是一个字节,由于 扩展编址技术的使用,最低位置 1,所以client 端的地址只能有128个。Server 端为了实现一个物理地址对应多个逻辑地址,将地址分成了两部分 upper HDLC Address 用于表述逻辑地址,lower HDLC address 用于表述物理地址。
15、Upper address 总是应当有的, lower address 在确认不需要的情况下,可以不出现。(sl7000 电表这两部分地址都是需要的)。Server 端的地址在使用扩展编址技术时,也并非是可以无限长(虽然在理论上可以,但在实践上是有上限的) 。Server 端的地址结构可以使用如下方式:One byte: only the upper HDLC address is present.一字节:只出现HDLC高位一字节地址。两字节:只出现HDLC高位一字节地址,和HDLC低位一字节地址。四字节:只出现HDLC高位两字节地址,和HDLC低位两字节地址对于SL7000电表,经测试只有四
16、字节 sever地址结构可用。(3)特殊地址有一些地址被 HDLC 定为保留地址。这其中比较重要的是广播地址。对于 SL7000 电能表,实践中可行的地址结构是 client 端一字节,server 端 4 字节。对于 DLMS 协议族是可以使用上述地址结构中的任一种,并且支持特殊地址。4 帧控制字帧控制字字段主要负责,通讯中的帧计数,以及特殊数据帧的标识。帧控制字字段结构如下:对应项的解释如下:RRR:为接收帧计数。SSS:为发送帧计数。注:对帧计数的解释,在链路层连接建立之后,第一次请求数据时(在client端,包括发送AARQ )RRR置为0,SSS 置为0。Server端收到这一帧数据
17、后,返回数据响应RRR为1, SSS为0 。Client 再次请求数据时RRR 加1 , SSS加1。Server端收到这一帧数据后, 返回数据响应RRR加1(成为2),SSS 加1。如此反复直到client得到所有的数据 为止。整个数据传输过程以I数据帧请求和响应。这里要说明的是在请求数据结束 后还要再发送RR帧,收到确认后。才可以再发送 DISC帧结束链路。其中Client端 的RR帧中的帧计数位RRR只需将client的帧计数位RRR 加1得到。下图描述了帧计数位的变化过程:P/F:poll/final bit。Poll bit :由 client 发送,置 1 时表示 server 端
18、回应,置 0 时表示不允许回应。final bit:由 server 发送,置 1 时表示一次数据帧的发送结束,置 0 时表示还未发送完。final bit 只有在通讯窗口(window size)大于 1 的情况下才有意 义。在 window size 1 时,由 server 端返回的数据帧中的这一位总是 置 1。(关于 window size 将会在“建立链路层连接”时解释)几种不同的数据帧分别应用在不同的场合,下图列出了几种请求和响应的对应的情况。I :信息传输帧RR :准备接收数据帧(用来表示准备接收下一帧数据)RNR:接收没有准备好(receive not ready) 。相当于别
19、的通讯协议中的忙帧。SNRM:设置正常相应数据帧。用于建立链路层连接。UA:对 SNRM 和 DISC 的响应帧。DISC:结束链路帧。DM:对 DISC 的响应帧。 (Disconnected mode)UI:可以用于保持链路,这个数据帧的发送,对于链路的控制没有任何影响。FRMR:拒绝接收帧(Frame reject ) ,由于不确定的某种原因拒绝接收到的数据帧。5 长数据帧的传输在很多情况下,数据不能在一次请求和一次响应中,就能够结束数据传输的过程(受限于用户数据字节不超过 128 字节) 。这时就有必要启动长数据帧链路控制流程。注:请求负荷曲线时一定是使用长数据帧。当使用长数据帧时,必
20、须把长数据帧分割成短数据帧。然后把这些短数据帧依次发送出去,在接收端将这些短数据帧依次处理。这样就实现了一个较大的数据包,完整的传送到接收端。在数据帧被分割时,帧类型与帧长字段中的S位,将被置 1。当接收端检测到这一位被置位后,就知道数据帧已被分割,此时要做出对分割数据帧的相应处理。下图介绍了长数据帧的收发过程:client 端通过发送 RR 数据帧来请求被分割的数据帧的其他部分。6 数据帧校验HDLC 使用 16 位 CRC 校验。使用的多项式是:具体的实现程序,可参照英文参考文献 IEC62056 46 的附录 A。(三) 、链路层连接的建立,与断开(1)建立连接链路层在开始工作之前,要建
21、立链路层连接(Association) 。这一步骤是通过client 端发送 SNRM 数据帧, server 端响应 UA 数据帧表示已建立连接,server 端响应DM 数据帧表示链路断开,连接没有建立。UA 数据帧常含有链路参数的配置信息。链路参数是指 2 个控制数据传输的参数。WINDOW_SIZE parameter; 这个参数描述通讯时,通讯的双方一次发送数据帧的数目。HDLC允许一次发送多帧数据。MAXIMUM_INFORMATION_FIELD_LENGTH parameter . 最大信息域长度,这个参数用于描 述一个链路数据帧中用户数据的长度。这两个参数的默认值如下defa
22、ult WINDOW_SIZE = 1;default MAXIMUM_INFORMATION_FIELD_LENGTH 128(BYTEs )具体在数据帧中有如下 4 个参数:transmit maximum information field length receive maximum information field length transmit window sizereceive window size 注:这里没有给出数据帧的具体格式,而是用举例来说明如何组帧。这种做法可能给读者带来不便。但在 DLMS 的规约原文中就是用这种办法,故这里仍这样做。以下举例说明如何建立连接:/
23、SNRMS: 7e a0 21 00 22 00 23 03 93 0b 14 81 80 12 05 01 80 06 01 80 07 04 00 00 00 01 08 04 00 00 00 07 65 5e 7e解释:7e a0 21 帧类型与帧长00 22 00 23 目的地址03 源地址93 控制字 0b 14 帧头校验81 80 SNRM 标识12 group lenth.05H parameter identifier (maximum information field length transmit)01H parameter length (1 octet)80H pa
24、rameter value(128 bytes)06H parameter identifier (maximum information field length receive)01H parameter length (1 octet)80H parameter value (128 bytes)07H parameter identifier (window size, transmit)04H parameter length (4 octets)00H parameter value (high byte of value)00H parameter value00H parame
25、ter value01H parameter value (low byte of value)08H parameter identifier (window size, receive)04H parameter length (4 octets)00H parameter value (high byte of value)00H parameter value00H parameter value07H parameter value (low byte of value) 65 5e 数据帧校验(CRC 校验)7e在 SNRM 数据帧中的用户信息可以不出现,表示 client 接收
26、server 端的已配置数据。/UAR: 7E A0 21 03 00 22 00 23 73 28 F0 81 80 12 05 01 80 06 01 80 07 04 00 00 00 01 08 04 00 00 00 01 53 3B 7E解释:7E/Flag0xA0 21/(type=a :frame type 3 , s=0 : end of frame , len=021 : 33 bytes)03/source address00 22 00 23 /destination address73 /control UA28 F0 /hcs81 80 12 05 01 80 06
27、 01 80 07 04 00 00 00 01 08 04 00 00 00 01 /information field/parameter negotiation/81 /80 /12 /05 01 80 :maximum information field length transmit (128 BYTEs)/06 01 80 :maximum information field length receive (128 BYTEs)/07 04 00 00 00 01 :window size, transmit (1)/08 04 00 00 00 01 :window size,
28、receive (1)53 3B/fcs7E(2)断开连接断开连接由于不用参数设置,所以比建立连接要简单。Client 端发送 DISC 数据帧,Server 端响应 UA 或 DM 表示断开连接。UA 表示接到 DISC 后断开连接。DM 表示在接到DISC 之前已处于断开状态。一下仍给出具体的通讯实例:S: 7e a0 0a 00 22 00 23 03 53 06 c7 7e解释:7e a0 0a 00 22 00 23 03 53 / 帧类型 Disc 06 c7 7eR: 7E A0 0A 03 00 22 00 23 1F 43 4C 7E解释:7E A0 0A 03 00 22
29、00 23 1F/帧类型 DM43 4C 7E(四) 、关于链路层的透明数据传输0x7e 帧类型与帧长目的地址域源地址域控制域帧头校验LLC帧头用户数据信息数据帧校验0x7eHDLC 是一种透明数据传输的链路层协议。用户数据信息与链路层没有任何关系。在 DLMS 的协议模型中,链路层负责数据传输的可靠性,应用层处理用户数据信息。链路层为应用层数据的传输提供透明通道。四、DLMS 应用层协议理解 DLMS 应用层协议,需要首先建立以下几个概念:ASN.1 语法, BER 编码,AXDR 编码。ASN.1 语法是用来描述应用层数据帧的。DLMS 协议不同于其他一些简单通讯协议的地方就在于此。他不是
30、用一些表格,及一些固定的帧格式来描述的,而是用一种抽象语法语言来描述。这样做的好处是,极大的提高了协议的抽象性和通用性,有利于程序移植。BER 编码和 AXDR 编码是用来实现 ASN.1 语法的。为了实现 ASN.1 的抽象性和通用性,这个语法要用特殊的编码来描述。这就引入了 BER 编码和 AXDR 编码。以下分别解释这几项。(一)ASN.1 语法一个用 ASN.1 语法描述的数据帧,看上去应该是下面的样子:Name := tag IMPLICIT/ EXPLICIT Data typenull-data 0 IMPLICIT NULL,item1 1 IMPLICIT/ EXPLICIT
31、 Data type A1 OPTIONALitem2 2 IMPLICIT/ EXPLICIT Data type A2 OPTIONALitem3 3 Data type 下面解释这个语法描述。Name 是这个数据帧的名字。Tag tag 包含两部分 class type 和一个数字Class type 有以下四种:1)Universal 表明 name 定义的数据帧在所有的 DLMS 应用中的含义是唯 一的。2)Application 表明 name 定义的数据帧的含义同具体的应用有关。3)Private 表明 name 定义的数据帧只在某一厂家的自定义范围之内。4)Context-sp
32、ecific 表明 name 定义的数据帧同上下文数据项的含义有关。这种类型的数据,在不同的结构中可能有不同的含义。Tag 中的数字,是作为这个数据帧的标号存在的,它做为该数据帧的句柄出现 在应用数据单元中。IMPLICIT/ EXPLICIT 当前数据帧(称为子数据帧)可能派生于某一数据帧(称为父数 据帧),这个字段用来描述子数据帧同父数据帧的关系。IMPLICIT : 改变了父数据帧的 Tag。EXPLICIT : 不改变父数据帧的 Tag。不注明 IMPLICIT 的项即为 EXPLICIT。Data type 描述数据帧的数据类型。数据类型分为简单型和复合型。多数数据类型可以从 名字看
33、出其类型。以下列出了几种,完整的数据类型集合请参见附录。Type Tag number Tag number(decimal) (hexadecimal)INTEGER 2 02BIT STRING 3 03OCTET STRING 4 04NULL 5 05OBJECT IDENTIFIER 6 06SEQUENCE and SEQUENCE OF 16 10SET and SET OF 17 11PrintableString 19 13T61String 20 14IA5String 22 16UTCTime 23 17“” 大括号中的内容,即为数据帧中的数据项。每一数据项后的数字序号,
34、即为该 数据项的标识(tag)。每一数据项可以是对另一数据帧的复合。即一个数据帧通常是对其它数据帧的一种组合。OPTIONAL 这个关键字描述的数据项,在用户认为需要的场合可以省略。比较重要的两种复合类型 SEQUENCE 和 CHOICE 下面举例解释:1)SEQUENCE : 数据帧中的内容是顺序排列的。下面以举例说明SEQUENCE 类型。Get-Request-Normal := SEQUENCEinvoke-id-and-priority Invoke-Id-And-Priority,cosem-attribute-descriptor Cosem-Attribute-Descrip
35、tor,access-selection-parameters Selective-Access-Descriptor OPTIONAL这是一个在请求数据时常用的数据帧。SEQUENCE表明数据帧的内容是顺序排列的。2)CHOICE :即选则类型,它表明当前数据帧是从几个数据帧中选择一种做为当前数据帧的类型。下面以举例说明 CHOICE 类型。GET-Request := CHOICEget-request-normal 1 IMPLICIT Get-Request-Normal,get-request-next 2 IMPLICIT Get-Request-Next,get-request-
36、with-list 3 IMPLICIT Get-Request-With-ListGET-Request数据帧只能填入三个选择项之一。以上简单介绍了 ASN.1 语法,由这一语法描述的各种数据帧,将在附录中全部给出。这些各种各样的数据帧,将构成 DLMS 协议中 Client 同 Server 应用层交互时使用的语言。读者如对 ASN.1 语法有不解之处,可参阅本文的英文参考文献【7】(二)BER 编码与 AXDR 编码ASN.1 只是一种语法,要把它写入数据帧中,就要把它转换为一个个数据字节。这就要一种(实际是两种)编码来实现这种语法。于是就引入了 BER 编码与 AXDR 编码。在 DL
37、MS 中用 ASN.1 描述的 DLMS 协议,用 BER 编码实现;用 ASN.1 描述的XDLMS 协议用 AXDR 编码实现。注:DLMS 中只有 AARQ 与 AARE 数据帧的部分内容是使用 DLMS 协议的。绝大多数的应用层数据通讯使用 XDLMS。这里无意对 DLMS 和 XDLMS 做出划分和解释,具体的解释可参见英文参考文献【2】 。这里只需知道这两种协议使用不同的编码。1 BER编码的详细语法参见附录。通常的BER编码采用如下结构,其中数据内容部分可以嵌套另一BER编码结构:数据标识 数据长度 数据内容数据长度,和数据内容从名字即可知道内容。这里有必要解释一下数据标识的构成
38、: 一个BER数据标识和一个BER数据长度构成一个16位的位串:bit15 bit0datatype classes(bit15、14) Data type(bit13) data length(bit12bit0)1)datatype classes 字段:这一字段用于对ASN.1语法中的class type编码Universal (00) Application (01) Context-specific (10) Private (11) 2)Data type字段:用于描述数据内容的结构Primitive (0) 简单类型Constructed (1) 复合类型(数组或结构)3)dat
39、a length字段:用于描述数据内容的长度(以字节为单位)。下面以接收到的AARE数据帧为例:AARE数据帧的语法描述:AARE-apdu := APPLICATION 1 IMPLICIT SEQUENCEAPPLICATION 1 = 61H = 97 protocol-version 0 IMPLICIT BIT STRING version1 (0) DEFAULTversion1,application-context-name 1 Application-context-name,result 2 Association-result,result-source-diagnost
40、ic 3 Associate-source-diagnostic,responding-AP-title 4 AP-title OPTIONAL,responding-AE-qualifier 5 AE-qualifier OPTIONAL,responding-AP-invocation-id 6 AP-invocation-identifier OPTIONAL,responding-AE-invocation-id 7 AE-invocation-identifier OPTIONAL,- The following field shall not be present if only
41、the kernel is used.responder-acse-requirements 8 IMPLICIT ACSE-requirements OPTIONAL,- The following field shall only be present if the authentication functional unit is selected.mechanism-name 9 IMPLICIT mechanism-name OPTIONAL,- The following field shall only be present if the authentication funct
42、ional unit is selected.responding-authentication-value 10 EXPLICIT authentication-value OPTIONAL,implementation-information 29 IMPLICIT implementation-data OPTIONAL,user-information 30 IMPLICIT association-information OPTIONALAARE数据帧的BER编码和AXDR编码实现:61 /AARE tag42 /AARE lenA1 /tag of COSEM_Applicatio
43、n_Context_Name09 /数据长度06 /(OBJECT IDENTIFIER, Universal)OBJECT IDENTIFIER是一种/ASN.1数据类型.07 /数据长度60 85 74 05 08 01 01 /数据内容/以下的数据帧可以用同样的方法一一解释A2 /Tag of Association-result,03 02 01 00 A3 /Tag of Associate-source-diagnostic 05 A1 03 02 01 00 88 /IMPLICIT ACSE-requirements OPTIONA 02 07 80 89 /IMPLICIT
44、mechanism-name OPTIONAL07 60 85 74 05 08 02 01 AA /EXPLICIT authentication-value OPTIONAL0A 80 08 41 42 43 44 45 46 47 48 BE 04 / encoding the choice for user-information (OCTET STRING, Universal) 0E / encoding of the length of the OCTET STRINGs value field (14 octets)/*以下内容为 XDLMS 用 AXDR 描述*/08 /en
45、coding the tag (explicit tag) of the DLMS PDU CHOICE (InitiateResponse)00 / usage flag for the proposed-quality-of-service component (FALSE, not present)06 /negotiated-dlms-version-number5F 1F / encoding the APPLICATION 31 tag (ASN.1 explicit tag) 04 / encoding the length of the contents field in oc
46、tet (4) 00 / encoding of the number of unused bits in the final octet of the bitstring00 08 1D/ encoding of the fixed length BITSTRING value 21 34 / the A-XDR encoding of an Unsigned16 is its value 00 07 / the A-XDR encoding of an Unsigned16 is its value . 00 07 = LN2 A-XDR:这种编码是对unix的XDR(外部数据标识法)编码
47、的扩展。参见IEC61334采用配线载波的配电自动化,译文汇编,下册,第六部分。本文参考文献【9】3 两种编码的比较:A-XDR编码,与BER编码的区别可从下例看出。对两数进行编码,其值分别为0x1234,0x56781) 用BER编码30 08 02 02 12 34 34 02 56 78序列标识序列长度A的标识(整型)A的字长A的数值B的标识(整型)B的字长B的数值2) 用AXDR 编码1 12 34 56 78序列标识A的数值B的数值这里给出一个 AXDR 编码的实例:注:这里的语法仍是 ASN.1 但将采用不同的编码。ASN.1语法描述:(这一数据帧是AARQ数据帧的一部分)xDLM
48、S-Initiate.request : = SEQUENCEdedicated-key OCTET STRING OPTIONAL,response-allowed BOOLEAN DEFAULT TRUE,proposed-quality-of-service 0 IMPLICIT Integer8 OPTIONAL,proposed-dlms-version-number Unsigned8,proposed-conformance Conformance,client-max-receive-pdu-size Unsigned16AXDR编码:01-dlms puu 标识00 -/usage flag for the dedicated-key component (FALSE, not present)00- /usage flag for the response-allowed component (FALSE, default value conveyed) 00-