文獻(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)的臺式機主板,。其搭載具有國產(chǎn)自主知識產(chǎn)權(quán)的龍芯3A處理器[3],,內(nèi)存為4 GB×2,硬盤為2 TB,,支持先進的計算技術(shù)與動態(tài)頻率變換,,及低功耗芯片組與附件,基于Linux內(nèi)核的桌面方案,,可用作小型服務(wù)器,,滿足監(jiān)控軟件性能需求。
1.2 軟件平臺國產(chǎn)化
操作系統(tǒng)是管理和控制計算機硬件及軟件資源的計算機程序,,它是運行在機器上最底層的系統(tǒng)軟件,。操作系統(tǒng)也是普通用戶最常使用的計算機接口,同時也提供計算機硬件和其他軟件的接口[4],。它最大的功能在于為其他應(yīng)用軟件的運行提供支持,,使計算機系統(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)運行維護的操作界面。
業(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ù)處理模塊與具體實體類型進行接口隔離的設(shè)計要求[5],。
2.2 模塊設(shè)計
(1)用戶界面模塊
用戶界面模塊提供用戶操作界面,是用戶與監(jiān)控終端的接口界面,。
(2)用戶命令解析模塊
用戶命令解析模塊是用戶界面模塊和業(yè)務(wù)層各模塊之間的接口控制模塊,,解析、執(zhí)行用戶提交的各種命令,,如獲取基本參數(shù),、配置基本參數(shù)、獲取設(shè)備信息,、上報設(shè)備狀態(tài)等,。
(3)命令調(diào)度模塊
命令調(diào)度模塊是對配置命令進行管理調(diào)度的模塊。
(4)配置管理模塊
配置管理模塊包括對監(jiān)控軟件的配置和對關(guān)鍵信息處理設(shè)備的配置兩部分,,對參數(shù),、策略等配置任務(wù)和設(shè)備信息進行組織管理。
(5)配置協(xié)議模塊
配置協(xié)議模塊封裝對關(guān)鍵信息處理設(shè)備的各種配置命令,。
(6)業(yè)務(wù)管理模塊
業(yè)務(wù)管理模塊管理進出關(guān)鍵信息處理設(shè)備的各類業(yè)務(wù)數(shù)據(jù),。
(7)管理協(xié)議模塊
管理協(xié)議模塊是具體解析各類進出關(guān)鍵信息處理設(shè)備的業(yè)務(wù)數(shù)據(jù)以及關(guān)鍵信息處理設(shè)備上報的狀態(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)絡(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ù)不同的協(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ù)的接收,、解析、顯示和保存都是各自異步工作,,沒有等待,,沒有阻塞,從機制上保證了數(shù)據(jù)的實時處理能力,,能有效應(yīng)對數(shù)據(jù)量峰值,,保證程序穩(wěn)健地運行。
此外,,多線程數(shù)據(jù)處理模型中多個線程獨立工作,,線程之間松耦合,帶來的程序可維護性極高,。并且各個信號源也是獨立的線程,,互相獨立工作,,進一步提高了程序穩(wěn)健性和可維護性[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ù),,保存到先進先出隊列,供數(shù)據(jù)接收線程調(diào)用,。采用信號量機制自動觸發(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ā)揮計算機的并行處理能力,大大提高軟件數(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的,,允許從多進程或線程安全訪問,便于對進出關(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ū)間為條件進行的,,查詢某個參數(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è)備進行相應(yīng)的控制操作,,對各種數(shù)據(jù)窗口和分頁面進行切換測試,反應(yīng)時間均小于1 s,。軟件運行前后計算機性能比較見表2,。在軟件運行時CPU占用率最大為15%,內(nèi)存占用最大為1.16 GB,。
圖4為實際測試時截取的軟件主界面運行效果圖,,通過表格的方式實時顯示出入數(shù)據(jù)、報警信息和日志信息,,通過樹狀列表的方式顯示當(dāng)前在線的設(shè)備,。圖5為對業(yè)務(wù)發(fā)送數(shù)據(jù)的查詢。通過右鍵單擊設(shè)備列表中某固定設(shè)備,,可以對其進行配置管理,。
5 結(jié)論
本文通過選取國產(chǎn)龍芯3A處理器和國產(chǎn)麒麟操作系統(tǒng)實現(xiàn)軟硬件平臺的自主可控,通過設(shè)計多線程處理模型,、設(shè)計數(shù)據(jù)庫模型,、利用面向?qū)ο缶幊谭椒ǎ瑢崿F(xiàn)監(jiān)控軟件性能的提升,。實驗結(jié)果表明,,采用本文中軟硬件平臺設(shè)計的監(jiān)控軟件安全性高、可靠性強,、操作便捷,。目前,,該監(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] 馬書磊,,田洪娟,劉豐.一種基于龍芯平臺的安全防護網(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].計算機測量與控制,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.
作者信息:
張 姍,劉笑凱,,王 超,,郝克林
(華北計算機系統(tǒng)工程研究所,北京100083)