Labview基本常見問題解答(一)
1、Labview如何實現由一個事件引發其他三個事件的順序發生,且這三次事件間的時間間隔為50ms?回答:可以引用狀態機來設計程序,將觸發事件作為狀態機的狀態控制參數,后面發生的三個事件依次作為狀態機的三個順序狀態,設置狀態切換時間間隔為500ms.
本文引用地址:http://www.104case.com/article/193755.htm2、labview在主程序通過局部變量不能實時看子vi的參數回答:通過局部變量只能得到子vi運行完之后的結果。可以用control reference 方式,在子vi加一個屬性節點引出一個reference。主程序里把需要顯示的控件創建一個reference連到子vi的reference輸入端口。另外也可以用vi server方式實現。
3、如何在一個graph或chart顯示多個Y軸刻度,并且使每個通道對應每個刻度?回答:在前面板上,右鍵點擊刻度,然后選擇duplicate scales,就會創建一個新的刻度。然后再點擊右鍵,選擇swap sides,就可以讓刻度顯示在圖的左邊或右邊。然后右鍵右上角的plot legend上的曲線plot,選擇Y scales然后就可以選擇與該曲線相應的Y軸SCALES。多條曲線對應多條Y軸的刻度時,是同樣的方法。
4、如何從labview中打開一個pdf文件?回答:最簡單的方法:用system exec.vi實現,在system exec.vi的command line 端口創建一個常量,輸入adobe reader 的路徑,再加上文件名等幾個參數就可以實現上述要求。舉例如下:如果要拉開位于c盤的1234.pdf文件可以這樣寫“C:Program filesAcrobt 7.0AcrobatAcrobat.exe”/t “C:1234.pdf” “username”其中C:Program filesAdobeAcrobt 7.0AcrobatAcrobat.exe是Adobe Reader 的安裝路徑,/t是命令參數,C:1234.pdf則是要打開的文件名,最后的username是用戶的名字
5、采集數據在graph如何顯示系統時間,并且隨著采集點數時間不斷刷新。回答:有兩種方式,一種是采集波形數據然后輸出給graph,在graph上選擇顯示絕對時間,并且去掉ignore time stamp選項。第二種是采集數據文件,然后用獲取時間的vi獲取當前時間,然后把采集的數據文件和當前vibuild成波形文件再給graph.graph的設置和前種方法一樣。這樣就可以顯示出時間雖采集點不斷刷新的效果。
6、report generation里的standard和HTML究竟是什么意思?回答:STANDARD和HTML是LV本身就有的報表類型,無須安裝其他的文本編輯工具就可以打印。STANDARD是LV內建的一種報表格式,可以打印但不能存盤,也就是說我們的報表沒有電子版。HTML是網頁格式的文件,可以用瀏覽器打開,其實相當于LV幫我們編寫HTML代碼,這種格式是不能直接打印的,需要先指定網頁路徑才能打印出來。還要注意,如果是一段程序是用了report generation的vi,在打包成exe文件或llb文件時,需要加入兩個動態vi:_excel dynamic vi和 _word dynamic vi。如果生成的報表采樣了模板需要自支持文件里添加相應模板。
7、如果要將channel名字,測的是什么信號,采樣率是多少這樣的數據和采得數據一起存入文件應該用什么方式比較好?回答:推薦一種以前基本被忽略的文件結構——TDM FILE格式來存,這種文件格式基于二進制的方式,而在存儲過程中可以加入很多的外部信息進去,例如free text;free interger等等,所以存這樣的應用還是挺合適的。
8、vi property 下execution中選項reetrant execution,選用和不選用有什么區別?回答:如果主程序執行同一個子vi,是同時兩次或多次執行時,在不選用時,就會依次使用這個子vi;如果選用,則這個子vi就會并行執行,提高程序運行速度。
9、為什么把LABVIEW程序框圖解密以后,就可以一直打開程序框圖,如何才能實現每次打開vi都是加密的?回答:如果在LABVIEW解開程序的框圖的密碼,關閉以后該程序,不退出labview,這個程序如果再次被打開會一直可以查看他的框圖程序,原因是lv沒有關閉,所以密碼會一直存在內存當中,所以再次打開會依然看到程序框圖,如果要實現每次打開都是加密的,只要在一次打開后,把labview也關掉,下次再想要查看程序框圖就需要輸入密碼。
10、使用vi server技術,如何實現從一個vi打開運行并讀取另一個vi中控件的值?回答:1) 調用Open vi reference.vi ,輸入子VI的路徑到其VI PATH的端口;2) 調用Ivoke Node.vi并設為Open FP;3) 調用Ivoke Node.vi并設為Run VI;4) 調用Ivoke Node.vi并設為Get control Value[Variant];對Control Name端口填入子VI循環的停止按鈕控件名稱;Get Control Value [Variant]輸入端的值通過Variant To Data .vi設為控件相對應的控件類型后,輸出到前面板,這就可實現取VI控件的值;5) 最后調用Close Reference.vi關閉VI Server。
11、連續采集程序分成配置task狀態和采集狀態兩大部分。在配置狀態中得配置出有效的task。根據需要在適當的時候進入采集狀態。在采集狀態中使用start task 和read兩個 vi并且循環執行。當程序開始后立刻報錯。回答:因為采集狀態中使用start task和 read 兩個vi并且循環執行,當采集已經開始后再使用start task就會重復開始相同的資源,導致資源沖突產生錯誤。建議start部分單獨作為一個狀態,在循環執行的狀態中只使用read.vi。
12、LV7.1在前面板突然找不到Scrollbar了,現在想看或者操作屏幕之外的控件顯示件非常麻煩,怎么能夠找到Scrollbar?回答:在FileVI PropertyWindow AppearanceCustomize里有Show scrollbar的選項。
13、LV7.1如何實現將Chart的時間坐標與計算機系統時間一致?回答:Chart屬性Format And Precision選Absolute Time,顯示方式改System Time Format 和System Data Format。程序框圖里Get Data/Time In Seconds獲取當前時間,轉換為雙精度浮點型后輸入到Waveform Chart的屬性節點Xscale. Offset。屬性節點Xscale. Format設為模式7。
14、LV7.1如何設計時間輸出格式為小時:分:秒.毫秒?回答:用Get Data/Time In Seconds用來獲得當前時間,另一個是Format Data/Time String函數,這個函數用來定義輸出時間的格式,再time format string端口上輸入字符串%H:%M:%S%.3u,然后time stamp連接Get Data/Time In Seconds的時間輸出即可。關于時間格式的定義可以在help里看到。
15、為什么用子程序調用時pop up前面板,前面板總是自主程序后面?回答:在window appearance里面選擇default floating 和modal這三項,將主程序的選項設在較低的優先級而子程序設得高一點應該可以了。
16、如何讀出excel里的數據來作分析?回答:使用Excel Get Data.vi并在參數data type上使用二維字符數組可把Excel內數據以字符串的方式讀出。
17、如何對Excel文件作數據續存?回答:使用Excel Get Last Row.vi先將Excel內已有數據的最后一行的行數得出,再于該行開始續存數據。
18、如何將文件保存為Excel格式1) 用ActiveX技術,將LV作為一個ActiveX服務器。可以參考National InstrumentsLabview 7.1examplesappsfreqresp.llb VI庫里面的Frequency Response.vi例子程序。2)使用Report Generation工具包,它屏蔽了底層的ActiveX,使用比較簡單,不過需要購買。3)保存為文本方式,后綴為.xls,這樣子也可以用Excel打開,不過不能用Excel修改保存,要不然會自動修改為Excel文檔,以后也不能用LV對其進行操作。
19、如何在table中既顯示小數又顯示整數回答:table中顯示的是字符串,顯示小數還是整數是在轉換成字符串而未放入table之前的過程中完成的,因此可以將整數小數分別轉換成字符串后再合并輸出到table中即可。
20、如何制作一個邊框是透明的string控件回答:選擇一個classic simple string控件,使用工具模板的染色工具,在彈出的對話框中選擇右上角“T”;一樣的transparent,然后給這個控件染色就可以了。
21、循環采集并對采集的結果判斷,前面板放置一個布爾報警燈,只保存報警的數據,并可回放,怎么實現?回答:存儲vi外加一個case結構,并以布爾報警燈作為判斷,如果為真值,存儲,為false,不存。回放有兩種形式,即:可以把試驗數據存儲,然后回調。也可以把graph存為圖片。
22、怎樣把While loop的循環次數i寫入Table的行頭ColHdrs[]呢?回答:創建Table的屬性節點,屬性ColHdrVis=T顯示行頭,ColHdrs[]連接一個字符串數組,需要將循環次數i加1,然后通過Number To Fractional String轉化為字符類型,精度為0。添加移位寄存器,賦初值為空字符串數組,build array上端輸入接移位寄存器,下端接數字,右端接ColHdrs[]和移位寄存器另外一端。
23、串口程序打包安裝到一臺沒有LV環境的機器下,串口不可用,為什么?回答:LV7.1的版本,在Application Builder中Installer頁面選擇:Advanced/Serial Port Support。
24、使用CLF節點調用DLL中的函數,如果原函數中指定的數據類型為結構,那么在CLF配置過程中該如何指定數據類型?回答:可以選擇數據類型(TYPE)為Adapt To Type,然后在輸出或輸入端口連接一個Cluster,這個Cluster的定義和原函數中結構的定義一樣。選擇Adapt To Type后,連接到端口的數據類型是什么,與函數接口的數據類型就是什么。
評論