DL/T 645:基础概念
2021-11-12 11:43:57 0 举报
AI智能生成
DL/T645-1997、DL/T645-2007 通讯规约基础概念
作者其他创作
大纲/内容
参考
术语
DL/T645
多功能电能表通信协议(Multi-function watt-hour meter communication protocol)
标准是为统一和规范电能表的多功能电能表与数据终端设备进行数据交换时的物理连接和协议。
版本
DL/T645-1997
DL/T645-2007
多功能电能表
multi-function watt-hour meter
由测量单元和数据处理单元等组成,除计量有功/无功电能量外,还具有分时、测量需量等两种以上功能,并能显示、存储和输出数据的电能表。
主站/从站
上位机/主站
手持单元或其它数据终端为主站
下位机/从站
多功能电能表为从站
数据链路层
DL/T645协议为主-从结构的半双工通信方式。
每个多功能电能表均有各自的地址编码。
通信链路的建立与解除均由主站发出的信息帧来控制。
每帧由帧起始符、从站地址域、控制码、数据域长度、数据域、帧信息纵向校验码及帧结束符7个域组成。
每部分由若干字节组成。
每个多功能电能表均有各自的地址编码。
通信链路的建立与解除均由主站发出的信息帧来控制。
每帧由帧起始符、从站地址域、控制码、数据域长度、数据域、帧信息纵向校验码及帧结束符7个域组成。
每部分由若干字节组成。
应用层功能
DL/T645-2007协议应用层定义了读数据、读后续数据、写数据、读通信地址、写通信地址、广播校时、冻结命令、更改通信速率、修改密码、最大需量清零、电表清零、事件清零、跳合闸、报警、保电、多功能端子输出控制设置、安全认证等命令。
BCD码
四位二进制来表示一位十进制
我们知道,正常情况下,二进制、十进制、十六进制之间有一套转化的算法,例如18=0x12=10010。
但是BCD码不同,它用四位二进制来表示一位十进制。
最常用的是8421BCD码,例如8=1000,7=0111,为了方便,还是习惯把二进制用十六进制来表示,故8=0x8,7=0x7。
但是问题来了,10怎么用BCD码表示,0xA?
不是的,10用BCD表示是0x10。因为1的BCD码是0001,0的BCD码是0000,故10的BCD码是0001 0000,为了方便,表示为16进制,故为0x10。
显然,9876的BCD码是0x9876。所以用BCD码的好处就是直观,这在工业领域大量的被应用。
但是BCD码不同,它用四位二进制来表示一位十进制。
最常用的是8421BCD码,例如8=1000,7=0111,为了方便,还是习惯把二进制用十六进制来表示,故8=0x8,7=0x7。
但是问题来了,10怎么用BCD码表示,0xA?
不是的,10用BCD表示是0x10。因为1的BCD码是0001,0的BCD码是0000,故10的BCD码是0001 0000,为了方便,表示为16进制,故为0x10。
显然,9876的BCD码是0x9876。所以用BCD码的好处就是直观,这在工业领域大量的被应用。
电表物理地址
读表地址
读表地址
电表的铭牌上的地址是8位数
BCD码,不是十进制
图例
数据标识编码
采集点地址项
电度信息地址
采集点地址项
电度信息地址
1997版和2007版的数据标识也不尽相同
例如
正向有功,数据标识填00010000,数据格式XXXXXX.XX
反向有功,数据标识填00020000,数据格式XXXXXX.XX
正向视在,数据标识填00090000,数据格式XXXXXX.XX
反向视在,数据标识填000A0000,数据格式XXXXXX.XX
反向有功,数据标识填00020000,数据格式XXXXXX.XX
正向视在,数据标识填00090000,数据格式XXXXXX.XX
反向视在,数据标识填000A0000,数据格式XXXXXX.XX
帧格式
图例
地址域
6字节
由6个字节A0~A5构成,每个字节2位BCD码,故地址长度为12位十进制数。
小端次序
低字节在前,高字节在后
当地址码长度不足6字节时,高位用0补足
地址域长度不足时有用00H补齐的,也有用AA补齐的
通讯地址0x9999 9999 9999时,为广播地址。
地址域支持锁位寻址
从若干低位起,剩余高位补0xAA,作为通配符进行读表操作,从站应答帧会返回实际通信地址
控制码
图例
DL/T645-1997 功能码
00000:00H:保留
00001:01H:读数据
00010:02H:读后续数据
00011:03H:重读数据
00100:04H:写数据
01000:08H:广播校时
01010:0AH:写设备地址
01100:0CH:更改通信速率
01111:0FH:修改密码
10000:10H:最大需量清零
00001:01H:读数据
00010:02H:读后续数据
00011:03H:重读数据
00100:04H:写数据
01000:08H:广播校时
01010:0AH:写设备地址
01100:0CH:更改通信速率
01111:0FH:修改密码
10000:10H:最大需量清零
DL/T645-2007 功能码
00000:00H:保留
01000:08H:广播校时
10001:11H:读数据
10010:12H:读后续数据
10011:13H:读通信地址
10100:14H:写数据
10101:15H:写通信地址
10110:16H:冻结命令
10111:17H:更改通信速率
11000:18H:修改密码
11001:19H:最大需量清零
11010:1AH:电表清零
11011:1BH:事件清零
01000:08H:广播校时
10001:11H:读数据
10010:12H:读后续数据
10011:13H:读通信地址
10100:14H:写数据
10101:15H:写通信地址
10110:16H:冻结命令
10111:17H:更改通信速率
11000:18H:修改密码
11001:19H:最大需量清零
11010:1AH:电表清零
11011:1BH:事件清零
数据长度
数据域的字节数
读数据时L≤200,写数据时L≤50,L=0表示无数据域
数据域
小端次序
低字节在前,高字节在后
发送方按字节进行加33H处理,接收方按字节进行减33H处理
数据域的结构随控制码的功能而改变,可以是:数据标识、密码、操作者代码、数据、帧序号等
数据标识
校验码
校验码从第一个起始符算起,包含第一个起始符
差错控制-通信偶校验
传输方式
前导字节
在主站发送帧信息之前,先发送4个前导字节FEH,以唤醒接收方
一般在传输帧信息前,都要有0~4个FE不等,
对于主站来说,直接发送4个FE作为前导字节即可。
而从站回复,就不一定了,根据厂家不同而不同,没有FE的,也有4个FE的。
对于主站来说,直接发送4个FE作为前导字节即可。
而从站回复,就不一定了,根据厂家不同而不同,没有FE的,也有4个FE的。
传输次序
小端次序传输
所有的数据项(地址域、数据域)都需要按着低字节在前,高字节在后的远程传输
数据域字节加工后传输
发送方按字节进行加33H处理,接收方按字节进行减33H处理
数据域中的数据接受和发送的时候都是需要处理的
发送方按字节进行加33H处理,接收方按字节进行减33H处理
数据传输的举例:电能量值为123456.78kWh
图例
常用命令
读当前正向有功总电量
发送报文
FE FE FE FE 68 78 56 34 12 00 00 68 11 04 33 33 34 33 C6 16
FE FE FE FE
前导字节
78 56 34 12 00 00
读表地址
传输次序是低在前,高在后,而且是十六进制
实际是:12 34 56 78H
解码流程
接收数据
78 56 34 12 00 00
恢复传输次序
00 00 12 34 56 78
编码流程
原始数据
12 34 56 78H
字节长度不够6,高位补两个字节00H
00 00 12 34 56 78
传输次序:低在前,高在后
78 56 34 12 00 00
11
控制码:000 10001
D7 传送方向
0: 主站到从站
D6 从站异常标志
0: 正常
D5 后续帧标志
0: 无后续帧
D4-D0 功能码
11H: 读数据命令
04
数据域长度
33 33 34 33
数据标识,理解成寄存器地址
传输次序-低在前,高在后,然后再加0x33
实际是:00 01 00 00H
解码流程
接收数据
33 33 34 33H
接收方减0x33
00 00 01 00
恢复传输次序
00 01 00 00
编码流程
原始数据项
00 01 00 00H
传输次序:低在前,高在后
00 00 01 00
发送方加0x33
33 33 34 33
举例
带符号位的转换
+79.0102
1 生成BCD 0x790102
2 调整字节序 0x020179
3 +0x33 0x3534AC
-79.0102
1 生成BCD F90102
2 字节序 0x0201F9
3 +0x33 0x35342C
解码 0x35342C
1、-0x33 0x0201F9
2、字节序 0xF90102
3、取值 -790102
4、格式化 -79.0102 XX.XXXX
+79.0102
1 生成BCD 0x790102
2 调整字节序 0x020179
3 +0x33 0x3534AC
-79.0102
1 生成BCD F90102
2 字节序 0x0201F9
3 +0x33 0x35342C
解码 0x35342C
1、-0x33 0x0201F9
2、字节序 0xF90102
3、取值 -790102
4、格式化 -79.0102 XX.XXXX
16
结束符
回复报文
68 78 56 34 12 00 00 68 91 08 33 33 34 33 A4 56 79 38 F5 16
无前导字节
注意,这里面没有前导字节FE,并不代表所有的电表厂家都没有,而且还是不固定的,
所以一定小心写程序,因为不同厂家电表回的前导字节个数不一样。
所以一定小心写程序,因为不同厂家电表回的前导字节个数不一样。
68
78 56 34 12 00 00
读表地址: 00001234567
68
91
控制码: 100 10001
D7 传送方向
1: 从站到主站
D6 从站异常标志
0: 正常
D5 后续帧标志
0: 无后续帧
D4-D0 功能码
11H: 读数据命令
08
数据域长度: 8H
33 33 34 33
数据标识,理解成寄存器地址
实际是:00 01 00 00H
A4 56 79 38
具体数据
实际是:05 46 23 71H
对应的数据格式:XXXXXX.XX
对应单位:kWh
实际的电表数为:54623.71度
F5
校验码
16
结束符
0 条评论
下一页