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