《面向对象的用电信息数据交换协议》-698协议的理解

写在前面
DL/T 698.45是面对对象的通信协议,适用于主站和采集终端、采集终端和电能表、主站和电能表之间。DL/T 645是面向过程的通信协议适用于采集终端和电能表之间。698是最新的协议,645是旧协议。
面向过程:数据和方法是分离的,同类的数据散装在一起,封装性差。
面向对象:把相关的数据和方法组合为一个整体来看待。
面向对象必然有类和对象:
类描述了一组有相同特性(属性)和相同行为(方法)的对象。在DL/T 698协议中具有共享公共特征的对象归纳为接口类(IC),接口类是同一类对象共同特征及行为的表达模板。每个类对应一个类标识码–类似一个人对应一个身份证。接口类由类标识码(c1ass_id)进行标识。接口类的公共特征(包括属性和方法) 适用于该类的所有实例。接口类的实例称为接口类对象,简称对象。一个对象只能属于一个接口类。一个对象对应于一个唯一的标识,即对象标识(OI)
DL/T698.45中电能量接口类(DL/T698.4协议中的一个类,类标识class_id=1)举例如表1;
![在这在这里插入图片描述
在698.45协议中,一个功能操作代表一个实例对象,然后根据类标识码(c1ass_id)找到对应的类。根据对象拥有的属性和方法进行读取、设置、操作等。
698.45-2017协议文档包含8个章节和附录
第 1、 2、 3、4章 分别定义了本协议的适用范围、 引用文件、术语定义和符号和缩略语
第5章 阐述本协议的通信架构。
第6章 定义了协议的链路层结构。
第7章 内容是协议应用层规范和应用数据单元用到的数据类型。
第8章 接口类与对象标识,规定了接口类的描述方法,定义了26个接口类,定义了对象标识系统,规定了接口类和对象标识的管理办法 。
附录章节包含对象标识,物理单位,一致性协商,链路层校验算法,安全认证说明,安全模式参数,状态字和APDU编码实例 。

1. 通信架构

客户机和服务器信息交换模型如图1所示
在这里插入图片描述
图1 信息交换模型
在这里插入图片描述
客户机和服务器的应用进程分别位于不同的设备;
(1)物理层规定了通信单元或其他终端设备与多功能电表的通信接口、接口的物理与电气特性,常见的物理层传输方式有对于RS485、红外、载波等通信通道。
(2)数据链路层将数据包装成可传输的帧格式。
(3)应用层包含交互的数据、报文。是唯一包含服务组件的协议层,应用层协议数据单元APDU通过数据链路层将数据包装成可传输的帧格式。
客户机和服务器有两种方向的数据交换。
(1)请求/响应类型的数据交换,客户机请求从机,服务器提供响应,涉及到读取、设置、操作、代理等服务。
(2)通知/确认类型的数据交换,服务器主动上报,客户机回复确认,涉及到上报服务。
客户机,包括主站(某上位机)或终端(集中器),服务器这里就是电表。

2 链路层

698帧结构图a)与645帧结构图b)对比
在这里插入图片描述
数据链路层规定了数据传输的报文信息、信息传输的编码规则和传输规则。其中包含帧起始标志(68H)、长度域L、控制域C、地址域A、帧头校验HCS、链路用户数据、帧校验FCS和帧结束标志(16H)。
举例1
帧数据:68 1f 00 43 05 08 00 00 00 00 00 10 b5 0b 06 01 04 40 00 02 00 1c 07 e0 09 0b 12 1e 00 00 05 69 16
①68:起始字符
②1f 00:长度域L,由2字节组成,取bit0-bit13,指除起始字符和结束字符之外的帧字节数。
③43:控制域C,1字节,定义如下图。
在这里插入图片描述
bit7和bit6控制着帧格式的传输方向。bit7=0 表示此帧是由客户机发出的; bit7=1 表示此帧是由服务器发出的;bit6=0 表示此帧是由服务器发起的; bit6=1 表示此帧是由客户机发起的。
分帧标志位: bit5=0,表示此帧是完整用户数据; bit5=1,表示此帧链路为用户数据片段。
43即01000011:可看出来该帧是由客户机发起一个请求,功能码为应用连接管理及数据交换服务。
④05 08 00 00 00 00 00:服务器地址。服务器地址定义如下:
在这里插入图片描述
bit0-bit3:地址字节数,注意此处是加1表示字节长度
bit4-bit5:逻辑地址
bit6-bit7:0表示单地址,1表示通配地址,2表示组地址,3表示广播地址
此处05 08 00 00 00 00 00中,05表示单地址,地址长度为5+1,08 00 00 00 00 00表示真实地址00 00 00 00 00 08.
⑤10:客户机地址16.
⑥b5 0b:帧头校验,是对帧头部分除起始字符和帧头检验本身之外的所有字节的校验
⑦06 01 04 40 00 02 00 1c 07 e0 09 0b 12 1e 00 00:应用层数据。具体含义见第三节应用层。
⑧05 69:帧校验,是对整帧除起始字符、结束字符和帧校验本身之外的所有字节的校验

