《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 遠程抄表系統(tǒng)中集中器軟件的模塊化設計與實現(xiàn)
遠程抄表系統(tǒng)中集中器軟件的模塊化設計與實現(xiàn)
閻 浩 葉 崧
摘要: 研究基于GPRS的無線遠程抄表系統(tǒng),利用GPRS技術連接主站與集中器,從而縮短了布線的范圍及長度,,并可實時、準確地獲取電表數(shù)據(jù)并上傳數(shù)據(jù)到主站,,重點研究基于GPRS的有線集中器的軟件設計。
Abstract:
Key words :

0 引言
    近些年來由于電子技術,、計算機技術和通信技術的快速發(fā)展而加快了各個行業(yè)的自動化進程,,在電力行業(yè)內,也依靠現(xiàn)代化技術改變了傳統(tǒng)的手工抄表方法,,使得抄表工作在不需要人力的情況下依靠網(wǎng)絡和計算機就能快速而準確的完成,,提高了抄表過程中數(shù)據(jù)采集的實時性、可靠性,、信息量,。目前的自動化抄表系統(tǒng)主要有掌上抄表系統(tǒng),有線抄表系統(tǒng)和無線抄表系統(tǒng),,其中掌上抄表系統(tǒng)需抄表人員用掌上抄表器抄收數(shù)據(jù),,因此自動化程度不夠;有線系統(tǒng)需要施工布線,,既提高了費用又增加了難度;而無線抄表系統(tǒng)雖不需布線,,安裝也方便,,但信號易受外界干擾,數(shù)據(jù)傳輸?shù)姆€(wěn)定性較差,,容易抄收失敗,。因此主要研究基于GPRS的無線遠程抄表系統(tǒng),利用GPRS技術連接主站與集中器,,從而縮短了布線的范圍及長度,,并可實時、準確地獲取電表數(shù)據(jù)并上傳數(shù)據(jù)到主站,,重點研究基于GPRS的有線集中器的軟件設計,。

1 系統(tǒng)結構描述
   
完整的遠程抄表系統(tǒng)包括主站、集中器,、采集器,、載波表,、手持終端等,其系統(tǒng)結構如圖1所示,。


    主站是運行抄表系統(tǒng)的計算機,,一般放在電力中心,由它來發(fā)出命令進行定時抄表,、實時抄讀或設置相關信息等操作,。主站通過GPRS與集中器通信。
    集中器負責連接若干個電表或采集器,,此范圍內的所有電表的抄讀工作由集中器統(tǒng)一完成,,然后再將結果傳送給主站,集中器與主站間通過GPRS連接,,下行通過RS 486進行連接,。
    本文重點介紹集中器中通信軟件的設計。

2 集中器通信軟件設計
2.1 集中器功能
   
集中器除了響應主站命令外還要負責對電表的定時抄讀,,因此設計集中器軟件時要明確這2個功能,,即:響應主站命令與定時抄表。響應主站命令任務的啟動是由主站命令到達觸發(fā)的,,定時抄表任務則應該由集中器內時間觸發(fā)而啟動的,,不同的任務對應不同的處理流程。
2.2 響應主站流程
   
集中器向上與主站連接,,向下與各終端進行通信,。與主站間的通信集中器處于從屬地位,它只有在接收到主站中的命令時才做出操作,,而不能主動與主站發(fā)起通信,;而其與下行終端通信時,集中器處于主動地位,,它在適當?shù)臅r候向下終端發(fā)出命令,,而不會收到下行的主動請求幀。
    圖2描述了集中器通信流程,,通信的工作始終運行在外圍的無限循環(huán)中判斷和接收主站請求幀,,當接收到主站命令后先判斷此數(shù)據(jù)幀是否校驗正確,若錯誤檢查錯誤原因,,并根據(jù)錯誤類型設置錯誤代碼,,然后發(fā)送異常應答幀;否則判斷是否是集中器命令,,若不是集中器命令則需要判斷是否需要轉發(fā),,需要轉發(fā)則首先將協(xié)議進行轉換,然后將命令轉發(fā)出去,,接收到轉發(fā)響應后再向主站響應,;若是集中器命令,,則根據(jù)操作碼對集中器進行相關操作,操作完成后返回響應幀,,然后進入下一個循環(huán)繼續(xù)等待主站的命令幀,。


2.3 抄表任務流程
   
