遠程抄表系統中集中器軟件的模塊化設計與實(shí)現
定時(shí)抄表模塊使用單獨線(xiàn)程實(shí)現,在模塊中判斷當前時(shí)間是否符合抄表設定的時(shí)間,如果是則將所有要抄讀信息發(fā)送到下行協(xié)議模塊封裝模塊進(jìn)行封裝抄表命令,然后下發(fā)出去。在向下通信的過(guò)程中使用了兩個(gè)隊列來(lái)實(shí)現通信和處理的異步性,在對多個(gè)表抄讀時(shí)可提高整體系統的效率。
3 通信軟件的實(shí)現
該軟件系統模擬在Linux操作系統中用C++語(yǔ)言實(shí)現,每個(gè)模塊封裝成單獨的類(lèi),如下所示:
該類(lèi)對應主控模塊,其中成員函數run()中實(shí)現主控模塊的功能,在系統中構造一個(gè)全局的Dispatcher對象以實(shí)現對主控模塊的訪(fǎng)問(wèn)。
該類(lèi)對應上行協(xié)議的幀,其中提供成員方法Encode()和Decode()來(lái)實(shí)現對上行協(xié)議的封裝和解析。在程序中只需創(chuàng )建一個(gè)幀的對象就可以通過(guò)這些函數實(shí)現封裝和解析的功能。下行協(xié)議采用同樣的方法處理:
該類(lèi)對應集中器操作模塊,其中方法Do(int Op_Type)實(shí)現具體操作功能,參數Op_Type表示要做的具體操作,在函數內部可以使用switch-case語(yǔ)句判斷操作的類(lèi)型,然后到各個(gè)分支執行。
其余模塊采用相同的方法進(jìn)行封裝,需要注意的是抄表模塊和下行通信模塊采用單獨線(xiàn)程處理,以實(shí)現抄表任務(wù)的定時(shí)啟動(dòng)和下行數據傳輸的異步性。下行隊列采取封裝STL中queue模板來(lái)實(shí)現,并提供入隊,出對,獲取隊列大小等接口。
4 結語(yǔ)
集中器軟件設計的主要任務(wù)是實(shí)現其的各部分功能。主要功能包括:集中器控制、實(shí)時(shí)用電數據采集、定時(shí)數據采集及存儲、數據報文的轉發(fā)、運行狀態(tài)記錄及指示、通信管理等。采用了模塊化設計的通信軟件具有穩定性好,效率高等特點(diǎn),能夠進(jìn)一步加快電力行業(yè)自動(dòng)化的建設。
評論