新聞中心

EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > Labview常見問題區(qū)別

Labview常見問題區(qū)別

作者: 時間:2017-01-06 來源:網(wǎng)絡(luò) 收藏

題區(qū)別

1、Labview如何實現(xiàn)由一個事件引發(fā)其他三個事件的順序發(fā)生,且這三次事件間的時間間
隔為50ms?
A:可以引用狀態(tài)機來設(shè)計程序,將觸發(fā)事件作為狀態(tài)機的狀態(tài)控制參數(shù),后面發(fā)生的三個
事件依次作為狀態(tài)機的三個順序狀態(tài),設(shè)置狀態(tài)切換時間間隔為500ms.

2、labview在主程序通過局部變量不能實時看子vi的參數(shù)
A:通過局部變量只能得到子vi運行完之后的結(jié)果??梢杂胏ontrol reference 方式,在子
vi加一個屬性節(jié)點引出一個reference。
主程序里把需要顯示的控件創(chuàng)建一個reference連到子vi的reference輸入端口。另外也可
以用vi server方式實現(xiàn)。

3、如何在一個graph或chart顯示多個Y軸刻度,并且使每個通道對應(yīng)每個刻度?
A:在前面板上,右鍵點擊刻度,然后選擇duplicate scales,就會創(chuàng)建一個新的刻度。然
后再點擊右鍵,選擇swap sides,就可以讓刻度顯示在圖的左邊或右邊。然后右鍵右上角
的plot legend上的曲線plot,選擇Y scales然后就可以選擇與該曲線相應(yīng)的Y軸SCALES。
多條曲線對應(yīng)多條Y軸的刻度時,是同樣的方法。

4、如何從labview中打開一個pdf文件?
A:最簡單的方法:用system exec.vi實現(xiàn),在system exec.vi的command line 端口創(chuàng)建
一個常量,輸入adobe reader 的路徑,再加上文件名等幾個參數(shù)就可以實現(xiàn)上述要求。舉
例如下:如果要拉開位于c盤的1234.pdf文件可以這樣寫“C:Program filesAcrobt 7.0
AcrobatAcrobat.exe”/t “C:1234.pdf” “username”其中C:Program filesAdob
eAcrobt 7.0AcrobatAcrobat.exe是Adobe Reader 的安裝路徑,/t是命令參數(shù),C:12
34.pdf則是要打開的文件名,最后的username是用戶的名字。

5、采集數(shù)據(jù)在graph如何顯示系統(tǒng)時間,并且隨著采集點數(shù)時間不斷刷新。
A:有兩種方式,一種是采集波形數(shù)據(jù)然后輸出給graph,在graph上選擇顯示絕對時間,并
且去掉ignore time stamp選項。第二種是采集數(shù)據(jù)文件,然后用獲取時間的vi獲取當前時
間,然后把采集的數(shù)據(jù)文件和當前vibuild成波形文件再給 graph.graph的設(shè)置和前種方法
一樣。這樣就可以顯示出時間雖采集點不斷刷新的效果。

6、report generation里的standard和HTML究竟是什么意思?
A:STANDARD和HTML是LV本身就有的報表類型,無須安裝其他的文本編輯工具就可以打印。
STANDARD是LV內(nèi)建的一種報表格式,可以打印但不能存盤,也就是說我們的報表沒有電子
版。HTML是網(wǎng)頁格式的文件,可以用瀏覽器打開,其實相當于LV幫我們編寫HTML代碼,這
種格式是不能直接打印的,需要先指定網(wǎng)頁路徑才能打印出來。還要注意,如果是一段程
序是用了report generation的vi,在打包成exe文件或llb文件時,需要加入兩個動態(tài)vi:
_excel dynamic vi和 _word dynamic vi。如果生成的報表采樣了模板需要自支持文件里
添加相應(yīng)模板。

7、如果要將channel名字,測的是什么信號,采樣率是多少這樣的數(shù)據(jù)和采得數(shù)據(jù)一起存
入文件應(yīng)該用什么方式比較好?
A:推薦一種以前基本被忽略的文件結(jié)構(gòu)——TDM FILE格式來存,這種文件格式基于二進制
的方式,而在存儲過程中可以加入很多的外部信息進去,例如free text;free interger
等等,所以存這樣的應(yīng)用還是挺合適的。

8、vi property 下execution中選項reetrant execution,選用和不選用有什么區(qū)別?
A:如果主程序執(zhí)行同一個子vi,是同時兩次或多次執(zhí)行時,在不選用時,就會依次使用這
個子vi;如果選用,則這個子vi就會并行執(zhí)行,提高程序運行速度。

