溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

何為串級(jí)PID

發(fā)布時(shí)間:2021-10-18 17:23:44 來(lái)源:億速云 閱讀:220 作者:iii 欄目:web開(kāi)發(fā)

這篇文章主要講解了“何為串級(jí)PID”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“何為串級(jí)PID”吧!

什么是串級(jí)PID?

什么是串級(jí)PID?顧名思義就是兩個(gè)串起來(lái)的PID,下面是一個(gè)雙閉環(huán)的例子,外環(huán)是位置環(huán),內(nèi)環(huán)是速度環(huán),最終的執(zhí)行器是電機(jī),電機(jī)輸出產(chǎn)生了速度和位置;具體框圖如下圖所示;

何為串級(jí)PID

當(dāng)然執(zhí)行器也可以是四軸飛行器,整體過(guò)程如下:

  • 我們?cè)谕猸h(huán)給定相應(yīng)的位置高度,外環(huán)PID的輸出就是內(nèi)環(huán)PID的期望值;

  • 內(nèi)環(huán)PID的輸出將產(chǎn)生相應(yīng)的油門大小,最終飛行器會(huì)產(chǎn)生上升的速度;

  • 內(nèi)環(huán)反饋值為速度,控制相應(yīng)的速度達(dá)到外環(huán)所需的速度期望值;

  • 最終外環(huán)達(dá)到期望的位置;

可能這里比較抽象,好吧,下面繼續(xù)細(xì)化一下硬件的細(xì)節(jié);

PID的算法控制其實(shí)是一種無(wú)系統(tǒng)模型的控制,可以根據(jù)參數(shù)經(jīng)驗(yàn)經(jīng)驗(yàn)去調(diào)試系統(tǒng);

但是實(shí)際的物理對(duì)象的模型其實(shí)早就確定好了,PID的輸入量和輸出量的物理意義也會(huì)因?yàn)閷?shí)際的被控對(duì)象而改變;

換句話說(shuō),PID的輸入基本上和系統(tǒng)的反饋量相關(guān),而實(shí)際的反饋量是什么,從一開(kāi)始就因?yàn)橄到y(tǒng)而確定下來(lái)了;

內(nèi)環(huán)和外環(huán)

如果外環(huán)是因,那內(nèi)環(huán)就是果。萬(wàn)物皆有因果。

比如伺服控制器的三環(huán):

  • 位置環(huán)

  • 速度環(huán)

  • 電流環(huán)

外環(huán)的變化會(huì)直接導(dǎo)致內(nèi)環(huán)的變化,而內(nèi)環(huán)是直接導(dǎo)致執(zhí)行器變化的關(guān)鍵,如果這里依然使用飛行器作為例子,對(duì)于整個(gè)四軸飛行系統(tǒng)而言;

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. 我們通過(guò)控制電機(jī)的電流,從而決定電機(jī)的輸出扭矩;

  3. 扭矩和負(fù)載一起決定電機(jī)轉(zhuǎn)速;

  4. 螺旋槳快速旋轉(zhuǎn)從而產(chǎn)生了飛行器的升力,于是也決定了上升的速度;

  5. 最終也導(dǎo)致了飛行器的位置變化;

這是整個(gè)的控制過(guò)程。

如果只用單環(huán)的PID去控制系統(tǒng),可以在給定系統(tǒng)期望的情況下達(dá)到所需要的位置嗎?

答案是可以。

那這樣串級(jí)PID還有什么意義嗎?

答案是有。

我們?cè)囅胍幌?,如果單純使用單環(huán)PID去控制系統(tǒng)。

那我們看一下單環(huán)的PID系統(tǒng)框圖;

何為串級(jí)PID

我們?cè)O(shè)定了一個(gè)高度,并且希望飛行器達(dá)到預(yù)期位置高度,那么這時(shí)候系統(tǒng)的反饋值只有位置量;

那么飛行器是以什么樣的速度去飛行?以什么樣的加速度去啟動(dòng)?我們就無(wú)法去有效地控制飛行器的速度,讓它去快速地到達(dá)期望的位置,具體位置曲線如下圖所示;

何為串級(jí)PID

其實(shí)不難理解,因?yàn)橐婚_(kāi)始的高度差很大,所以PID計(jì)算輸出的值就很大,因此初始速度會(huì)非常大,隨著飛行器越來(lái)越接近期望位置,偏差越來(lái)越小,PID輸出量逐漸減小,因此速度逐漸減小。

其實(shí)很多時(shí)候,PID只是底層,稱之為內(nèi)環(huán)PID,通過(guò)它可以先穩(wěn)定某個(gè)系統(tǒng),優(yōu)化動(dòng)態(tài)特性,然后在外層嵌套其他算法,當(dāng)然,外面有好幾層PID的控制系統(tǒng)是也很常見(jiàn)的。也就是我們介紹的串級(jí)PID的系統(tǒng),具體如下所示;

何為串級(jí)PID

控制器的本質(zhì)是出入跟輸出的函數(shù)映射關(guān)系。

其實(shí)從這個(gè)角度來(lái)看,通常PID適用于低階的線性時(shí)不變系統(tǒng),在此基礎(chǔ)上限制到P,I,D三個(gè)系數(shù)。

整體還需要根據(jù)具體的系統(tǒng),有所變化,有的系統(tǒng)其實(shí)只需要兩個(gè)系數(shù)(比如PD或PI),甚至有的系統(tǒng)只需要一個(gè)就行(比如P)。因此上面系統(tǒng)中,外環(huán)只需要使用P環(huán)節(jié)就足夠了,另外可以對(duì)速度曲線進(jìn)行規(guī)劃。

