一、PID算法簡介
在智能車競賽中,要想讓智能車根據(jù)賽道的不斷變化靈活的行進,PID算法的采用很有意義。
首先必須明確PID算法是基于反饋的。一般情況下,這個反饋就是速度傳感器返回給單片機當前電機的轉速。簡單的說,就是用這個反饋跟預設值進行比較,如果轉速偏大,就減小電機兩端的電壓;相反,則增加電機兩端的電壓。
顧名思義,P指是比例(Proportion),I指是積分(Integral),D指微分(Differential)。在電機調速系統(tǒng)中,輸入信號為正,要求電機正轉時,反饋信號也為正(PID算法時,誤差=輸入-反饋),同時電機轉速越高,反饋信號越大。要想搞懂PID算法的原理,首先必須先明白P,I,D各自的含義及控制規(guī)律:
比例P:比例項部分其實就是對預設值和反饋值差值的發(fā)大倍數(shù)。舉個例子,假如原來電機兩端的電壓為U0,比例P為0.2,輸入值是800,而反饋值是1000,那么輸出到電機兩端的電壓應變?yōu)閁0+0.2*(800-1000)。從而達到了調節(jié)速度的目的。顯然比例P越大時,電機轉速回歸到輸入值的速度將更快,及調節(jié)靈敏度就越高。從而,加大P值,可以減少從非穩(wěn)態(tài)到穩(wěn)態(tài)的時間。但是同時也可能造成電機轉速在預設值附近振蕩的情形,所以又引入積分I解決此問題。
積分I:顧名思義,積分項部分其實就是對預設值和反饋值之間的差值在時間上進行累加。當差值不是很大時,為了不引起振蕩。可以先讓電機按原轉速繼續(xù)運行。當時要將這個差值用積分項累加。當這個和累加到一定值時,再一次性進行處理。從而避免了振蕩現(xiàn)象的發(fā)生。可見,積分項的調節(jié)存在明顯的滯后。而且I值越大,滯后效果越明顯。
微分D:微分項部分其實就是求電機轉速的變化率。也就是前后兩次差值的差而已。也就是說,微分項是根據(jù)差值變化的速率,提前給出一個相應的調節(jié)動作。可見微分項的調節(jié)是超前的。并且D值越大,超前作用越明顯。可以在一定程度上緩沖振蕩。比例項的作用僅是放大誤差的幅值,而目前需要增加的是“微分項”,它能預測誤差變化的趨勢,這樣,具有比例+微分的控制器,就能夠提前使抑制誤差的控制作用等于零,甚至為負值,從而避免了被控量的嚴重超調。
由各個參數(shù)的控制規(guī)律可知,比例P使反應變快,微分D使反應提前,積分I使反應滯后。在一定范圍內,P,D值越大,調節(jié)的效果越好。
二、PID調試一般原則
a. 在輸出不振蕩時,增大比例增益P。
b. 在輸出不振蕩時,減小積分時間常數(shù)Ti。
c. 輸出不振蕩時,增大微分時間常數(shù)Td。
三、pid算法參數(shù)調整一般步驟
a.確定比例增益P
確定比例增益P 時,首先去掉PID的積分項和微分項,一般是令Ti=0、Td=0,PID為純比例調節(jié)。輸入設定為系統(tǒng)允許的最大值的60%~70%,由0逐漸加大比例增益P,直至系統(tǒng)出現(xiàn)振蕩;再反過來,從此時的比例增益P逐漸減小,直至系統(tǒng)振蕩消失,記錄此時的比例增益P,設定PID的比例增益P為當前值的60%~70%。比例增益P調試完成。
b.確定積分時間常數(shù)Ti
比例增益P確定后,設定一個較大的積分時間常數(shù)Ti的初值,然后逐漸減小Ti,直至系統(tǒng)出現(xiàn)振蕩,之后在反過來,逐漸加大Ti,直至系統(tǒng)振蕩消失。記錄此時的Ti,設定PID的積分時間常數(shù)Ti為當前值的150%~180%。積分時間常數(shù)Ti調試完成。
c.確定積分時間常數(shù)Td
積分時間常數(shù)Td一般不用設定,為0即可。若要設定,與確定 P和Ti的方法相同,取不振蕩時的30%。
d.系統(tǒng)空載、帶載聯(lián)調,再對PID參數(shù)進行微調,直至滿足要求
找三個以上PID算法應用實例,結合實例明確參數(shù)調試的方法以及參數(shù)的意義,同時給小組成員做介紹
四、pid算法應用環(huán)境
當被控對象的結構和參數(shù)不能完全掌握,或得不到精確的數(shù)學模型時,控制理論的其它技術難以采用時,系統(tǒng)控制器的結構和參數(shù)必須依靠經驗和現(xiàn)場調試來確定;(由于賽道的參數(shù)事先未知,所以只能根據(jù)實時采集到的賽道數(shù)據(jù)控制小車沿著賽道行進)。
五、PID算法原理
在工業(yè)應用中PID及其衍生算法是應用最廣泛的算法之一,是當之無愧的萬能算法,如果能夠熟練掌握PID算法的設計與實現(xiàn)過程,對于一般的研發(fā)人員來講,應該是足夠應對一般研發(fā)問題了,而難能可貴的是,在我所接觸的控制算法當中,PID控制算法又是最簡單,最能體現(xiàn)反饋思想的控制算法,可謂經典中的經典。經典的未必是復雜的,經典的東西常常是簡單的,而且是最簡單的,想想牛頓的力學三大定律吧,想想愛因斯坦的質能方程吧,何等的簡單!簡單的不是原始的,簡單的也不是落后的,簡單到了美的程度。先看看PID算法的一般形式:
PID的流程簡單到了不能再簡單的程度,通過誤差信號控制被控量,而控制器本身就是比例、積分、微分三個環(huán)節(jié)的加和。這里我們規(guī)定(在t時刻):
1.輸入量為rin(t);
2.輸出量為rout(t);
3.偏差量為err(t)=rin(t)-rout(t);
pid的控制規(guī)律為
理解一下這個公式,主要從下面幾個問題著手,為了便于理解,把控制環(huán)境具體一下:
1.規(guī)定這個流程是用來為直流電機調速的;
2.輸入量rin(t)為電機轉速預定值;
3.輸出量rout(t)為電機轉速實際值
4.執(zhí)行器為直流電機;
5.傳感器為光電碼盤,假設碼盤為10線;
6.直流電機采用PWM調速轉速用單位轉/min表示;不難看出以下結論:
1.輸入量rin(t)為電機轉速預定值(轉/min);2.輸出量rout(t)為電機轉速實際值(轉/min);3.偏差量為預定值和實際值之差(轉/min)
六、PID算法應用——線性控制原理
PID控制的三要素:控制器,被控對象,反饋器。控制器就是一個數(shù)學模型,就PID來說,等同于PID算法。是對反饋量的一個處理與輸出。通俗的說就是對于每個被控的量,我的輸出量通過什么函數(shù)式算出,或者說,我如何描述我的輸出量。現(xiàn)在我給定一個描述性的傳遞函數(shù)。從數(shù)學角度來看:它的自變量是反饋值,當這個函數(shù)的對應關系確定了之后,輸出量就是個定值了。我的希望是:這個描述函數(shù)是一個透明的空箱——它既能反映系統(tǒng)外部特性,又可以看到其內部結構。
就拿比賽來說:假設我現(xiàn)在要構建這樣一個閉環(huán)系統(tǒng),這個系統(tǒng)的反饋調節(jié)建立了一個描述函數(shù),最根本的在于:
1 這個系統(tǒng)的動態(tài)性從根本上講取決于哪些因素;2這些因素如何決定系統(tǒng)的性能;
數(shù)學模型的描述:1 描述函數(shù)-》微分方程。描述函數(shù)的自變量與因變量滿足微分方程。(瞬間變化的關系式)
2 將微分方程做一個處理,得出其特征方程,這個特征方程稱作描述函數(shù)的極點。
ps:下面簡述一下極點和零點。對描述函數(shù)做拉普拉斯變換,將描述函數(shù)變換成一個與它本身相關的函數(shù),并找出其通解和特解,通解是這個函數(shù)的開環(huán)特征,用來描述輸出與輸入的關系,零點是調節(jié)變量,用于閉環(huán)中對系統(tǒng)反饋參數(shù)的調節(jié)。(對函數(shù)做拉普拉斯變換事實上是針對描述大多函數(shù)是常微分方程的一種現(xiàn)象)
我們有必要對這個描述函數(shù)的解進行研究,盡管在線性控制原理中并不關注并不要求去了解他,但是對于這個常微分方程的極點形式的了解有助于我們認識這個描述函數(shù)的物理意義。這是高數(shù)的知識,就不再累述。通過求解,可以看到極點其實就是這個經過拉普拉斯變換的描述函數(shù)的一次項的系數(shù),零點是反饋量的相關函數(shù)的系數(shù)。也就是說,極點一旦確定,這個函數(shù)也就確定了,對于每一個輸入函數(shù),賦予零點變換,再進過極點變換 ,最后生成輸出量。
把我們現(xiàn)在得到的結論聯(lián)系一下:對于一個閉環(huán)的系統(tǒng)我們通過對控制器一些參數(shù)的理論求解,或者說調試求解,最終改變輸出變量,從而使這個系統(tǒng)持續(xù)穩(wěn)定。也就是說,在控制器內,存儲了有關于反饋值某種預期的實現(xiàn)方法,這些方法用一些固定的參數(shù)來描述,然后輸出變量改變系統(tǒng)的狀態(tài)。我的任務是調試這些具有物理意義的參數(shù)。
下面是一個簡單的PID程序設計:
double kp,ki,kd;
double resultfunc(void)
{
double error;
double diff;
double lasterror = 0;
error = target - input;
sumerror += error;
diff = error - lasterror;
lasterror = error;
output = kp * error + ki * sumerror + kd * diff;
return output;
}
你會發(fā)現(xiàn)其實想象中的PID要比現(xiàn)實中的PID復雜很多,這是理所當然的,因為經過PID數(shù)學計算之后,帶入的公式只是一個近似量。但是這可不是隨便瞎設的一個值,最重要的是,你需要數(shù)學計算。
不得不說一下,對于一個完全的門外漢來說,PID是一個十分高神的名詞,很多人一上手就接觸PID,結果連輸出輸入的到底是什么都搞不明白,其實不妨接觸一下線性控制的理論,這對于你的視野和思路有及其清晰的指導。
參數(shù)整定尋最佳,從小到大順序查;
先是比例后積分,最后才把微分加;
曲線振蕩很頻繁,比例度盤要放大;
曲線漂浮繞大彎,比例度盤往小扳;
曲線偏離回復慢,積分時間往下降;
曲線波動周期長,積分時間再加長;
曲線振蕩變很快,先把微分降下來;
動差大來波動慢,微分時間要加長;
聯(lián)想曲線兩個波,前高后低4比1;
一看二調多分析,調節(jié)質量不會低。
評論
查看更多