9、為什么把LABVIEW程序框圖解密以后,就可以一直打開程序框圖,如何才能實現(xiàn)每次打
開vi都是加密的?
A:如果在LABVIEW解開程序的框圖的密碼,關(guān)閉以后該程序,不退出labview,這個程序如
果再次被打開會一直可以查看他的框圖程序,原因是lv 沒有關(guān)閉,所以密碼會一直存在內(nèi)
存當中,所以再次打開會依然看到程序框圖,如果要實現(xiàn)每次打開都是加密的,只要在一
次打開后,把labview也關(guān)掉,下次再想要查看程序框圖就需要輸入密碼。

10、使用vi server技術(shù),如何實現(xiàn)從一個vi打開運行并讀取另一個vi中控件的值?
A:
1) 調(diào)用Open vi reference.vi ,輸入子VI的路徑到其VI PATH的端口;
2) 調(diào)用Ivoke Node.vi并設(shè)為Open FP;
3) 調(diào)用Ivoke Node.vi并設(shè)為Run VI;
4)調(diào)用Ivoke Node.vi并設(shè)為Get control Value[Variant];對Control Name端口填入
子VI循環(huán)的停止按鈕控件名稱;Get Control Value [Variant]輸入端的值通過Variant T
o Data .vi設(shè)為控件相對應(yīng)的控件類型后,輸出到前面板,這就可實現(xiàn)取VI控件的值;
5) 最后調(diào)用Close Reference.vi關(guān)閉VI Server。

11、連續(xù)采集程序分成配置task狀態(tài)和采集狀態(tài)兩大部分。在配置狀態(tài)中得配置出有效的
task。根據(jù)需要在適當?shù)臅r候進入采集狀態(tài)。在采集狀態(tài)中使用start task 和read兩個
vi并且循環(huán)執(zhí)行。當程序開始后立刻報錯。
A:因為采集狀態(tài)中使用start task和 read 兩個vi并且循環(huán)執(zhí)行,當采集已經(jīng)開始后再使
用start task就會重復(fù)開始相同的資源,導(dǎo)致資源沖突產(chǎn)生錯誤。建議start部分單獨作為
一個狀態(tài),在循環(huán)執(zhí)行的狀態(tài)中只使用read.vi。

12、LV7.1在前面板突然找不到Scrollbar了,現(xiàn)在想看或者操作屏幕之外的控件顯示件非
常麻煩,怎么能夠找到Scrollbar?
A:在FileVI PropertyWindow AppearanceCustomize里有Show scrollbar的選項。

13、LV7.1如何實現(xiàn)將Chart的時間坐標與計算機系統(tǒng)時間一致?
A:Chart屬性Format And Precision選Absolute Time,顯示方式改System Time Format
和System Data Format。程序框圖里Get Data/Time In Seconds獲取當前時間,轉(zhuǎn)換為雙
精度浮點型后輸入到Waveform Chart的屬性節(jié)點Xscale. Offset。屬性節(jié)點Xscale. Form
at設(shè)為模式7。

14、LV7.1如何設(shè)計時間輸出格式為小時:分:秒.毫秒?
A:用Get Data/Time In Seconds用來獲得當前時間,另一個是Format Data/Time String
函數(shù),這個函數(shù)用來定義輸出時間的格式,再time format string端口上輸入字符串%H:%
M:%S%.3u,然后time stamp連接Get Data/Time In Seconds的時間輸出即可。關(guān)于時間格
式的定義可以在help里看到。

15、為什么用子程序調(diào)用時pop up前面板,前面板總是自主程序后面?
A:在window appearance里面選擇default floating 和modal這三項,將主程序的選項設(shè)
在較低的優(yōu)先級而子程序設(shè)得高一點應(yīng)該可以了。

16、如何讀出excel里的數(shù)據(jù)來作分析?
A:使用Excel Get Data.vi并在參數(shù)data type上使用二維字符數(shù)組可把Excel內(nèi)數(shù)據(jù)以字
符串的方式讀出。

17、如何對Excel文件作數(shù)據(jù)續(xù)存?
A:使用Excel Get Last Row.vi先將Excel內(nèi)已有數(shù)據(jù)的最后一行的行數(shù)得出,再于該行開
始續(xù)存數(shù)據(jù)。

18、如何將文件保存為Excel格式
A:1)用ActiveX技術(shù),將LV作為一個ActiveX服務(wù)器??梢詤⒖糔ational Instrume
ntsLabview 7.1examplesappsfreqresp.llb VI庫里面的Frequency Response.vi例子
程序。2)使用Report Generation工具包,它屏蔽了底層的ActiveX,使用比較簡單,不過
需要購買。3)保存為文本方式,后綴為.xls,這樣子也可以用 Excel打開,不過不能用E
xcel修改保存,要不然會自動修改為Excel文檔,以后也不能用LV對其進行操作。

