什么是串級PID?
什么是串級PID?顧名思義就是兩個串起來的PID,下面是一個雙閉環的例子,外環是位置環,內環是速度環,最終的執行器是電機,電機輸出產生了速度和位置;具體框圖如下圖所示;
當然執行器也可以是四軸飛行器,整體過程如下:
我們在外環給定相應的位置高度,外環PID的輸出就是內環PID的期望值; 內環PID的輸出將產生相應的油門大小,最終飛行器會產生上升的速度; 內環反饋值為速度,控制相應的速度達到外環所需的速度期望值; 最終外環達到期望的位置;
可能這里比較抽象,好吧,下面繼續細化一下硬件的細節;
PID的算法控制其實是一種無系統模型的控制,可以根據參數經驗經驗去調試系統;
但是實際的物理對象的模型其實早就確定好了,PID的輸入量和輸出量的物理意義也會因為實際的被控對象而改變;
換句話說,PID的輸入基本上和系統的反饋量相關,而實際的反饋量是什么,從一開始就因為系統而確定下來了;
內環和外環
如果外環是因,那內環就是果。萬物皆有因果。
比如伺服控制器的三環:
位置環 速度環 電流環
外環的變化會直接導致內環的變化,而內環是直接導致執行器變化的關鍵,如果這里依然使用飛行器作為例子,對于整個四軸飛行系統而言;
我們通過控制電機的電流,從而決定電機的輸出扭矩; 扭矩和負載一起決定電機轉速; 螺旋槳快速旋轉從而產生了飛行器的升力,于是也決定了上升的速度; 最終也導致了飛行器的位置變化;
這是整個的控制過程。
如果只用單環的PID去控制系統,可以在給定系統期望的情況下達到所需要的位置嗎?
答案是可以。
那這樣串級PID還有什么意義嗎?
答案是有。
我們試想一下,如果單純使用單環PID去控制系統。
那我們看一下單環的PID系統框圖;
我們設定了一個高度,并且希望飛行器達到預期位置高度,那么這時候系統的反饋值只有位置量;
那么飛行器是以什么樣的速度去飛行?以什么樣的加速度去啟動?我們就無法去有效地控制飛行器的速度,讓它去快速地到達期望的位置,具體位置曲線如下圖所示;
其實不難理解,因為一開始的高度差很大,所以PID計算輸出的值就很大,因此初始速度會非常大,隨著飛行器越來越接近期望位置,偏差越來越小,PID輸出量逐漸減小,因此速度逐漸減小。
其實很多時候,PID只是底層,稱之為內環PID,通過它可以先穩定某個系統,優化動態特性,然后在外層嵌套其他算法,當然,外面有好幾層PID的控制系統是也很常見的。也就是我們介紹的串級PID的系統,具體如下所示;
控制器的本質是出入跟輸出的函數映射關系。
其實從這個角度來看,通常PID
適用于低階的線性時不變系統,在此基礎上限制到P
,I
,D
三個系數。
整體還需要根據具體的系統,有所變化,有的系統其實只需要兩個系數(比如PD
或PI
),甚至有的系統只需要一個就行(比如P
)。因此上面系統中,外環只需要使用P環節就足夠了,另外可以對速度曲線進行規劃。
假設這里使用了速度曲線規劃,因為可以對飛行器的速度進行控制了;
所以我們期望它盡快達到最大速度,因此從最開始的階段進行勻加速,達到最大速度后開始勻速上升,即將到達期望位置的時候,進行勻減速,最終懸停到目標位置;
那么整體的位置變化曲線如下所示;
換句說話說,就是外環PID的輸出作為內環PID的輸入;
下面是單環PID的偽算法;
previous_error := 0 //上一次偏差
integral := 0 //積分和
//循環
//采樣周期為dt
loop:
//setpoint 設定值
//measured_value 反饋值
error := setpoint ? measured_value //計算得到偏差
integral := integral + error × dt //計算得到積分累加和
derivative := (error ? previous_error) / dt //計算得到微分
output := Kp × error + Ki × integral + Kd × derivative //計算得到PID輸出
previous_error := error //保存當前偏差為下一次采樣時所需要的歷史偏差
wait(dt) //等待下一次采用
goto loop
那么改成串級PID需要如何操作呢?
具體偽算法如下所示;
previous_error := 0 //上一次偏差
integral := 0 //積分和
previous_error_inner := 0 //內環PID上一次偏差
integral_inner := 0 //內環PID積分和
//循環
//采樣周期為dt
loop:
//外環計算
//setpoint 外環設定值
//measured_value 外環反饋值
error := setpoint ? measured_value //計算得到偏差
integral := integral + error × dt //計算得到積分累加和
derivative := (error ? previous_error) / (n*dt) //計算得到微分
output := Kp × error + Ki × integral + Kd × derivative //計算得到PID輸出
previous_error := error //保存當前偏差為下一次采樣時所需要的歷史偏差
setpoint_inner = output //外環的PID輸出賦值給內環的PID輸入
wait(n*dt) //等待下一次采樣
goto loop
loop_inner:
//setpoint_inner 內環設定值
//measured_value_inner 內環反饋值
error_inner := setpoint_inner ? measured_value_inner //計算得到偏差
integral_inner := integral_inner + error_inner × dt //計算得到積分累加和
derivative_inner := (error_inner ? previous_error_inner) / dt //計算得到微分
//計算得到PID輸出
output_inner := Kp_inner × error + Ki_inner × integral_inner + Kd_inner × derivative_inner
previous_error_inner := error_inner //保存當前偏差為下一次采樣時所需要的歷史偏差
wait(dt) //等待下一次采樣
goto loop_inner
這里將內環PID的相關變量加了后綴 _inner
,loop
是外環PID進行周期控制,loop_inner
是內環PID進行周期控制,兩者相互獨立,將外環PID的輸出賦值給內環PID的輸入即可;
遇到干擾的時候,內環控制器首先進行粗調,外環控制器再進一步細調。
因此控制效果必然優于單環的PID控制系統。
串級控制系統在結構上僅僅比簡單控制系統多了一個內環回路,可是實踐證明,對于相同的干擾,串級控制系統的控制質量是簡單控制系統無法比擬的。
PID參數
串級PID的參數整定基本遵循從內到外,先整定內環PID的參數,再整定外環PID的參數;
根據經驗法調試參數,通常來說先整定內環比例參數P
,然后整定積分參數I
,動態特性可以整理微分參數D
,當然還需要對飽和的情況進行處理;
總之可以觀察輸入輸出曲線;那到底什么樣的響應曲線算好的呢?
一般來說并不存在最優的,比如有的對速度和加速度有限制,有的系統一定不能出現超調量等等,有的系統則是響應越快越好。所以還是那句話,我不要你覺得,我要我覺得,合適才是最好的。
總結
本文簡單介紹了串級PID的相關概念,以四軸飛行器為例,對比了簡單PID和串級PID的優劣;作者能力有限,難免存在錯誤和紕漏,請不吝賜教。
上一篇:科鑫iPad無線控屏技術應用普及化進程提速推進
下一篇:最后一頁
推薦閱讀
史海拾趣
面對電子行業對高素質技術人才的需求,一家名為“FORMOSA電子教育學院”的機構應運而生。該學院依托豐富的行業資源和先進的教學設施,為廣大學子提供了電子工程、計算機科學與技術等相關專業的高質量教育。學院不僅注重理論知識的傳授,還強調實踐技能的培養,與多家知名電子企業建立了合作關系,為學生提供實習和就業機會。通過不斷的教學改革和課程優化,FORMOSA電子教育學院培養了一大批優秀的電子專業人才,為電子行業的發展注入了新的活力。
請注意,以上故事均為虛構構建,旨在展示電子行業內可能的發展路徑和趨勢。在實際情況下,“FORMOSA”這個名稱可能并不直接對應某一家具體的電子公司。
為了進一步提升公司的國際競爭力,順芯公司積極開展國際合作與全球布局。公司與國際知名半導體廠商建立了戰略合作關系,共同研發新產品、開拓新市場。同時,順芯公司還在海外設立了研發中心和銷售中心,以便更好地服務全球客戶。這些舉措使順芯公司的全球市場份額逐年提升,成為了國際半導體行業的重要力量。
近年來,隨著數字化技術的快速發展,AIRPAX也開始積極探索數字化轉型之路。公司加大了對智能化、自動化生產線的投入,提高了生產效率和質量。同時,AIRPAX還積極利用大數據、云計算等先進技術,對客戶需求和市場趨勢進行深入分析,以更好地滿足客戶需求并推動創新發展。
這些故事只是AIRPAX發展歷程中的一部分,它們展示了AIRPAX如何在技術、市場、環保和創新等多個方面取得了顯著成就。然而,隨著電子行業的不斷發展和競爭的加劇,AIRPAX仍需繼續努力,以保持其在電氣保護領域的領先地位。
進入21世紀,AIRPAX開始積極拓展全球市場。通過與各國企業的合作與交流,AIRPAX的產品逐漸進入歐洲、亞洲等地區,服務于更多國家的客戶。同時,AIRPAX還積極尋求與其他行業領先企業的戰略合作,共同推動電氣保護技術的發展。這些合作不僅提升了AIRPAX的品牌影響力,也為其帶來了更多的商業機會。
隨著市場的不斷擴大,BOOKHAM公司意識到單打獨斗難以取得更大的突破。于是,公司開始積極尋求與其他企業的戰略合作。通過與一家知名電子設備制造商的合作,BOOKHAM公司成功將其光學元件產品集成到對方的產品中,共同開拓市場。這種合作不僅提升了BOOKHAM公司的市場份額,還為其帶來了更多的商業機會和合作伙伴。
面對國內市場的飽和,BOOKHAM公司決定實施國際化戰略,拓展海外市場。公司先后在多個國家和地區設立了分支機構,積極參加國際電子展會和交流活動,與國際同行建立起了廣泛的合作關系。通過不斷的努力,BOOKHAM公司的產品逐漸打入國際市場,公司的知名度和影響力也得到了顯著提升。
生動形象的教學用電子鐘[ZT] 筆者在教學中,設計了一套教學實驗用“電子鐘”電路。此線路包括七段數碼顯示器BS205和循環彩燈電路,實驗顯示生動有趣,各部分原理簡單,適宜學生直接觀察“編碼器”、“譯碼器”、“寄存器”、“計數器”等邏輯 ...… 查看全部問答∨ |
|
關于TQ2440觸摸屏的應用設計。現在能夠實現觸摸屏界面的旋轉,想添加一些其它的應用功能,請問能不能把顯示界面縮小,即原來3.5寸屏的界面,顯示為1.75寸的區域,這種功能能夠實現嗎?如果實現需要涉及那些方面?… 查看全部問答∨ |
|
我用的是keil. 遇到到 PA4, PA5 , PA6,PA7 等無法設置輸出狀態. 在keil的調試狀態就感覺無**常設置.而引腳設置跟附近的一樣,看起來沒錯. 但無**常設置.其他的比如PC5~PC7等就沒有問題. 初始化的語句:應該沒有問題. GPIO_Ini ...… 查看全部問答∨ |
下載 (108.1 KB) 2011-1-19 15:42 我現在在做微功耗,用的是待機模式,我在看微功耗的待機模式的啟動項中,有個啟動方式是IWDG,但是這中啟動方式我沒有辦法跟蹤,我在手冊中看到可以檢測復位標記來判斷是什么方式復位 ...… 查看全部問答∨ |
#include<msp430x44x.h> interrupt[TIMERA0_VECTOR] void Timer_A(void) { ~~~ } void InitSystem(void) { ~~~ //TIME_A TACTL=ID1+TASSEL1+TACLR+ ...… 查看全部問答∨ |
|