翟龍余
(江蘇財經(jīng)職業(yè)技術學院,江蘇 淮安 223001)
一級倒立擺仿真模型的建立
翟龍余
(江蘇財經(jīng)職業(yè)技術學院,江蘇 淮安 223001)
針對一級倒立擺系統(tǒng),首先利用牛頓力學的知識建立了數(shù)學模型,然后利用Simulink及其封裝功能建立了倒立擺系統(tǒng)的仿真模型,使模型更具靈活性,給仿真帶來很大方便。
倒立擺;數(shù)學模型;仿真模型
倒立擺系統(tǒng)是研究控制理論的一種典型實驗裝置,具有成本低廉,結(jié)構(gòu)簡單,物理參數(shù)和結(jié)構(gòu)易于調(diào)整的優(yōu)點,是一個具有高階次、不穩(wěn)定、多變量、非線性和強藕合特性的不穩(wěn)定系統(tǒng)。在控制過程中,它能有效地反映諸如可鎮(zhèn)定性、魯棒性、隨動性以及跟蹤等許多控制中的關鍵問題,是檢驗各種控制理論的理想模型。本文以一級倒立擺為例,首先建立了倒立擺系統(tǒng)的數(shù)學模型,最終利用simulink建立其仿真模型。
經(jīng)過小心的假設忽略掉一些次要的因素,如忽略了空氣阻力、系統(tǒng)內(nèi)部的摩擦,不考慮構(gòu)件的變形,則可以將直線一級倒立擺系統(tǒng)抽象成小車和勻質(zhì)桿組成的系統(tǒng),如圖1所示。這是一個典型的運動剛體系統(tǒng),可以在慣性坐標系內(nèi)應用經(jīng)典牛頓力學理論建立系統(tǒng)的動力學方程。[1]
圖1 倒立擺系統(tǒng)
各參數(shù)符號含義如下:
符號 含義單位M 小車質(zhì)量kg m 擺桿質(zhì)量kg b 小車摩擦系數(shù)N/m/sec l 擺桿轉(zhuǎn)動軸心到桿質(zhì)心的長度 m I 擺桿轉(zhuǎn)動慣量kg*m2 F 加在小車上的力N x 小車位置m擺桿與垂直向上方向的夾角 rad
圖2是系統(tǒng)中小車和擺桿的受力分析圖,其中,N 和P為小車與擺桿相互作用力的水平和垂直兩個方向的分量。矢量正方向如圖2所示。
圖2 小車與擺桿的受力分析
小車作平動,由小車的水平受力分析,可以得到以下方程:
擺桿作平面運動,可分解為質(zhì)心的平動和繞質(zhì)心轉(zhuǎn)動,由水平方向的受力分析,可以得到下式:
代入(1)式得:
再由擺桿的垂直方向的受力分析,得到下式:
又由擺桿對質(zhì)心的力矩平衡方程有:
整理得:
在 與 1(單位是弧度)相比很小,即 <<1時,則可以進行近似處理: cos ≈ 1,sin ≈ ˙≈0。用u來代表被控對象的輸入力 F,線性化后得到兩個運動方程如下:
可解得:
經(jīng)整理后得到倒立擺的數(shù)學模型簡化形式如下:
Simulink是Matlab最重要的組件之一,它提供一個動態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境。在該環(huán)境中,可以構(gòu)造出復雜的仿真模型,下文根據(jù)倒立擺的數(shù)學模型,利用 Simulink的封裝功能,構(gòu)建了倒立擺系統(tǒng)仿真模型子系統(tǒng)。[2]
根據(jù)倒立擺的數(shù)學模型即表達式(9),在Matlab中,用Simulink構(gòu)建一級倒立擺模塊 SingleInvPend,具體步驟如下:
(1)雙擊Matlab圖標,啟動Matlab,在工具欄中雙擊Simulink圖標啟動Simulink 模塊庫瀏覽器窗口,然后再單擊其工具欄中的新建(creat a new mode)圖標,新建一個Simulink模型窗口。
(2)從Simulink模塊庫瀏覽器的菜單Simulink的子菜單端口和子系統(tǒng)模塊(Port & Subsystems)下選中子系統(tǒng)Subsystem,并用左鍵拖入到新建的Simulink模型窗口中。左擊系統(tǒng)框圖下字符串“Subsystem”,刪除后輸入“SingleInvPend”,實現(xiàn)子系統(tǒng)的重新命名。結(jié)果如圖3。
圖3 SingleInvPend模塊
圖4 SingleInvPend模塊
(3)雙擊圖3中的SingleInvPend模塊,從Port &Subsystems下在拖出三個輸出模塊out,把一個輸入模塊和四個輸出模塊分別重新命名為:u和 x 、x'、 a 、a',分別代表系統(tǒng)的輸入向量u和輸出向量 x、x˙、 、˙(Matlab中不支持公式編輯器和希臘字母)。結(jié)果如圖4。
(4)雙擊SingleInvPend模塊,然后從Simulink下子菜單“用戶自定義函數(shù)模塊”(User-Defined Functions)中拖出Fcn子模塊,單擊Fcn子模塊下的Fcn,刪除Fcn重新命名為K1;再雙擊Fcn子模塊并將對話框中的“Expression”中的內(nèi)容修改為:[ -4*b /(4*M +m1)]*u,然后按OK,這就定義好了K1。(說明:由于matlab子系統(tǒng)的變量名是不區(qū)分大小寫,所以數(shù)學模型中的擺桿的質(zhì)量m在matlab中用m1代替)
(5)重復步驟4)依次定義K2、K3、K4、K5、K6。
(6)在窗口中再加入四個積分模塊和兩個加法模塊,雙擊四個積分模塊,把“Initial condition”下的內(nèi)容分別修改為“init_cond(1)、init_cond(2)、init_cond(3)、init_cond(4)”。它們表示倒立擺的系統(tǒng)的初始條件。
(7)把所有模塊按公式(9)的運算關系連結(jié)起來,得到子系統(tǒng)的內(nèi)部結(jié)構(gòu)圖,如圖5所示。
(8)利用 Simulink的 Mask功能進行封裝。右擊SingleInvPend模塊,選擇Mask Subsystem(封裝子系統(tǒng))菜單,彈出子系統(tǒng)封裝對話框,點擊Parmeters標簽,在參數(shù)對話框中,依次添加 init_ cond 、M、M1、l、b、g等各參數(shù)變量,結(jié)果如圖6。
圖5 子系統(tǒng)內(nèi)部結(jié)構(gòu)
圖6 子系統(tǒng)參數(shù)標簽
圖7 封裝后的參數(shù)設計
在倒立擺仿真控制時,有時需要了解不同的初始狀態(tài)下控制系統(tǒng)的響應,或者要了解系統(tǒng)在其他參數(shù)情況下的控制系統(tǒng)的響應,這時我們只要重新雙擊封裝后的子系統(tǒng)模型,再重新輸入新的參數(shù)值即可,從而使模型更具靈活性,給仿真帶來很大方便。
[1] 固高科技(深圳)有限公司編著.倒立擺與自動控制原理實驗[M].2005,24-27.
[2] 王正林,王勝開,陳國順.MATLAB/Simulink與控制系統(tǒng)仿真[M].北京:電子工業(yè)出版社,2005.7:44-77.
Building the Simulation Model of an Inverted Pendulum
Zhai Longyu
( Jiangsu Finance and Economics College , Huai’an Jiangsu , China 223003)
This paper aims at an inverted pendulum system. It argues, after building a mathematical model on the basis of Newtonian mechanics, we can use Simulink and its MASK function to establish a simulation model of an inverted pendulum system,which can make the model more flexible and bring more convenience to the simulation.
inverted pendulum; mathematical model; simulation model
N945.12
B
1008-1151(2011)08-0268-03
2011-04-17
翟龍余(1966-),男,江蘇姜堰人,江蘇財經(jīng)職業(yè)技術學院基礎教學部副教授,碩士,從事高等數(shù)學與matlab應用教學。