遠程電能計量系統的設計與實(shí)現
1 引言
本文引用地址:http://dyxdggzs.com/article/200979.htm隨著(zhù)電力系統自動(dòng)化程度的提高,以及計算機技術(shù)在電力系統中日益廣泛的應用。傳統的電量計費方式由于其效率低、投入大、可靠性差等弊端,已無(wú)法適應新的形勢要求。建立一套高精度、穩定可靠、自動(dòng)化程度高的電能量自動(dòng)計量系統具有實(shí)際應用意義??煽?、及時(shí)的將各數據指標量從廠(chǎng)站端送入主站的數據庫,供后臺計算分析、報表輸出,是該系統正常運行的關(guān)鍵。而這部分功能是由遠程數據采集子系統所實(shí)現的。下面,筆者將結合現場(chǎng)實(shí)際情況介紹該子系統的結構和設計方法,并就如何在Delphi5.0下編寫(xiě)該部分的通信軟件進(jìn)行詳細闡述。
2 系統結構
本數據采集子系統由電能表、電能量采集器、前置機、通信通道、數據庫服務(wù)器等硬件設備組成。系統結構如圖1所示。采集器為東方電子CLL064型,通過(guò)RS485總線(xiàn)下接多塊威勝、恒通等多功能電能表。采集器采集電能表中的各項輸出數據(包括分時(shí)電量、瞬時(shí)量、需量、失壓斷相量等),將其在存儲區中保存一定時(shí)間,并隨時(shí)接受主站命令將數據打包上傳。前置機采用一般PC機,通過(guò)MoxaC168H/PCI多串口卡擴展至1-10個(gè)串口,分別接多個(gè)Modem經(jīng)各種通信通道(包括電力載波、微波、公用電話(huà)網(wǎng)等)與采集器進(jìn)行通信。前置機對采集器上傳數據進(jìn)行相應處理后,通過(guò)DelphiBDE(Borland數據庫引擎)存入網(wǎng)絡(luò )數據庫服務(wù)器(Sybase Adaptive Server 12.1),供其它子系統查詢(xún)計算。
3 通信軟件的設計
在Windows2000下,用Delphi進(jìn)行串行口通信程序開(kāi)發(fā),一般有四種方法:利用windows提供的API函數;嵌入匯編語(yǔ)言直接讀寫(xiě)串口;引入第三方的通信控件;利用第三方提供的通信函數。
利用Windows API函數讀寫(xiě)串口即通過(guò)調用API函數中CreateFile、ReadFile、WriteFile等函數操作串口;嵌入匯編要進(jìn)行中斷接口編程,程序員必須掌握豐富的硬件知識。以上兩種方法都要求編寫(xiě)大量的底層函數,增大了編程的工作量。而后兩種方法對API函數進(jìn)行了很好的封裝,程序員只需設置一些簡(jiǎn)單的屬性,調用少數直觀(guān)、簡(jiǎn)易的函數即可完成大部分通信功能。程序員從大量繁瑣的底層編程工作中解脫了出來(lái)。下面將對如何利用Microsoft ActiveX通信控件MSComm.OCX進(jìn)行收發(fā)數據作詳細介紹。
3.1 通信控件的引入
要將第三方的控件引入Delphi,首先在菜單項中選中“Component”,再選擇“Import ActiveX”,從彈出的“Import ActiveX”窗口中選中“Microsoft Comm Control6.0(Version 1.1)”,最后點(diǎn)擊Install按鈕進(jìn)行安裝。即可將MSComm控件引入到Delphi5.0中。

3.2 通信控件的屬性
下面給出了幾個(gè)基本屬性,其它屬性請參閱MSDNLibrary VisualStudio 6.0。
屬性 描述
CommPort 設置并返回通訊端口號。
Settings 設置并返回波特率、奇偶校驗、數據位、停止位。
PortOpen 設置并返回通訊端口的狀態(tài)。也可以打開(kāi)和關(guān)閉端口。
Input 從接收緩沖區返回和刪除字符。
Output 向傳輸緩沖區寫(xiě)數據。
3.3 通信的實(shí)現
(1)發(fā)送數據
要想利用控件發(fā)送數據只需調用其Output屬性向串口中寫(xiě)入數據。例如,

上述代碼將字符串'The Sended String'通過(guò)串口1發(fā)送出去。又如,

上述代碼將二進(jìn)制流‘123’通過(guò)串口1發(fā)送出去。
(2)接收數據
接收數據按照接收數據的類(lèi)型分兩種形式,即如上述的字符串和二進(jìn)制流類(lèi)型。通過(guò)改變InputMode屬性來(lái)區分,當其值為comInputModeText時(shí)表示以文本方式取回數據;當其值為comInputModeBinary時(shí)表示以二進(jìn)制方式取回數據。
接收數據按照接收的方式也分兩種形式。1)事件驅動(dòng)的方式:當MSComm代表的串口收到Rthreshold個(gè)字符時(shí)會(huì )觸發(fā)OnComm事件。因此只需通過(guò)添加OnComm事件代碼來(lái)處理所收到的Rthreshold個(gè)字符即可實(shí)現。2)查詢(xún)方式:以一定的時(shí)間間隔循環(huán)檢測接受緩沖區,即通過(guò)InBufferCount的值來(lái)判斷是否收到指定的字符數。
3.4 通信協(xié)議的說(shuō)明
通信協(xié)議采用IEC60870-5-102《電力系統中傳輸電能量配套標準》。目前,各公司開(kāi)發(fā)的電能量采集裝置已逐步向該規約靠攏。下面就該規約的字節、幀格式進(jìn)行說(shuō)明。
每個(gè)字節有一個(gè)開(kāi)始位(二進(jìn)制0),八個(gè)信息位,一個(gè)偶校驗位和一個(gè)終止位(二進(jìn)制1)。
本規約采用3種基本的數據幀:?jiǎn)巫止澋腅5H幀,10H開(kāi)頭的固定長(cháng)度幀,68H開(kāi)頭的可變長(cháng)幀。如下所示:

4 程序實(shí)例
本軟件由兩部組成:一部分是主線(xiàn)程,它負責處理主窗口的消息,對用戶(hù)的輸入進(jìn)行響應。另一部分是通信線(xiàn)程,它負責與采集器的通信,由主線(xiàn)程控制其產(chǎn)生和終止。運行時(shí),主線(xiàn)程根據數據庫中的參數定時(shí)生成抄表任務(wù),產(chǎn)生通信線(xiàn)程,在這種方式下主線(xiàn)程可控制多個(gè)通信線(xiàn)程同時(shí)運行,從而實(shí)現定時(shí)對多臺采集器同時(shí)抄錄。另外,主線(xiàn)程還進(jìn)行監聽(tīng)服務(wù),網(wǎng)絡(luò )上的其它工作站籍此可通過(guò)TCP/IP套接字與其通信,產(chǎn)生通信線(xiàn)程從而實(shí)現隨時(shí)抄表。下面給出通信線(xiàn)程的實(shí)現過(guò)程。
在Delphi5.0中創(chuàng )建線(xiàn)程只需從Tthread類(lèi)繼承一個(gè)自己的線(xiàn)程類(lèi),例如:TMyThread=class(TThread)。然后對該類(lèi)的Execute方法進(jìn)行重載,通信線(xiàn)程的實(shí)現部分就在該Execute方法中。程序流程圖如圖2所示。
電能表相關(guān)文章:電能表原理
評論