LABVIEW中如何正確理解EXPRESS XY GRAPH
XY圖可以說Labview數(shù)據(jù)圖形顯示控件最為靈活的控件,可以替代波形圖和波形圖表的絕大部分功能,其輸入?yún)?shù)形式有許多變化,在下面的兩篇文章中,具體討論了XYGRAPH的多種用法。
快速VI(EXPRESSVI)是LABVIEW提供的一套可以采用對話框快速配置的VI,非常有利于初學(xué)者使用。在快速VI中,提供了快速XYGRAPH,該VI可以實(shí)現(xiàn)連續(xù)的數(shù)據(jù)顯示,但是與我提及的數(shù)據(jù)緩沖區(qū)有很大區(qū)別。
上面所提及的數(shù)據(jù)緩沖區(qū)連續(xù)顯示數(shù)據(jù)類似于LABVIEW的波形圖表,本身保持一個設(shè)置為固定長度的數(shù)據(jù)緩沖區(qū),當(dāng)超過所設(shè)長度時,新的數(shù)據(jù)進(jìn)入緩沖區(qū)時,原有的數(shù)據(jù)被丟棄。這樣XY圖始終顯示的最新數(shù)據(jù),而且長度不變,控件顯示的是示波器的效果。
快速XY圖則不同,它有兩種不同的運(yùn)行方式。
每次調(diào)用時是否清除數(shù)據(jù)決定了EXPRESSXYGRAPH的工作方式。
1、每次調(diào)用時清除數(shù)據(jù),則EXPRESSXYGRAPH與一般的XYGRAPH沒有明顯的區(qū)別,輸入?yún)?shù)采用了兩個一維數(shù)組,這是XYGRAPH常見的工作方式。
2、每次調(diào)用不清除數(shù)據(jù),則EXPRESSGRAPH內(nèi)部記錄不斷累積的數(shù)據(jù),也就是說它內(nèi)部保持兩個不固定長度的一維數(shù)組,用來保存X數(shù)據(jù)和Y數(shù)據(jù)。
在每次調(diào)用不清除數(shù)據(jù)時要特別注意,與數(shù)據(jù)緩沖方式不同,EXPRESSXYGRAPH不是以移動的方式顯示數(shù)據(jù),而是不斷增加數(shù)據(jù),所用內(nèi)存是不斷增加的。
為了正確理解快速XYGRAPH,我們分析一下,首先把快速XYVI轉(zhuǎn)換成一般的VI,分析一下它的工作原理,通過快捷菜單,選擇打開前面板。
下面跟蹤它的程序框圖。
從程序框圖可以看到,在連續(xù)顯示增加數(shù)據(jù)的情況下,它利用了XY圖的局部變量,取出原來的數(shù)據(jù),利用BUILDARRAY函數(shù)不斷增加XY圖中的數(shù)據(jù),這樣在長時間運(yùn)行后,很容易導(dǎo)致內(nèi)存濫用,而不釋放的情況,同時由于使用了局部變量,內(nèi)存的使用是加倍的。這與我們所說的數(shù)據(jù)緩沖區(qū)是完全不同的。
另外,由于快速VI采用了動態(tài)數(shù)據(jù),因此不斷地在進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,這也是快速VI效率不高的原因之一。
從程序框圖上也可以看出,如果使用連續(xù)顯示的方式,我們必須監(jiān)測累積數(shù)據(jù)的大小,在達(dá)到一定程度時,通過RESET,清除數(shù)據(jù),釋放所用內(nèi)存。
需要強(qiáng)調(diào)的是快速VI是在LABVIEW7.0后推出的,主要是簡化編程難度,但是運(yùn)行效率顯然是不高的,同時也犧牲了靈活性,這也是熟悉LV的編程者一般不愿意使用快速VI的重要原因。
評論