|
貼個(gè)原文鏈接:
https://blog.csdn.net/D_SEngineer?spm=1011.2124.3001.5113
不定時(shí)發(fā)送福利,歡迎小伙伴們交流學(xué)習(xí)。
PID實(shí)戰(zhàn)也已經(jīng)結(jié)束了,基本上也算上是一個(gè)小項(xiàng)目了完成了,既然完成了,這篇就來做個(gè)總結(jié)一下吧。
網(wǎng)上很多關(guān)于PID調(diào)參的文檔,基本都是理論,也沒有圖片說明,這對于小白入門來說很是頭疼。別人的理論咱都看的懂,一到自己就懵逼。為了解決這一問題,我把程序源碼放到公眾號了,你可下載下來,在結(jié)合我這片文檔說明,自己動(dòng)手實(shí)踐一下。自己不實(shí)踐,心里總是沒底,只有自己體會(huì)一下,才能真正弄明白。
PID調(diào)參
首先說說調(diào)參吧,關(guān)于PID調(diào)參,我用一句話總結(jié)一下:跟著感覺走。
為啥要這樣說呢,因?yàn)閷τ诔鯇W(xué)者來說,只是寫個(gè)程序,然后用試湊法進(jìn)行匹配PID三個(gè)系數(shù),以此來達(dá)到較好的控制效果。試湊法是什么,不就是跟著感覺走嘛,這種感覺就跟寫英語試卷一樣。
不過話又說過來,這個(gè)感覺可不是隨心所欲,為所欲為的,這也是有一定理論基礎(chǔ)支撐的。一般調(diào)節(jié)方法我做個(gè)總結(jié),如下:
1.先調(diào)節(jié)P項(xiàng),其他項(xiàng)系數(shù)都設(shè)為0
這個(gè)P項(xiàng)怎么調(diào)呢?再調(diào)之前我們先回憶一下【連載6】講的內(nèi)容,P到底有什么用。首先看下單獨(dú)P項(xiàng)的公式:
OUTp= K*EkOUTp= 系數(shù)*(設(shè)定值 - 當(dāng)前采樣值)
Ek為當(dāng)前誤差。
以我們實(shí)戰(zhàn)的例子來講,假設(shè)我們設(shè)定的目標(biāo)值為100,我們此刻采樣的編碼器的值為50,此時(shí)PID中I和D的系數(shù)都為0,也就說后面兩項(xiàng)不用管,只關(guān)心P項(xiàng)就行了。而P項(xiàng)公式是當(dāng)前誤差乘上一個(gè)系數(shù),這個(gè)系數(shù)就是我們要設(shè)定的P項(xiàng)系數(shù),那么我們是不是應(yīng)該將P盡可能的大,因?yàn)槲覀冃枰到y(tǒng)盡快的達(dá)到設(shè)定值,根據(jù)這個(gè)思路我們先將P設(shè)定為0.5,先試試效果。
當(dāng)P = 0.5時(shí),實(shí)際效果如下圖:
圖片上的點(diǎn)點(diǎn)是實(shí)際采樣的編碼器脈沖數(shù),橫線是我們設(shè)定的目標(biāo)值。
看看點(diǎn)點(diǎn)形成的拋物線,雖然能達(dá)到目標(biāo)值,但是時(shí)間有點(diǎn)長,這個(gè)效果不是最好的,當(dāng)然這個(gè)也不是絕對的,有些系統(tǒng)是需要慢慢接近目標(biāo)值的,要看系統(tǒng)要求。這里我們控制轉(zhuǎn)速,目的是讓轉(zhuǎn)速盡可能快的接近目標(biāo)值,因此我們在加大P項(xiàng)試試。
當(dāng)P = 1時(shí),實(shí)際效果如下圖:
相比上面那張圖片是不是明顯更快的接近目標(biāo)值了,拋物線更陡了,說明速度更快了。一般情況下,我們單獨(dú)調(diào)節(jié)P時(shí)要將實(shí)際采樣值超過目標(biāo)值的百分之30-50左右,那么我們試試將P設(shè)為5
當(dāng)P = 5時(shí),感覺還不錯(cuò),抖個(gè)兩三下就可以達(dá)到很好地效果了,實(shí)際效果如下圖:
2.在P = 5的基礎(chǔ)上,調(diào)節(jié)I
你會(huì)發(fā)現(xiàn),只有一個(gè)P就能達(dá)到幾乎無靜態(tài)誤差的效果,原因是程序中采集完編碼器值代入pid計(jì)算,計(jì)算完會(huì)得出一個(gè)增量值,之后用之前的pwm加上計(jì)算之后的增量值,如果這次剛好沒誤差,pwm會(huì)保持上一次的值。不過加上I你會(huì)發(fā)現(xiàn),不僅速度變快了,而且過沖變小。
當(dāng)I = 1時(shí),實(shí)際效果如下圖:效果是不是特別好,迅速達(dá)到目標(biāo)值穩(wěn)定下來。相比剛才沒有I的時(shí)候,過沖是不是變小了。這種效果基本上已經(jīng)算的上是完美了、
當(dāng)I = 2時(shí),實(shí)際效果如下圖:I的抑制太大當(dāng)I = 0.05時(shí),實(shí)際效果如下圖:I的抑制太小
其實(shí)就本系統(tǒng)而言,已經(jīng)不需要D了,目前P=5,I=1時(shí)效果就已經(jīng)很不錯(cuò)了。不過既然是學(xué)習(xí),就把每一個(gè)參數(shù)都演示一下,看看到底都是起到什么作用,和我們前面說的理論是否一致。
3.在P = 5,I = 0.05的基礎(chǔ)上,調(diào)節(jié)D選擇I=0.05是為了讓系統(tǒng)繼續(xù)有個(gè)過沖,因?yàn)镈是起到預(yù)判作用的,會(huì)削弱增長的速度,如果I=1,在加上D,系統(tǒng)的增長速度就慢了。
當(dāng)D = -0.05時(shí),實(shí)際效果如下圖:
當(dāng)D=-1時(shí),效果如下圖:你會(huì)發(fā)現(xiàn)D越大,回彈的力度就越大,系統(tǒng)震蕩時(shí)間變長。這是積分作用時(shí)間長造成的。微分過大,造成阻尼過大,積分面積就過大,造成超調(diào)。 在沒達(dá)到目標(biāo)值前,積分都是正的,越接近目標(biāo)值,pd作用越小,而積分卻累積了很大。第一次超調(diào)之后積分才慢慢可以和負(fù)的抵消。最后慢慢接近目標(biāo)值。
最終確定P=5,I=0.05,D=-0.05。
這就是整個(gè)PID調(diào)參過程。
總結(jié)
P的作用是將系統(tǒng)盡可能快的接近目標(biāo)值,在調(diào)參的時(shí)候,先將ID設(shè)為0,之后將系統(tǒng)調(diào)節(jié)至超調(diào)量為目標(biāo)值的50%左右,通俗的講就是將系統(tǒng)超過目標(biāo)值一些。
I的作用是消除靜態(tài)誤差
D的作用也是阻尼,當(dāng)Kd越大,你會(huì)發(fā)現(xiàn)震蕩越嚴(yán)重,就像一個(gè)彈簧,你往外拉的力越大,彈簧反彈的力越大
其實(shí)光看是不行的,只有自己親自調(diào)試一遍,心里才有譜。
|
|