定時抄表是集中器的重要功能,通常有抄表日抄表,,抄表月抄表,,整點抄表;零點抄表等多種類型,。集中器首先啟動抄表任務功能,,然后不斷檢測當前時間是否符合設定的抄表時間,如果不符合則繼續(xù)下一輪的檢查,;否則獲取到要抄讀的電表信息,,然后向電表發(fā)送抄讀命令幀,收到回復后先驗證數(shù)據(jù)的正確性,,如果數(shù)據(jù)正確則進行相關的入庫等操作,,否則重發(fā)抄讀命令(一般設為3次),當數(shù)據(jù)處理完成后,,進行下一輪循環(huán),。整個流程如圖3所示


2.4 軟件模塊設計
   
根據(jù)上節(jié)介紹的流程,在設計軟件的時候將整個系統(tǒng)分為如下幾個部分:
    主控模塊  負責命令的接收,,發(fā)送,,邏輯判斷,數(shù)據(jù)流的控制等總體調度和控制工作,。
    上行協(xié)議解析模塊  負責對主站下發(fā)的命令進行幀的校驗和解析,,并將解析的結果保存以便主控的訪問。
    上行協(xié)議封裝模塊  負責對主站回復幀的封裝工作,,具體數(shù)據(jù)由主控模塊提供,。
    集中器操作模塊  負責根據(jù)主站命令實現(xiàn)對集中器的操作工作。
    下行協(xié)議封裝模塊  在需要命令轉換時,,該模塊負責將主站下發(fā)的命令翻譯成下行協(xié)議,在抄讀任務啟動后負責封裝抄讀命令,。
    下行通信模塊  負責下行命令的發(fā)送和接收,。
    下行協(xié)議的解析模塊  負責將下行命令的回復幀進行校驗和解析。
    數(shù)據(jù)處理模塊  負責將必要的數(shù)據(jù)存入數(shù)據(jù)庫或從數(shù)據(jù)庫中讀取數(shù)據(jù),。
    抄表模塊  負責定時啟動抄表任務,。
    整體的系統(tǒng)模型如圖4所示。


    定時抄表模塊使用單獨線程實現(xiàn),,在模塊中判斷當前時間是否符合抄表設定的時間,,如果是則將所有要抄讀信息發(fā)送到下行協(xié)議模塊封裝模塊進行封裝抄表命令,,然后下發(fā)出去。在向下通信的過程中使用了兩個隊列來實現(xiàn)通信和處理的異步性,,在對多個表抄讀時可提高整體系統(tǒng)的效率,。

3 通信軟件的實現(xiàn)
   
該軟件系統(tǒng)模擬在Linux操作系統(tǒng)中用C++語言實現(xiàn),每個模塊封裝成單獨的類,,如下所示:
   
    該類對應主控模塊,,其中成員函數(shù)run()中實現(xiàn)主控模塊的功能,在系統(tǒng)中構造一個全局的Dispatcher對象以實現(xiàn)對主控模塊的訪問,。
   
    該類對應上行協(xié)議的幀,,其中提供成員方法Encode()和Decode()來實現(xiàn)對上行協(xié)議的封裝和解析。在程序中只需創(chuàng)建一個幀的對象就可以通過這些函數(shù)實現(xiàn)封裝和解析的功能,。下行協(xié)議采用同樣的方法處理:
   
    該類對應集中器操作模塊,,其中方法Do(int Op_Type)實現(xiàn)具體操作功能,參數(shù)Op_Type表示要做的具體操作,,在函數(shù)內部可以使用switch-case語句判斷操作的類型,,然后到各個分支執(zhí)行。
    其余模塊采用相同的方法進行封裝,,需要注意的是抄表模塊和下行通信模塊采用單獨線程處理,,以實現(xiàn)抄表任務的定時啟動和下行數(shù)據(jù)傳輸?shù)漠惒叫浴O滦嘘犃胁扇》庋bSTL中queue模板來實現(xiàn),,并提供入隊,,出對,獲取隊列大小等接口,。

4 結語
   
集中器軟件設計的主要任務是實現(xiàn)其的各部分功能,。主要功能包括:集中器控制、實時用電數(shù)據(jù)采集,、定時數(shù)據(jù)采集及存儲,、數(shù)據(jù)報文的轉發(fā)、運行狀態(tài)記錄及指示,、通信管理等,。采用了模塊化設計的通信軟件具有穩(wěn)定性好,效率高等特點,,能夠進一步加快電力行業(yè)自動化的建設,。

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載,。