白 博,范武杰,揭 濤,侯 磊,宋鑫霞
(1.機電動態(tài)控制重點實驗室,陜西 西安 710065;2.西安機電信息技術研究所,陜西 西安 710065)
彈簧后坐保險的主要功能是識別發(fā)射環(huán)境中的后坐力保證發(fā)射可靠解除保險和協(xié)同其他機構實現(xiàn)日??煽勘kU。針對彈簧質量系統(tǒng)的計算和仿真典型的有特征線解法[1]、Ansys和 Matlab混合計算[2]、Simulink仿真[3]等。以上算法人機互動繁瑣,通用性不好,加入碰撞條件后問題被極大地復雜化,不利于求解,需要尋找新解法。對此本文提出了基于Labview和Matlab混合編程的彈簧后坐保險系統(tǒng)變加速度條件下解除保險時間計算方法。
美國國家儀器公司 NI(National Instruments)提出的虛擬儀器(VI)概念,引發(fā)了傳統(tǒng)儀器領域的一場重大變革,使得計算機和網絡技術在儀器領域迅速發(fā)展,從而開創(chuàng)了“軟件即是儀器”的先河,從這一思想出發(fā),NI推出了最有影響力的虛擬儀器軟件產品 Labview[4]。
實現(xiàn)Labview和Matlab的混合編程方法主要有4種:1)基于動態(tài)數(shù)據(jù)交換(DDE)技術;2)基于動態(tài)鏈接庫(DLL)技術;3)基于ActiveX自動化技術;4)基于組件對象模型(COM)技術。
Labview(Laboratory Virtual Instrument Engineering Workbench)是一種圖形化編程語言開發(fā)環(huán)境,內置了便于應用TCP/IP、ActiveX等軟件標準的庫函數(shù)。
Labview在執(zhí)行順序方面采用數(shù)據(jù)流編程方式,程序框圖中節(jié)點之間的數(shù)據(jù)流向決定了VI及函數(shù)的執(zhí)行順序。
Labview同時提供了 Windows、UNIX、Linux、Macintosh的多種版本。
Matlab是矩陣實驗室(Matrix Laboratory)的簡稱,由美國Math Works公司出品的用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術計算語言和交互式環(huán)境,主要包括Matlab和Simulink兩大部分。在工程領域有廣泛應用。
彈簧質量后坐系統(tǒng)示意圖如圖1所示。
圖1 彈簧質量后坐系統(tǒng)Fig.1 The spring-mass device
運動要點分析:質量塊M受到發(fā)射過載的作用開始加速運動過程,到D平面時,發(fā)生碰撞后開始減速運動過程。
彈簧后坐保險解除保險過程的數(shù)學模型是一個典型的單自由度彈簧-質量系統(tǒng)的受迫振動。
求解本數(shù)學模型的算法有以下兩大類:
1)以時間為變量,基于速度與時間的函數(shù)關系,在彈簧運動上限達到解除保險距離時,判定為解除保險,輸出的時刻為解除保險時間。此方法優(yōu)點是解除保險時刻不需要計算,加速度值可以不經處理直接調用,但是速度與時間的函數(shù)關系建立繁瑣,不利于編程求解。
2)以位移為變量,基于速度與位移的函數(shù)關系,在位移不再小于解除保險要求時,判定為解除保險并計算時間。此法的優(yōu)點是位移速度函數(shù)容易建立,利于編程計算,誤差是正誤差,可以作為設計參數(shù)。缺點是計算前對加速度數(shù)據(jù)進行預處理,增加步驟。
本文采用的算法核心思想是等分質量塊自由行程區(qū)間為若干子區(qū)間,子區(qū)間長度和子區(qū)間平均速度的比值為質量塊在子區(qū)間的運動時間,對各子區(qū)間時間求和得總時間。子區(qū)間的平均速度由子區(qū)間的初速度和末速度的均值近似,這樣得到的總時間的近似值將略大于實際值。
在Labview 中 調 用 Matlab-Script是 基 于activeX自動化和Matlab進行混合編程的一種,activeX的重要功能之一是一個程序借助其方法和屬性控制另一程序。Matlab自動化服務器提供一系列方法和屬性,借此可以實現(xiàn)在其他應用程序中執(zhí)行Matlab命令和控制 Matlab[5]。
在Labview中使用 Matlab-Script的基本執(zhí)行過程是先打開Matlab自動化服務器,執(zhí)行Matlab命令,最后關閉自動化服務器。
在Labview中使用 Matlab-Script的方法是在程序框圖中選擇函數(shù)(functions)→數(shù)學(mathematics)→ 公 式 (formula)→ Matlab 腳 本 (Matlab-Script)。
在進行混合編程時,Matlab-Script和Labview之間的數(shù)據(jù)類型有很大區(qū)別,需要手動設置。
功能分析:本計算器應當具備一定的輸入排查功能,否決錯誤輸入并要求重新輸入;應當具備多輸入(質量、彈簧剛度、解除保險距離、自由行程)多輸出(解除保險時間、解除保險過程中各周期時間、各周期位移-速度曲線)功能;應當具備錯誤報警和正常運行提示功能。
那么程序應有以下3個邏輯模塊:
1)輸入模塊:向程序輸入計算所需信息,對數(shù)據(jù)進行甄別,出現(xiàn)錯誤后(例如輸入質量為負等)指示燈報警并要求重新輸入。
2)Labview調用的 Matlab script:Matlab-script是系統(tǒng)的計算功能部分。當讀取輸入?yún)?shù)信息后,通過調用Matlab服務進行計算。
3)輸出部分:將輸出的矩陣形式處理為圖像和矩陣,得彈簧質量系統(tǒng)在可靠解除保險過程中各周期的v-s圖像和解除保險時間并指示正常運行。
系統(tǒng)總體框圖如圖2所示。
圖2 虛擬儀器總體框圖Fig.2 The composition diagram of the VI
運行程序時,要求用戶輸入計算所需參數(shù),當輸入錯誤時,要求重新輸入;當輸入不再出錯,傳輸數(shù)據(jù)給Matlab-script,求解得到解除保險時間、解除保險前所有運動周期的位移-速度圖像。
本文采用以位移為變量的有限元思想進行Matlab編程實現(xiàn)。關鍵參數(shù)自由行程的等分數(shù)由Labview輸入?yún)?shù)(分析精度)控制,等分為10/d(分析精度倒數(shù)的10倍)份。核心運算如圖3所示。
圖3 Matlab程序思想Fig.3 The diagram of Matlab program
Matlab程序中,讀取的加速度數(shù)據(jù)經過預處理。
算法誤差來源:
1)加速度曲線經過插值處理,不同階數(shù)的插值對計算有影響。
2)對加速度增加階段進行求解時,認為在子區(qū)間內加速度a不變化(實際情況加速度a連續(xù)地不斷增大),區(qū)間初速度vi和末速度vi+1的均值小于實際等效速度vm,導致存在正的時間誤差。
3)對加速度減小階段進行求解時,認為在子區(qū)間內加速度a不變化(實際情況是加速度a連續(xù)地減小),區(qū)間初速度vi和末速度vi+1的均值大于實際等效速度vm,導致存在負的時間誤差。
4)速度減到0的時刻在子區(qū)間內部,實際行程小于子區(qū)間長度d,導致存在正的時間誤差。為了避免本誤差的擴大,需采取措施。
5)第2)、3)、4)項誤差之和為計算值與實際值的總誤差。經過比對,總誤差不大于5%。
在一臺Labview和Matlab都已經正確安裝的計算機上運行該程序。
對實際彈體加速度數(shù)據(jù)進行模擬處理,數(shù)據(jù)如圖4所示。
圖4 模擬彈體發(fā)射加速度ig.4 Analog data of the acceleration of the projectile body
點擊開始按鈕后,輸入?yún)?shù):質量塊m=0.004 kg、彈簧剛度k=25、分析精度d=0.01、解除保險距離l=0.001 1m,質量塊自由行程L=0.013m,運行過程如圖5所示,運行結果如圖6、圖7所示。
圖5中,報警未指示,運行指示正常,3個數(shù)據(jù)窗口都沒有顯示,表明正在計算中且輸入數(shù)據(jù)正常。
圖6是計算結果截圖,圖中報警和運行指示均顯示正常,表明計算執(zhí)行正常,結果可信。左下數(shù)組第一行數(shù)據(jù)為單周期減速過程行程,第二行為整個周期運動對應的時間;其上方窗口數(shù)據(jù)為解除保險時間:0.009 891 94s,數(shù)值上它小于所有周期時間之和(0.103s)符合實際情況;右側圖像為解除保險前一周期運行的圖像。
圖5 程序運行過程Fig.5 Running of hybrid program
圖6 計算結果Fig.6 The result
圖7 解除保險過程中所有周期運動圖像Fig.7 All periods of movement
圖7中顯示的圖像表明質量塊在運行11個周期后達到解除保險條件。最后周期中,加速過程中運動到達解除保險位置以后將不再回到解除保險上限,因此時間需要校正。
經計算得到解除保險時間為9.892ms,在經驗值范圍內,符合設計需求,仿真計算合理。
本文提出了基于虛擬儀器軟件Labview和Matlab混合編程的彈簧后坐保險系統(tǒng)變加速度條件下解除保險時間計算方法。本方法由Labview提供輸入和輸出環(huán)境,Matlab實現(xiàn)數(shù)值計算功能進行混合編程,在對簡化彈簧質量后坐系統(tǒng)數(shù)學模型和碰撞模型基礎上進行分析計算,得到所需結果。運行該程序表明該計算器能夠快速、方便地計算在質量塊運動周期內發(fā)生一次碰撞的情況下,彈簧后坐保險的解除時間。此計算器的參數(shù)化設計,實現(xiàn)了其一定的通用性,增強了計算器的靈活性。雖然該計算器能夠輸出解除保險前質量塊運動圖像、各周期運動距離和時間、解除保險時間,但沒有實現(xiàn)在任意加速度下的求解,因此以后研究方向是任意加速度下運動模型的求解和增加計算器的適用性,進一步增強其通用性。
[1]郝兵,李帥.彈簧質量系統(tǒng)動態(tài)響應的特征線解法[J].佳木斯大學學報,2003,21(1):19-20.HAO Bing,LI Shuai.The calculation of the characteristics of dynamic response of spring mass system[J].Journal of Jiamusi University(Natural Science Edition),2003,21(1):19-20..
[2]鮑務均,楊汾愛.基于ansys與Matlab的彈簧質量系統(tǒng)動力學響應計算[J].起重運輸機械,2003(4):21-22.BAO Wujun,YANG fenai.Dynamic calculation of spring mass system based on ansys and matlab[J].Hoisting and Conveying Machinery,2003(4):21-22.
[3]匡偉春,張柏清,張傳.基于Simulink的多自由度機械振動系統(tǒng)仿真[J].煤礦機械,2007,28(12):54-55.KUANG Weichun,ZHANG Baiqing,ZHANG Chuancai.Simulation of mechanical vibration multi-dof system based on simulink[J].Coal Mine Machinery,2007,28(12):54-55.
[4]李紅英,杜軍,楊金剛,等.基于虛擬儀器的裝定器檢測方法[J].探測與控制學報,2011,32(4):19-20.LI Hongying,DU Jun,YANG Jingang,et al.Fuze Setter Examination Based on Virtual Instrument[J].Journal of Detection & Control,2011,32(4):19-20.
[5]聶春燕,張猛,張萬里.Matlab和Labview仿真技術及應用實例[M].北京:清華大學出版社,2008.