DLT698协议
DLT698协议为提高用电信息采集系统的业务适应性、采集效率、安全性和数据溯源性,规范用电信息数据交换协议的通信架构、数据链路层、应用层、接口类与对象标识,制定本标准。
使用范围
本标准规定了用电信息数据交换协议的通信架构、数据链路层、应用层、接口类与对象标识。本标准适用于用电信息采集系统主站(以下简称“主站”)、采集终端、电能表之间的通信数据交换。水、气、热等表计的数据采集可参照使用。
面向对象的用电信息数据交换协议
基于面向对象建模方法建立的一套适用于用电信息采集系统的互操作性数据交换通信协议。面向对象建模以接口类实现继承关系,以对象来封装数据及操作,以对象为互操作的基本要素。
客户机/服务器
主站访问采集终端时,采集终端为服务器,主站为客户机;主站访问电能表时,电能表为服务器,主站为客户机;采集终端访问电能表时,电能表为服务器,采集终端为客户机。
客户机和服务器之间的信息交换借助于通信协议实现。客户机和服务器的应用进程使用协议应用层的服务,应用层是唯一包含服务组件的协议层,应用层数据单元(APDU)通过数据链路层协议传输帧的链路用户数据域传输。
字节格式
链路层帧的基本单元为8位字节,传输顺序为低位在前,高位在后;低字节在前,高字节在后。
帧结构
长度域L
由2字节组成,
控制域C
为1个字节,按位或位的组合使用
分帧标志位: bit5=0,表示此帧链路用户数据为完整APDU(应用层数据单元);bit5=1,表示此帧链路用户数据为APDU(应用层数据单元)片段。
扰码标志位: bit3=0,表示此帧链路用户数据不加扰码;bit3=1,表示此帧链路用户数据加扰码,发送时链路用户数据按字节加33H。
例:控制域 值为43 ,则转换为2进制 0 1 0 0 0 0 1 1,则代表 DIR PRM为0 1代表客户端发起的请求,分帧标识位为0表示此帧链路用户数据为完整APDU,bit4保留为0,扰码标识为0则代表不加扰码,最后功能码是011也就是3代表用户数据
地址域
地址域A由可变字节数的服务器地址SA(服务器通信地址)和1字节的客户机地址CA(客户机通信地址)组成
服务器地址SA由1字节地址特征和N个字节地址组成
1、bit0…bit3:为地址的字节数,取值范围:0…15,对应表示 1…16 个字节长度;
2、 bit4…bit5:逻辑地址;
3、bit6…bit7:为服务器地址的地址类型,0 表示单地址,1 表示通配地址,2 表示组地址,3表示广播地址。
3.1、单地址的长度为可变字节。
3.2、组地址的长度为可变字节。组地址对系统中属于该群组的服务器有效,无需应答。
3.3、通配地址的长度为可变字节。每字节二进制高低各4位分别编码表示两个0到9的十进制数或通配符AH。通配符按十进制位使用,对应的十进制位为AH时,表示该十进制位可为0到9的任意值。
3.4、广播地址的长度固定为1字节,广播地址=AAH。广播地址对系统所有服务器有效,无需应答。
4、 编码方式为压缩 BCD 码,0 保留;
5、当服务器地址的十进制位数为奇数时,最后字节的 bit3…bit0 用 FH 表示。
例:地址为030200000002
03为特征地址转换为二进制:00000011 代表的是 地址类型00单地址,他的地址长度是可变的。00逻辑地址,0011地址长度
服务地址为:02000000 高低转换实际为 00 00 00 00 02
客户端地址 02(0表示不关注客户机地址)
帧头校验 HCS
帧头校验HCS为2字节,是对帧头部分不包含起始字符和HCS本身的所有字节的校验
链路用户数据
对于本地通信信道 如:RS485、红外等。当物理连接建立时,默认预连接的通道即存在,不需要额外的建立以及预连接管理。
例:APDU 05 01 01 40 01 02 00 00
响应:85 01 01 40 01 02 00 01 09 06 12 34 56 78 90 12 00 00
下面解析实例:
05:代表读取 GET-Request
01:代表请求读取一个对象属性(GET-Request)
01 40 01 02 00 是PIID和OAD(GetRequestNormal)如下
01:PIID(高优先级)
40 01 02 00:OAD
下面是对象标识的定义 OI:
对象标识(OI)由两字节组成,采用十六进制编码表示,其格式定义见图15 。对象标识按字节划分为OIA和OIB,OIA按位划分为OIA1和OIA2,OIB按位划分为OIB1和OIB2。本标准采用分类编码的方式定义各个对象标识编码,未定义的对象标识编码保留
40 01 02 00 即代表读取表好。
00:无时间标签
总结:APDU 05 01 01 40 01 02 00 00 就是高优先级的读取表号,无时间标签
帧校验
FCS帧校验FCS为2字节,是对整帧不包含起始字符、结束字符和FCS本身的所有字节的校验
结束字符
数据解析
85 01 01 40 01 02 00 01 09 06 12 34 56 78 90 12 00 00
电表相当于服务端,我们可以查看下服务端的APDU响应组成:
85转换成十进制就是133,代表读取响应(GET-Response)
01代表读取一个对象属性的响应(GetResponseNormal)
01PIID高优先级,
01 40 01 02:OAD和之前发送请求的一一对应
01读取结果
09:类型(octet-string)
06:数据长度
12 34 56 78 90 12:数据,即表地址为123456789012
00:代表无后续消息
00:标识无时间标签
总结:85 01 01 40 01 02 00 01 09 06 12 34 56 78 90 12 00 00 标识服务端返回了一个读取属性的结果指令,指令是读取表地址的,返回的数据长度为6,表地址为123456789012无后续消息 无时间标签。
读取若干个对象属性示例:
读取三相电压、电流,
05 02 02 02 20 00 02 00 20 01 02 00 00
响应
85 02 02 02 20 00 02 00 01 01 03 12 09 6D 12 09 6D 12 09 6D 20 01 02 00 01 01 03 05 00 00 03 E8 05 00 00 03 E8 05 00 00 03 E8 00 00
85转换成十进制就是133,代表读取响应(GET-Response)
01代表读取一个对象属性的响应(GetResponseNormalList)
02PIID
02个数=2
20 00 02 00:OAD电压
01:数据
01:类型(arry)数组
03:代表数据个数
12 09 6D :12十进制18 对应的数据类型是long-unsigned 096d转换为十进制为241.3V A相
12 09 6D :12十进制18 对应的数据类型是long-unsigned 096d转换为十进制为241.3V B相
12 09 6D :12十进制18 对应的数据类型是long-unsigned 096d转换为十进制为241.3V C相
20 01 02 00 :oad电流
01:数据
01:类型(arry)数组
03:代表数据个数
05 00 00 03 E8 :05类型double-long 00 00 03 E8转换为十进制为 1A A相
05 00 00 03 E8 :05类型double-long 00 00 03 E8转换为十进制为 1A B相
05 00 00 03 E8 :05类型double-long 00 00 03 E8转换为十进制为 1A C相
00:代表无后续消息
00:标识无时间标签