3 应用层

DL/T698.45应用层数据单元直接以实例进行说明;说明之前理解三部分内容。

3.1 数据类型

DL/T698.45协议的应用层数据单元由各种数据类型(结构体)组成。DL/T698.45协议定义了许多数据类型,这些DL/T698.45自己定义的数据类型的元素大多是有许多基本或通用的数据类型组成。
举例1
DL/T698.45协议定义的Data数据类型:几乎包括了在DL/T698.45协议出现的所有类型;
在这里插入图片描述
0-28是基本的、通用的一些数据类型,80-96是DL/T698.45协议自己定义的数据类型。

3.2 应用服务

应用层服务分四类:
① 预连接服务(同时适用于客户机和服务器)
预连接服务(LINK)由服务器发起,客户机响应。DL/T 698.45存在一个预先建立的应用连接,在进行应用连接之前,首先建立一个预连接,该预连接可以满足最低的采集应用需求:比如登录,心跳。
在这里插入图片描述
对于 RS485、红外、载波等通信通道,当物理连接建立后,预连接的通道即
存在,不需额外建立预连接。
② 客户机应用层服务(适用于客户机);
客户机应用层数据单元( Client-APDU)的数据类型定义如图 5:
在这里插入图片描述
客户机的数据单元是定义的一个 SEQUENCE 数据类型,包括许多服务,主要
用到读取、设置、操作等请求。每个请求都是对应一个数据类型。
③ 服务器应用层服务(适用于服务器);
服务器应用层数据单元( Server-APDU) 的数据类型定义如图 6
在这里插入图片描述
服务器的数据单元是定义的一个 SEQUENCE 数据类型,主要用到读取响应、设置响应、操作响应。每个响应都是对应一个数据类型。

3.2 对象标识

系统基于对象进行建模和设计,首先要解决的一个问题便是对象的命名问题。这个就如人类社会系统中每个人类对象必须有一个姓名(身份证号)一样,这样才可以相互沟通和识别。对象的名称就是对象标识OI(object identification)。例如正向有功电能的0I为O010。
本协议在引用一个对象时,采用了直接引用和间接引用两种形式。直接存在于终端设备内的对象,采用直接引用的方式。这类对象必须有唯一的名称,例如该名称下电能表设备中的正向有功电能对象(0010),采集终端中的日期时间对象 (40OO)。如图7所示
在这里插入图片描述
存在于设备内集合类对象之中的对象,采用间接引用的方式。这类对象的类具有唯一的名称,但是具体的实例对象是没有名称的,不能通过直接引用的方式确定一个唯一对象。
举例1
终端读取电能表在2016-01-20 00: 00: 00的日冻结正向有功总及费率电能量、日冻结反向有功电能总及费率。
这里涉及4个实例对象;
① 日冻结---------------------------对象标识OAD-50 04 02 00
② 数据冻结时间---------------------对象标识OAD-20 21 02 00
③ 正向有功总及费率电能量------------对象标识OAD-00 10 02 00
④ 反向有功总及费率电能量------------对象标识OAD-00 20 02 00
实例间接引用是用到-请求读取记录型对象属性(GetRequestRecord)-服务来间接引用。比如日冻结,X轴代表有功功率(正向,反向),Y轴某一日,来指定需要的对象,这就是采用间接引用机制。如图8所示;
在这里插入图片描述
日冻结对象的间接引用机制的二维图如图9:
在这里插入图片描述
图9 间接引用的二维描述
这里的名称系统,就不需要为上图中的每一个节点指定一个唯一的标识名称,从而简化名称管理,使得应用业务可以在X轴和Y轴根据需要进行随意扩展,而不影响己有的对象标识系统.

