郑州大学水利与环境学院贺添河南工程学院软件职业技术学院张元平郑州航天赛世特电子有限公司孔志晖
DL/T645通信规约检测软件的设计
郑州大学水利与环境学院贺添
河南工程学院软件职业技术学院张元平
郑州航天赛世特电子有限公司孔志晖
中华人民共和国电力行业标准DL/T645多功能电能表通信规约是为统一和规范多功能电能表与数据采集终端设备进行数据交换时的通信协议,能使电能表制造厂商和用电信息采集终端厂商能够用统一的标准进行信息的交互,从而避免设备的重复投资,简化电力部门用电信息采集的工作流程,加快电力部门营销现代化和计量标准化建设。
在DL/T645电能表通信规约颁布之后,大部分电能表均含有DL/T645规约,但存在部分电能表只包含生产厂商的自定义规约或对DL/T645规约的部分内容理解有偏差。另外,在电力公司对电能表的检定过程中,重点校对计量部分,而未对电能表的RS485通信接口所使用的规约是否执行行业标准进行检测,造成部分电能表在现场出现通信规约兼容性的问题,即无法使用符合DL/T645的采集终端进行电能信息的采集,从而影响规模化建设。
在实际工作中,如果能在电能表现场安装之前,就针对电能表的通信规约进行检测,则能够提高电能信息采集的可靠性,减少后期的维护工作量。开发规约检测软件,就可以解决此问题。
DL/T645-1997规约物理层使用RS485串行电气接口,从而使多点连接成为可能。采用主从结构的半双工通信方式。帧结构见表1。
1.帧起始符。标识一帧信息的开始,其值为68H。
2.地址域。地址域由6个字节构成,每字节2位BCD码,当使用的地址码长度不足6个字节时,用十六进制的AAH补足6字节,低地址位在先,高地址位在后。
3.控制码。发送帧信息时为01H,正确返回帧信息时为81H,错误返回帧信息时为C1H。
4.数据长度域。为数据域的字节数。
5.数据域。数据域包括数据标识和数据、密码等,其结构随控制码的功能而改变。传输时发送方按字节进行加33H处理,接收方按字节进行减33H处理。
6.校验码。从帧起始符开始到校验码之前的所有各字节的模256的和,即各字节二进制算术和,不计超过256的溢出值。
7.结束符。标识一帧信息的结束,其值为16H。
表1 DL/T645-1997帧结构
DL/T645-1997规约检测软件主要利用串口实现上位机与电能表进行通信,开发平台使用Delphi7。虽然Delphi7是一个非常优秀的Win32软件开发平台,但其自身并不包含串口通信组件,实现Delphi7环境下的串口通信,基本可以使用以下4种方式:一是采用在程序中嵌入汇编语句,直接对UART串口通信硬件进行操作,实时性好,但要求程序员熟悉串行接口芯片的逻辑结构且此方法只能适用于Windows9x操作系统;二是利用Windows的API函数实现,编程较复杂,但适用范围广,实时性较好;三是利用ActiveX控件来实现,例如MSComm,编程简便;四是利用支持Delphi的众多第三方串口通信控件如ComPort、SPComm等,功能强大,编程最简单。
基于串口通信的DLT645-1997检测软件使用Delphi开发,开发过程中使用了ComPort通信控件辅助串口通信的开发,基本开发流程如图1所示。
1.配置串口参数。
ComPort1.BaudRate:=br9600
ComPort1.Port:='COM1'
ComPort1.Parity.Bits:=prNone
ComPort1.StopBits:=sbOneStopBit
ComPort1.DataBits:=dbEight。
2.打开串口。
ComPort1.Connected:=true。
3.组帧并发送。
ComPort1.Write(strCmd);
其中strCmd是符合DL/T645帧格式的字符串,字符串需要用ASCII码值表示,例如读取一块电能表地址为023650,电能量为正向有功总电能的规约命令为:FEFEFEFE685036 0200000068010243C36116,则在Dephi下的字符串为#$FE#$FE#$FE#$FE#$68#$50#$36#$02#$00#$00#$00#$68# $01#$02#$43#$C3#$61#$16,#也可以用Chr()函数代替,即Chr($FE)Chr($FE)…Chr($16)。
4.当发送完命令帧后,等待串口发回数据。
当串口接收到数据,会触发ComPort组件的OnRxChar()事件,则在OnRxChar()中利用ComPort1.ReadStr()进行数据的接收,并检查数据校验和是否正确,并解析出数据帧。
procedureTForm1.ComPort1RxChar(Sender:TObject;Count: Integer);
begin
ComPort1.ReadStr(strIn,Count);
ata:=str
ata+strIn;
end。
5.关闭串口。
ComPort1.Connected:=false。
通过以下两条规约命令的执行,可以判断电能表是否支持DL/T65规约。
1.规约命令1。通过发送掩码AA,读取电能表的正向有功总电量来判断。
2.规约命令2。通过读取电能表地址为012345的正向有功总电能示值来判断。
现在国家电网公司正在进行电力用户用电信息采集系统建设,实现计量装置在线监测和用户负荷、电量、计量状态等重要信息的实时采集。及时、完整、准确地为“SG186”信息系统提供基础数据,其中的基本前提就是电能表能够准确计量,可靠地将电能各种信息通过通信协议传递给采集终端。
开发符合的DL/T645规约的电能表通信检测软件,在电能表检定时除了对计量进行检测外,也对电能表通信规约进行检测,有效地保证了用电部门在规模建设中各种计量和采集设备的兼容性。随着符合DL/T645-2007规约电能表的普及,也可根据此原理设计出符合DL/T645-2007规约的检测模块,扩展规约检测软件的适用性。