在LabVIEW下建立彈球模型
對物理對象進行建模仿真是目前來說非常流行的一種科學研究方法,一般來說,對于這種應用,可以用C語言或者Matlab來實現。作為一種編程語言,LabVIEW其實也能非常方便地實現模型的建立,特別是8.2的Simulation Module更是使得仿真建模更加方便直觀,本文就將以實現一個彈球模型(Bouncing Ball)為例,跟大家介紹一下利用LabVIEW來建模的三種方式。
1. Simulation Module
Simulation Module這個模塊對于LabVIEW來講還算比較新,但是相信在以后的版本中會有更強大的功能,并且會更加完善和易用。利用這個模塊對彈性球建模的程序如下圖:
可以看到,整個模型一共有三個可調參數:彈性系數(即表示在與地面撞擊時小球速度變?yōu)樵俣鹊谋戎担?,初始速度以及初始高度。?/SPAN>Simulation Loop中,首先對重力加速度g進行積分,得到速度值,再積分得到位置值。其中還判斷了位置是否過了0點(即是否與地面發(fā)生了撞擊),當過了0點時,則將速度乘上彈性系數,位置重置于0。
2. G Code
不用Simulation Module,單單用LabVIEW的G code,也能對這個簡單的物理模型進行仿真。下圖是用LabVIEW編寫的程序:
從圖中可以看到,我們用了For循環(huán)使得仿真的循環(huán)次數為200,每次的dt為0.1,根據dt以及物理動力學公式,可以得到當前的速度以及位置等信息,再與上例一樣進行過0檢測,并進行相應的操作。可以看到,用LabVIEW編寫程序稍微煩瑣一點,主要是數學運算太多,使得整個Diagram過于占用面積。
3. Mathscript
Mathscript也是LabVIEW 8.2的一個新特性,目前來說,對于LabVIEW主張的是文本與圖形混合編程的方式,這樣可以兼顧兩種編程方式的優(yōu)勢,使得開發(fā)效率達到最高。下圖是用Mathcript編寫的仿真代碼:
整個Mathcript的代碼是類m代碼,即只要你在Matlab下能夠順利運行這些代碼,那么90%你就能直接貼到這個節(jié)點里運行。如果仔細研究下程序的話,可以看到它的運算方式與用G Code類似,但是由于用到了文本編程方式,使得代碼更有效率,這也是為什么用混合編程的最大原因。
下面是用了這三種仿真方式的結果比較圖:
可以看到,用Simulation Module的算法由于用到了專業(yè)的Rounge-Kutta計算方法(即Solver),因此在實際的仿真結果上可以確認為可信,那么其他兩種方法在減小dt的條件下也能使得其仿真效果接近Simulation Module。
總結一下,用LabVIEW建模是目前來說比較新的方法,但是由于LabVIEW擁有非常強大的數據采集功能,界面功能等優(yōu)勢,因此將這些與建模整合起來的話,就可以很方便地進行快速原型設計和硬件在環(huán)測試等高級應用。
評論