常廣暉,張亞超,蘇 攀
(海軍工程大學(xué)動力工程學(xué)院, 湖北 武漢 430033)
基于模型的設(shè)計(MBD)方法被證實(shí)是一種有效的控制器設(shè)計方法。基于MBD方法設(shè)計控制系統(tǒng),需要遵循四個步驟:對系統(tǒng)進(jìn)行建模,為模型設(shè)計控制器,對控制器進(jìn)行仿真驗證,最后將設(shè)計好的控制器部署到真實(shí)系統(tǒng)上的控制器上。在MBD方法中,最適合使用預(yù)定義的連續(xù)時間和離散時間各類模塊對系統(tǒng)系統(tǒng)進(jìn)行建模,而不是使用復(fù)雜的軟件代碼。針對硬件在環(huán)仿真,系統(tǒng)模型參數(shù)可以方便的進(jìn)行適應(yīng)性調(diào)整。此功能使得在系統(tǒng)以及控制器設(shè)計中比傳統(tǒng)的建模技術(shù)可以更有效的測試設(shè)備的動態(tài)行為。
倒立擺是一個典型的不穩(wěn)定非線性系統(tǒng),很多技術(shù)原型都來源于此,比如平衡車、雙足步行機(jī)器人等??刂频碾y度使得倒立擺成為控制領(lǐng)域經(jīng)典案例,圍繞倒立擺已經(jīng)有設(shè)計了很多類型的控制器,例如神經(jīng)網(wǎng)絡(luò)、自適應(yīng)控制、極點(diǎn)配置、PID控制、LQR控制甚至模糊控制等。倒立擺控制的難度主要來源于結(jié)構(gòu)性和非結(jié)構(gòu)性的不確定性,結(jié)構(gòu)性不確定性主要由模型不確定和未知的負(fù)載變化引起,非結(jié)構(gòu)性不確定性是由于傳感器噪聲、外部干擾等引起。隨著計算機(jī)仿真技術(shù)的進(jìn)步,開發(fā)精確倒立擺模型成為可能,這有助于通過仿真分析系統(tǒng),在開展物理實(shí)驗之前就能設(shè)計出更穩(wěn)定的控制系統(tǒng)。
本文提出了一種應(yīng)用于直線倒立擺控制的MBD設(shè)計實(shí)現(xiàn)方法。首先,建立了一階直線倒立擺的精確多體動力學(xué)非線性模型,該模型通過滑動和旋轉(zhuǎn)鉸鏈可以模擬空氣阻尼,滑動摩擦等不確定因素。遵循MBD方法,非線性模型方程在平衡點(diǎn)被線性化,根據(jù)線性化狀態(tài)方程設(shè)計了LQR控制器,為了克服系統(tǒng)噪聲和傳感器噪聲并設(shè)計了卡爾曼濾波器,并在Matlab虛擬現(xiàn)實(shí)中動態(tài)模擬了擾動情況下的倒立擺穩(wěn)擺控制效果。最后,通過自動代碼生成和軟件集成將設(shè)計好的控制器部署在倒立擺嵌入式控制電路板上。通過實(shí)際倒立擺測試實(shí)驗,證明了倒立擺控制的MBD設(shè)計實(shí)現(xiàn)方法的有效性和便捷性。
一級直線倒立擺原理如圖1所示,倒立擺的模型通常采用Lagrange方程進(jìn)行建模,忽略小車和擺桿的阻尼,取小車的位移x和擺桿旋轉(zhuǎn)角度θ為廣義坐標(biāo)則其Lagrange函數(shù)為
圖1 倒立擺示意圖
L
=T
-V
(1)
其中T
和V
為小車和擺桿的動能和使能。在廣義坐標(biāo)x
上小車所受的外力F
即為控制量u
為非保守力,所以拉格朗日方程可以寫成如下形式:(2)
(3)
其中I
為擺桿的轉(zhuǎn)動慣量。這樣建模更多是理論指導(dǎo)性的,對于一個實(shí)際倒立擺系統(tǒng)或者更為復(fù)雜形狀的機(jī)械結(jié)構(gòu)而言,其質(zhì)心及轉(zhuǎn)動慣量等是很難確定的。對于一個已知的實(shí)際倒立擺機(jī)構(gòu),更希望建立一個具有3D特性實(shí)體物理模型。Matlab軟件中的SimscapeMultibody工具箱提供了這種可能,它可以使用代表實(shí)體的模塊,關(guān)節(jié)、約束、力元素和傳感器等為多體系統(tǒng)建模并可求解完整機(jī)械系統(tǒng)的運(yùn)動方程。首先在SolidWork環(huán)境下建立了包含實(shí)際倒立擺幾何尺寸、質(zhì)量、關(guān)系、約束等參數(shù)信息的的3D裝配體模型,然后通過SimscapeMultibody將其導(dǎo)入到Simulink環(huán)境下,這樣仿真時可以將倒立擺的動態(tài)可視化,最終建立的倒立擺Simscape模型如圖2所示。
圖2 倒立擺的Simscape模型
(4)
直流電機(jī)的電樞回路電壓平衡方程為
(5)
式中E
=K
ω
為反電動勢(K
為電機(jī)電勢常數(shù)),R
為電樞阻值,L
為電樞線圈電感,u
為電樞外加電壓。直流電機(jī)電感量L
很小,通常忽略不計則,電機(jī)產(chǎn)生的力矩為(6)
式中K
為力矩系數(shù),通常有K
=K
。電機(jī)通過減速齒輪箱同小車皮帶輪連接,故小車速度和電機(jī)角速度之間滿足
(7)
式中,r
為皮帶輪半徑,K
為減速比。同理小車驅(qū)動力F
與電機(jī)轉(zhuǎn)動力矩M
之間存在著如下關(guān)系(8)
聯(lián)立式 (5)、(6)、(8)可得直流電機(jī)模型
(9)
本例驅(qū)動電機(jī)參數(shù)如表2所示。
表2 實(shí)際電機(jī)參數(shù)
LQR控制算法是一種普遍采用的最優(yōu)控制系統(tǒng)設(shè)計方法,當(dāng)?shù)沽[擺桿受擾偏離原平衡狀態(tài)時,通過LQR控制可以使擺桿保持在豎直狀態(tài),并使控制過程中的動態(tài)誤差和能量消耗綜合最優(yōu)即,通過求解Riccati代數(shù)方程,可以求得倒立擺的最優(yōu)控制律:
u
=-Kx
=-R
B
Px
(10)
式中,K
為LQR
控制增益矩陣,R
為正定實(shí)對稱常數(shù)矩陣,P
為常值正定矩陣,必須滿足Riccati代數(shù)方程,即A
P
+PA
+Q
-PBR
B
P
=0(11)
式中,A
,B
分別為倒立擺模型的系統(tǒng)矩陣和控制矩陣。通過MATLAB自帶的lqr函數(shù)可以求解Riccati代數(shù)方程從而求得LQR控制增益矩陣K。由于在實(shí)際倒立擺控制時,系統(tǒng)本身存在隨機(jī)噪聲干擾,同時倒立擺的四個狀態(tài)量中只能方便的測量小車的位移和擺桿的角度,測量過程也存在測量噪聲干擾,很難獲得精確的全部狀態(tài)量x,在LQR控制器前端增加卡爾曼濾波狀態(tài)觀測器可以解決這一問題??柭鼮V波器采用控制工具箱中的KalmanFilter模塊實(shí)現(xiàn)。
將上述倒立擺各部分模型及控制器模型在Simulink環(huán)境下集成,得到的系統(tǒng)仿真模型如圖3所示。
圖3 倒立擺仿真模型
為了考慮后續(xù)代碼自動生成在嵌入式平臺運(yùn)行的需要仿真設(shè)置為定步長,步長為0.005(即5ms),積分算法選擇為ode4。倒立擺系統(tǒng)過程噪聲方差Q設(shè)為0.01,位移和角度測量噪聲方差R設(shè)為0.001。仿真時間設(shè)為5s,未使用卡爾曼濾波器狀態(tài)觀測器,單純采用LQR的控制效果如圖4所示?;诳柭鼮V波器的LQR的控制效果如圖5所示。小車位移及擺桿角度信號原始值、測量值及卡爾曼濾波器估計值的對比曲線如圖6、7所示。
圖4 LQR控制輸出曲線
圖5 LQR加Kalman濾波器的控制輸出曲線
圖6 位移原始值、測量值及估計值的對比曲線
圖7 角度原始值、測量值及估計值的對比曲線
從圖4、5可以看出,通過卡爾曼濾波減少了噪聲干擾,增強(qiáng)了LQR控制精度。從圖6,7可以看出經(jīng)過卡爾曼濾波大大減少了狀態(tài)向量的幅值,經(jīng)LQR運(yùn)算后會減少控制量波動的幅值,減少對驅(qū)動芯片的沖擊,增長其工作壽命。
倒立擺的嵌入式控制電路板采用核心板+底板結(jié)構(gòu)的模塊化設(shè)計方案,電路圖如圖8、9所示。底板主要是電源電路、電機(jī)驅(qū)動電路、位移及角度測量接口等,核心板電路如圖4所示,核心板采用ST公司的32bit Cortex-M3內(nèi)核ARM STM32F103ZET6作為MCU,在此基礎(chǔ)上集成DM9000BI以太網(wǎng)通信電路和FLASH存儲電路等。
圖8 核心板電路圖
圖9 底板電路圖
代碼自動生成的目的就是將上述基于Kalman濾波的LQR控制模塊生成為直接可以控制實(shí)際倒立擺裝置的C代碼??刂颇K的輸出量通常為為控制量(即對小車的作用力),而實(shí)際控制如圖2所示,控制器輸出信號應(yīng)為PWM驅(qū)動信號,該信號輸出給驅(qū)動電路從而驅(qū)動電機(jī)動作產(chǎn)生作用在小車上的作用力,因此LQR輸出端口應(yīng)連接到電機(jī)的逆模型,這樣可以將LQR輸出的力信號形式的控制量轉(zhuǎn)換為電壓信號形式的控制量提供給電機(jī)??刂颇K的輸入量為小車位移和擺桿的角度,而實(shí)際控制中如圖2所示,輸入量為編碼器形式的位移信號和旋轉(zhuǎn)電位器形式的角度信號,同理LQR控制模塊應(yīng)包含控制用編碼器和電位器的逆模型。
自動生成的控制代碼同底層驅(qū)動代碼數(shù)據(jù)交互采用全局變量的方式實(shí)現(xiàn),如圖2所示,將控制模塊的輸入輸出信號取名為Measured_x,Measured_theta, pwm_set,并將信號設(shè)置為Test Point,儲存類型設(shè)置為ExportedGlobal,這樣在驅(qū)動程序中就可以方便的調(diào)用這3個變量了。
接下來在Simulink配置對話框中,選用ert.tlc系統(tǒng)目標(biāo)文件,硬件類型選擇ARM Cortex類型,設(shè)置好之后就可以將使用build命令利用Embedded Coder將控制模塊生成高效率的嵌入式C代碼,生成的代碼如圖10所示。
圖10 生成代碼圖
倒立擺控制軟件采用實(shí)時操作系統(tǒng)uCOS-II進(jìn)行模塊嵌入式系統(tǒng)軟件設(shè)計,基礎(chǔ)是線程設(shè)計??刂栖浖?yīng)實(shí)現(xiàn)編碼器形式的小車位置測量和電位器形式的擺桿角度測量、倒立擺的穩(wěn)擺控制以及以太網(wǎng)通信程序(向Simulink實(shí)時上傳控制數(shù)據(jù))等功能,因此模塊驅(qū)動軟件應(yīng)包含1個ISR和4個線程分別是:DM9000數(shù)據(jù)接收中斷服務(wù)程序、信號測量線程、穩(wěn)擺控制線程、以太網(wǎng)通信線程。為了實(shí)現(xiàn)自動代碼和控制軟件的集成,將上節(jié)自動生成的控制代碼中的LQRwithKalman_step()函數(shù)在穩(wěn)擺控制線程的線程函數(shù)中進(jìn)行調(diào)用,并將線程的任務(wù)延時設(shè)定為5ms(與仿真步長一致),這樣就實(shí)現(xiàn)了倒立擺的實(shí)時控制。擺桿角度、小車位移、PWM控制等信號需要在測量線程、穩(wěn)擺控制線程、以太網(wǎng)通信線程三個線程之間共享,為了防止出現(xiàn)沖突,三個線程通過互斥信號量來防止共享沖突。由于uC/OS-II實(shí)時操作系統(tǒng)還保留對最高的四個優(yōu)先級0-3的使用權(quán),系統(tǒng)啟動任務(wù)優(yōu)先級最高設(shè)為4。為了保證信號采集及穩(wěn)擺控制的實(shí)時性,各線程優(yōu)先級設(shè)置如表2所示。
表2 各線程屬性設(shè)置
圖11 倒立擺控制實(shí)驗驗證
為了驗證上述基于模型設(shè)計的有效性,將集成后的軟件通過keil5編譯后下載到倒立擺嵌入式控制器中進(jìn)行了控制測試試驗,試驗如圖11所示。試驗的同時上位計算機(jī)通過Simulink的TCP/IP Receive模塊接受嵌入式控制電路板實(shí)時上傳的小車位移和擺桿角度兩個數(shù)據(jù)并顯示。試驗結(jié)果表明,采用基于模型設(shè)計的控制算法通過自動代碼生成直接移植到嵌入式控制器,取得了同仿真一樣的控制效果,通過卡爾曼濾波減少了小車位移以及擺桿角度在穩(wěn)定點(diǎn)附近的波動,彌補(bǔ)了實(shí)際測量噪聲對控制的干擾。
本文提出了基于模型來設(shè)計直線倒立擺控制器的設(shè)計方法,實(shí)現(xiàn)了基于卡爾曼濾波的LQR穩(wěn)擺控制。首先,使用Solikwork 建立了與實(shí)際倒立擺裝置一致的3D裝配體,通過SimscapeMultiboy Link將裝配體轉(zhuǎn)換為Simscape非線性物理模型,該模型的物理參數(shù)和運(yùn)行特性與實(shí)際倒立擺機(jī)構(gòu)一致,這樣就可以方便的在Simulink環(huán)境下設(shè)計合適的穩(wěn)擺控制器,而且控制效果可以實(shí)現(xiàn)動態(tài)可視化。設(shè)計完成后通過Embedded Coder將控制器生成高效率的嵌入式C代碼與底層驅(qū)動代碼以實(shí)時操作系統(tǒng)多線程的方式進(jìn)行集成并最終部署于基于STM32的倒立擺嵌入式控制電路板中。通過倒立擺實(shí)際穩(wěn)擺控制試驗,驗證了使用MBD方法簡化了嵌入式控制器的設(shè)計過程,減少了設(shè)計失敗的風(fēng)險,相比通過手動編寫代碼設(shè)計控制其而言,縮短了設(shè)計時間提高了設(shè)計效率。該MDB方法流程為其它復(fù)雜機(jī)械系統(tǒng)控制器的設(shè)計提高了很好的借鑒。