logo资料库

DLMS电能表通讯协议实例解析说明.pdf

第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
资料共37页,剩余部分请下载后查看
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 meter reading, tariff and load control -Part 53: COSEM application layer (3)IEC62056 - 46Electricity metering - Data exchange for meter reading, tariff and load (4)IEC62056 - 42 Electricity metering - Data exchange for meter reading, tariff and load control -Part 46: Data link layer using HDLC protocol control -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 device-FR:AMBER/FW TECH_SPEC (7)Amber Electricity Logical Device - FR:AMBER/FW TECH_SPEC MANAGEMENT_LOGICAL_DEVICE ELECTRICITY_LOGICAL_DEVICE (8)A Layman's Guide to a Subset of ASN.1, BER, and DER- (9)IEC61334 采用配线载波的配电自动化,译文汇编。 An RSA Laboratories Technical Note Burton S. Kaliski Jr.Revised November 1, 1993 一、本文的结构 由于 DLMS 协议族的复杂性,必然导致本文篇幅较长,涉及的内容比较多。这里有必 要把本文的内容,做一个综述,并解释各部分之间的相互关系。 一、DLMS 协仪模型:从整体上介绍 DLMS 协议。 二、DLMS 物理层协议:讲述 DLMS 物理层在整个协议族中的作用。 三、DLMS 链路层协议:讲述 HDLC 链路层协议在整个协议族中的作用。 四、DLMS 应用层协议:讲述 DLMS 应用层协议在整个协议族中的作用。这一部分又 包括如下几部分内容。 (一、)ASN.1 语法:这个语法是用来描述 DLMS 应用层协议帧的组成的。 (二、)BER 编码与 AXDR 编码:这两种编码是用来实现 ASN.1 语法的。 (三、)AARQ 与 AARE 数据帧:这是两个特殊的数据帧,它用来构筑 DLMS 协 议中的 client 端与 server 端的应用层连接。 (四、)数据请求过程描述:介绍请求数据时所用的的数据帧。 五、请求数据实例:这里提供了几个请求数据的实际范例的数据包文。 1、 请求电量 2、 请求瞬时量(电压、电流、功率) 3、 请求负荷曲线 4、 请求时间
一、DLMS 协仪模型 下图从整体上描述了 DLMS 协仪模型。 协仪共分为 3 层,物理层,链路层,应用层。层与层之间使用指定的服务通讯。 通讯的双方采用 Client—Server 结构,数据请求端(采集器)为 Client,数据提供端(电表) 为 Server. 通讯过程描述: (一) 建立物理层连接 物理层位于通讯模型的最底层。DLMS 规约可以建立在多种物理层之上,物理 层的做用主要是对底层通讯硬件的操做(如对 PSTN MODEM 的初始化,打开, 关闭。) (二) 建立链路层连接 物理层连接建立之后,数据通讯的第一步是建立链路层的连接,链路层主要负 责数据传输的可靠性,包括以下几个方面,地址校验,帧长校验,数据的 CRC 校 验。长数据帧的拆包组包。同时向应用层提供链路传输的服务。 (三) 建立应用层连接 链路层连接建立之后,在 DLMS 协仪中还要建立应用层连接,才可进行数据通讯。 这个应用层连接建立过程被称为 Negotioation。 这个过程是为数据通讯提供一些配置参数。应用层连接请求由 Client 端发起,Client 端发 aarq 帧,Server 端响应 aare 帧 (四) 进行数据通讯 当连接建立起后,就可进行数据通讯了。Client 端发送数据请求帧 Server 端以数据 响应。Client 在请求不同的数据时,要使用特定数据的独有的 class id 和 OBIS,用以标 识不同类型的数据。 (五) 数据通讯结束,释放链路,解除连接。 数据通讯结束后,发链路结束帧,结束一次通讯过程。一次数据通讯结束后,可以
通过发链路结束帧,来结束一次通讯过程。也可以,不发任何数据帧,依靠 server 端的 超时挂断机制,来结束一次通讯过程。一般应使用前者。 (六) 解除物理层连接 关闭物理端口(如挂断 Modem)。从物理上结束一次通讯。 二、DLMS 物理层协议 物理层协议位于 DLMS 协议族的最底层,负责数据通讯的物理传输。DLMS 可以工作 于多种不同的物理介质上(PSTN,网络,串行通道等)。 物理层的功能是接受链路层数据,发送到物理介质上,传送到通信的对端。或是接收通 信的对端传送来得数据,再传送到链路层,供更高层的协议处理数据。 DLMS 物理层协议,主要规定了物理层应实现的服务,如:打开端口,初始化端口,收 发数据,关闭端口等。在通常的嵌入式系统中(如电能量采集装置),物理层对应于系统的 底层驱动部分。这部分一般不被通讯规约控制。因此,在不影响通讯协议功能实现的前提下, 本文将不具体讨论物理层服务。 三、DLMS 链路层协议 物理层之上即为链路层,链路层是物理层与应用层通信的通道。DLMS 链路层使用的是 HDLC 高速链路控制协议。 链路层的构成: 链路层由两个子层构成,即 LLC 子层,和 MAC 子层。 (一) 、LLC 子层(逻辑链路控制子层) 这一层的功能是将 MAC 子层的数据转发到应用层,或将应用层的数据转发到 MAC 子
层。LLC 子层只是作转发而不对数据做出处理。其存在的重要性在于向应用层提供链路传 输的服务(从链路层接收或发送数据)。 具体到数据通讯时,对于 client 端应用层发送的数据,要加上 LLC 帧头(0xe6 , 0xe6, 0x00),server 端应用层发送的数据,要加上 LLC 帧头 ( 0xe6 , 0xe7 , 0x00)。 由于 LLC 子层链路传输服务的具体实现,可以不受 DLMS 协议的限制,由应用程序实 现。故本文不具体说明 LLC 子层的各种服务。 (二)、MAC 子层(媒体访问控制子层) MAC 子层在链路层中负责数据传输的可靠性,包括地址检查,数据的 CRC 校验,长数 据帧的打包拆包等。这些工作对于数据通讯都是必不可少的,MAC 子层功能的说明将是以 下的重点。 1 HDLC 帧格式 (1) 不包含应用层数据信息 0x7e 帧类型与帧长 目的地址域 源地址域 控制域 数据帧校验 0x7e 两个 0x7e 是 HDLC 数据帧固定的帧头与帧尾,两个 0x7e 之间是链用户数据。 (2) 包含应用层数据信息 0x7e 帧 类 型 与帧长 目的地址 域 源 地 址 域 控 制 域 帧 头 校 验 LLC 帧头 用户数据 信息 数 据 帧 校验 0x7e 与不包含应用层数据信息的数据帧相比这里多了 3 项: 帧头校验:为增强通讯的可靠性,对帧头的数据也加上 CRC 校验。帧头包括如下 字段:帧类型与帧长、目的地址域、源地址域、和控制域 LLC 帧头:用户数据信息前要加 0xe6 , 0xe6, 0x00 或 0xe6 , 0xe7, 0x00。 用户数据信息:应用层处理的数据。 注:出于数据完整性的考虑,用户数据信息的最大长度,默认为 128 字节。如果想 要更多的字节,可以在 SNRM 数据帧中协议。 2 帧类型字段与‘S’位 帧类型与帧长字段,共两个字节。内容如下: Frame Type :用于指出当前数据帧的类型。HDLC 有多种数据帧类型,DLMS 使 用 Frame Type 3。Frame Type 恒为 A(1010)。 S:(segmentation Bit)这个字段只有一位,它用于说明数据帧是否被分割。在长数 据帧传输时要使用到这一位。长数据帧的传输将在后面解释。 Frame Length Sub-field :这个字段用于说明当前数据帧的长度,(以字节为单位, 不包括两个 0x7e) 3 地址解析 地址域分为两部分。目的地址域和源地址域。对于 client 端,目的地址为 server 的 地址,源地址为 client 的地址。对于 server 端正好相反。 (1)扩展编址技术 HDLC 使用扩展编址技术,即某一个地址字节的最低位如为 0,则表明该地址域没
有结束,仍有后续字节是该地址域的一部分。若某一地址字节最低位为 1,则说明该地 址域已经结束,没有后续字节。 (2)地址结构 Client端的地址永远是一个字节,由于扩展编址技术的使用,最低位置1,所以client 端的地址只能有128个。 Server 端为了实现一个物理地址对应多个逻辑地址,将地址分成了两部分 upper HDLC Address 用于表述逻辑地址,lower HDLC address 用于表述物理地址。Upper address 总是应当有的,lower address 在确认不需要的情况下,可以不出现。(sl7000 电表这两部分地址都是需要的)。 Server 端的地址在使用扩展编址技术时,也并非是可以无限长(虽然在理论上可以, 但在实践上是有上限的)。Server 端的地址结构可以使用如下方式: One byte: only the upper HDLC address is present. 一字节:只出现HDLC高位一字节地址。 两字节:只出现HDLC高位一字节地址,和HDLC低位一字节地址。 四字节:只出现HDLC高位两字节地址,和HDLC低位两字节地址 对于SL7000电表,经测试只有四字节sever地址结构可用。 (3)特殊地址 有一些地址被 HDLC 定为保留地址。这其中比较重要的是广播地址。 对于 SL7000 电能表,实践中可行的地址结构是 client 端一字节,server 端 4 字节。 对于 DLMS 协议族是可以使用上述地址结构中的任一种,并且支持特殊地址。 4 帧控制字 帧控制字字段主要负责,通讯中的帧计数,以及特殊数据帧的标识。 帧控制字字段结构如下: 对应项的解释如下: RRR:为接收帧计数。 SSS:为发送帧计数。 注:对帧计数的解释, 在链路层连接建立之后,第一次请求数据时(在client端,包括发送AARQ) RRR置为0,SSS置为0。Server端收到这一帧数据后,返回数据响应RRR为1, SSS为0。Client再次请求数据时RRR加1,SSS加1。Server端收到这一帧数 返回数据响应RRR加1(成为2),SSS加1。如此反复直到client得到所有的 据后,
数据 数据结束 其中Client端 为止。整个数据传输过程以I数据帧请求和响应。这里要说明的是在请求 后还要再发送RR帧,收到确认后。才可以再发送DISC帧结束链路。 的RR帧中的帧计数位RRR只需将client的帧计数位RRR加1得到。 下图描述了帧计数位的变化过程: P/F:poll/final bit。 Poll bit :由 client 发送,置 1 时表示 server 端回应,置 0 时表示不允许回应。 final bit:由 server 发送,置 1 时表示一次数据帧的发送结束,置 0 时表示还未 发送完。final bit 只有在通讯窗口(window size)大于 1 的情况下才 义。在 window size = 1 时,由 server 端返回的数据帧中的这一位 置 1。(关于 window size 将会在“建立链路层连接”时解释) 有意 总是 几种不同的数据帧分别应用在不同的场合,下图列出了几种请求和响应的对应的情况。
I :信息传输帧 RR :准备接收数据帧(用来表示准备接收下一帧数据) RNR:接收没有准备好(receive not ready)。相当于别的通讯协议中的忙帧。 SNRM:设置正常相应数据帧。用于建立链路层连接。 UA:对 SNRM 和 DISC 的响应帧。 DISC:结束链路帧。 DM:对 DISC 的响应帧。(Disconnected mode) UI:可以用于保持链路,这个数据帧的发送,对于链路的控制没有任何影响。 FRMR:拒绝接收帧(Frame reject),由于不确定的某种原因拒绝接收到的数据帧。 5 长数据帧的传输 在很多情况下,数据不能在一次请求和一次响应中,就能够结束数据传输的过程(受 限于用户数据字节不超过 128 字节)。这时就有必要启动长数据帧链路控制流程。 注:请求负荷曲线时一定是使用长数据帧。 当使用长数据帧时,必须把长数据帧分割成短数据帧。然后把这些短数据帧依次发 送出去,在接收端将这些短数据帧依次处理。这样就实现了一个较大的数据包,完整的 传送到接收端。 在数据帧被分割时,帧类型与帧长字段中的‘S’位,将被置 1。当接收端检测到 这一位被置位后,就知道数据帧已被分割,此时要做出对分割数据帧的相应处理。 下图介绍了长数据帧的收发过程:
client 端通过发送 RR 数据帧来请求被分割的数据帧的其他部分。 6 数据帧校验 HDLC 使用 16 位 CRC 校验。使用的多项式是: 具体的实现程序,可参照英文参考文献 IEC62056 - 46 的附录 A。 (三)、链路层连接的建立,与断开 (1)建立连接 链路层在开始工作之前,要建立链路层连接(Association)。这一步骤是通过 client 端发送 SNRM 数据帧,server 端响应 UA 数据帧表示已建立连接,server 端响应 DM 数 据帧表示链路断开,连接没有建立。 UA 数据帧常含有链路参数的配置信息。链路参数是指 2 个控制数据传输的参数。 WINDOW_SIZE parameter; 这个参数描述通讯时,通讯的双方一次发送数据帧的数目。 HDLC允许一次发送多帧数据。 MAXIMUM_INFORMATION_FIELD_LENGTH parameter . 最大信息域长度,这个参数用于描 述一个链路数据帧中用户数据的长度。 这两个参数的默认值如下 default WINDOW_SIZE = 1; default MAXIMUM_INFORMATION_FIELD_LENGTH = 128(BYTEs) 具体在数据帧中有如下 4 个参数: transmit maximum information field length receive maximum information field length transmit window size receive window size 注:这里没有给出数据帧的具体格式,而是用举例来说明如何组帧。这种做法可能给读 者带来不便。但在 DLMS 的规约原文中就是用这种办法,故这里仍这样做。
分享到:
收藏