【摘要】本文以蹦極跳系統的仿真設計與分析為例,詳細介紹了MATLABSimulink兩種仿真技術的應用:Simulink圖形建模方式和MATLAB命令行方式。使用命令行的方式可對系統的仿真做更多的操作與控制。
【關鍵詞】Simulink,蹦極跳系統,仿真,模型
【中圖分類號】G420【文獻標識碼】B【論文編號】1009—8097(2007)04—0074—03
一、Simulink簡介
MathWorks公司推出的基于MATLAB平臺的Simulink是動態系統仿真領域中最為著名的仿真集成環境之一,它在各個領域得到廣泛的應用。使用Simulink來建模、仿真和分析各種動態系統(包括連續系統、離散系統和混合系統),將是一件輕松的事情。它提供了一種圖形化的交互環境,只需用鼠標拖動的方法便能迅速地建立起系統框模型,甚至不需要編寫一行代碼。Simulink集成環境的運行受到MATLAB的支持,因此Simulink能夠直接使用MATLAB強大的科學計數功能。毫無疑問,Simulink具有出色的能力,因此它在系統仿真領域中有著重要的地位。
MATLABSimulink的兩種仿真技術:圖形建模方式和命令行方式。Simulink的圖形建模方式給用戶提供了強大的功能與友好的使用界面,使用Simulink圖形建模方式可以完成絕大多數的動態系統仿真分析。但是Simulink的圖形模方式在有的時候限制了用戶對系統模型更深的操作以及對系統仿真做更多的控制與修改。而使用MATLAB命令行的方式則可對系統的仿真分析做更多的操作與控制。本文通過蹦極跳(bungee jumping)系統的仿真設計與分析來介紹Simulink兩種仿真技術的應用。
二、蹦極跳系統的數學模型
蹦極跳是一種挑戰身體極限的運動,蹦極者系著一根彈力繩從高處的橋梁(或山崖等)向下跳。在下落的過程中,蹦極者幾乎處于失重狀態。按照牛頓運動規律,自由下落的物體的位置由下式確定:
其中 m為物體的質量,g為重力加速度,x為物體的位置,第二項與第三項表示空氣的阻力。其中位置x的基準為蹦極者開始跳下的位置(即選擇橋梁作為位置的起點x=0)低于橋梁的位置為正值,高于橋梁的位置為負值。如果物體系在一個彈性常數為k的彈力繩索上,定義繩索下端的初始位置為0,則其對落體位置的影響為
因此整個蹦極跳系統的數學描述為
從蹦極跳系統的數學描述中可以得知,此系統為一典型的具有連續狀態的非線性連續系統。本文蹦極跳仿真實驗中將設橋梁距離地面為50m,蹦極跳者的起始位置為繩索的長度為-30m, ,蹦極跳者起始速度為0,即 ;其余的參數分別為。
下面將用Simulink的兩種仿真方式建立蹦極跳系統的仿真模型,并在如上的參數下對系統進行仿真,分析此蹦極跳系統對體重為70kg的蹦極跳者是否安全。
三、用Simulink的圖形建模方式分析蹦極跳系統
Simulink是基于MATLAB的圖形化仿真集成環境。Simulink的圖形建模方式給用戶提供了強大的功能與友好的使用界面,使用圖形化的系統模塊可對蹦極跳系統進行動態描述,并在此基礎上進行蹦極跳系統的求解與分析。
3.1 建立蹦極跳系統的Simulink仿真模型
根據蹦極跳系統的數學描述,要建立此系統的模型,主
要需要如下的系統模塊:
(1)Continuous模塊庫中的Intergrator模塊:用來實現系統中的微分運算。
(2)FunctionsTables模塊庫中的Fcn模塊:用來實現系統中空氣阻力的函數關系。
(3)Nonlinear模塊庫中的Swicth模塊:用來實現系統中彈力線索的函數關系。
蹦極跳系統的模型如圖1所示。
圖1 蹦極跳系統模型
在圖1的蹦極跳系統模型中使用了兩個Scope輸出模塊,Scope1用來顯示蹦極者的相對位置,即相對于橋梁的位置;而Scope2模塊則用來顯示蹦極者的絕對位置,即相對于地面的距離。
3.2 蹦極跳系統模塊參數的設置
在建立蹦極跳系統模型后,需要設置系統模型中各個模塊的參數。由于系統模塊參數數量較多,本文直接使用MATLAB工作空間中的變量作為系統模塊的參數(蹦極者質量m、重力加速度g、彈性常數k、常數a1與常數a2)。Simulink是基于MATLAB平臺之上的系統仿真平臺,它可以與MATLAB進行數據交互。直接使用MATLAB工作空間中的變量設置模塊參數,其變量賦值方法如圖2所示。
圖2 使用MATLAB工作空間變量設置模塊參數
在系統仿真之前需要按照圖2所示的方法對這些變量進行賦值。否則仿真時會出現錯誤信息。
另外,在具有連續狀態的連續系統中,千萬不能忘記對積分器模塊的初始值進行設置,因為在不同的初始值下,系統的動態規律可能大相徑庭。下面給出積分器模塊velocity與 position模塊的參數設置,如圖3所示。
圖3積分器模塊velocity 與position的參數設置
3.3 蹦極跳系統仿真參數的設置與系統的仿真分析
在Simulink主窗口使用Simulation菜單下的Simulation Parameters打開仿真參數設置的對話框,蹦極跳系統的仿真參數設置如下:
(1)系統仿真時間范圍為0~100s;
(2)其它仿真參數采用系統默認取值(變步長求解器、求解算法ode45、自動選擇最大仿真步長、相對誤差為1e-3、絕對誤差為1e-6)。
然后進行系統仿真,仿真輸出結果如下圖4所示。
圖4蹦極跳系統的仿真結果
仿真顯示的是蹦極者相對于地面之間的距離。從仿真結果可見:對于體重為70kg的蹦極者來說,此系統是不安全的。因為蹦極者與地面之間的距離出現了負值(即蹦極者在下落的過程中會觸地,而安全的蹦極跳系統要求二者之間的距離應該大于0)。因此,必須使用彈性常數較大的彈性繩索,才能保證蹦極者的安全。
3.4 使用MATLAB命令行方式進行蹦極跳系統安全性的分析
使用MATLAB命令行方式可對蹦極跳系統的安全性作定性分析。使用此種仿真方式定性分析系統的安全性仍要利用到的前面介紹的simulink圖形建模方式所建立的系統模型。本文在圖1模型中添加一模塊Outport,如圖5中橢圓框內所示。并且將修改后的蹦極跳系統模型框圖另存命名為bungee_jumping_command。
圖5修改后的蹦極跳系統模型框圖
使用命令行方式對蹦極跳系統進行仿真分析的步驟:①先利用圖5中Outport模塊將蹦極者的位置輸出到MATLAB工作空間之中;②然后編寫MATLAB腳本文件程序;③最后運行腳本文件程序以求出符合安全要求的彈性繩索的最小彈性常數。按本文前面提供的蹦極跳系統參數編寫的MATLAB腳本文件程序bungee_jumping_command.m如下所示:
m=70;
g=10;
a1=1;%使用MATLAB工作空間中的變量設置
a2=1;%系統模型中模塊參數
for k=20:50%在一定的范圍內試驗彈性常數
[t,x,y]=sim(`bungee_jumping_command`,[0,100]); %使用不同的彈性常數進行仿真
if min(y)>0%如果仿真結果輸出數據的最小值大于0,
break; %則說明此彈性常數符合安全要求,跳出循環
end
end
disp([`The minimum safe k is:`,num2str(k)] %顯示最小安全彈性常數
disp=min(y);%求取蹦極者與地面之間的最小距離
disp([`The minimun distance beteen jumper and ground is;`,num2st(disp)])
simplot(t,y) %繪制最小安全彈性常數下系統的仿真結果
按圖3參數設置方法正確設置蹦極者的初始位置與初始速度后,運行此MATLAB腳本文件程序可得到最小安全彈性常數和在此彈性常數下蹦極者與地面之間的最小距離,并且顯示在此彈性常數下的蹦極跳系統的動態過程。其中最小安全彈性常數、蹦極者與地面之間的最小距離在MATLAB命令窗口中顯示如下:
>>The minimum safe k is:27
The minimum distance between jumper and ground is:0.87937
圖6所示為此系統的動態過程。由圖6可見,在最小安全彈性常數為27的情況下,體重為70kg的蹦極者與地面之間的最小距離沒有出現負值。很顯然,要求彈性繩索的彈性常數大于27,此蹦極跳系統對于體重為70kg的蹦極者來說才是可能是安全的。
圖6最小安全彈性常數下的系統動態過程
四、結束語
使用命令行方式建立的動態系統模型與simulink圖形建模方式所建立的系統模型基本一致,然而,僅僅命令行方式建立系統模型是一件麻煩且低效的方法。其實在實際的應用中,很少單獨使用MATLAB的命令方式,它總是與simulink的圖形建模方式操作相結合,從而給高級用戶提供了建立動態系統模型進行系統仿真與分析更為靈活的控制。
參考文獻
[1]姚俊 馬松輝. simulink建模與仿真[M].西安電子科技大學出版社,2002
[2]陳懷琛.MATLAB及其在理工課程中的應用指南[M]. 西安電子科技大學出版社,2000
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文