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