大型的labview程序实例_【学院推荐】LabVIEW的核心要素——数据流
每天1小時,龍哥教你學LabVIEW視覺,參與送福利:
1、低至兩折!全套課程眾籌價:588元(原價2980元)
2、《LabVIEW視覺算子手冊》配套電子書
3、價值58元《LabVIEW機器視覺實用教程基礎篇》
知識
學習過LabVIEW的朋友都知道:LabVIEW是一個圖形化軟件開發環境,它所使用的編程語言是G語言,也稱為圖形化編程語言。由于LabVIEW是G語言中開發的比較早、且開發的最成功的,所以人們還是習慣上用LabVIEW來指代G語言。當然,還有其它的G語言,比如像Agilent 的VEE等。
傳統文本編程語言根據指令的先后順序決定應用程序執行順序,也稱為:“控制流”;而LabVIEW則按照“數據流”的模式運行VI。所謂數據流也就是說:當所有的輸入端都具備了必要的輸入數據時,程序框圖節點將運行。節點在運行時產生輸出數據并將該數據傳送給數據流路徑中的下一個節點。數據流經節點的動作決定了程序框圖上VI和函數的執行順序。
使用LabVIEW進行編程則必須按數據流的方式進行程序設計。所以,養成良好的數據流編程習慣是非常必要的。那么根據數據流的特點,編程時要注意哪些問題呢?
01
根據自然的數據的依賴關系,從左向右進行程序設計
圖1數據依賴關系
圖1 可以清晰的表明數據流是依據數據依賴關系從左向右流動的。“差”只有在“和”完成后才能得到;以此類推,“積”必須在“差”完成后獲得;而“商”也必須在得到“積”后獲得。所以,這里是利用數據依賴關系實現數據流的。圖1中的下圖比較好的呈現出數據流的關系,所以我們稱之為“好的習慣”,建議大家習慣用這種方式來進行程序設計。
圖2 是一個數據采集任務設計的實例(良好的數據流概念)
圖2 數據采集任務設計
我們上面談到利用數據依賴關系很容易滿足數據流的要求(自然的數據依賴關系)那么,當數據依賴關系不存在或不明顯時,怎么辦?
02
利用強制數據依賴關系之一:順序結構
如果我們想要知道一個vi的運行時間可以通過下面的實例程序進行測試,程序如圖3所示。這 里我們利用強制數據依賴關系“順序結構”來滿足數據流的要求。這里待測vi我們用一個“等 待”函數來代替。
圖3強制人工數據依賴關系“順序結構”
順序結構確保:第一幀:開始計時,第二幀:運行“等待”函數或待測vi,第三幀:停止計時并顯示結果。
這里要注意兩點:
第一:Windows操作系統的定時精度為:1mS。所以,測量結果會出現100±1mS。
第二:如果vi的運行時間很短小于1mS,可在第二幀內的vi外面加個N次的for循環增加運行時間。然后,在結果中再除個N。
現在,我們用“等待下一個整數倍毫秒”(定時選板)函數來替代“等待”函數,運行后會發生什么情況?這應該對理解這兩個函數的不同會有所幫助。
03
利用人工數據依賴關系之二:引用句柄
對于引用句柄LabVIEW的幫助文檔是這樣介紹的:引用句柄可作為對象(例如,文件、設備或網絡連接)的唯一標識。可使用不同類型的引用句柄控件將引用句柄輸入或輸出VI。
由于引用句柄是一個打開對象的臨時指針,因此它僅在對象打開期間有效。如關閉對象,LabVIEW會將引用句柄與對象分開,引用句柄隨即失效。如再次打開對象,LabVIEW將創建一個與第一個引用句柄不同的新引用句柄。LabVIEW將為引用句柄指向的對象分配內存空間。關閉引用句柄,該對象就會從內存中釋放。
由于LabVIEW可以記住每個引用句柄所指的信息,如讀取或寫入的對象的當前地址和用戶訪問情況,因此可以對單一對象執行并行但相互獨立的操作。如一個VI多次打開同一個對象,那么每次的打開操作都將返回一個不同的引用句柄。VI結束運行時LabVIEW會自動關閉引用句柄,如果用戶在結束使用引用句柄時就立即將其關閉,可最有效地利用內存空間和其它資源,這是一個良好的編程習慣。關閉引用句柄的順序與打開時相反。例如,如果獲得了對象A的一個引用句柄,然后對對象A調用方法使獲得對象B的引用句柄,請先關閉對象B的引用句柄然后再關閉對象A的引用句柄。
圖4引用句柄的幾個示例
關于引用句柄我們要注意的是:“引用句柄”是有“生命周期“的。從我們打開引用句柄開始,它就進入新的“生命周期”,直道關閉“引用句柄”后它的“生命周期”結束。如果一個引用句柄的生命周期無限長,那么就意味著發生了“內存泄露”。所以使用時必須注意“打開”與“關閉”必須是成雙成對出現的。
對于本地變量和全局變量來講,因無法保證數據按數據流的方式工作,所以要盡量避免大量使用。由于順序結構是強制數據流也盡量甚用。
上面我們分別介紹了實現或確保數據流編程的幾個方法,供大家參考,希望對大家能有一定的幫助。
掃碼進入LabVIEW專屬技術交流群
獲取更多學習資料
相關課程推薦:
《龍哥手把手教你學LabVIEW視覺設計》
https://mp.weixin.qq.com/s/IVvrzHu9rwoEfBA7IKXbAg
https://mp.weixin.qq.com/s/WANlR2ph-6hNJ-TICXOptw
總結
以上是生活随笔為你收集整理的大型的labview程序实例_【学院推荐】LabVIEW的核心要素——数据流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王小川 python_Python与量化
- 下一篇: 手游传奇架设教程_问道手游如何多开?