4 实例分析

4.1 读取

1:读取电能表的通信地址-客户机发送: 05 01 01 40 01 02 00 00
①05——[5]表示客户机应用层数据单元(Client-APDU)的数据类型应用层服务(CHOICE)中编号[5]元素-发起读取请求-GET-Request数据类型。
在这里插入图片描述
②01——[1]表示GET-Reques数据类型中元素[1]-读取一个对象属性-GetRequestNormal数据类型
在这里插入图片描述
③01——GetRequestNormal数据类型的第一个元素PIID(序号及优先标志(Priority and Invoke ID)数据类型,
在这里插入图片描述
01 的二进制表示是0000 0001也就是服务优先级为0-普通优先级,服务序号为1
④40 01 02 00——GetRequestNormal数据类型的第二个元素-一个对象属性描述符OAD。
40 01-是对象标识OI,OI由两字节组成,采用十六进制编码表示,其格式定义下对象标识按字节划分为OIA和OIB,OIA按位划分为OIA1和OIA2,OIB按位划分为OIB1和OIB2。4001所表示对象的就是电能表通信地址。如下图所示
在这里插入图片描述
IC(接口类(Interface Class)=8,也就是类标识码class_id=8,表示编号为8的接口类-参数变量类。如下图所示:
在这里插入图片描述
02-属性标识及特征
参数变量类第一个属性是逻辑名:
逻辑名-接口类逻辑名就是类的名称,如:电能量类、最大需量类、冻结类等;此处就是逻辑名是参数变量类
参数变量类第二个属性是参数:
这里是读取电能表的通信地址,选择属性2,属性的编号即对象属性描述符(OAD)的属性标识;所以属性标识及特征为02。
00-属性内元素索引
读取电能表的通信地址是读取属性的全部内容。
⑤ 00——客户机应用层数据单元(Client-APDU)的数据类型中时间标签域(TimeTag OPTIONAL)。时间标签域(TimeTag)的数据类型定义如下图。
在这里插入图片描述
00 代表没有时间标签,采用系统默认时间。
2:服务器响应: 85 01 01 40 01 02 00 01 09 06 12 34 56 78 90 12 00 00
① 85——[133] 服务器应用层数据单元(Server-APDU)数据类型中应用层服务编号为[133]-读取响应-GET-Response数据类型。如下所示。
注133为十进制数,转化为十六进制为85
② 01——[1] 表示GET-Response数据类型中第[1]个元素-读取一个对象属性的响应-GetResponseNormal数据类型,如下所示。
在这里插入图片描述
③ 01——GetResponseNormal数据类型的第一个元素PIID-ACD(带请求访问标识的序号及优先标志(Priority and Invoke ID with ACD)数据类型。
在这里插入图片描述
01 的二进制表示是0000 0001也就是服务优先级为0-普通优先级,服务序号为1。
④ 40 01 02 00——OAD与读取④相同。
01 09 06——01表示GetResponseNormal→A-ResultNormal∷ =SEQUENCE→Get-Result∷ =CHOICE的结果类型, Get-Result中[0]表示错误信息,[1]表示读取成功的数据,数据类型为Data。
⑤09表示Data数据类型编号[9]数据类型octet-string,Data数据类型见图3。
06表示octet-string类型的所占字节数SIZE(6)。
⑥12 34 56 78 90 12——返回的数据内容-通信地址:123456789012
⑦00—— FollowReport OPTIONAL=0 表示没有上报信息
⑧00—— 没有时间标签

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