LabVIEW軟件是一種可視化程度較高的圖形化編程工具,,以其直觀清晰,、簡明易學(xué)的優(yōu)點(diǎn)被作為初級(jí)編程者的首選。迄今為止,,LabVIEW軟件已在石油,、煤炭、工業(yè)自動(dòng)測量與控制、航空及醫(yī)學(xué)儀器等領(lǐng)域相繼得到了成功應(yīng)用,。飛行試驗(yàn)實(shí)時(shí)監(jiān)控軟件是針對(duì)具體試飛科目而開發(fā)的專用型軟件,,它要求數(shù)據(jù)傳輸安全、穩(wěn)定可靠及實(shí)時(shí)性好,。目前,,我院飛行試驗(yàn)遙測實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)處理系統(tǒng)的客戶端實(shí)時(shí)監(jiān)控軟件,絕大多數(shù)情況下是采用NI LabVIEW的軟件開發(fā)平臺(tái)進(jìn)行開發(fā),。該類型客戶端軟件,,一般滿足了試飛課題的需求,保障了科研試飛,。但是,,針對(duì)一些實(shí)時(shí)性要求較高,試飛風(fēng)險(xiǎn)較大的特定試飛科目,,如何開發(fā)高性能的試飛科目時(shí)間歷程實(shí)時(shí)監(jiān)控軟件是本文研究的重點(diǎn),。
1 影響VI性能的因素
VI性能的好壞主要由VI的執(zhí)行時(shí)間、數(shù)據(jù)的刷新速度和VI內(nèi)存的使用三方面決定,。
文件讀和寫,、使用GPIB、數(shù)據(jù)采集及網(wǎng)絡(luò)應(yīng)用都影響VI的執(zhí)行時(shí)間,。數(shù)據(jù)在屏幕上的刷新速度與程序中控制控件,、顯示控件及與控制控件相關(guān)聯(lián)的控件數(shù)目有關(guān)。此外,,合理使用和高效管理VI的內(nèi)存可以提高VI的性能,。
2 提高VI執(zhí)行效率的方法
針對(duì)以上影響VI性能的因素,為提高VI的執(zhí)行效率,,在進(jìn)行某客戶端實(shí)時(shí)監(jiān)控軟件系統(tǒng)設(shè)計(jì)時(shí),,采用了以下編程技術(shù)來增強(qiáng)程序的可讀性。
(1)程序避免在循環(huán)體里計(jì)算,。能在循環(huán)體外計(jì)算時(shí),,盡量將公式計(jì)算安排在循環(huán)體外。
(2)在滿足軟件設(shè)計(jì)要求的前提下,,將前面板顯示控件較多,,畫面布局大于屏幕尺寸的VI分割成幾個(gè)VI進(jìn)行設(shè)計(jì);或者將大的VI分割成子VI,。
(3)當(dāng)VI程序框圖中使用較多矩陣(Array)或字符串(string)函數(shù)時(shí),,程序框圖中盡量少用全局變量或局部變量;且輸入矩陣和輸出矩陣盡量使用相同的數(shù)據(jù)類型,。
(4)設(shè)計(jì)程序框圖時(shí),,盡量使輸出函數(shù)能復(fù)用輸入函數(shù)的內(nèi)存空間,,尤其是使用矩陣、矩陣子集或字符串函數(shù)時(shí),。
(5)如果子VI的前面板不需要顯示,,去掉子VI中不用的屬性節(jié)點(diǎn)。
(6)設(shè)計(jì)VI時(shí),,避免使用復(fù)雜的數(shù)據(jù)類型,,開發(fā)高效的程序結(jié)構(gòu)。
(7)在VI屬性的“執(zhí)行”選項(xiàng)里面,,將子VI的優(yōu)先級(jí)設(shè)置成“子程序”(subroutine),,將主VI的優(yōu)先級(jí)設(shè)置為“優(yōu)先執(zhí)行”(time criti-cal Priority)的最高優(yōu)先級(jí)。
3 實(shí)時(shí)監(jiān)控中的應(yīng)用
在NI LabVIEW 7.0平臺(tái)下基于以上編程思想,,進(jìn)行了某課題實(shí)時(shí)監(jiān)控軟件的系統(tǒng)開發(fā),。以下是其中的部分監(jiān)控畫面。監(jiān)控畫面中用Waveform Chart控件來實(shí)時(shí)顯示參數(shù)的時(shí)間歷程曲線,。根據(jù)軟件的設(shè)計(jì)要求,,將Chart圖表的y軸設(shè)置成自動(dòng),x軸利用控件本身的可見屬性x Scrollbar來及時(shí)刷新圖表顯示,。
圖1描述了數(shù)據(jù)源以1倍速率從服務(wù)器向客戶端VI發(fā)送網(wǎng)絡(luò)數(shù)據(jù),,正常條件下,,兩參數(shù)Par1和Par2的典型Chart趨勢圖,。
保持客戶端與服務(wù)器的網(wǎng)絡(luò)通信狀態(tài)不變,將數(shù)據(jù)源以4倍速率從服務(wù)器向客戶端發(fā)送網(wǎng)絡(luò)數(shù)據(jù),,客戶端監(jiān)控畫面中兩個(gè)參數(shù)曲線出現(xiàn)臺(tái)階式的跳點(diǎn),,對(duì)此現(xiàn)象不做任何處理,該現(xiàn)象一直持續(xù),。實(shí)時(shí)監(jiān)控中兩參數(shù)的曲線效果如圖2所示,。產(chǎn)生圖2現(xiàn)象后,斷開服務(wù)器,,停止向客戶端發(fā)送數(shù)據(jù),,同時(shí)將客戶端VI重新打包生成.exe可執(zhí)行文件,然后服務(wù)器重新開始以4倍速率向客戶端發(fā)送網(wǎng)絡(luò)數(shù)據(jù),。VI執(zhí)行時(shí),,圖2所示現(xiàn)象消失,客戶端實(shí)時(shí)監(jiān)控畫面恢復(fù)良好,。
或者利用Chart的屬性節(jié)點(diǎn)函數(shù)編程將Chart歷史數(shù)據(jù)清空,,同樣地,客戶端實(shí)時(shí)監(jiān)控Chart圖表曲線正常,,參數(shù)Par1,,Par2實(shí)時(shí)曲線如圖3所示,。
對(duì)上述現(xiàn)象反復(fù)試驗(yàn)多次,結(jié)論仍然成立,。研究,、對(duì)比分析后,得出如下結(jié)論:
(1)實(shí)時(shí)監(jiān)控軟件是網(wǎng)絡(luò)應(yīng)用程序,,它本身對(duì)VI的內(nèi)存開銷較大,,影響VI的執(zhí)行速度。當(dāng)服務(wù)器向客戶端發(fā)送數(shù)據(jù)的速率較高時(shí),,即單位時(shí)間內(nèi)VI前面板需要更新,,顯示數(shù)據(jù)的頻率較快。
(2)Chart圖表數(shù)據(jù)更新的原理是將新的數(shù)據(jù)添加在舊數(shù)據(jù)之后,,該VI中Chart的y軸使用了自動(dòng)刻度,。當(dāng)參數(shù)Par1,Par2的y值隨時(shí)間瞬時(shí)變化時(shí),,Chart繪圖的基準(zhǔn)點(diǎn)在不斷變化,,使得繪圖曲線呈臺(tái)階式的現(xiàn)象。
(3)Chart圖表的數(shù)據(jù)緩存區(qū)能夠記憶顯示的數(shù)據(jù)點(diǎn)數(shù),。所以,,當(dāng)服務(wù)器數(shù)據(jù)發(fā)送中斷再重新開始發(fā)送時(shí),原VI的Chart數(shù)據(jù)緩存區(qū)累計(jì)記憶著歷史數(shù)據(jù),,當(dāng)歷史數(shù)據(jù)累積到一定程度,,數(shù)據(jù)緩存區(qū)又沒有完全釋放。此時(shí),,雖然數(shù)據(jù)緩存區(qū)還在不斷更新數(shù)據(jù),,但新到的數(shù)據(jù)在Chart圖上未及時(shí)刷新繪制,同樣使得曲線呈臺(tái)階式跳點(diǎn)的現(xiàn)象,。
(4)當(dāng)斷開服務(wù)器,,將VI重新打包時(shí),打包后的VI所有數(shù)據(jù)緩存區(qū)都是置零的原始狀態(tài),,重新接收數(shù)據(jù),,Chart圖表曲線恢復(fù)良好。
(5)或者利用Chart控件的屬性節(jié)點(diǎn),,通過編程方法定時(shí)將Chart圖表的歷史數(shù)據(jù)清空,,實(shí)際飛行試驗(yàn)實(shí)時(shí)監(jiān)控中,Chart圖表曲線實(shí)時(shí)顯示正常,。
(6)該實(shí)時(shí)監(jiān)控軟件,,根據(jù)其設(shè)計(jì)要求,VI前面板使用了18個(gè)Chart圖表和大量字符串顯示控件,,Chart圖表分別對(duì)稱置于前面板中,,9個(gè)Chart圖表的垂直總高度尺寸大于顯示器屏幕的高度,,這降低了VI的性能,很大程度上也影響了Chart圖表的刷新和實(shí)時(shí)顯示,。
此外,,Chart圖表的y軸使用了自動(dòng)刻度(Auto Scale y),圖表啟用了圖例標(biāo)記(Plot Legend),,這些都對(duì)Chart圖表的刷新速度有一定程度的影響,,但不是主要影響因素。
4 結(jié)語
NI LabVIEW作為一種圖形化的編程工具,,以虛擬儀器,、圖形化的編程語言等優(yōu)點(diǎn)降低了軟件的入門門檻。同時(shí)作為一種快速的軟件開發(fā)工具,,縮短了軟件開發(fā)時(shí)間,,節(jié)省了開發(fā)成本。本文從影響LabVIEW程序的性能因素出發(fā),,結(jié)合手動(dòng)編程巧妙地解決了Chart圖表數(shù)據(jù)實(shí)時(shí)刷新的問題,。此外,在開發(fā)大型復(fù)雜的基于網(wǎng)絡(luò)應(yīng)用的飛行試驗(yàn)實(shí)時(shí)監(jiān)控系統(tǒng)方面,,應(yīng)將NI LabVIEW軟件平臺(tái)與Microsoft Visual studio和Borland C++等開發(fā)工具有機(jī)結(jié)合起來,,靈活地進(jìn)行應(yīng)用程序的開發(fā)。