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