DLMS电能表通讯协仪.docx
《DLMS电能表通讯协仪.docx》由会员分享,可在线阅读,更多相关《DLMS电能表通讯协仪.docx(51页珍藏版)》请在冰豆网上搜索。
DLMS电能表通讯协仪
DLMS电能表通讯协仪(2003626)
本文是对于IEC62056协议族,即DLMS协议族的中文说明手册。
本文并没有包含DLMS协议族的全部,但解释了在应用中可能出现的大多数情况。
本文的目的是为电能量数据采集终端提供与使用DLMS协议族的电能表通讯的协议说明。
本文参考文献如下:
(1)DLMSUserAssociation,COSEMIdentificationSystemandInterfaceObjects,ThirdEdition
(2)IEC62056-53Electricitymetering-Dataexchangeformeterreading,tariffandloadcontrol-Part53:
COSEMapplicationlayer
(3)IEC62056-46Electricitymetering-Dataexchangeformeterreading,tariffandloadcontrol-Part46:
DatalinklayerusingHDLCprotocol
(4)IEC62056-42Electricitymetering-Dataexchangeformeterreading,tariffandloadcontrol-Part42:
Physicallayerservicesandproceduresforconnection-orientedasynchronousdataexchange
(5)IEC62056-61Electricitymetering-Dataexchangeformeterreading,tariffandloadcontrol-Part61:
Objectidentificationsystem(OBIS)
(6)AmberManagementlogicaldevice-FR:
AMBER/FWTECH_SPECMANAGEMENT_LOGICAL_DEVICE
(7)AmberElectricityLogicalDevice-FR:
AMBER/FWTECH_SPECELECTRICITY_LOGICAL_DEVICE
(8)ALayman'sGuidetoaSubsetofASN.1,BER,andDER-
AnRSALaboratoriesTechnicalNote
BurtonS.KaliskiJr.RevisedNovember1,1993
(9)IEC61334采用配线载波的配电自动化,译文汇编。
一、本文的结构
由于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规约可以建立在多种物理层之上,物理层的做用主要是对底层通讯硬件的操做(如对PSTNMODEM的初始化,打开,关闭。
)
(二)建立链路层连接
物理层连接建立之后,数据通讯的第一步是建立链路层的连接,链路层主要负责数据传输的可靠性,包括以下几个方面,地址校验,帧长校验,数据的CRC校验。
长数据帧的拆包组包。
同时向应用层提供链路传输的服务。
(三)建立应用层连接
链路层连接建立之后,在DLMS协议中还要建立应用层连接,才可进行数据通讯。
这个应用层连接建立过程被称为Negotiation(协商)。
这个过程是为数据通讯提供一些配置参数。
应用层连接请求由Client端发起,Client端发aarq帧,Server端响应aare帧
(四)进行数据通讯
当连接建立起后,就可进行数据通讯了。
Client端发送数据请求帧Server端以数据响应。
Client在请求不同的数据时,要使用特定数据的独有的classid和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子层功能的说明将是以下的重点。
1HDLC帧格式
(1)不包含应用层数据信息
0x7e
帧类型与帧长
目的地址域
源地址域
控制域
数据帧校验
0x7e
两个0x7e是HDLC数据帧固定的帧头与帧尾,两个0x7e之间是链用户数据。
(2)包含应用层数据信息
0x7e
帧类型与帧长
目的地址域
源地址域
控制域
帧头校验
LLC帧头
用户数据信息
数据帧校验
0x7e
与不包含应用层数据信息的数据帧相比这里多了3项:
帧头校验:
为增强通讯的可靠性,对帧头的数据也加上CRC校验。
帧头包括如下字段:
帧类型与帧长、目的地址域、源地址域、和控制域
LLC帧头:
用户数据信息前要加0xe6,0xe6,0x00或0xe6,0xe7,0x00。
用户数据信息:
应用层处理的数据。
注:
出于数据完整性的考虑,用户数据信息的最大长度,默认为128字节。
如果想要更多的字节,可以在SNRM数据帧中协议。
2帧类型字段与‘S’位
帧类型与帧长字段,共两个字节。
内容如下:
FrameType:
用于指出当前数据帧的类型。
HDLC有多种数据帧类型,DLMS使用FrameType3。
FrameType恒为A(1010)。
S:
(segmentationBit)这个字段只有一位,它用于说明数据帧是否被分割(在报文
中,该字节为A0表示数据到本帧就已经结束,A8表示下面还有数据帧)。
在长数据帧传输时要使用到这一位。
长数据帧的传输将在后面解释。
FrameLengthSub-field:
这个字段用于说明当前数据帧的长度,(以字节为单位,不包括两个0x7e)
3地址解析
地址域分为两部分。
目的地址域和源地址域。
对于client端,目的地址为server的地址,源地址为client的地址。
对于server端正好相反。
(1)扩展编址技术
HDLC使用扩展编址技术,即某一个地址字节的最低位如为0,则表明该地址域没有结束,仍有后续字节是该地址域的一部分。
若某一地址字节最低位为1,则说明该地址域已经结束,没有后续字节。
(2)地址结构
Client端的地址永远是一个字节,由于扩展编址技术的使用,最低位置1,所以client端的地址只能有128个。
Server端为了实现一个物理地址对应多个逻辑地址,将地址分成了两部分upperHDLCAddress用于表述逻辑地址,lowerHDLCaddress用于表述物理地址。
Upperaddress总是应当有的,loweraddress在确认不需要的情况下,可以不出现。
(sl7000电表这两部分地址都是需要的)。
Server端的地址在使用扩展编址技术时,也并非是可以无限长(虽然在理论上可以,但在实践上是有上限的)。
Server端的地址结构可以使用如下方式:
Onebyte:
onlytheupperHDLCaddressispresent.
一字节:
只出现HDLC高位一字节地址。
两字节:
只出现HDLC高位一字节地址,和HDLC低位一字节地址。
四字节:
只出现HDLC高位两字节地址,和HDLC低位两字节地址
对于SL7000电表,经测试只有四字节sever地址结构可用。
(3)特殊地址
有一些地址被HDLC定为保留地址。
这其中比较重要的是广播地址。
对于SL7000电能表,实践中可行的地址结构是client端一字节,server端4字节。
对于DLMS协议族是可以使用上述地址结构中的任一种,并且支持特殊地址。
4帧控制字
帧控制字字段主要负责,通讯中的帧计数,以及特殊数据帧的标识。