19、如何在table中既顯示小數(shù)又顯示整數(shù)
A:table中顯示的是字符串,顯示小數(shù)還是整數(shù)是在轉(zhuǎn)換成字符串而未放入table之前的過
程中完成的,因此可以將整數(shù)小數(shù)分別轉(zhuǎn)換成字符串后再合并輸出到table中即可。

20、如何制作一個邊框是透明的string控件
A:選擇一個classic simple string控件,使用工具模板的染色工具,在彈出的對話框中
選擇右上角“T”;一樣的transparent,然后給這個控件染色就可以了。

21、循環(huán)采集并對采集的結(jié)果判斷,前面板放置一個布爾報警燈,只保存報警的數(shù)據(jù),并
可回放,怎么實現(xiàn)?
A:存儲vi外加一個case結(jié)構(gòu),并以布爾報警燈作為判斷,如果為真值,存儲,為false,
不存?;胤庞袃煞N形式,即:可以把試驗數(shù)據(jù)存儲,然后回調(diào)。也可以把graph存為圖片。


22、怎樣把While loop的循環(huán)次數(shù)i寫入Table的行頭ColHdrs[]呢?
A:創(chuàng)建Table的屬性節(jié)點,屬性ColHdrVis=T顯示行頭,ColHdrs[]連接一個字符串數(shù)組,
需要將循環(huán)次數(shù)i加1,然后通過 Number To Fractional String轉(zhuǎn)化為字符類型,精度為
0。添加移位寄存器,賦初值為空字符串數(shù)組,build array上端輸入接移位寄存器,下端
接數(shù)字,右端接ColHdrs[]和移位寄存器另外一端。

23、串口程序打包安裝到一臺沒有LV環(huán)境的機器下,串口不可用,為什么?
A:LV7.1的版本,在Application Builder中Installer頁面選擇:Advanced/Serial Port
Support。

24、使用CLF節(jié)點調(diào)用DLL中的函數(shù),如果原函數(shù)中指定的數(shù)據(jù)類型為結(jié)構(gòu),那么在CLF配置
過程中該如何指定數(shù)據(jù)類型?
A:可以選擇數(shù)據(jù)類型(TYPE)為Adapt To Type,然后在輸出或輸入端口連接一個Cluste
r,這個Cluster的定義和原函數(shù)中結(jié)構(gòu)的定義一樣。選擇Adapt To Type后,連接到端口的
數(shù)據(jù)類型是什么,與函數(shù)接口的數(shù)據(jù)類型就是什么。


25、在子vi運行過程中,如何將數(shù)據(jù)實時傳遞到調(diào)用它的主vi中,而不是等待子VI運行結(jié)
束后才在主VI中獲得子Vi的輸出數(shù)據(jù)?
A:使用帶控制參量的屬性節(jié)點可以實現(xiàn)在子VI中修改主VI屬性的目的,由于控件的值(V
alue)也是控件的屬性之一,因此可以使用控制參量是新以上要求。在子VI中,使用帶有
控制參量的屬性節(jié)點,將要傳遞到主VI的數(shù)據(jù)寫入這個屬性(Value)中,將控制參量要設(shè)
置為Control,并且在子VI的連接器中進行定義;在主VI中,為接收子VIshuju的控件建立
一個控制參量,將這個控制參量連接到子VI,即可達到在主VI中實時獲取子VI數(shù)據(jù)的要求


26、事件結(jié)構(gòu)中兩種事件類型,一個是通知事件(Notify),另一個是過濾事件(Filter
),這兩種事件的區(qū)別是什么?
A:對于通知事件,程序可以感知事件的發(fā)生并且響應(yīng)該事件,然后再處理在事件結(jié)構(gòu)中定
義的任務(wù);對于過濾事件,程序感知事件發(fā)生后首先處理在事件結(jié)構(gòu)中定義的任務(wù),然后
根據(jù)時間結(jié)構(gòu)中的設(shè)定(Discard?)決定是否響應(yīng)該事件。舉例來說,時間為Panel Clo
se,在事件發(fā)生時彈出一個對話框。如果是通知事件,首先響應(yīng)事件關(guān)閉了前面板,因此
沒有辦法處理“彈出對話框”的任務(wù);如果是過濾事件,首先處理 “彈出對話框”的任務(wù)
,然后根據(jù)事件結(jié)構(gòu)中的Discard的值判斷是否關(guān)閉前面板,若Discard為T,則不關(guān)閉,若
為F,則關(guān)閉。

