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