转载链接:https://blog.csdn.net/wangkai_123456/article/details/24271017
#DL/T645-1997
DL645-1997协议需要先发送“前导字节”,用来唤醒从站,当然有些设备是不需要这样唤醒的。在发送帧信息之前,先发送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通讯规约标准文档中)
帧是传送信息的基本单元。帧格式如图所示。
图片:
4.2.1 帧起始符68H:标识一帧信息的开始,其值为68H=01101000B。
4.2.2地址域A0∽A5:地址域由6个字节构成,每字节2位BCD码。地址长度为12位十进制数,可以为表号、资产号、用户号、设备号等。具体使用可由用户自行决定。当使用的地址码长度不足6字节时,用十六进制AAH补足6字节。低地址位在先,高地址位在后。当地址为999999999999H时,为广播地址。
4.2.3 控制码C:控制码的格式如下所示。
图片:

功能码
后续帧标志
从站异常标志
传送方向
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
68(帧起始符)
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 0x10+0x33=0x43
11、发送数据域:0x43 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,0x43,0xC3,0x01,0x16 }
DL645编码过程:
增加“前导符字节”(可以没有)
增加帧起始符
增加地址域
增加帧起始符
增加控制码
增加数据域长度
增加数据域
计算CS校验码,并增加
增加结束符

二、返回报文
1、帧起始符:0x68
2、地址域:0x614569000000
3、帧起始符:0x68
4、控制码:传送方向(0—电脑到表具,1—表具到电脑),从站异常标志(0—表具无异常,1—表具有异常),后续帧标识(0—无后续数据,1—有后续数据)
功能码(读数据):00001
最后是10000001(读反相有功电能。从站向主站发送,第一位是“1”。主站向从站,第一位是“0”。),也就是“0x81”
5、数据域长度:
返回数据长度,根据请求的数据类型来定的。比如,电能量是“6个字节”,包含“2的数据类型”和“4字节的数据项”。

0x06
6、数据域
数据类型:0x43(低字节先返回) 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 (电表总反相有功电能量,也就是“发电量”。耗电量是“正相有功电能量”)

DL/T645-1997相关推荐

  1. DL/T645规约解析

    摘要:DL/T645规约是针对电表通信而制定的通信协议,主要有两个版本,分别是DL/T645-97和DL/T645-07,97代表是97年制定的协议,07则是2007年修正后的协议,而且基本上07版出 ...

  2. DL/T645、DL/T698.45协议详解

    用电信息采集系统简述 用户用电信息采集系统是通过对配电变压器和终端用户的用电数据的采集和分析,实现用电监控.推行阶梯定价.负荷管理.线损分析,最终达到自动抄表.错峰用电.用电检查(防窃电) .负荷预测 ...

  3. 国网铅封电表红外通讯采集器是干什么用的?一分钟搞懂

    无线红外通讯采集器抄表终端是一款基于红外通讯,4G无线传输,直流宽电压供电的通用电表燃气表抄表终端,可采集南网 国网电表的电能数据.电压.电流.功率因数等电参数数据. 红外抄表原理简介:红外光电探头通 ...

  4. DL/T645-2007通信协议指令学习记录

    DL/T645-2007通信协议指令学习记录 DL/T645协议版本 DL/T645通信链路 DL/T645-2007数据格式 地址域 控制码C 数据长度L 数据域 DATA 校验码 CS 数据标识 ...

  5. DL/T 645多功能电能表通信协议测试方法

    1 前言 DL/T645多功能电能表通信协议(Multi-function watt-hour meter communication protocol)标准是为统一和规范电能表的多功能电能表与数据终 ...

  6. DL645通信协议97/07规约

    DL/T645规约是针对电表通信而制定的通信协议,目前分两个版本,一个为1997年制定的成为97规约,还有就是07年指定的07规约.目前二者并存于市场中,要弄清楚二者的差异 一.数据帧格式 这里需要注 ...

  7. DLT645协议解析(一)---初识 DLT645协议

    (一)初识 DLT645协议              DLT645协议是一种国内电表远传协议,与Modbus协议类似,采用请求应答式交互模型,采集器和电表一问一答进行通信,电气层可以是经典的RS48 ...

  8. 电能表中的四象限解释

    参考这个网址:关于四象限无功_我思证我在_新浪博客 进行四象限无功计量的主要目的是计算功率因数,通常我们采用的是一个结算周期内的加权平均功率因数. 有了功率因数,就能计算功率因数调整电费(力调电费)的 ...

  9. php dlt645,DLMS - DLT645规约转换模块

    20180426 产品信息更新说明: 我司现在已将DLMS协议打包为程序库,无须加装独立芯片,可直接放入电表CPU内运行.电表主程序以函数调用的方式进行交互因此也无须DL-T645作为中转了. DLM ...

  10. iNeuOS工业互联平台,发布消息管理、子用户权限管理、元件移动事件、联动控制、油表饼状图和建筑类设备驱动,v3.4版本...

    目       录 1.      概述... 2 2.      平台演示... 2 3.      消息管理... 2 4.      子用户权限管理... 3 5.      元件移动事件... ...

最新文章

  1. 关于优先队列的一些基本操作
  2. 增强学习(一) ----- 基本概念
  3. 嵌入式linux root免密码,给嵌入式linux串口添加密码的一些总结
  4. VisualStudioCode下载安装与安装中文插件教程(图文教程)
  5. Android开发之EditText无法获取光标的问题
  6. android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配
  7. 分布式ID生成的9种方法,特好用!
  8. Mybatis中的缓存详解
  9. Windows系统管理和网络服务笔记生涯 源于BENET2.0课程(S2)
  10. Win7下PDF文件无法显示缩略图的解决方法
  11. c++复习日记3 模板和流
  12. Windows禁止某个软件联网保姆级教程
  13. [译] 超快速的分析器(一):优化扫描器
  14. 代码静态检查之pclint
  15. 索尼sw2刷android wear,索尼SW2改进不错 体验很舒适_索尼 SmartWatch SW2_GPS评测-中关村在线...
  16. Android 之 Activity 的生命周期(PS:文章多图,流量警告)
  17. c#调用TSC条码打印出现中文乱码
  18. Jekins的简介和使用
  19. AI会P图:你来描述,我来P
  20. 学黑客要学什么编程语言

热门文章

  1. 上海市高等学校计算机一级证书,上海市高等学校计算机等级考试(二级)
  2. linux在代码中表示什么意思,Linux代码中的unlikely和likely分别是什么意思?
  3. IR Cut Filter主要作用分别是什么?_什么是钻石的4C?
  4. 对着Java性能调优,艿艿也很无奈···
  5. ANDROID OTA FOTA
  6. 《云南虫谷》不还原?到底好不好看?鬼吹灯观影顺序是啥?
  7. 《蜘蛛侠3》观后评价
  8. 对v-for生成的元素添加不同的animate动画
  9. Photoshop把漂亮湖景照片调成唯美雪景效果
  10. algodoo是什么意思_algodoo在中学物理教学中的应用 (1)