DLMS电能表通讯协仪数据通讯举例.docx
- 文档编号:5543419
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:62
- 大小:337.57KB
DLMS电能表通讯协仪数据通讯举例.docx
《DLMS电能表通讯协仪数据通讯举例.docx》由会员分享,可在线阅读,更多相关《DLMS电能表通讯协仪数据通讯举例.docx(62页珍藏版)》请在冰点文库上搜索。
DLMS电能表通讯协仪数据通讯举例
DLMS电能表通讯协仪
本文是对于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协仪中还要建立应用层连接,才可进行数据通讯。
这个应用层连接建立过程被称为Negotioation。
这个过程是为数据通讯提供一些配置参数。
应用层连接请求由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)这个字段只有一位,它用于说明数据帧是否被分割。
在长数据帧传输时要使用到这一位。
长数据帧的传输将在后面解释。
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帧控制字
帧控制字字段主要负责,通讯中的帧计数,以及特殊数据帧的标识。
帧控制字字段结构如下:
对应项的解释如下:
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得到所有的数据为止。
整个数据传输过程以I数据帧请求和响应。
这里要说明的是在请求数据结束后还要再发送RR帧,收到确认后。
才可以再发送DISC帧结束链路。
其中Client端的RR帧中的帧计数位RRR只需将client的帧计数位RRR加1得到。
下图描述了帧计数位的变化过程:
P/F:
poll/finalbit。
Pollbit:
由client发送,置1时表示server端回应,置0时表示不允许回应。
finalbit:
由server发送,置1时表示一次数据帧的发送结束,置0时表示还未发送完。
finalbit只有在通讯窗口(windowsize)大于1的情况下才有意义。
在windowsize=1时,由server端返回的数据帧中的这一位总是置1。
(关于windowsize将会在“建立链路层连接”时解释)
几种不同的数据帧分别应用在不同的场合,下图列出了几种请求和响应的对应的情况。
I:
信息传输帧
RR:
准备接收数据帧(用来表示准备接收下一帧数据)
RNR:
接收没有准备好(receivenotready)。
相当于别的通讯协议中的忙帧。
SNRM:
设置正常相应数据帧。
用于建立链路层连接。
UA:
对SNRM和DISC的响应帧。
DISC:
结束链路帧。
DM:
对DISC的响应帧。
(Disconnectedmode)
UI:
可以用于保持链路,这个数据帧的发送,对于链路的控制没有任何影响。
FRMR:
拒绝接收帧(Framereject),由于不确定的某种原因拒绝接收到的数据帧。
5长数据帧的传输
在很多情况下,数据不能在一次请求和一次响应中,就能够结束数据传输的过程(受限于用户数据字节不超过128字节)。
这时就有必要启动长数据帧链路控制流程。
注:
请求负荷曲线时一定是使用长数据帧。
当使用长数据帧时,必须把长数据帧分割成短数据帧。
然后把这些短数据帧依次发送出去,在接收端将这些短数据帧依次处理。
这样就实现了一个较大的数据包,完整的传送到接收端。
在数据帧被分割时,帧类型与帧长字段中的‘S’位,将被置1。
当接收端检测到这一位被置位后,就知道数据帧已被分割,此时要做出对分割数据帧的相应处理。
下图介绍了长数据帧的收发过程:
client端通过发送RR数据帧来请求被分割的数据帧的其他部分。
6数据帧校验
HDLC使用16位CRC校验。
使用的多项式是:
具体的实现程序,可参照英文参考文献IEC62056-46的附录A。
(三)、链路层连接的建立,与断开
(1)建立连接
链路层在开始工作之前,要建立链路层连接(Association)。
这一步骤是通过client端发送SNRM数据帧,server端响应UA数据帧表示已建立连接,server端响应DM数据帧表示链路断开,连接没有建立。
UA数据帧常含有链路参数的配置信息。
链路参数是指2个控制数据传输的参数。
WINDOW_SIZEparameter;这个参数描述通讯时,通讯的双方一次发送数据帧的数目。
HDLC允许一次发送多帧数据。
MAXIMUM_INFORMATION_FIELD_LENGTHparameter.最大信息域长度,这个参数用于描述一个链路数据帧中用户数据的长度。
这两个参数的默认值如下
defaultWINDOW_SIZE=1;
defaultMAXIMUM_INFORMATION_FIELD_LENGTH=128(BYTEs)
具体在数据帧中有如下4个参数:
transmitmaximuminformationfieldlength
receivemaximuminformationfieldlength
transmitwindowsize
receivewindowsize
注:
这里没有给出数据帧的具体格式,而是用举例来说明如何组帧。
这种做法可能给读者带来不便。
但在DLMS的规约原文中就是用这种办法,故这里仍这样做。
以下举例说明如何建立连接:
//SNRM
S:
7ea0210022002303930b14818012050180060180070400000001080400000007655e7e
解释:
7e
a021帧类型与帧长
00220023目的地址
03源地址
93控制字
0b14帧头校验
8180SNRM标识
12grouplenth.
05Hparameteridentifier(maximuminformationfieldlengthtransmit)
01Hparameterlength(1octet)
80Hparametervalue(128bytes)
06Hparameteridentifier(maximuminformationfieldlengthreceive)
01Hparameterlength(1octet)
80Hparametervalue(128bytes)
07Hparameteridentifier(windowsize,transmit)
04Hparameterlength(4octets)
00Hparametervalue(highbyteofvalue)
00Hparametervalue
00Hparametervalue
01Hparametervalue(lowbyteofvalue)
08Hparameteridentifier(windowsize,receive)
04Hparameterlength(4octets)
00Hparametervalue(highbyteofvalue)
00Hparametervalue
00Hparametervalue
07Hparametervalue(lowbyteofvalue)
655e数据帧校验(CRC校验)
7e
在SNRM数据帧中的用户信息可以不出现,表示client接收server端的已配置数据。
//UA
R:
7EA02103002200237328F0818012050180060180070400000001080400000001533B7E
解释:
7E//Flag
0xA021//(type=a:
frametype3,s=0:
endofframe,len=021:
33bytes)
03//sourceaddress
0022
0023//destinationaddress
73//controlUA
28F0//hcs
818012050180060180070400000001080400000001
//informationfield
//parameternegotiation
//81
//80
//12
//050180:
maximuminformationfieldlengthtransmit(128BYTEs)
//060180:
maximuminformationfieldlengthreceive(128BYTEs)
//070400000001:
windowsize,transmit
(1)
//080400000001:
windowsize,receive
(1)
533B//fcs
7E
(2)断开连接
断开连接由于不用参数设置,所以比建立连接要简单。
Client端发送DISC数据帧,Server端响应UA或DM表示断开连接。
UA表示接到DISC后断开连接。
DM表示在接到DISC之前已处于断开状态。
一下仍给出具体的通讯实例:
S:
7ea00a00220023035306c77e
解释:
7ea00a0022002303
53//帧类型Disc
06c77e
R:
7EA00A03002200231F434C7E
解释:
7EA00A0300220023
1F//帧类型DM
434C7E
(四)、关于链路层的透明数据传输
0x7e
帧类型与帧长
目的地址域
源地址域
控制域
帧头校验
LLC帧头
用户数据信息
数据帧校验
0x7e
HDLC是一种透明数据传输的链路层协议。
用户数据信息与链路层没有任何关系。
在DLMS的协议模型中,链路层负责数据传输的可靠性,应用层处理用户数据信息。
链路层为应用层数据的传输提供透明通道。
四、DLMS应用层协议
理解DLMS应用层协议,需要首先建立以下几个概念:
ASN.1语法,BER编码,AXDR编码。
ASN.1语法是用来描述应用层数据帧的。
DLMS协议不同于其他一些简单通讯协议的地方就在于此。
他不是用一些表格,及一些固定的帧格式来描述的,而是用一种抽象语法语言来描述。
这样做的好处是,极大的提高了协议的抽象性和通用性,有利于程序移植。
BER编码和AXDR编码是用来实现ASN.1语法的。
为了实现ASN.1的抽象性和通用性,这个语法要用特殊的编码来描述。
这就引入了BER编码和AXDR编码。
以下分别解释这几项。
(一)ASN.1语法
一个用ASN.1语法描述的数据帧,看上去应该是下面的样子:
Name:
:
=[tag]IMPLICIT/EXPLICITDatatype
{
null-data[0]IMPLICITNULL,
item1[1]IMPLICIT/EXPLICITDatatypeA1OPTIONAL
item2[2]IMPLICIT/EXPLICITDatatypeA2OPTIONAL
item3[3]Datatype
…
}
下面解释这个语法描述。
Name-是这个数据帧的名字。
Tag-tag包含两部分classtype和一个数字
Classtype有以下四种:
1)Universal表明name定义的数据帧在所有的DLMS应用中的含义是唯一的。
2)Application表明name定义的数据帧的含义同具体的应用有关。
3)Private表明name定义的数据帧只在某一厂家的自定义范围之内。
4)Context
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DLMS 电能表 通讯 数据通讯 举例