【Simscape】用Simscape實現三維物理仿真(四)——用PID控制倒立擺系統

仿真文件下載:https://download.csdn.net/download/ReadAir/12232591


 1 建立一個倒立擺系統

我們使用【Simscape】用Simscape實現三維物理仿真(三)——創建一個滑塊單擺系統中現成的模型開始下一步。

一個穩定閉環系統必須滿足“能控”和“能觀” ,因此我們下一步需要添加執行器傳感器,我們首先設計一下整個閉環系統的控制框圖:

2 爲系統添加傳感器

(1)雙擊編輯 旋轉關節

(2)在屬性中找到傳感器(Sensing),在其子欄目中勾選位置(即角度)和速度(即角速度),然後Apply

(3) 可以看到這個模塊多了兩個輸出q(角度)、w(角速度):

 3 添加控制器

控制器實質是控制滑塊Y軸向的受力(Y軸是滑塊的自由軸)

(1)雙擊編輯 三軸平動關節(注意,在上一篇博文中,我們已經用一種方法鎖死了X和Z軸的平動。)

(2)在屬性中找到驅動(Actuation),將受力(Force)選爲“由輸入提供(Provided bu input)”,運動(Motion)選爲“自動計算(Automatically computed”,然後點擊Apply

(3)可以看到模塊多了一個Y軸受力輸入: 

4 添加噪聲

怎麼評判一個控制系統的魯棒性?最直觀的辦法就是看系統受到干擾後的性能,爲此我們需要添加一點噪聲。

(1)在之前的旋轉關節中找到驅動,添加一個扭矩(Torque)輸入:

(2)從Simulink庫拖出一個脈衝發生器和一個信號轉換器:

  • 脈衝發生器 (Simulink -> Sourses):
  • 信號轉換器 (Simscape -> Utilities): 

(3)如圖連接接入旋轉關節 :

 (4)雙擊設置脈衝發生器參數:

  • 脈衝幅度:5
  • 週期:5
  • 脈衝寬度:5%
  • 脈衝延時:1

 5 添加PID控制律

  • 首先,我們目前的仿真是一個完全理想的環境,不存在機械死區和摩擦力(儘管你可以自己添加),因此積分部分我們可以不用,所以我要展示的嚴格來說是個PD控制器。
  • 其次,由於誤差等於輸入(給定)減去輸出,而輸入恆爲零,因此誤差就是負的輸入。
  • 此外,誤差的微分即角速度,我們這裏可以用傳感器直接讀出。即可省去微分的計算過程。

瞭解這些後,我們開始着手於搭建控制器:

(1)從Simulink庫中拖出兩個增益模塊(Gain),以及對應的兩種信號轉換器,並按圖示連接:

(2)添加一個加模塊(Add),按圖示連接:、

(3)現在按照我們的控制框圖完成全部連接,取Kp=200,Kd=1,如圖所示連接:

6 大功告成,仿真看效果! 

這顯然不是最優的參數,但是可以明顯看到控制器在避免擺杆的傾倒,由於我們僅僅實現了擺杆角度的閉環,因此如果控制器一旦飽和(滑塊觸邊)就失去了控制作用,擺杆也自然無法繼續保持倒立。下一章,我們來講講雙閉環:同時實現擺杆角度的閉環和滑塊的位置閉環。


我是ReadAir,如果這篇教程能幫到你,請在右上角爲我點個贊,謝謝!(求關注)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章