《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于國產(chǎn)化平臺監(jiān)控軟件的設(shè)計與實現(xiàn)
基于國產(chǎn)化平臺監(jiān)控軟件的設(shè)計與實現(xiàn)
2018年電子技術(shù)應(yīng)用第10期
張 姍,劉笑凱,王 超,郝克林
華北計算機(jī)系統(tǒng)工程研究所,北京100083
摘要: 目前的監(jiān)控設(shè)備大部分是基于國外的基礎(chǔ)軟硬件研制開發(fā)的,存在核心技術(shù)受制于人的安全隱患。針對該問題,提出一種基于國產(chǎn)化軟硬件平臺的監(jiān)控軟件設(shè)計與實現(xiàn)。通過分?jǐn)?shù)據(jù)庫存儲實現(xiàn)插入、查詢算法的優(yōu)化,采用多線程設(shè)計實現(xiàn)大量并行數(shù)據(jù)的接收與處理,利用面向?qū)ο蟪绦蛟O(shè)計方法實現(xiàn)數(shù)據(jù)接收層、處理層和展示層的有效分離。設(shè)計的軟件經(jīng)實際環(huán)境應(yīng)用,表現(xiàn)出良好的數(shù)據(jù)承載能力、實時性和可靠性,同時具有較好的可擴(kuò)展性和可維護(hù)性。
中圖分類號: TP311.1
文獻(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.
Design and implementation of monitor software applied on native platform
Zhang Shan,Liu Xiaokai,Wang Chao,Hao Kelin
National Computer System Engineering Research Institute of China,Beijing 100083,China
Abstract: Currently, most monitor devices are developed based on foreign software and hardware. The core technology is controlled by others. So that this paper designs an monitor software which is applied on native software and hardware platform. By means of multi-database storage, the method of insert and query is optimized. A large number of parallel data is realized by using multi-threaded design. Using object-oriented program design method makes the data receiving layer, processing layer and display layer separated. Through testing by the actual environment, the carrying capacity, real-time and reliability of monitor is enhanced. At the same time, the software designed has good scalability and maintainability.
Key words : native;monitor;multi-thread;data base

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所示。

jsj3-t1.gif

    界面層提供監(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所示。

jsj3-t2.gif

    多線程數(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所示。

jsj3-t3.gif

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所示。

jsj3-b1.gif

    軟件應(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。

jsj3-b2.gif

    圖4為實際測試時截取的軟件主界面運行效果圖,通過表格的方式實時顯示出入數(shù)據(jù)、報警信息和日志信息,通過樹狀列表的方式顯示當(dāng)前在線的設(shè)備。圖5為對業(yè)務(wù)發(fā)送數(shù)據(jù)的查詢。通過右鍵單擊設(shè)備列表中某固定設(shè)備,可以對其進(jìn)行配置管理。

jsj3-t4.gif

jsj3-t5.gif

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)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。