白 寧
(中國人民解放軍63819部隊,四川 宜賓 644000)
航天測控站(簡稱測站)供電系統是完成航天測控任務的動力來源,也是各類通信網絡系統的“心臟”。良好的工作狀態、穩定的電力輸出以及簡潔高效的系統狀態,是保證航天測控任務順利實現的重要基礎。目前,測站供電系統設備分布廣泛,種類多,各設備廠商的通信協議不統一。為了智能集中式監控供電系統,需要對分散的各類供電設備增加相應的傳感器監測節點,實現自動實時采集數據。當某類供電設備發生故障時,系統自動報警,值班人員在遠端控制中心可以查看實時告警信息,從而快速定位故障節點,減少人力,提高排除故障的效率[1]。在此,采用分布式B/S模式的軟件平臺,設計了通用化高和可配置性強的兩級架構統一格式的通信協議,詳細分析測站供電監控系統的功能、體系結構、組網方案以及監控對象等,并利用Python開發語言下的Flask網絡編程框架,對測站供電監控系統進行設計與實現。
供電監控系統由以串口服務器為采集處理中心的監控處理模塊、以Flask框架下開發的監控中心服務器和數據庫服務器3部分組成,結構如圖1所示。

圖1 供電監控系統組成結構圖
實時數據的采集主要由串口服務器完成,通過監控模塊接收來自各個傳感器的數據。數據傳輸系統采用RS485串口、RS232串口以及RJ45網口作為數據采集接口。串口數據線傳輸主要用在設備通信接口和加裝傳感器接口,采用網絡傳輸向上級監控中心傳輸數據。數據庫服務器是指監控中心通過接收來自監控模塊的數據,按照不同設備種類分別保存,在獲得調用指令后,將多種數據按約定通信協議組合后返回客戶端。當設備故障告警時,可以日志形式查閱告警信息。Web客戶端發送請求命令查詢各類設備的狀態信息,接收來自監控中心的數據,并將這些數據以相應的圖形化形式顯示。Web客戶端還可以通過給監控中心發送指令,以控制監控終端的運行。
供電監控系統的Web服務器通過HTTP協議滿足多點訪問請求,同時需要適應并行多點訪問的兼容性,則監控軟件需采用多線程的架構來實現訪問控制。部分通過加裝測量傳感器的老舊供電設備,使用數據接口為串口RS232或RS485類型。數據處理模塊需要采用線程同步鎖或設備輪詢等技術避免同時多個數據獲取請求產生的隊列擁堵[2]。

圖2 供電監控系統服務器程序流程圖
供電監控系統的前端服務器采用統一Web頁面顯示模板。使用Flask框架自帶的Jinja2模板庫,生成1個包含基本樣式的HTML和CSS作為整個服務器的基礎模板,其他的頁面通過JavaScript語法進行動態數據方面的增添和修改,這樣服務器面向客戶端的頁面設計開發將更加高效。供電監控系統服務器的程序流程如圖2所示。服務器后臺采用定時查詢的方式獲取各類串口傳感器的數據。當定時器觸發數據庫接口函數時,建立與數據庫的連接。首先初始化接口,包括串口和網口的傳感器。其次,建立一個接收數據線程,此時服務器后臺保持接收等待狀態。服務器程序發出獲取數據請求,接口執行查詢各個傳感器讀數據操作。最后,查詢當前各個設備的狀態信息,若有故障告警則產生日記記錄。在完成數據請求的存儲顯示等操作后,一輪的查詢數據任務結束。
監控系統主函數通過Flask模塊實例化產生一個APP實例,該實例是整個供電監控系統的程序入口函數。不同用戶的數據請求通過該APP實例完成,各類查詢顯示信息的程序使用Python的裝飾器產生相對應的視圖函數。只有主函數退出,才會中斷數據查詢的輪詢狀態。為確保主函數退出前數據保存的完整性,需要正確關閉外部連接數據庫,保存由設備異常告警數據產生的告警日志內容,并清理整個供電監控系統運行過程中產生的臨時文件。
數據庫模塊由多個供電設備采集的數據核心模塊組成,是系統實現存儲、處理以及查詢功能的基礎[3-4]。監控系統中存儲的數據包含3大類,分別為監測供電設備的基本屬性信息、監測供電設備的實時運行指標參數以及記錄供電設備的故障告警日志。供電監控系統中UPS的數據庫E-R設計如圖3所示。

圖3 數據庫E-R關系圖
圖3展示了UPS設備實體的主要屬性。UPS的IP地址是供電設備的唯一標識,同時設備運行狀態和故障告警信息也通過該屬性的唯一性進行查詢。在日志記錄查詢功能中,使用列表主要顯示多種類型數據,如低壓配電、蓄電池以及油機等,通常包含的狀態參數種類多,采用列表顯示更直觀。虛擬儀表以圖形化顯示狀態數據,該控件從JS文件中獲取統一傳感器數據包,再經過各自函數查詢處理后在不同的分頁面中顯示。
2.3.1 初始化模塊的實現
初始化模塊完成Flask實例的初始化配置及前端頁面模板Bootstrap和數據庫的創建。前端頁面模板和數據庫的創建利用已經創建好的APP實例進行實例化。創建Flask實例只需一條簡單語句就能實現:

2.3.2 數據模型模塊的實現
數據模型模塊是直接與數據庫連接和讀取數據等操作模塊,同時數據模型模塊建立的邏輯結構也同數據庫設計時各類設備視圖構成映射關系。與數據庫的交互初始化連接均放在配置文件Config.py中,而對數據庫中的每個表進行查詢、組裝等操作則在APP文件夾下的database.py:

系統設計使用的數據庫為SQLite,該數據庫結構簡單,適合存儲大數據。
2.3.3 設備狀態查詢模塊
設備狀態查詢模塊是對數據庫進行當前最新條目的查詢及更新,通過Database.py文件建立與數據庫SQLite的連接,搜索各個設備表后,根據當前的系統時間,更新當前表中的最新數據,做到實時顯示最新的設備狀態參數。

2.4.1 前端模板
在測站供電監控系統中,采用Bootstrap框架美化頁面布局和界面元素,如圖4所示。主頁面為突出系統運維人員通常查看的各類設備重要狀態參數,將各設備的主要參數集成到一個虛擬儀表頁面進行顯示。將設備故障的告警信息設置為紅色,這樣用戶很容易就能發現設備的告警信息。主頁面總體設計風格簡單醒目,尤其在考慮后續供電設備的擴展性上,將各類虛擬儀表設置為可根據當前設備數量靈活添加,增加了用戶的使用友好性。

圖4 供電監控系統主頁面
2.4.2 交互細節
當頁面上展示出某類供電設備的詳細信息時,只有用戶點擊該設備的詳細信息按鈕,其相應的操作才會鏈接到新頁面。當用戶權限角色為普通用戶時,查看信息按鈕變為灰色不可觸發狀態,則不能查看設備詳細信息頁面,其他頁面顯示信息也會根據用戶角色做出相應的權限展示區分,如圖5所示。

圖5 蓄電池詳細頁面
結合網絡編程、嵌入式單片機開發以及傳感器技術,設計了基于Python和Flask框架的測站供電監控系統。完成基本的軟件設計和硬件安裝后,設計開發了測站供電監控系統的基本功能,增強了供電監控系統的數據并行處理能力和網絡傳輸能力,實現了對測站供電設備的狀態信息監測、遠程Web瀏覽以及故障動態智能告警分析。