27、LV7.1主程序已經(jīng)完成,想在主程序運行之前,先執(zhí)行一個別的界面,當退出該界面的
時候,再顯示主界面,如何實現(xiàn)?
A:可以在主程序框圖之前,將主程序前面板隱藏,調(diào)用子程序,推出子程序后,再顯示主
程序前面板。這可以通過VI屬性節(jié)點來實現(xiàn),先調(diào)用一個屬性節(jié)點,右鍵選擇Select Cla
ss/VI Server/VI,然后在屬性中選擇Front Pannel Window/State屬性,分為設(shè)為Hide和
Standard。Demo程序見項目進程管理中AE-01labview編程技術(shù)討論的“主界面隱藏”。


28、將LV7.1前面板控件(graph)的內(nèi)容保存成圖像文件,在LV中如何編程實現(xiàn)?
A:右鍵控件創(chuàng)建Invoke Node,選擇方法為“Get Panel Image”;另外,調(diào)用Graphics
&Sound/Graphics Formats下面的VI,將第二步獲得的圖像寫入相應(yīng)格式文件中。

29、在LV程序中使用matlab,生成exe文件以后,發(fā)現(xiàn)文件可以運行但是無法彈出運行界面
。
A:在lv中如果使用了MATLAB的話,生成EXE文件的時候需要加一個名為馬特script.dll的
文件作為支持文件,此外在目標PC上必須安裝MATLAB軟件。

30、LV7.1使用VI Server的方式,在一臺機器上調(diào)用另一臺機器上的VI并運行,需要做哪
些設(shè)置?(兩臺機器在同一個網(wǎng)絡(luò)中)
A:1)在Tools/Options/VI Server:Configurtion下選擇Protocols為TCP/IP,這樣才能
在網(wǎng)絡(luò)中使用VI Server,否則只是在本機上使用VI Server。 2)在Tools/Options/VI S
erver:TCP/IP Access下設(shè)置可以訪問的VI Server的主機IP。如果不進行設(shè)置,遠程機器
將無法調(diào)用需要的VI。

31、在LV7.1中如何在運行程序后,前面板上去掉windows的關(guān)閉按鈕
A:可以在LV的前面板FILE/VI properties/windows appearance/customize,去掉allow
user to close window對鉤,保存設(shè)置,運行后可以實現(xiàn)效果。

32、LV7.1中如何清除前面板的Graph,即在每次運行時,讓Graph重新顯示數(shù)據(jù)而不顯示歷
史數(shù)據(jù)。
A:在Graph里面可以通過創(chuàng)建Local Varible并對其賦空來解決。而在Chart里可以通過創(chuàng)
建History Data屬性節(jié)點并對其賦空來解決。

33、LV7.1中怎樣將一個數(shù)組中所有滿足條件的元素的索引值提取出來,保存成一個新的數(shù)
組?
A:使用移位寄存器、Build Array和Select函數(shù)就可以做到,具體方法:1)使用FOR循環(huán)
,在循環(huán)邊框上添加一個移位寄存器,并初始化為一維空數(shù)組,類型為I32;2)在循環(huán)內(nèi)
部使用Select函數(shù),每次循環(huán)都判斷數(shù)組中的一個元素,并將判斷結(jié)果(布爾量類型)送
入Select的“s”輸入端;3)每次循環(huán)都使用 Build Array函數(shù)將左端的移位寄存器直接
連接到Select函數(shù)的“f”輸入端,這樣Select函數(shù)的輸入端就是所有滿足條件的元素的索
引值;4)將 Select函數(shù)的輸出端連到右端的移位寄存器上。這樣程序結(jié)束后,F(xiàn)or循環(huán)的
右端移位寄存器的數(shù)據(jù)就是需要的索引值。

35、 移位寄存器和反饋節(jié)點的區(qū)別?
回答:反饋節(jié)點箭頭的起始端相當于移位寄存器的右端,箭頭的末端相當于寄存器的左端
。區(qū)別在于移位寄存器的左端元素可以通過下拉下拉方式增加,而反饋節(jié)點的端口是無法
增加的。

36、如何讓子VI的前面板也顯示出來?
A:右鍵點擊子VI,選擇SUBVI NODE……然后再選擇第2項SHOW……就是當子VI被調(diào)用時,
顯示前面板。

37、彈出窗口無法進行任何操作,并且被主界面擋住,如何解決?
A:主界面VI properties中windows appearance里customs設(shè)定windows behavior為norma
l了,因此主界面保持在最前端,應(yīng)該設(shè)為default。

