文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.180540
中文引用格式: 張姍,劉笑凱,王超,等. 基于國產化平臺監控軟件的設計與實現[J].電子技術應用,2018,44(10):140-143,148.
英文引用格式: Zhang Shan,Liu Xiaokai,Wang Chao,et al. Design and implementation of monitor software applied on native platform[J]. Application of Electronic Technique,2018,44(10):140-143,148.
0 引言
監控軟件是工業控制系統的一個重要組成部分,是實現自動化運行管理的關鍵部件,其可以實現對業務系統中關鍵信息處理設備的數據流監視記錄、工作狀態檢測、故障定位和參數設置等功能。但目前監控軟件大部分是基于國外的基礎軟硬件(如Intel處理器、Windows操作系統、Oracle數據庫等)研制開發的,存在核心技術受制于人的安全隱患[1]。2013年“斯諾登事件”爆發后,核心軟硬件的國產化倍受重視[2]。
基于以上背景,本文提出一種基于國產龍芯處理器和國產麒麟操作系統的監控軟件,集成了監視業務、數據實時顯示、存盤和查詢、故障報警以及對關鍵信息處理設備的配置管理等功能。該監控軟件可部署于工業控制系統中,為關鍵信息處理設備的安全運行提供保障,在提升自主可控水平的同時,更杜絕了因為對國外核心零部件的依賴所導致的信息安全隱患,滿足了核心領域高信息安全、高自主可控的服務需求。
1 國產軟硬件平臺
監控軟件的設計立足于國產關鍵軟硬件,利用自主優勢,提升工控系統穩定性和可靠性。
1.1 硬件平臺國產化
硬件平臺采用國產龍芯3AMini-ITX主板,它是一款符合Mini-ITX標準的臺式機主板。其搭載具有國產自主知識產權的龍芯3A處理器[3],內存為4 GB×2,硬盤為2 TB,支持先進的計算技術與動態頻率變換,及低功耗芯片組與附件,基于Linux內核的桌面方案,可用作小型服務器,滿足監控軟件性能需求。
1.2 軟件平臺國產化
操作系統是管理和控制計算機硬件及軟件資源的計算機程序,它是運行在機器上最底層的系統軟件。操作系統也是普通用戶最常使用的計算機接口,同時也提供計算機硬件和其他軟件的接口[4]。它最大的功能在于為其他應用軟件的運行提供支持,使計算機系統的資源得到最大化利用。正因為操作系統有著這些特點,實現操作系統自主可控的重要性不言而喻。
該國產硬件平臺搭建國產銀河麒麟Linux操作系統,平臺內所含軟件全部自主開發,所有應用軟件均自主編寫,做到完全自主可控。
2 監控軟件的設計
2.1 軟件組成
監控軟件以平臺化、層次化、模塊化設計為原則,基于國產操作系統,主體采用C++語言開發構建。監控軟件總體架構包括以下4個層次:界面層、業務層、協議層、接口層,如圖1所示。
界面層提供監控軟件對自身運行狀態的監控展示界面、對關鍵信息處理設備的配置管理界面、日志查詢界面、命令解析界面、任務執行情況監控界面、系統運行維護的操作界面。
業務層是核心功能層,實現監控軟件的主體功能,包括以下幾個子功能:命令調度、配置管理、業務管理和查詢管理。各功能模塊需要使用的底層封裝接口由接口層具體封裝實現。
協議層實現對協議的解析處理,包括配置協議、管理協議和查詢協議。
接口層根據上層業務調用的需要,實現網絡通信接口、數據庫訪問接口和語音接口功能,為上層業務提供統一的調用接口,滿足上層業務處理模塊與具體實體類型進行接口隔離的設計要求[5]。
2.2 模塊設計
(1)用戶界面模塊
用戶界面模塊提供用戶操作界面,是用戶與監控終端的接口界面。
(2)用戶命令解析模塊
用戶命令解析模塊是用戶界面模塊和業務層各模塊之間的接口控制模塊,解析、執行用戶提交的各種命令,如獲取基本參數、配置基本參數、獲取設備信息、上報設備狀態等。
(3)命令調度模塊
命令調度模塊是對配置命令進行管理調度的模塊。
(4)配置管理模塊
配置管理模塊包括對監控軟件的配置和對關鍵信息處理設備的配置兩部分,對參數、策略等配置任務和設備信息進行組織管理。
(5)配置協議模塊
配置協議模塊封裝對關鍵信息處理設備的各種配置命令。
(6)業務管理模塊
業務管理模塊管理進出關鍵信息處理設備的各類業務數據。
(7)管理協議模塊
管理協議模塊是具體解析各類進出關鍵信息處理設備的業務數據以及關鍵信息處理設備上報的狀態信息和日志報警信息。
(8)查詢管理模塊
查詢管理模塊實現對收到的出入數據、日志信息和報警信息進行查詢。
(9)查詢協議模塊
查詢協議模塊封裝查詢信息,將其發送給數據庫接口模塊處理。
(10)數據庫接口模塊
數據接口模塊對底層的數據庫操作進行封裝,對上層模塊提供數據庫訪問接口。
(11)網絡通信模塊
網絡通信模塊接入通信業務專網,完成與關鍵信息處理設備之間的網絡數據傳輸功能。
(12)語音模塊
語音模塊實現對報警信息的語音播報功能。
(13)程序框架模塊
程序框架模塊提供監控軟件的程序框架,組織各個模塊功能,實現軟件架構的平臺化、層次化、模塊化開發。
3 監控軟件的實現
3.1 跨平臺設計的方法
采用QT開發框架,用高性能的C++語言開發,使得系統一次編碼,能在所有平臺運行,完美地支持Windows各個版本和麒麟Linux操作系統。
3.2 多線程處理程序方法
監控軟件的信息來源通常包括業務接收數據、業務發送數據、時統數據、日志上報數據和監控命令。這些信息同時以不同的頻率通過組/廣播的方式被轉發到數據處理中心的主干網上,它們屬于不同的組/廣播。監控軟件從主干網上接收這些信息,通過信息校驗及解析,最終需要把所有信息以表格的形式直觀的顯示出來。監控軟件作為關鍵信息處理設備狀態監控的依據,顯示的數據必須全面無漏點,因此,對其可靠性和實時性要求較高[6]。
由于信息源發送信息的并行性,設計多線程數據處理模型,提升軟件的運行效率[7]。設計每個信號源對應一個多線程數據處理模型,從而保證數據接收、處理和顯示的實時性。多線程數據處理模型如圖2所示。
多線程數據處理模型包括一個數據接收線程、一個數據解析線程和一個數據存儲線程,采用的是生產者與消費者模型。
數據接收線程只做一件事,即將接收到的數據立即放入先入先出隊列(FIFO),同時給數據解析線程發送信號,然后繼續等待接收數據,接收線程永不阻塞。
數據解析線程接收到數據接收線程發送的信號量后,從FIFO隊列中取出一幀數據進行解析,根據不同的協議比對,最后解析成程序可操作的數據,然后將數據更新到顯示用的緩存中,并保存到數據庫用的緩存中。至此并不直接顯示,亦不立即寫數據庫。數據解析線程亦沒有等待時間,繼續處理下一幀。
數據存儲線程每隔n ms,將顯示緩存中的數據更新到界面上;每當數據量到了一個閾值,一次性保存到數據庫。
這種批量操作大大提高了整體效率。整個數據的接收、解析、顯示和保存都是各自異步工作,沒有等待,沒有阻塞,從機制上保證了數據的實時處理能力,能有效應對數據量峰值,保證程序穩健地運行。
此外,多線程數據處理模型中多個線程獨立工作,線程之間松耦合,帶來的程序可維護性極高。并且各個信號源也是獨立的線程,互相獨立工作,進一步提高了程序穩健性和可維護性[8]。監控軟件數據接收線程、數據解析線程和數據存儲線程工作示意圖如圖3所示。
3.3 面向對象數據處理方法
由于數據種類繁多,對接收的數據需要分類存儲和顯示。為保證實時性,采用數據接收層、處理層和展示層分離的方式,設計數據接收類、數據解析類和數據顯示類。
其中數據接收類從組/廣播地址中接收數據,保存到先進先出隊列,供數據接收線程調用。采用信號量機制自動觸發數據解析線程。
數據解析類按照不同的數據幀格式解析數據并存儲,供數據解析線程調用。
數據顯示類是基于多文檔應用程序創建的多個窗口顯示類,屬于主線程類。由于數據接收類、數據解析類和數據顯示類屬于不同線程,如此可以充分發揮計算機的并行處理能力,大大提高軟件數據處理與顯示的效率。
3.4 分數據庫存儲方法
數據存儲采用SQLite數據庫。SQLite數據庫是輕量級、跨平臺的關系數據庫,實現了自給自足、無服務、零配置和事務性的SQL數據庫引擎。SQLite事物是完全兼容ACID的,允許從多進程或線程安全訪問,便于對進出關鍵信息處理設備數據的存儲操作[9]。如何高效使用數據庫以及設計數據庫結構是軟件實現中的一個難點。
由于系統是全天候運行,產生的數據量極大,對于一般的軟件系統,會造成數據庫臃腫,最后導致查詢和寫入效率急劇降低,影響系統的正常運行。
針對該問題的解決方案是采用分數據庫存儲,即數據庫按日期存儲,數據庫名格式為YYYY-MM-DD,這樣有效降低了數據庫臃腫問題。并且每個數據庫中的表是按照組/廣播通道保存的,即每個組/廣播通道有單獨的數據庫表,便于快速地寫入和查詢。
監控數據是典型的時間序列數據,即按時間順序產生、存儲和查詢。針對其數據特點,查詢檢索是以時間區間為條件進行的,查詢某個參數在某段時間內的所有數據[10]。
4 監控軟件的應用
在實際工業控制系統中搭建應用環境,應用數據配置情況如表1所示。
軟件應用結果表明,軟件能夠正確接收出入信息并顯示、存盤,同時對關鍵信息處理設備進行相應的控制操作,對各種數據窗口和分頁面進行切換測試,反應時間均小于1 s。軟件運行前后計算機性能比較見表2。在軟件運行時CPU占用率最大為15%,內存占用最大為1.16 GB。
圖4為實際測試時截取的軟件主界面運行效果圖,通過表格的方式實時顯示出入數據、報警信息和日志信息,通過樹狀列表的方式顯示當前在線的設備。圖5為對業務發送數據的查詢。通過右鍵單擊設備列表中某固定設備,可以對其進行配置管理。
5 結論
本文通過選取國產龍芯3A處理器和國產麒麟操作系統實現軟硬件平臺的自主可控,通過設計多線程處理模型、設計數據庫模型、利用面向對象編程方法,實現監控軟件性能的提升。實驗結果表明,采用本文中軟硬件平臺設計的監控軟件安全性高、可靠性強、操作便捷。目前,該監控軟件已運行于某工業控制系統中。
參考文獻
[1] 劉嘉棟,張濤,昂正全.地面站遠程監控系統的設計與實現[J].飛行器測控學報,2010,29(3):25-28.
[2] 馬書磊,田洪娟,劉豐.一種基于龍芯平臺的安全防護網關設計與實現[J].信息網絡安全,2016(9):196-201.
[3] 吳蓬勃.龍芯3A處理器在某軍用系統上的應用研究[J].電子技術,2014(2):32,38-42.
[4] 王錄恩.多處理器系統監控的研究與設計[D].合肥:中國科學技術大學,2011.
[5] 劉金梅.基于B/S架構的嵌入式Web遠程監控系統的研究與實現[D].內蒙古:內蒙古大學,2012.
[6] 劉厚智.基于C/S的氣象衛星測控站監控系統的設計與開發[D].廣州:華南理工大學,2011.
[7] 童艷,朱丹.測控數據實時監測軟件設計方法研究[J].計算機測量與控制,2017,25(1):101-104.
[8] 董房,劉洋,王儲.一種衛星遙測在線狀態監測及分析系統的設計[J].電子科學技術,2015,2(5):32-36.
[9] 李苒.數據庫中間件在航天地面應用系統中的應用研究[D].西安:西安電子科技大學,2010.
[10] 楊悅.基于海量衛星測控數據存儲與查詢方法[J].科學技術與工程,2013,13(25):72-76.
作者信息:
張 姍,劉笑凱,王 超,郝克林
(華北計算機系統工程研究所,北京100083)