Matlab動態(tài)PID仿真及PID知識梳理-云社區(qū)-華為云 () 位置式PID與增量式PID區(qū)別淺析_Z小旋-CSDN博客_增量式pid
「期望值是什么,與控制器沒有關系」,而是與物理對象有關。更直接的原因是因為你使用了這個物理量做反饋而,期望值需要與反饋做差,所以期望值才有了物理意義。「期望值是什么取決于反饋值是什么?!?/strong> 常用PID算法:①PI算法:特點:
②PD算法:適用于舵機快速響應 對于慣性較大的對象,常常希望能加快控制速度, 此時可增加微分作用。 特點:
③PID算法:將比例、積分、微分三種調節(jié)規(guī)律結合在一起, 只要三項作用的強度配合適當,既能快速調節(jié),又能消除余差,可得到滿意的控制效果。 特點:
增量式PID的優(yōu)缺點:位置型PID和增量型PID的比較:
優(yōu): ①算式中不需要累加??刂圃隽喀(k)的確定僅與最近3次的采樣值有關,容易通過加權處理獲得比較好的控制效果; 缺: ①需要對控制量進行記憶。 ②存在穩(wěn)態(tài)誤差 PID優(yōu)化方法:①抗積分飽和:如果系統(tǒng)總是存在統(tǒng)一的方向偏差,就可能無限累加而進行飽和,極大影響系統(tǒng)性能 所謂積分飽和就是指系統(tǒng)存在一個方向的偏差,PID控制器的輸出由于積分作用的不斷累加而擴大,從而導致控制器輸出不斷增大超出正常范圍進入飽和區(qū)。當系統(tǒng)出現(xiàn)反響的偏差時,需要首先從飽和區(qū)退出,而不能對反向的偏差進行快速的響應。 為了解決積分飽和的問題,人們引入了抗積分飽和的PID算法。所謂抗積分飽和算法,其思路是在計算U(k)的時候,先判斷上一時刻的控制量U(k-1)是否已經超出了限制范圍。若U(k-1)>Umax,則只累加負偏差;若U(k-1)<Umin,則只累加正偏差。從而避免控制量長時間停留在飽和區(qū)。 幾種方法抗飽和積分:
系統(tǒng)對于積分項的要求是,系統(tǒng)偏差大時,積分作用應該減弱甚至是全無,而在偏差小時,則應該加強。積分系數(shù)取大了會產生超調,甚至積分飽和,取小了又不能短時間內消除靜差。因此,根據(jù)系統(tǒng)的偏差大小改變積分速度是有必要的。 變積分PID的基本思想是設法改變積分項的累加速度,使其與偏差大小相對應:偏差越大,積分越慢; 偏差越小,積分越快。 ②不完全微分:不完全微分_百度百科 (baidu.com) 不完全的微分它使得在偏差作階躍式變化時出現(xiàn)的輸出瞬時跳變得到一定程度的緩和,因而在實際的PID控制算法中得到廣泛采用。在PID 控制中,微分信號的引入可以改善系統(tǒng)的動態(tài)特性,但也易引入高頻干擾,在誤差擾動突變的時候尤其顯出微分項的不足。要想解決這個問題,可以在控制算法中加入低通濾波器 標準微分會產生短時間跳變,實際系統(tǒng)不能完全響應,效果不好,會震蕩。 ③微分先行:某些給定值頻繁且大幅變化的場合,微分項常常會引起系統(tǒng)的振蕩。為了適應這種給定值頻繁變化的場合,人們設計了微分先行算法。 類似于不完全微分(不完全微分是通過削弱變化量來盡可能的實現(xiàn)完全響應,而微分先行PID控制是只對輸出量進行微分,而對給定指令不起微分作用),微分部分只與測量值有關,而且與連續(xù)的幾個測量值都有關。而與設定值沒有關系,設定值的階躍變化不會造成高頻的干擾。 ④帶死區(qū)PID控制:在偏差小到一點程度時PID不起作用 PID控制器開發(fā)筆記之八:帶死區(qū)的PID控制器的實現(xiàn)_木南創(chuàng)智-CSDN博客 在計算機控制系統(tǒng)中,由于系統(tǒng)特性和計算精度等問題,致使系統(tǒng)偏差總是存在,系統(tǒng)總是頻繁動作不能穩(wěn)定。為了解決這種情況,我們可以引入帶死區(qū)的PID算法。 帶死區(qū)的PID控制算法就是檢測偏差值,若是偏差值達到一定程度,就進行調節(jié)。若是偏差值較小,就認為沒有偏差。用公式表示如下: 其中的死區(qū)值得選擇需要根據(jù)具體對象認真考慮,因為該值太小就起不到作用,該值選取過大則可能造成大滯后。 帶死區(qū)的PID算法,對無論位置型還是增量型的表達式沒有影響,不過它是一個非線性系統(tǒng)。 除以上描述之外還有一個問題,在零點附近時,若偏差很小,進入死去后,偏差置0會造成積分消失,如是系統(tǒng)存在靜差將不能消除,所以需要人為處理這一點。 引入死區(qū)的主要目的是消除穩(wěn)定點附近的波動,由于測量值的測量精度和干擾的影響,實際系統(tǒng)中測量值不會真正穩(wěn)定在某一個具體的值,而與設定值之間總會存在偏差,而這一偏差并不是系統(tǒng)真實控制過程的反應,所以引入死區(qū)就能較好的消除這一點。 當然,死區(qū)的大小對系統(tǒng)的影響是不同的。太小可能達不到預期的效果,而太大則可能對系統(tǒng)的正常變化造成嚴重滯后,需要根據(jù)具體的系統(tǒng)對象來設定。 ⑤串級PIDhttps://cloud.tencent.com/developer/news/464094 https://www./articles/e2ecb27231e2b71bf5cf217378013bad.html https://www.zhihu.com/question/293450508 https://cloud.tencent.com/developer/news/464094 類比于小車上坡,因為單環(huán)PID輸出的速度 V 不一定是真實的速度 V,所以內環(huán)再加上速度環(huán)PID,構成串級PID(外環(huán)為位置環(huán),輸出的值是小車的理論速度,內環(huán)為速度環(huán),輸入是小車的理論速度,希望盡可能的使輸出為理論速度),外環(huán)的輸出是內環(huán)的輸入 同樣類比于四軸,外環(huán)為角度環(huán),輸出的是期望達到該角度所需要的PWM(也就是角速度,也可以理解為角速度和PWM的映射),內環(huán)為角速度環(huán),輸入是期望的角速度和自身真實的角速度,輸出為最終的PWM(角速度) 串級PID可增加系統(tǒng)的穩(wěn)定性,抗干擾 為什么外環(huán)的輸入是內環(huán)的期望呢?因為你在設計控制器的時候,內環(huán)的目的就是實現(xiàn)用執(zhí)行器控制直接能改變的變化量,外環(huán)的目的就是找到合適的曲線,來引導目標的微分變化,從而達到間接控制的效果。 為什么要用串級PID呢看上去PID不是已經夠完美了嗎?只要我能給出反饋,我就能控制所以的物理量不是嗎? 為什么還要雙閉環(huán)PID呢?那為什么說外環(huán)輸入是內環(huán)期望呢?為什么位置誤差經過PID就變成速度期望了呢? 那我們就來設計一個位置控制器吧! 感覺好像沒什么問題,但是跟之前有些許不一樣,之前我們的**「執(zhí)行器能直接改變反饋值」**,但是在這個控制器里,執(zhí)行器依然只能改變升力,只不過,因為升力改變,會有加速度,從而導致速度變化,最終導致位置變化。 如果你按照圖中的思路設計控制器,那就說明**「你只對位置有期望」**,這意味著你對升力,速度沒有期望,也就意味著加速度,速度是什么都無所謂。 所以實際效果變成什么呢?「你會以一個你無所謂的加速度,和速度,到達你的期望位置。」 這時候奇怪的事情發(fā)生了,到達你的期望位置時有加速度和速度,那這個就不是**「到達期望位置」了,這叫「經過期望位置」**。你會發(fā)現(xiàn)你的對象在期望位置附近“反復橫跳”,超過后,又退回去,退過了,又超過去。 這時候你才想起來,原來**「你期望的是停在期望位置上」。「什么叫停在期望位置上?就是到達期望位置的同時加速度與速度都為0?!?* 這個問題是如何產生的,為什么之前沒有這個問題。 之前在單級PID時我們舉的例子中,期望被控制的物理量,都是可以直接被執(zhí)行器改變的。 但是在這個例子中,「期望被控制的物理量,不能被執(zhí)行器直接改變,但是可以被間接改變,并且你知道間接改變的過程?!?/strong> 之前我們想控制位置,類似于控制機器人,給出命令,它直接走到對應的位置。 現(xiàn)在我們想控制位置,類似于控制車,你只能踩油門加速,或者剎車進行減速,你只能通過速度控制間接控制位置。 但是你肯定知道,車我們也是可以控制位置的,還記得駕校里的倒車入庫嗎?不就是讓你精準的控制位置嗎? 開車的時候是怎么控制位置的呢?你想停在指定位置的時候,你先以一定的速度前往指定位置,快到的時候,通過剎車不斷減速,直到速度為0,停到期望的位置。 這個過程告訴了我們什么?我們只通過控制速度就可以間接控制位置,也就是說**「我們可以通過控制某個物理量的變化快慢,從而間接控制這個物理量?!?* 所以我們只需要選擇**「合適的速度變化曲線」**就可以停在我們想要的位置。那我們就可以把控制器設置成下面的結構。 什么是**「合適的速度變化曲線」**呢, 首先當?shù)竭_期望位置的時候,速度應該為0。 其次當沒有到達期望位置的時候,期望速度是可以減小位置誤差的。 總結一下:「期望速度必須能減小位置誤差,且位置誤差為0時,期望速度為0?!?/strong> 什么意思呢?如果前方為正方向,當期望位置在我們前方時,即target-current>0,那我們就希望能有個向前的正速度,去縮小這個誤差,當誤差為0時,我們希望速度為0。滿足這樣的過程的速度變化曲線,就是**「合適的速度變化曲線」**。 想想開車的時候,快到終點的時候會出現(xiàn)什么操作? 新手在沒達位置的時候,希望有一個比較快的速度,快到了直接一腳剎車踩到底。 高手可以提前預判,勻速降低速度。 更高階的可以變化的減速讓整個速度變化如絲般順滑。 就有了下面的曲線。 (第一個曲線是實際中是做不到的,因為速度減小需要過程,不能突變) 因為我們對期望速度的要求**「期望速度必須能減小位置誤差,且位置誤差為0時,期望速度為0。「所以我們發(fā)現(xiàn)這些期望速度都是」與位置誤差相關的且經過0點的曲線」**。 位置誤差與期望速度在這時候才建立起的關系,注意,強調一遍,是我們主動把位置誤差與期望速度聯(lián)系起來的,起因是我們希望控制速度達到控制位置的效果。 而這種控制能夠被實現(xiàn)的本質是,「速度與位置存在我們已知的簡單變化關系,即速度的積分是位置」,所以改變期望速度才能改變位置,才能減小誤差。 所以合理的控制過程應該就可以設計成這樣。 只要找個合適的函數(shù),根據(jù)誤差生成合適的期望速度曲線就可以了。 我們最常使用的是什么樣的曲線呢? 是不是非常熟悉。 因為這兩個曲線滿足**「合適的期望速度」**的要求,同時也非常的簡單。 只要是滿足**「合適的期望速度」**的曲線都可以作為期望速度,顯然如果在外環(huán)使用PID也是可以的,但是為什么實際中不這么用呢?因為添加積分(I)后,導致響應變慢,添加微分(D)容易引入噪聲,只用P又簡單又有效,何樂而不為呢? 到這里外環(huán)的輸出終于理所應當?shù)淖兂闪藘拳h(huán)的期望,但是這并不是因為這件事本就應該成立,而是通過你的設計,和真實存在的物理關系,才設計出來的合情合理的雙閉環(huán)控制器。 我們再回憶一下這個控制器的設計過程 「1.執(zhí)行器輸出無法直接控制目標物理量?!?/strong> 「2.發(fā)現(xiàn)控制器能控制物理量的變化量(微分)。」 「3.你想了個辦法,可以通過控制物理量的微分,按照某種曲線變化,從而達到間接控制目標物理量。」 「4.這個曲線必須滿足兩點,存在目標物理量誤差的時候,應該產生因一個能減小這個誤差的變化,且當沒有誤差的時候,變化量也應該為0?!?/strong> 「5.選擇最簡單實用的曲線即可,所以外環(huán)選擇KP?!?/strong> 「6.間接控制能成功的原因是因為,執(zhí)行器能改變的量,與目標物理量之間有簡單的物理關系?!?/strong> 所以為什么外環(huán)的輸入是內環(huán)的期望呢?因為你在設計控制器的時候,內環(huán)的目的就是實現(xiàn)用執(zhí)行器控制直接能改變的變化量,外環(huán)的目的就是找到合適的曲線,來引導目標的微分變化,從而達到間接控制的效果。 |
|
來自: Ricky_圖書館 > 《軟件編程/MCU》