假設(shè)這里使用了速度曲線規(guī)劃,因?yàn)榭梢詫?duì)飛行器的速度進(jìn)行控制了;

所以我們期望它盡快達(dá)到最大速度,因此從最開(kāi)始的階段進(jìn)行勻加速,達(dá)到最大速度后開(kāi)始勻速上升,即將到達(dá)期望位置的時(shí)候,進(jìn)行勻減速,最終懸停到目標(biāo)位置;

那么整體的位置變化曲線如下所示;

何為串級(jí)PID

換句說(shuō)話說(shuō),就是外環(huán)PID的輸出作為內(nèi)環(huán)PID的輸入;

下面是單環(huán)PID的偽算法;

previous_error := 0  //上一次偏差 integral := 0   //積分和  //循環(huán)  //采樣周期為dt loop:  //setpoint 設(shè)定值  //measured_value 反饋值     error := setpoint − measured_value //計(jì)算得到偏差     integral := integral + error × dt //計(jì)算得到積分累加和     derivative := (error − previous_error) / dt //計(jì)算得到微分     output := Kp × error + Ki × integral + Kd × derivative //計(jì)算得到PID輸出     previous_error := error //保存當(dāng)前偏差為下一次采樣時(shí)所需要的歷史偏差     wait(dt) //等待下一次采用     goto loop

那么改成串級(jí)PID需要如何操作呢?

具體偽算法如下所示;

previous_error := 0  //上一次偏差 integral := 0   //積分和      previous_error_inner := 0  //內(nèi)環(huán)PID上一次偏差 integral_inner := 0   //內(nèi)環(huán)PID積分和           //循環(huán)  //采樣周期為dt loop:   //外環(huán)計(jì)算  //setpoint 外環(huán)設(shè)定值  //measured_value 外環(huán)反饋值     error := setpoint − measured_value //計(jì)算得到偏差     integral := integral + error × dt //計(jì)算得到積分累加和     derivative := (error − previous_error) / (n*dt) //計(jì)算得到微分     output := Kp × error + Ki × integral + Kd × derivative //計(jì)算得到PID輸出     previous_error := error //保存當(dāng)前偏差為下一次采樣時(shí)所需要的歷史偏差      setpoint_inner = output //外環(huán)的PID輸出賦值給內(nèi)環(huán)的PID輸入              wait(n*dt) //等待下一次采樣  goto loop  loop_inner:         //setpoint_inner 內(nèi)環(huán)設(shè)定值  //measured_value_inner 內(nèi)環(huán)反饋值     error_inner := setpoint_inner − measured_value_inner //計(jì)算得到偏差     integral_inner := integral_inner + error_inner × dt //計(jì)算得到積分累加和     derivative_inner := (error_inner − previous_error_inner) / dt //計(jì)算得到微分     //計(jì)算得到PID輸出     output_inner := Kp_inner × error + Ki_inner × integral_inner + Kd_inner × derivative_inner      previous_error_inner := error_inner //保存當(dāng)前偏差為下一次采樣時(shí)所需要的歷史偏差     wait(dt) //等待下一次采樣     goto loop_inner

這里將內(nèi)環(huán)PID的相關(guān)變量加了后綴  _inner,loop是外環(huán)PID進(jìn)行周期控制,loop_inner是內(nèi)環(huán)PID進(jìn)行周期控制,兩者相互獨(dú)立,將外環(huán)PID的輸出賦值給內(nèi)環(huán)PID的輸入即可;

遇到干擾的時(shí)候,內(nèi)環(huán)控制器首先進(jìn)行粗調(diào),外環(huán)控制器再進(jìn)一步細(xì)調(diào)。

因此控制效果必然優(yōu)于單環(huán)的PID控制系統(tǒng)。

串級(jí)控制系統(tǒng)在結(jié)構(gòu)上僅僅比簡(jiǎn)單控制系統(tǒng)多了一個(gè)內(nèi)環(huán)回路,可是實(shí)踐證明,對(duì)于相同的干擾,串級(jí)控制系統(tǒng)的控制質(zhì)量是簡(jiǎn)單控制系統(tǒng)無(wú)法比擬的。

PID參數(shù)

串級(jí)PID的參數(shù)整定基本遵循從內(nèi)到外,先整定內(nèi)環(huán)PID的參數(shù),再整定外環(huán)PID的參數(shù);

根據(jù)經(jīng)驗(yàn)法調(diào)試參數(shù),通常來(lái)說(shuō)先整定內(nèi)環(huán)比例參數(shù)P,然后整定積分參數(shù)I,動(dòng)態(tài)特性可以整理微分參數(shù)D,當(dāng)然還需要對(duì)飽和的情況進(jìn)行處理;

總之可以觀察輸入輸出曲線;

何為串級(jí)PID

那到底什么樣的響應(yīng)曲線算好的呢?

一般來(lái)說(shuō)并不存在最優(yōu)的,比如有的對(duì)速度和加速度有限制,有的系統(tǒng)一定不能出現(xiàn)超調(diào)量等等,有的系統(tǒng)則是響應(yīng)越快越好。所以還是那句話,我不要你覺(jué)得,我要我覺(jué)得,合適才是最好的。

感謝各位的閱讀,以上就是“何為串級(jí)PID”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)何為串級(jí)PID這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

pid
AI