鄭州大學水利與環(huán)境學院賀添河南工程學院軟件職業(yè)技術(shù)學院張元平鄭州航天賽世特電子有限公司孔志暉
DL/T645通信規(guī)約檢測軟件的設計
鄭州大學水利與環(huán)境學院賀添
河南工程學院軟件職業(yè)技術(shù)學院張元平
鄭州航天賽世特電子有限公司孔志暉
中華人民共和國電力行業(yè)標準DL/T645多功能電能表通信規(guī)約是為統(tǒng)一和規(guī)范多功能電能表與數(shù)據(jù)采集終端設備進行數(shù)據(jù)交換時的通信協(xié)議,能使電能表制造廠商和用電信息采集終端廠商能夠用統(tǒng)一的標準進行信息的交互,從而避免設備的重復投資,簡化電力部門用電信息采集的工作流程,加快電力部門營銷現(xiàn)代化和計量標準化建設。
在DL/T645電能表通信規(guī)約頒布之后,大部分電能表均含有DL/T645規(guī)約,但存在部分電能表只包含生產(chǎn)廠商的自定義規(guī)約或?qū)L/T645規(guī)約的部分內(nèi)容理解有偏差。另外,在電力公司對電能表的檢定過程中,重點校對計量部分,而未對電能表的RS485通信接口所使用的規(guī)約是否執(zhí)行行業(yè)標準進行檢測,造成部分電能表在現(xiàn)場出現(xiàn)通信規(guī)約兼容性的問題,即無法使用符合DL/T645的采集終端進行電能信息的采集,從而影響規(guī)?;ㄔO。
在實際工作中,如果能在電能表現(xiàn)場安裝之前,就針對電能表的通信規(guī)約進行檢測,則能夠提高電能信息采集的可靠性,減少后期的維護工作量。開發(fā)規(guī)約檢測軟件,就可以解決此問題。
DL/T645-1997規(guī)約物理層使用RS485串行電氣接口,從而使多點連接成為可能。采用主從結(jié)構(gòu)的半雙工通信方式。幀結(jié)構(gòu)見表1。
1.幀起始符。標識一幀信息的開始,其值為68H。
2.地址域。地址域由6個字節(jié)構(gòu)成,每字節(jié)2位BCD碼,當使用的地址碼長度不足6個字節(jié)時,用十六進制的AAH補足6字節(jié),低地址位在先,高地址位在后。
3.控制碼。發(fā)送幀信息時為01H,正確返回幀信息時為81H,錯誤返回幀信息時為C1H。
4.數(shù)據(jù)長度域。為數(shù)據(jù)域的字節(jié)數(shù)。
5.數(shù)據(jù)域。數(shù)據(jù)域包括數(shù)據(jù)標識和數(shù)據(jù)、密碼等,其結(jié)構(gòu)隨控制碼的功能而改變。傳輸時發(fā)送方按字節(jié)進行加33H處理,接收方按字節(jié)進行減33H處理。
6.校驗碼。從幀起始符開始到校驗碼之前的所有各字節(jié)的模256的和,即各字節(jié)二進制算術(shù)和,不計超過256的溢出值。
7.結(jié)束符。標識一幀信息的結(jié)束,其值為16H。
表1 DL/T645-1997幀結(jié)構(gòu)
DL/T645-1997規(guī)約檢測軟件主要利用串口實現(xiàn)上位機與電能表進行通信,開發(fā)平臺使用Delphi7。雖然Delphi7是一個非常優(yōu)秀的Win32軟件開發(fā)平臺,但其自身并不包含串口通信組件,實現(xiàn)Delphi7環(huán)境下的串口通信,基本可以使用以下4種方式:一是采用在程序中嵌入?yún)R編語句,直接對UART串口通信硬件進行操作,實時性好,但要求程序員熟悉串行接口芯片的邏輯結(jié)構(gòu)且此方法只能適用于Windows9x操作系統(tǒng);二是利用Windows的API函數(shù)實現(xiàn),編程較復雜,但適用范圍廣,實時性較好;三是利用ActiveX控件來實現(xiàn),例如MSComm,編程簡便;四是利用支持Delphi的眾多第三方串口通信控件如ComPort、SPComm等,功能強大,編程最簡單。
基于串口通信的DLT645-1997檢測軟件使用Delphi開發(fā),開發(fā)過程中使用了ComPort通信控件輔助串口通信的開發(fā),基本開發(fā)流程如圖1所示。
1.配置串口參數(shù)。
ComPort1.BaudRate:=br9600
ComPort1.Port:='COM1'
ComPort1.Parity.Bits:=prNone
ComPort1.StopBits:=sbOneStopBit
ComPort1.DataBits:=dbEight。
2.打開串口。
ComPort1.Connected:=true。
3.組幀并發(fā)送。
ComPort1.Write(strCmd);
其中strCmd是符合DL/T645幀格式的字符串,字符串需要用ASCII碼值表示,例如讀取一塊電能表地址為023650,電能量為正向有功總電能的規(guī)約命令為:FEFEFEFE685036 0200000068010243C36116,則在Dephi下的字符串為#$FE#$FE#$FE#$FE#$68#$50#$36#$02#$00#$00#$00#$68# $01#$02#$43#$C3#$61#$16,#也可以用Chr()函數(shù)代替,即Chr($FE)Chr($FE)…Chr($16)。
4.當發(fā)送完命令幀后,等待串口發(fā)回數(shù)據(jù)。
當串口接收到數(shù)據(jù),會觸發(fā)ComPort組件的OnRxChar()事件,則在OnRxChar()中利用ComPort1.ReadStr()進行數(shù)據(jù)的接收,并檢查數(shù)據(jù)校驗和是否正確,并解析出數(shù)據(jù)幀。
procedureTForm1.ComPort1RxChar(Sender:TObject;Count: Integer);
begin
ComPort1.ReadStr(strIn,Count);
ata:=str
ata+strIn;
end。
5.關閉串口。
ComPort1.Connected:=false。
通過以下兩條規(guī)約命令的執(zhí)行,可以判斷電能表是否支持DL/T65規(guī)約。
1.規(guī)約命令1。通過發(fā)送掩碼AA,讀取電能表的正向有功總電量來判斷。
2.規(guī)約命令2。通過讀取電能表地址為012345的正向有功總電能示值來判斷。
現(xiàn)在國家電網(wǎng)公司正在進行電力用戶用電信息采集系統(tǒng)建設,實現(xiàn)計量裝置在線監(jiān)測和用戶負荷、電量、計量狀態(tài)等重要信息的實時采集。及時、完整、準確地為“SG186”信息系統(tǒng)提供基礎數(shù)據(jù),其中的基本前提就是電能表能夠準確計量,可靠地將電能各種信息通過通信協(xié)議傳遞給采集終端。
開發(fā)符合的DL/T645規(guī)約的電能表通信檢測軟件,在電能表檢定時除了對計量進行檢測外,也對電能表通信規(guī)約進行檢測,有效地保證了用電部門在規(guī)模建設中各種計量和采集設備的兼容性。隨著符合DL/T645-2007規(guī)約電能表的普及,也可根據(jù)此原理設計出符合DL/T645-2007規(guī)約的檢測模塊,擴展規(guī)約檢測軟件的適用性。