DLT645-1997通信规约解读

DLT645-1997通信规约解读
该通信规约适⽤于本地系统中多功能表的费率装置与⼿持单元(HHU)或其它数据终端设备进⾏点对点的或⼀主多从的数据交换⽅式,规定了它们之间的物理连接、通信链路及应⽤技术规范。该协议在做“电⼒监控”、“⽔监控”等“⼯控领域”,具有⼴泛的应⽤。协议具体内容可以从⽹上Google,下⾯主要介绍下协议的解析⽅法。
DL645协议需要先发送“前导字节”,⽤来唤醒从站,当然有些设备是不需要这样唤醒的。在发送帧信息之前,先发送1-4个字节FEH,以唤醒接收⽅("FEH",H表⽰16进制,是⼀个字节),  “前导字节”  +  “取数据报⽂”=“整体报⽂”。
⾸先我们先整体了解⼀个发送报⽂“68 12 34 56 78 90 12 68 01 02 43 C3 cs 16”
在这之前呢,先看⼀下BCD码。
BCD码:代码。
⽐如:
0=0000
1=0001
2=0010
3=0011
4=0100
5=0101
6=0110
7=0111
8=1000
9=1001
BCD码:ASCII表⽰(都是字符)
BCD码都是由0~9,10个字符构成。
也就是说,BCD码⼀个字节是两位,⼀位是0~9,⼀个字节能够表⽰00~99。
BCD码1位是2进制的4位。按16进制表⽰,没有ABCDEF。
帧格式(DL/T645-1997通讯规约标准⽂档中)
帧是传送信息的基本单元。帧格式如图所⽰。
说明代码
帧起始符68H
地址域A0 A1 A2 A3 A4 A5
帧起始符68H
控制码C 数据长度域L
数据域DATA
校验码CS
张晞
结束符16H
4.2.1 帧起始符68H:标识⼀帧信息的开始,其值为68H=01101000B。
4.2.2地址域A0∽A5:地址域由6个字节构成,每字节2位BCD码。地址长度为12位⼗进制数,可以为表号、资产号、⽤户号、设备号等。具体使⽤可由⽤户⾃⾏决定。当使⽤的地址码长度不⾜6字节时,⽤⼗六进制AAH补⾜6字节。低地址位在先,⾼地址位在后。当地址为999999999999H时,为⼴播地址。
4.2.3 控制码C:控制码的格式如下所⽰。
D7D6D5D4D3D2D1D0
功能码
后续帧标志
从站异常标志
传送⽅向
D7=0:由主站发出的命令帧
D7=1:由从站发出的应答帧
D6=0:从站正确应答
D6=1:从站对异常信息的应答
D5=0:⽆后续数据帧
D5=1:有后续数据帧
D4∽D0:请求及应答功能码
00000:保留
00001:读数据
00010:读后续数据
00011:重读数据
淮北市国税局00100:写数据
01000:⼴播校时
01010:写设备地址
01100:更改通信速率
01111:修改密码
10000:最⼤需量清零
4.2.4 数据长度L:L为数据域的字节数。读数据时L≤200,写数据时L≤50,L=0 表⽰⽆数据域。
4.2.5 数据域DATA:数据域包括数据标识和数据、密码等,其结构随控制码的功能⽽改变。传输时发送⽅按字节进⾏加33H处理,接收⽅按字节进⾏减33H处理。
4.2.6 校验码CS:从帧起始符开始到校验码之前的所有各字节的模256的和,即各字节⼆进制算术和,不计超过256的溢出值。
4.2.7结束符号16H:标识⼀帧信息的结束,其值为16H=00010110B。
68 12 34 56 78 90 12 68 01 02 43 C3 cs 16
说明如下:
刚度比68(帧起始符)
12  34  56  78  90  12 (6字节,没字节两位,共12位地址,BCD码表⽰。)
68(帧起始符)
01(控制码“包含功能码”= 01 = 读取数据)
02 (数据域长度,指 “43,C3”⼀共是两字节。)
“43 c3” (“43 C3”是数据域,表⽰读取数据类型 = “10 90”,发送报⽂中数据域需要做“+0x33处理”)
cs(加校验和,⼀个字节,根据前⾯的计算)
16(帧结束符)
下⾯详细的解释下:
帧起始符(645协议规定由68H开始,16进制。)
0x12(BCD数值码) --- 12(string)      转为字符串0x12.ToString("X2")
0x45(BCD数值码) --- 45(string)
如果表地址为:000021010203(电表上看到的地址串),⾥⾯就是12位(字符串来看)
通讯时,使⽤ 0x00, 0x00 , 0x21 ,0x01 , 0x02 , 0x03, 6个字节表⽰地址,但发送的时候要先发低字节,再发⾼字节。发送时也是“0x03,0x02,0x01, 0x21,0x00,0x00”
控制码:
从电脑到表具:0(主从站⽅向)+0(设备没问题)+0(有⽆后续帧)+00001(读)=1=0x1
数据域长度:表⽰数据域有多长
串⼝传输⽅式:所有数据项均先传送低位字节,后传送⾼位字节
数据域内容,也就是“数据类型+数据项”(⽐如电表): 1001(电能量)+00(当前)+00(有功)+0001(正向电能)+0000(总点能)
02(数据域长度)
10
90(数据域内容,两个字节)拼接后的报⽂,要先发低字节(90),再发10. 发送报⽂要加上"33",最后数据域就是"10 + 33"和"90 + 33"最终就是“ 43    c3”。
02 10 90 == 02  (10 + 33)    (90 + 33) = 02  43    c3
返回报⽂:
68  12  34 56 78 90 12 68 81 06 43 c3 33 44 55 66 cs 16
12 34 56 78 90 12(地址域)
68(帧起始符)
81(控制码,返回有功总电能“10000001”,读取数据)
06(数据域长度)
43 C3(数据域)
33  44  55  66 (数据项,四字节)
数据项要减去“33H”,根据数据类型(附录)点⼩数点。
33  44  55  66 (数据域数据计算) = (33 - 33) (44 - 33) (55 - 33) (66 - 33) = 00112233 = 1122.33  kWh
最后我们来看⼀个电表实例,取地址为“694561”的电表的“反相有功电能(发电量)”。
实例如下:
⼀、发送报⽂
1、电表地址:694561(地址,6位BCD码,BCD码1位是2进制的4位。按16进制表⽰,没有ABCDEF。不⾜12位,需要在⾼位“补0”。)。
2、完善地址:000000694561(12位BCD码)
3、前导符字节:0xFE
4、帧起始符:0x68
5、地址域:0x614569000000(第字节在前,⾼字节在后。DL645协议,先发低字节再发⾼字节。)
6、帧起始符:0x68
7、控制码:0x01(读数据1,读后续数据2,其中还包含功能码等。)
8、数据域长度:0x02(2字节)
9、待发送数据类型(数据类型放在数据域中):9(1001,电能量)+0(0000,00当前,00有功)+ 2(0010,反向电能)+0(0000,总电能)
10、数据域+33H:0x90+0x33=0xC3 0x20+0x33=0x53
11、发送数据域:0x53 0xC3
12、校验码:CS(1个字节,⽐如计算出来的是“0x01”)
13、结束符:0x16
14、发送字符串:0xFE 0x68 0x61 45 69 00 00 00 0x68 0x01 0x02 0x53 0xC3 0x01 0x16
15、Byte[] bufferlist=new Byte[] {0xFE,0x68,0x61,0x45,0x69,0x00,0x00,0x00,0x68,0x01,0x02,0x53,0xC3,0x01,0x16 }
DL645编码过程:
增加“前导符字节”(可以没有)
增加帧起始符
增加地址域
增加帧起始符
增加控制码
增加数据域长度
增加数据域
计算CS校验码,并增加
增加结束符
⼆、返回报⽂
kernelfaultcheck
1、帧起始符:0x68
2、地址域:0x614569000000
3、帧起始符:0x68
4、控制码:传送⽅向(0—电脑到表具,1—表具到电脑),从站异常标志(0—表具⽆异常,1—表具有异常),后续帧标识(0—⽆后续数据,1—有后续数据)
功能码(读数据):00001
最后是10000001(读反相有功电能。从站向主站发送,第⼀位是“1”。主站向从站,第⼀位是“0”。),也就是“0x81”
5、数据域长度:
返回数据长度,根据请求的数据类型来定的。⽐如,电能量是“6个字节”,包含“2的数据类型”和“4字节的数据项”。
0x06
6、数据域
正气歌序数据类型:0x53(低字节先返回) 0xC3(⾼字节后返回)
数据:0x33 0x78 0x34 0x66(先返回低字节,再返回⾼字节。电表是发送⽅。)
7、数据减去“33H”
0x33-0x33=0x00
0x78-0x33=0x45
金华税案
0x34-0x33-0x01
0x66-0x33=0x33
8、按BCD码解析16进制数
single datas = single.parse(0x33.ToString("X2");+0x01.ToString("X2");+0x45.ToString("X2");+"."+0x00.ToString("X2");)
9、最后结果
datas=datas+" kWh";
结果就是:330145.00 kWh  (电表总反相有功电能量,也就是“发电量”。耗电量是“正相有功电能量”)

本文发布于:2024-09-22 14:34:39,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/613151.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   字节   发送   地址   长度   数据类型   返回   协议
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议