这篇文章介绍怎么读取正向有功总电能
我们在用DLT645-2007规约的时候,想要读正向有功总电能直接根据对象标识(00010000)就可以了,非常简单快捷;但是在DLT698-2017里面,需要先找到 "电能量的接口类",然后根据类的定义读相关属性,每个属性根据索引ID来区分。
下面以电能量接口类为例,演示读取一个属性和多个属性
GetRequestNormal 读取一个对象属性
68 15 00 43 03 91 78 41 28 00 eb 64 05 01 00 00 10 04 00 00 0c cb 16
帧头:68 15 00 43 03 91 78 41 28 00 eb 64
01:传输方向位和启动标志位(客户机发起的请求)
03:服务器地址特征
(011不是3吗?仔细看文档0-15对应表示1-16) 91 78 41 28:服务器地址(28417891)
eb 64:帧头检验码
APDU部分:05 01 00 00 10 04 00 00
01:然后找到GET-Request,请求读取一个对象属性
然后,看GetRequestNormal的数据类型
00 10:OI(电能量 总 正向有功 合相)
0000 0100:
0000:特征(0)
0100:类属性,扩展精度总及费率电能量数组(4) 68 46 00 C3 03 91 78 41 28 00 06 2D 85 01 00 00 10 04 00 01 01 05 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 00 00 C3 52 16
85 01 00 00 10 04 00 01 01 05 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 00 00
00 10 04 00:OAD(和请求的一致)
01:读取结果(数据Data)
01:数据类型 array
15:数据类型(long64-unsigned,64位正整数,占8字节) 00 00 00 00 00 00 00 00:数值(0)
15 00 00 00 00 00 00 00 00:64位正整数,数值0
15 00 00 00 00 00 00 00 00:64位正整数,数值0
15 00 00 00 00 00 00 00 00:64位正整数,数值0
15 00 00 00 00 00 00 00 00:64位正整数,数值0
00:时间标签域
GetRequestNormalList 读取若干个对象属性
68 26 00 43 03 91 78 41 28 09 80 27 05 02 3e 05 00 10 01 00 00 10 02 00 00 10 03 00 00 10 04 00 00 10 05 00 00 14 be 16
帧头:68 26 00 43 03 91 78 41 28 09 80 27
01:传输方向位和启动标志位(客户机发起的请求)
03:服务器地址特征
0011:地址长度(4)
91 78 41 28:服务器地址(28417891)
80 27:帧头检验码
05 02 3e 05 00 10 01 00 00 10 02 00 00 10 03 00 00 10 04 00 00 10 05 00 00
02:读若干个对象属性
00 10 01 00:正向有功总电能,对象属性1
00 10 02 00:正向有功总电能,对象属性2
00 10 03 00:正向有功总电能,对象属性3
00 10 04 00:正向有功总电能,对象属性4
00 10 05 00:正向有功总电能,对象属性5
14 be:校验码
16:结束符
68 80 00 c3 03 91 78 41 28 09 6c 36 85 02 3e 05 00 10 01 00 01 09 02 00 10 00 10 02 00 01 01 05 06 00 00 00 00 06 00 00 00 00 06 00 00 00 00 06 00 00 00 00 06 00 00 00 00 00 10 03 00 01 59 fe 21 00 10 04 00 01 01 05 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 00 10 05 00 01 59 fc 21 00 00 d2 3f 16
85 02 3e 05 00 10 01 00 01 09 02 00 10 00 10 02 00 01 01 05 06 00 00 00 00 06 00 00 00 00 06 00 00 00 00 06 00 00 00 00 06 00 00 00 00 00 10 03 00 01 59 fe 21 00 10 04 00 01 01 05 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 00 00 10 05 00 01 59 fc 21 00 00
85:十进制是133,读取响应
从数据类型可看出,Sequence of a-ResultNormal,它的结果是由多个A-ResultNormal组成,意思就是每一个结果都是一个完整的A-ResultNormal;那我们再看一遍,表52
05:长度(5)
第一个ResultNormal
00 10 01 00:OAD正向有功总电能,对象属性1(逻辑名)
09:类型9(octet-string,占1个字节) 00 10:这两个字节是内容(逻辑名)
00 10 02 00:正向有功总电能,对象属性2(总及费率电能量数组)
01:读取结果(数据)
01:数据类型 array
05:长度
06 00 00 00 00:类型6,数值0(总)
06 00 00 00 00:类型6,数值0(费率1,尖)
06 00 00 00 00:类型6,数值0(费率2,峰)
06 00 00 00 00:类型6,数值0(费率3,平)
06 00 00 00 00:类型6,数值0(费率4,谷)
第三个ResultNormal
00 10 03 00:正向有功总电能,对象属性3(换算及单位)
01:读取结果(数据)
21:单位,看枚举定义表(kWh有功能量)
第四个ResultNormal
00 10 04 00:正向有功总电能,对象属性4
01:读取结果(数据)
01:数据类型 array
05:长度
15 00 00 00 00 00 00 00 00:类型21,数值0 15 00 00 00 00 00 00 00 00:类型21,数值0
15 00 00 00 00 00 00 00 00:类型21,数值0
15 00 00 00 00 00 00 00 00:类型21,数值0
15 00 00 00 00 00 00 00 00:类型21,数值0
第五个ResultNormal
00 10 05 00:正向有功总电能,对象属性5
01:读取结果(数据)
21:单位,看枚举定义表(kWh有功能量)
00:无时间标签
这样的电力规约你受得了吗朋友们
相信大家都对面向对象编程很了解,但是要把面向对象的规约转换成传输需要的16进制,抽象以后的反抽象,确实不太容易。