您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 统计图表 > DLMS电能表通讯协议心得与个人理解
版号时间备注第一版2003-06-26来自网络第二版2010-11-5增加SL7000电表支持的OBIS注2017-07-10刘云先做下自我介绍,本人从事海外电表好几年了但是对DLMS协议的理解还是有所欠缺,一直在不断的自学,公司也是把其作为核心秘密保护。通过这几年的自我学习终于有对这个协议不太陌生,但是因为工作上这个已经被封装成库函数,具体的细节还是会存在不理解的。希望可以帮助那些在海上还没有找到灯塔的帆船。首先感谢DLMS电能表通讯协议的第一版作者,也希望我这个补充可以起到一块砖的作用,我主要是通过本地485数据帧的分析来帮助我们理解这个协议。如果第一遍看不懂请多看几遍!建立和释放应用连接:为建立和释放应用连接提供的服务如下:•COSEM-OPEN•COSEM-RELEASE•COSEM-ABORT//底层连接已断开的情况下通知上层进程对于本地通信信道,如RS485、红外等,当物理连接建立时,默认预连接的通道即存在,不需要额外的建立以及预连接管理。举例上位机发送一个SNRM数据帧控制码93具体数据:SEND:7EA00A0002400125934CB67E不包含应用层数据信息0x7e帧类型与帧长目的地址域源地址域控制域数据帧校验0x7e解析:在SNRM数据帧中的用户信息可以不出现,表示client接收server端的已配置数据StartFlagvalue=7Elength=1FrameFlagvalue=A00Alength=2Typevalue=3FrameLengthvalue=10DESTvalue=00024001length=4UMACvalue=1LMACvalue=4096SRCvalue=25length=1UMACvalue=18LMACvalue=falseCTRLvalue=93length=1HCSvalue=4CB6length=2EFvalue=7Elength=1RECEIVE:接受7EA023250002400173AFC38180140502012F0602012F070400000001080400000001750C7E解析:控制码73UA对SNRM的回应。包含应用层数据信息0x7e帧类型与帧长目的地址域源地址域控制域帧头校验LLC帧头用户数据信息数据帧校验0x7eStartFlagvalue=7Elength=1FrameFlagvalue=A023length=2Typevalue=3Segmentationvalue=falseFrameLengthvalue=35DESTvalue=25length=1UMACvalue=18LMACvalue=falseSRCvalue=00024001length=4UMACvalue=1LMACvalue=4096CTRLvalue=73length=1HCSvalue=AFC3length=2INFOvalue=8180140502012F0602012F070400000001080400000001length=23Typevalue=UAFrameServerWindowSizevalue=1ClientWindowSizevalue=1ServerMaxInfoLenvalue=303//用户数据信息最大长度ClientMaxInfoLenvalue=303FCSvalue=750Clength=2EFvalue=7Elength=1UA数据帧所包含的链路参数:Window_size通讯的双方一次发送数据帧的数目。(默认值为1)Maximun_infomation_field_length链路数据帧中用户数据的最大长度。(默认值为128)/////////////////////////////////////////////////////////////////////////////////第二阶段:报文交换DLMS/COSEM客户机DLMS/COSEM服务器低级别安全(LLS)认证AARQ中的口令高级别安全(HLS)认证Responsetochallenge:f(StoC)Responsetochallenge:f(CtoS)ApplicationAssociations(AAs)在服务器中预先设置:应用环境,认证机制,xDLMS环境,访问权限,安全环境第三阶段:释放AA第一阶段:建立AA无安全认证(最低级别的安全)第一步:CtoSAARQ第二步:StoCAARE第三步:发送f(StoC)第四步:接收f(CtoS)检查提议的/应用商定的环境COSEM-OPEN.request(Client_SAP,Server_SAP,(System_Title),(Client_User_Id),提议的环境)COSEM-OPEN.request(Client_SAP,Server_SAP,(System_Title),(Client_User_Id),Password,提议的环境)COSEM-OPEN.request(Client_SAP,Server_SAP,(System_Title),(Client_User_Id),CtoS,提议的环境)COSEM-OPEN.response(Client_SAP,Server_SAP,(System_Title),商定的环境)COSEM-OPEN.response(Client_SAP,Server_SAP,(System_Title),商定的环境)COSEM-OPEN.response(Client_SAP,Server_SAP,(System_Title),StoC,商定的环境)释放环境COSEM-RELEASE.request(Client_SAP,Server_SAP)COSEM-RELEASE.response(Client_SAP,Server_SAP)(受保护的)DLMS服务请求(受保护的)DLMS服务响应)调用CurrentAssociation对象的reply_to_HLS_authentication方法.消息可能被加密保护.检查提议的/应用商定的环境检查提议的/应用商定的环境为了能够访问数据,必须适当地认证客户机。AA建立时,客户机和服务器之间的认证环境被商定。这规定了各对等层所要求的认证,以及为了验证该认证所需要的安全算法。提供了三种数据访问安全级别:Lowestlevelsecurity(nosecurity);LowLevelSecurity(LLS);HighLevelSecurity(HLS).最低级别的安全性(无安全);低级别安全(LLS的);高级别安全(HLS)下面我们拿LLS举例。高级别的希望有人可以在后面补充。LLS的目的是为了采用验证所提供的口令来允许客户机的认证。服务器没有认证。当通讯通道提供足够安全性,能防止窃听和消息(口令)重放,通常使用本认证环境。在AA建立过程中,客户机必须提供正确的口令。如果口令正确,AA被建立且客户端能够访问给定AA中有效访问权限内的数据。否则,AA不会被建立。具体数据:AARQSEND:7EA04700024001251096E9E6E6006036A1090607608574050801018A0207808B0760857405080201AC0A80083132333435363738BE10040E01000000065F1F0400FFFFFFFFFFAD1A7E一个BER数据标识和一个BER数据长度构成一个16位的位串:bit15bit0datatypeclasses(bit15、14)Datatype(bit13)句柄【】datalength(bit7-bit0)1)datatypeclasses字段:这一字段用于对ASN.1语法中的classtype编码Universal(00)Application(01)Context-specific(10)Private(11)2)Datatype字段:用于描述数据内容的结构Primitive(0)简单类型Constructed(1)复合类型(数组或结构)3)datalength字段:用于描述数据内容的长度(以字节为单位)。被标记为OPTIONAL的项,在组成数据帧时都是可以被省略的。但有如下几个例外:(1)user-information携带着XDLMS信息(XDLMS将在稍后解释),是永远不能被省略的。(2)如Server端声明了身份校验(要求提供密码登陆),则AARQ中的sender-acse-requirements,mechanism-name,calling-authentication-value,AARE中的responder-acse-requirement,mechanism-name,responding-authentication-value都是不能被省略的。如果省略这些项,则请求数据将被拒绝。////7EA04700024001251096E9E6E60060//AARQ36//LENA1//tar09//len06//Context_name数据类型07len//应用语境名按照OBJECTIDENTIFIERASN.1规定,COSEM采用下列对象标识码值来标识应用语境名:COSEM_Application_Context_Name::={joint-iso-ccitt(2)country(16)country-name(756)identified-organisation(5)DLMS-UA(8)application-context(1)context_id(x)}(context_id=1;meansLNreferncing);608574050801018A//thetagfortheacse-requirementsfieldcomponent([10],IMPLICIT,Context-specific)02//len07//thenumberofunusedbitsinthelastbyteoftheBITSTRING//此处不太理解下面有7个bit位没有,在哪里规定这么个用法????????80//高位是BIT0encodingoftheauthenticationfunctional8B//mechanism-name:用于指明使用何种Authentication。共有4种。07//len60857405080201//具体内容为COSEM_Authentication_Mechanism_Name::={joint-iso-ccitt(2)country(16)country-name(756)identified-organization(5)DLMS-UA(8)authentication_mechanism_name(2)mechanism_id(x)}AC//thetagforthemechanism-namecomponent([12],Context-specific)0A//Len80///thechoiceforAuthentication-information(charstring[0]IMPLICITGraphicString)08//len3132333435363738//密码BE//userinformation(x-DLMScontext)10//Len(accordingtobytes)04//0E01//thetag(explicittag)oftheDLMSPDUCHOICE//--dedicated-key00//usageflagforthededicated-keycomponent(FALSE,notpresent)//--response-allowed00//usageflagfortheresponse-allowedcomponent(FALSE,defaultvalueconveyed)//--proposed-quality-of-serv
本文标题:DLMS电能表通讯协议心得与个人理解
链接地址:https://www.777doc.com/doc-1427327 .html