(1.北京星網(wǎng)船電科技有限公司,北京 102300;2.中船重工703研究所無錫分部,江蘇 無錫 214151)
國產(chǎn)化計(jì)算機(jī)行業(yè)發(fā)展與發(fā)達(dá)國家相比還存在不小的差距,電子產(chǎn)品中很多核心芯片和軟件依賴國外進(jìn)口,當(dāng)前面臨復(fù)雜的國際局勢,存在核心產(chǎn)品和關(guān)鍵器件被禁運(yùn)的風(fēng)險(xiǎn)。堅(jiān)持走自主可控的道路,從關(guān)鍵硬件和操作系統(tǒng)上實(shí)現(xiàn)國產(chǎn)化替代[1],對電子裝備研制水平的提高,對國產(chǎn)計(jì)算機(jī)產(chǎn)業(yè)鏈的發(fā)展,對信息安全可控具有重要意義。
SCADA(Supervisory Control and Data Acquisition)即數(shù)據(jù)采集與監(jiān)視控制系統(tǒng)。SCADA系統(tǒng)以計(jì)算機(jī)為基礎(chǔ)的生成過程控制與調(diào)度自動化系統(tǒng)。可以對現(xiàn)場的運(yùn)行設(shè)備進(jìn)行監(jiān)視和控制,以實(shí)現(xiàn)數(shù)據(jù)采集、設(shè)備控制、測量、參數(shù)調(diào)節(jié)以及各類信號報(bào)警等功能[2]。智能化監(jiān)控是現(xiàn)代船用監(jiān)控系統(tǒng)的設(shè)計(jì)趨勢,國內(nèi)的船用圖形化組態(tài)軟件大多基于X86架構(gòu)工業(yè)計(jì)算機(jī),普遍采用Windows操作系統(tǒng),應(yīng)用軟件開發(fā)采用包括Microsoft系列開發(fā)工具、NI公司的LabView平臺[3]和Wonderware公司InTouch等工控組態(tài)軟件,對自主可控軟硬件平臺運(yùn)用較少。目前上位機(jī)監(jiān)控組態(tài)軟件具有強(qiáng)大的畫面顯示組態(tài)功能、良好的開發(fā)性、功能模塊豐富、強(qiáng)大的數(shù)據(jù)庫的優(yōu)點(diǎn),但是存在授權(quán)使用限制,無法跨平臺運(yùn)行,不開放源碼,無自主知識產(chǎn)權(quán)的缺點(diǎn),關(guān)鍵核心技術(shù)和基礎(chǔ)軟硬件對國外的技術(shù)依賴很高,存在信息安全的隱患。
對于機(jī)旁監(jiān)控嵌入式設(shè)備集成化、小型化、高可靠、自主可控的要求,自主研發(fā)船用機(jī)旁監(jiān)控系統(tǒng)平臺和軟件,提高系統(tǒng)靈活性,優(yōu)化系統(tǒng)監(jiān)控功能,最大程度減少系統(tǒng)的建設(shè)和運(yùn)營成本。
目前國產(chǎn)CPU及國產(chǎn)操作系統(tǒng)發(fā)展迅速,龍芯中科研發(fā)龍芯3A3000 MIPS架構(gòu)CPU,主要面向桌面、高端嵌入式和終端及服務(wù)器應(yīng)用領(lǐng)域。2018年研發(fā)了內(nèi)置GPU的7A1000專用橋片,核心元器件國產(chǎn)化率達(dá)到100%。中標(biāo)麒麟桌面(龍芯版)是支持龍芯64位平臺的自主Linux操作系統(tǒng),支持主流的集成開發(fā)環(huán)境QtCreator4.3版本,官方支持Qt5.6版本的圖形應(yīng)用開發(fā)。中標(biāo)軟件和龍芯中科合作實(shí)現(xiàn)系統(tǒng)內(nèi)核及核心參數(shù)等優(yōu)化適配,共同推進(jìn)國產(chǎn)軟硬件生態(tài)鏈的發(fā)展和產(chǎn)業(yè)升級。
船用燃?xì)廨啓C(jī)機(jī)旁設(shè)備主要包括排氣系統(tǒng)、通風(fēng)系統(tǒng)、潤滑油系統(tǒng)、啟動系統(tǒng)、清洗系統(tǒng)、冷卻與密封系統(tǒng)、點(diǎn)火系統(tǒng)和控制系統(tǒng)。機(jī)旁監(jiān)控系統(tǒng)通過冗余CAN總線和冗余以太網(wǎng)總線與各分系統(tǒng)進(jìn)行數(shù)據(jù)交互。機(jī)旁監(jiān)控系統(tǒng)軟件采集現(xiàn)場大量的傳感器以及IO繼電器數(shù)據(jù),包括發(fā)動機(jī)的工況、液位、設(shè)備啟停、運(yùn)行狀況、閥門狀態(tài)、渦輪轉(zhuǎn)速和狀態(tài)告警參數(shù)等的開關(guān)量信號,以及螺距、燃?xì)鉁囟?、燃?xì)鈮毫Α?dǎo)葉角度、滑油溫度、滑油壓力等的模擬量的信號等。
1)兩條CAN總線完成與兩個(gè)機(jī)旁控制柜的冗余數(shù)據(jù)通信,通信波特率為500 kbps/s,單條CAN總線上通信量峰值約為900幀/秒。
2)通過兩條以太網(wǎng)鏈路實(shí)現(xiàn)與電力控制計(jì)算機(jī)進(jìn)行冗余數(shù)據(jù)通信,通信協(xié)議采用UDP協(xié)議,單包數(shù)據(jù)最大長度不超過1 450字節(jié),通信點(diǎn)數(shù)約為200點(diǎn)。
3)通過兩條以太網(wǎng)鏈路實(shí)現(xiàn)與PLC現(xiàn)場總線控制柜進(jìn)行冗余數(shù)據(jù)通信,通信協(xié)議采用Modbus TCP/IP協(xié)議,通信點(diǎn)數(shù)約為500點(diǎn)。
1)數(shù)據(jù)采集、顯示功能:
數(shù)據(jù)的采集和實(shí)現(xiàn)圖形化的控制,數(shù)據(jù)常以表格、曲線圖等方式顯示。
2)用戶鑒權(quán)管理功能:
系統(tǒng)啟動后,運(yùn)行用戶鑒權(quán)模塊,設(shè)定管理員和操作員的權(quán)限,輸入有效的用戶名和密碼,取得監(jiān)控系統(tǒng)的控制權(quán),才能進(jìn)行權(quán)限內(nèi)的用戶相關(guān)操作。
3)數(shù)據(jù)庫實(shí)時(shí)記錄和査詢功能:
運(yùn)行數(shù)據(jù)實(shí)時(shí)和報(bào)警記錄到數(shù)據(jù)庫中,指定起始、終止時(shí)間,從而實(shí)現(xiàn)查詢指定時(shí)間段內(nèi)設(shè)備運(yùn)行的參數(shù),并以表格或曲線圖的方式顯示。
4)報(bào)警和報(bào)警解除功能:
機(jī)旁監(jiān)控報(bào)警采用三級報(bào)警,第三級報(bào)警為普通報(bào)警,該級別報(bào)警的觸發(fā)不影響機(jī)組的正常運(yùn)行。第二級報(bào)警為限制保護(hù)報(bào)警,該級別的報(bào)警需要操作員進(jìn)行相應(yīng)的處理,確保機(jī)組的正常運(yùn)行。第一級報(bào)警組為緊急停機(jī)報(bào)警,報(bào)警優(yōu)先級最高。三級報(bào)警組在實(shí)時(shí)報(bào)警表格中以不同的顏色區(qū)分[4]。報(bào)警通過網(wǎng)關(guān)延伸報(bào)警裝置來實(shí)現(xiàn)聲光的報(bào)警。當(dāng)系統(tǒng)發(fā)生信號越限報(bào)警時(shí),本系統(tǒng)軟件根據(jù)燃機(jī)準(zhǔn)備聯(lián)鎖條件進(jìn)行報(bào)警處理,控制設(shè)備開啟或關(guān)閉的輸出,保證系統(tǒng)安全運(yùn)行。
5)故障診斷功能:
為保證系統(tǒng)安全穩(wěn)定的運(yùn)行,計(jì)算機(jī)以1 s的周期檢測自身CAN接口和以太網(wǎng)接口的工作狀況,同時(shí)接收下位機(jī)上報(bào)的健康信息,并送界面顯示。
6)打印記錄功能:
根據(jù)需要隨時(shí)打印即時(shí)工況參數(shù),并支持對報(bào)警記錄、報(bào)警時(shí)間的打印功能,以備進(jìn)行故障分析和參數(shù)越限分析。
7)夜航模式功能:
觸摸屏顯示器具有亮度調(diào)節(jié)功能,調(diào)光模塊通過以太網(wǎng)接口滿足調(diào)光總控模塊和分控模塊對白天、傍晚、黑夜3種環(huán)境下統(tǒng)一調(diào)光要求,并支持不同光環(huán)境下辨識顯示信息的要求。
機(jī)旁監(jiān)控系統(tǒng)主要包括2臺監(jiān)控計(jì)算機(jī)、2臺網(wǎng)絡(luò)交換機(jī)、2臺加固顯示器、冗余電源模塊、網(wǎng)絡(luò)打印機(jī)和聲光報(bào)警器等組成,如圖1所示。其中網(wǎng)絡(luò)交換機(jī)、加固顯示器和冗余電源模塊均采用國產(chǎn)化設(shè)計(jì),重點(diǎn)論述計(jì)算機(jī)的系統(tǒng)方案設(shè)計(jì)。
圖1 機(jī)旁監(jiān)控系統(tǒng)結(jié)構(gòu)圖
監(jiān)控計(jì)算機(jī)采用CPEX總線加固計(jì)算機(jī)、雙機(jī)的設(shè)計(jì)方案,兩臺監(jiān)控主機(jī)互為備份關(guān)系,雙機(jī)安裝于同一監(jiān)控臺體內(nèi),機(jī)箱設(shè)計(jì)為6U機(jī)箱。機(jī)箱內(nèi)部由1塊單板計(jì)算機(jī)模塊、1塊CPEX CAN擴(kuò)展卡模塊、1塊CPEX冗余網(wǎng)卡模塊、1個(gè)電源和1塊背板組成。
圖2 監(jiān)控系統(tǒng)軟件框架
綜合考慮處理器的成熟度、應(yīng)用領(lǐng)域、配套軟件等情況,CPU板選擇基于龍芯3A3000高性能4核通用處理器[5],搭配龍芯7A1000橋片進(jìn)行設(shè)計(jì),國產(chǎn)元器件數(shù)量、種類比≥95%。CPU板實(shí)現(xiàn)計(jì)算機(jī)的基本功能括運(yùn)算處理、總線管理、外設(shè)控制以及存儲等,具備BMC功能,實(shí)現(xiàn)核電電壓,主板溫度采集。主板配置CPU主頻為1.2 GHz,HyperTransport總線頻率800 MHz,DDR3內(nèi)存頻率600 MHz。表貼8 GB DDR3西安紫光國芯內(nèi)存,主板工作溫度范圍-40 ℃至+80 ℃。
冗余CAN卡采用南京沁恒微電子的PCIE總線接口芯片CH368,通過CPLD擴(kuò)展4通道隔離SJA1000控制器,CH368橋片實(shí)現(xiàn)PCIe總線到本地總線的協(xié)議轉(zhuǎn)換[6],再通過FPGA芯片EP3C25F324I7N完成本地總線讀寫時(shí)序到SJA1000的讀寫時(shí)序的轉(zhuǎn)換。
雙冗余以太網(wǎng)模塊采用 4路Intel I210單端口千兆位網(wǎng)絡(luò)控制器,I210內(nèi)部集成PHY,支持PCIe v2.1規(guī)范??紤]到主板橋片只集成兩路以太網(wǎng)MAC控制器,其中一路做調(diào)試口,因此通過橋片PCIE-F0的4個(gè)Lane擴(kuò)展4路以太網(wǎng)接口。
顯示器具備亮度調(diào)節(jié)功能,顯示器內(nèi)部背光控制板采用兆易GD32F407ZGT6單片機(jī)控制液晶屏背光模塊驅(qū)動和調(diào)節(jié)電路,通過以太網(wǎng)接收調(diào)光控制模塊發(fā)出的控制指令,實(shí)現(xiàn)顯示器背光與指示燈亮度快速同步調(diào)節(jié)。
機(jī)旁監(jiān)控系統(tǒng)使用國產(chǎn)中標(biāo)麒麟V5.0桌面操作系統(tǒng),應(yīng)用軟件采用Qt5.9作為開發(fā)設(shè)計(jì)工具。Qt是一種跨平臺的圖形用戶界面程序框架,自帶IDE的開發(fā)工具Qt Creator[7]。Qt擁有元對象(Meta-Object)系統(tǒng)機(jī)制動態(tài)獲取類型信息,保證了程序不依賴編譯器和平臺。Qt信號與槽機(jī)制讓處理對象間通信高效、靈活。
機(jī)旁監(jiān)控系統(tǒng)軟件的主要分為6個(gè)功能模塊:數(shù)據(jù)采集處理模塊、外部通信控制模塊、通信故障診斷模塊、數(shù)據(jù)庫訪問模塊、界面顯示及人機(jī)交互模塊和內(nèi)部數(shù)據(jù)通信模塊,如圖2所示。
應(yīng)用軟件框架按需求分解9個(gè)子模塊:CAN通信模塊、數(shù)據(jù)庫模塊、TCP/UDP網(wǎng)絡(luò)通信模塊、自定義UI控件模塊、UI設(shè)計(jì)師界面模塊、權(quán)限管理模塊、QModbus通信模塊、QChart可視化數(shù)據(jù)模塊和CSS樣式表資源模塊。
Qt5.9下配置Qt時(shí)裁剪掉Qtdeclarative、 Qtmultimedia子模塊,并添加Network、Sql、Serialbus、Charts、Printsupport應(yīng)用模塊支持。采用mips64el-neokylin-linux 4.9.3版本gcc源碼編譯和安裝Qt。操作系統(tǒng)下還需要對顯卡、網(wǎng)卡冗余綁定、打印機(jī)服務(wù)、登錄和啟動腳本、系統(tǒng)數(shù)據(jù)備份和恢復(fù)等進(jìn)行配置。
計(jì)算機(jī)龍芯CPU上電后從NAND FLASH加載PMON程序,PMON最小系統(tǒng)工作流程:處理器初始化,調(diào)試串口初始化,關(guān)中斷,配置異常向量,初始化Cache、IO地址映射、對7A1000橋片做初步配置,內(nèi)存初始化、拷貝代碼到內(nèi)存、設(shè)置堆棧、設(shè)置傳參TLB、清緩存寄存器,初始化顯示,以及PCI設(shè)備中斷初始化,最后交權(quán)給內(nèi)核引導(dǎo)操作系統(tǒng)。
驅(qū)動是操作系統(tǒng)內(nèi)核和硬件之間的接口,通信接口驅(qū)動設(shè)計(jì)主要包括CAN驅(qū)動和網(wǎng)卡驅(qū)動。系統(tǒng)下通信接口軟件的設(shè)計(jì)目標(biāo)是實(shí)現(xiàn)通道的冗余功能和鏈路故障監(jiān)測功能,并對上層應(yīng)用軟件進(jìn)行支撐和適配,提供功能完善并且適合應(yīng)用場景的訪問機(jī)制和策略。
4.2.1 網(wǎng)絡(luò)冗余及BIT設(shè)計(jì)
網(wǎng)卡冗余功能通過內(nèi)核bonding機(jī)制實(shí)現(xiàn),bonding機(jī)制是在網(wǎng)卡驅(qū)動和數(shù)據(jù)鏈路層中間插入1 個(gè)虛擬網(wǎng)卡設(shè)備bond0,通過內(nèi)部狀態(tài)機(jī)完成兩條鏈路的主備狀態(tài)監(jiān)測和切換,兩個(gè)冗余網(wǎng)卡通過虛擬的bond0與軟件上層協(xié)議和應(yīng)用傳輸數(shù)據(jù)[8],因此冗余內(nèi)部的組成和傳輸數(shù)據(jù)的細(xì)節(jié)對上層服務(wù)是透明的。中標(biāo)麒麟系統(tǒng)下不自動加載bonding冗余驅(qū)動,通過NetworkManager包提供nmcli命令創(chuàng)建冗余配置,具體方法如下:
1)nmcli connection add con-name bond0 type bond ifname bond0 mode 1 miimon 50 ip4 192.0.0.100/24 gw4 192.0.0.1。即在/etc/sysconfig/network-scripts/目錄下創(chuàng)建了一個(gè)ifcfg-bond0配置文件,設(shè)置鏈路狀態(tài)輪詢時(shí)間50ms,冗余主備工作模式。并將IP地址和網(wǎng)關(guān)等參數(shù)寫入配置文件中。
2)設(shè)置加入bond0組綁定的網(wǎng)口,命令:nmcli connection add con-name enp1s0 type bond-slave ifname enp1s0 master bond0。設(shè)置加入綁定的網(wǎng)口連接名為enp1s0 ,類型為bond-slave,接口名為enp1s0,加入的主接口為bond0。同樣方法將enp2s0也通過命令加入綁定組。
3)設(shè)置加入綁定的網(wǎng)口的屬性。nmcli con mod enp1s0 connection.autoconnect yes。
檢測冗余以太網(wǎng)鏈路狀態(tài)是在用戶空間下調(diào)ethtool下的Ioctl方法實(shí)現(xiàn),實(shí)現(xiàn)核心代碼如下:
struct ethtool_cmd ecmd;
struct ethtool_value edata;
fd = socket(AF_INET, SOCK_DGRAM, 0);
ecmd.cmd = ETHTOOL_GSET;
ifr.ifr_data = (caddr_t)&ecmd;
err = ioctl(fd, SIOCETHTOOL, &ifr);
edata.cmd = ETHTOOL_GLINK;
ifr.ifr_data = (caddr_t)&edata;
err = ioctl(fd, SIOCETHTOOL, &ifr);
通過ETHTOOL_GSET和ETHTOOL_GLINK兩個(gè)控制命令查詢獲取網(wǎng)卡鏈接速度、雙工、自協(xié)商狀態(tài)和物理連接狀態(tài)并反饋到界面顯示,這樣實(shí)現(xiàn)網(wǎng)卡鏈路故障監(jiān)測功能。
4.2.2 改進(jìn)的CAN軟件接口設(shè)計(jì)
CAN驅(qū)動設(shè)計(jì)分兩個(gè)模塊:PCIe橋片驅(qū)動和CAN控制器驅(qū)動。驅(qū)動加載時(shí)依賴can、can_dev、can-raw三個(gè)內(nèi)核模塊,驅(qū)動通過insmod內(nèi)核模塊的方式加載。驅(qū)動實(shí)現(xiàn)PCI總線到本地總線讀寫和訪問,初始化CAN和讀寫每路SJA1000控制器。其中PCIe橋片的驅(qū)動依據(jù)FPGA邏輯地址偏移,完成PCI本地內(nèi)存映射,掛接中斷服務(wù)程序并使能中斷。驅(qū)動加載后執(zhí)行總線注冊,遍歷設(shè)備和驅(qū)動鏈表,對CH368設(shè)備與CAN驅(qū)動程序進(jìn)行匹配,并在系統(tǒng)下注冊為net設(shè)備。CAN控制器驅(qū)動實(shí)現(xiàn)對SJA1000寄存器讀寫和中斷處理功能[9]。
默認(rèn)CAN原始socket接口工作在阻塞模式,面臨Qt應(yīng)用層和CAN socket層之間緩沖區(qū)同步和互斥的問題。原始通信情況下即使加大緩沖區(qū)到10 kBytes,依然出現(xiàn)丟幀的情況。
直接基于CAN raw socket開發(fā)應(yīng)用,應(yīng)用線程與CAN讀取線程之間直接同步數(shù)據(jù)效率很低,當(dāng)四路CAN通道數(shù)據(jù)量達(dá)到500幀/秒,CPU負(fù)載超過60%情況時(shí)很容易出現(xiàn)丟幀現(xiàn)象。研究使用合適的異步處理機(jī)制,最終使用SerialBus模塊QCanBusDevice類中重新封裝了QVector
系統(tǒng)中標(biāo)準(zhǔn)幀的ID0-ID9作為設(shè)備尋址位。ID0到ID11每個(gè)位對應(yīng)總線上的一個(gè)節(jié)點(diǎn),本計(jì)算機(jī)節(jié)點(diǎn)要往1號監(jiān)控節(jié)點(diǎn)發(fā)送一個(gè)報(bào)文,就把ID11置1,其他位全部置0;如果要同時(shí)往1號和2號監(jiān)控節(jié)點(diǎn)發(fā)送同一個(gè)報(bào)文,就把ID10和ID11兩位同時(shí)置1,其他位全部置0。在這樣的尋址方式下,通過QCanBusDevice對象中setConfigurationParameter方法設(shè)置好驗(yàn)收寄存器和屏蔽寄存器,能夠有效減輕CAN總線控制器的負(fù)載,提高計(jì)算機(jī)通信處理能力。
兩路CAN會接收和發(fā)送相同的數(shù)據(jù)幀,通過改進(jìn)的算法實(shí)現(xiàn)CAN冗余通信可靠性和實(shí)時(shí)性:創(chuàng)建兩個(gè)CAN通道的應(yīng)用緩沖區(qū),當(dāng)某一路CAN通道接收到CAN幀時(shí),通過搜索另外一路CAN接收緩沖區(qū),如果沒有相同報(bào)文編號的數(shù)據(jù),則判定接收到的CAN數(shù)據(jù)有效;如果有說明已經(jīng)從另一路總線接收到了同一個(gè)數(shù)據(jù),則不使用該重復(fù)數(shù)據(jù)。緩沖區(qū)的存儲采用哈希表算法,即采用QHash散列存儲的鍵值對容器類,表的大小和數(shù)據(jù)項(xiàng)是自適應(yīng),QHash最差情況下的時(shí)間復(fù)雜度O(n),迭代遍歷時(shí)更加高效,滿足了CAN冗余通信的實(shí)時(shí)性要求。
Qt5.9上QCanBusDevice不具備監(jiān)測CAN總線狀態(tài)的方法,為實(shí)現(xiàn)CAN鏈路故障監(jiān)測功能,需要獲取驅(qū)動層的SJA1000控制器總線狀態(tài),通過重載QCanBusDevice類的busStatus方法,并在驅(qū)動中注冊回調(diào)函數(shù),在中斷服務(wù)程序中獲取SJA1000控制器狀態(tài)寄存器的值,獲取的狀態(tài)包括總線狀態(tài)、發(fā)送狀態(tài)、接收狀態(tài)、數(shù)據(jù)溢出狀態(tài)和發(fā)送接收緩沖區(qū)狀態(tài),最終反饋傳遞到應(yīng)用層。
監(jiān)控軟件界面設(shè)計(jì)主要包括UI界面設(shè)計(jì)與美化、自定義窗口和通信控件設(shè)計(jì)、信號與槽設(shè)計(jì)、界面晝夜風(fēng)格樣式設(shè)計(jì)等內(nèi)容。實(shí)際設(shè)計(jì)中Qt 提供的基礎(chǔ)類不滿足設(shè)計(jì)要求,需要進(jìn)行重載和封裝,項(xiàng)目中開發(fā)的自定義類見表1所示。
表1 項(xiàng)目Qt自定義類
表2 試驗(yàn)樣機(jī)試驗(yàn)結(jié)果匯總表
前端設(shè)計(jì)框架設(shè)計(jì)采用了MVC模型,即把界面設(shè)計(jì)分為3個(gè)部分:模型(Model)、視圖(View)、控制器(Controller)。模型用于組織數(shù)據(jù)源,不關(guān)心數(shù)據(jù)的顯示方式;視圖用于定義數(shù)據(jù)的顯示方式,不關(guān)心數(shù)據(jù)的組織方式;控制器用于處理用戶在用戶界面的輸入,Qt采用委托Delegate方式把用戶輸入的數(shù)據(jù)委托給Qt的某個(gè)部件處理。模型、視圖、委托之間的通信使用Qt的信號和槽機(jī)制來完成。統(tǒng)一使用Qt5信號與槽語法:connect(sender, &Sender::valueChanged,receiver, &Receiver::updateValue ),不采用Lambda表達(dá)式語法,信號與槽實(shí)現(xiàn)統(tǒng)一在主界面中。
根據(jù)機(jī)旁監(jiān)控系統(tǒng)的硬件配置和實(shí)時(shí)性要求,結(jié)合SQLite數(shù)據(jù)庫數(shù)據(jù)的需求,在Qt下使用開源嵌入式SQLITE3數(shù)據(jù)庫,實(shí)時(shí)存儲重要運(yùn)行參數(shù)到數(shù)據(jù)庫,并從運(yùn)行的監(jiān)控軟件中檢索歷史數(shù)據(jù)并在Qt中顯示。 監(jiān)控按周期性讀取緩沖區(qū)數(shù)據(jù)并記錄到數(shù)據(jù)庫中。采用線程執(zhí)行查詢符合條件的記錄行數(shù),考慮查詢數(shù)據(jù)庫時(shí)間跨度大符合條件的數(shù)據(jù)量大,為避免查詢時(shí)間過長,導(dǎo)致顯示數(shù)據(jù)的表格的響應(yīng)慢的問題,采用分頁查詢并顯示記錄,如圖3所示,按顯示頁面表格行數(shù)分頁查詢數(shù)據(jù)庫表記錄并顯示。
圖3 監(jiān)控?cái)?shù)據(jù)庫歷史數(shù)據(jù)界面圖
經(jīng)過一系列研制工作后,基于自主可控國產(chǎn)化機(jī)旁監(jiān)控系統(tǒng)樣機(jī)在調(diào)試和試驗(yàn)階段與控制柜進(jìn)行聯(lián)調(diào),機(jī)旁監(jiān)控系統(tǒng)通過了可靠性試驗(yàn)評測,符合《CB/T 3153-2019 船舶機(jī)艙監(jiān)視報(bào)警裝置技術(shù)條件》標(biāo)準(zhǔn)要求,軟件設(shè)計(jì)滿足應(yīng)用需要,實(shí)現(xiàn)了監(jiān)控系統(tǒng)軟硬件自主可控設(shè)計(jì)閉環(huán),國產(chǎn)化監(jiān)控系統(tǒng)樣機(jī)研制成功。
為驗(yàn)證系統(tǒng)的組網(wǎng)運(yùn)行的準(zhǔn)確性和可靠性,按照《GJB150-2009軍用裝備實(shí)驗(yàn)室環(huán)境試驗(yàn)》要求,包括溫度、濕度、壓力、噪聲、振動、沖擊環(huán)境條件下機(jī)械和電氣使用功能和性能試驗(yàn)以及電磁兼容性,匯總試驗(yàn)結(jié)果如表2所示。
從總體實(shí)驗(yàn)結(jié)果看,系統(tǒng)外部接口以及內(nèi)部模塊之間接口無故障,數(shù)據(jù)顯示、記錄,報(bào)警,界面操作滿足現(xiàn)場運(yùn)行的要求。監(jiān)控系統(tǒng)達(dá)到了國產(chǎn)化預(yù)期性能,功能上滿足了項(xiàng)目自主可控的需求。
國產(chǎn)化機(jī)旁監(jiān)控系統(tǒng)已完成現(xiàn)場調(diào)試并投入試運(yùn)行,滿足了項(xiàng)目的設(shè)計(jì)使用要求。機(jī)旁監(jiān)控系統(tǒng)軟件運(yùn)行穩(wěn)定。該研究對國產(chǎn)化軟硬件平臺下數(shù)據(jù)采集與監(jiān)視控制系統(tǒng)應(yīng)用具有指導(dǎo)意義,并對自主可控系統(tǒng)方案應(yīng)用和可靠運(yùn)行提供了堅(jiān)實(shí)的技術(shù)積累。