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

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

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

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

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