38、在程序中實現(xiàn)按對應(yīng)鍵彈出窗口,在窗口已打開情況下繼續(xù)可打開其他窗口?
A:在程序框圖內(nèi)使用并行循環(huán)。每一個可能要運行的子VI(打開其窗口)及其運行條件(
按鍵)各占一個循環(huán)。各個循環(huán)相互獨立,互不干擾。在考慮同時關(guān)閉各個窗口時,需要
使用全局變量。

39、在調(diào)度Vi的時候,經(jīng)常無意地把面板上的一些控件移動了位置。還要花很大功夫去重
新布置這些面板控件。有沒有辦法讓已經(jīng)設(shè)計好的控件的位置固定不動?
A:首先我們可以通過Operate菜單中的Change To Run/Edit Mode命令,設(shè)置VI為運行或編
輯模式。面板控件的移動只在編輯模式下有效。在運行模式下是不能移動任何控制的位置
的。第二種方法是,選擇指定的控件(可多選),然后在菜單的Reorder下拉菜單下,選擇
LOCK命令,來鎖住指定的控件。這樣,除非使用Unlock命令解鎖。否則是無法移動指定控
件的位置。

40、為什么子VI節(jié)點的輸出端口沒有數(shù)據(jù)傳遞出來?
A:這類問題的主要原因是子VI中存在著循環(huán)。如果子VI中的循環(huán)不能推出,子VI節(jié)點就一
直在運行。對于LV的數(shù)據(jù)流編程機制來講,一個節(jié)點沒有執(zhí)行完,它的所有輸出端口就不
會有有效數(shù)據(jù)輸出。解決方法:一是把子VI中的循環(huán)提出到主VI里來。二是使用全局變量
,并在主VI中使用并行循環(huán)來控制子VI 的結(jié)束。

41、怎樣在LABVIEW中實現(xiàn)全屏顯示?
A:1)要全屏顯示,在File/VI Properties/Window Size/Size the front panel to the
width and height of the entire screen打上鉤,就可以了。
2)是否控件顯示方法,第一,要完全不顯示時,可以把控件放在界面看不見的地方他就不
顯示了;第二種方法,你可以使用控件的屬性進行控制控件的 Visible,具體方法是在程
序框圖里點擊鼠標右鍵/Create/Properties Node,選擇Visible,并將其改為Change to
Read,對Visble設(shè)置為True或False就可以控制控件是否顯示了

42、LV如何對Excel文件作數(shù)據(jù)續(xù)存?
A:使用Excel Get Last Row.vi先將Excel內(nèi)已有數(shù)據(jù)的最后一行的行數(shù)得出,再于該行開
始續(xù)存數(shù)據(jù)。

43、LV當用鼠標點擊Graph時,該Graph的大小變化了,當鼠標離去后Graph的大小恢復(fù)到原
來情況?
A:可以應(yīng)用一個Event Structure來做,添加兩個事件(一個是鼠標點擊,另一個是鼠標
離去)。通過在這兩個事件中分別賦給Graph的PlotArearSize屬性節(jié)點不同的值,來改變
Graph的大小。

44、如何用LABVIEW編程檢測U盤?
A:需要調(diào)用Windows API函數(shù)GetDriveTypeA,其函數(shù)返回值盤符類型的數(shù)據(jù)類型為長整形
,輸入?yún)?shù)為檢測盤符。調(diào)用CLFN.vi選擇windows system32kernel32.dll,選擇GetD
riveTypeA,設(shè)置Return Type為Numeric Signed 32-bit Integer;再添加參數(shù)nDrive,設(shè)
置參數(shù)類型為STRING和格式為C String Pointer。運行時在輸入端填上要檢測的U盤盤符,
返回結(jié)果為時表示為DRIVE_REMOVABLE即為可移動的U盤
45、 如何用Labview與可編程儀器通信,該儀器沒有GPIB接口,但有COM口,能否用LV操
作?
A:可以通過Labview的串口通信來解決儀器控制問題,參看FIND EXAMPLE的BASIC 2 PORT
SERIAL WRITE AND READ.VI


46、 如何將EVENTSTRUCT中捕獲的時間傳遞到STATE DIAGRAM?
A:使用VENTSTRUCT捕獲面板事件后,將不同的事件對應(yīng)于不同的字符串和其他,再通過Q
UEUE將VENTSTRUCT中的字符串傳遞到STATEDIAGRAM中,再根據(jù)得到的字符串進行相應(yīng)的處
理。
上一頁 1 2 下一頁

關(guān)鍵詞: Labview常見問

評論


技術(shù)專區(qū)

關(guān)閉