五、PID算法原理
在工業(yè)應(yīng)用中PID及其衍生算法是應(yīng)用最廣泛的算法之一,是當(dāng)之無(wú)愧的萬(wàn)能算法,如果能夠熟練掌握PID算法的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程,對(duì)于一般的研發(fā)人員來(lái)講,應(yīng)該是足夠應(yīng)對(duì)一般研發(fā)問(wèn)題了,而難能可貴的是,在我所接觸的控制算法當(dāng)中,PID控制算法又是最簡(jiǎn)單,最能體現(xiàn)反饋思想的控制算法,可謂經(jīng)典中的經(jīng)典。經(jīng)典的未必是復(fù)雜的,經(jīng)典的東西常常是簡(jiǎn)單的,而且是最簡(jiǎn)單的,想想牛頓的力學(xué)三大定律吧,想想愛(ài)因斯坦的質(zhì)能方程吧,何等的簡(jiǎn)單!簡(jiǎn)單的不是原始的,簡(jiǎn)單的也不是落后的,簡(jiǎn)單到了美的程度。先看看PID算法的一般形式:
PID的流程簡(jiǎn)單到了不能再簡(jiǎn)單的程度,通過(guò)誤差信號(hào)控制被控量,而控制器本身就是比例、積分、微分三個(gè)環(huán)節(jié)的加和。這里我們規(guī)定(在t時(shí)刻):
1.輸入量為rin(t);
2.輸出量為rout(t);
3.偏差量為err(t)=rin(t)-rout(t);
pid的控制規(guī)律為
理解一下這個(gè)公式,主要從下面幾個(gè)問(wèn)題著手,為了便于理解,把控制環(huán)境具體一下:
1.規(guī)定這個(gè)流程是用來(lái)為直流電機(jī)調(diào)速的;
2.輸入量rin(t)為電機(jī)轉(zhuǎn)速預(yù)定值;
3.輸出量rout(t)為電機(jī)轉(zhuǎn)速實(shí)際值
4.執(zhí)行器為直流電機(jī);
5.傳感器為光電碼盤(pán),假設(shè)碼盤(pán)為10線;
6.直流電機(jī)采用PWM調(diào)速轉(zhuǎn)速用單位轉(zhuǎn)/min表示;不難看出以下結(jié)論:
1.輸入量rin(t)為電機(jī)轉(zhuǎn)速預(yù)定值(轉(zhuǎn)/min);2.輸出量rout(t)為電機(jī)轉(zhuǎn)速實(shí)際值(轉(zhuǎn)/min);3.偏差量為預(yù)定值和實(shí)際值之差(轉(zhuǎn)/min)
六、PID算法應(yīng)用——線性控制原理
PID控制的三要素:控制器,被控對(duì)象,反饋器??刂破骶褪且粋€(gè)數(shù)學(xué)模型,就PID來(lái)說(shuō),等同于PID算法。是對(duì)反饋量的一個(gè)處理與輸出。通俗的說(shuō)就是對(duì)于每個(gè)被控的量,我的輸出量通過(guò)什么函數(shù)式算出,或者說(shuō),我如何描述我的輸出量?,F(xiàn)在我給定一個(gè)描述性的傳遞函數(shù)。從數(shù)學(xué)角度來(lái)看:它的自變量是反饋值,當(dāng)這個(gè)函數(shù)的對(duì)應(yīng)關(guān)系確定了之后,輸出量就是個(gè)定值了。我的希望是:這個(gè)描述函數(shù)是一個(gè)透明的空箱——它既能反映系統(tǒng)外部特性,又可以看到其內(nèi)部結(jié)構(gòu)。
就拿比賽來(lái)說(shuō):假設(shè)我現(xiàn)在要構(gòu)建這樣一個(gè)閉環(huán)系統(tǒng),這個(gè)系統(tǒng)的反饋調(diào)節(jié)建立了一個(gè)描述函數(shù),最根本的在于:
1 這個(gè)系統(tǒng)的動(dòng)態(tài)性從根本上講取決于哪些因素;2這些因素如何決定系統(tǒng)的性能;
數(shù)學(xué)模型的描述:1 描述函數(shù)-》微分方程。描述函數(shù)的自變量與因變量滿足微分方程。(瞬間變化的關(guān)系式)
2 將微分方程做一個(gè)處理,得出其特征方程,這個(gè)特征方程稱(chēng)作描述函數(shù)的極點(diǎn)。
ps:下面簡(jiǎn)述一下極點(diǎn)和零點(diǎn)。對(duì)描述函數(shù)做拉普拉斯變換,將描述函數(shù)變換成一個(gè)與它本身相關(guān)的函數(shù),并找出其通解和特解,通解是這個(gè)函數(shù)的開(kāi)環(huán)特征,用來(lái)描述輸出與輸入的關(guān)系,零點(diǎn)是調(diào)節(jié)變量,用于閉環(huán)中對(duì)系統(tǒng)反饋參數(shù)的調(diào)節(jié)。(對(duì)函數(shù)做拉普拉斯變換事實(shí)上是針對(duì)描述大多函數(shù)是常微分方程的一種現(xiàn)象)
我們有必要對(duì)這個(gè)描述函數(shù)的解進(jìn)行研究,盡管在線性控制原理中并不關(guān)注并不要求去了解他,但是對(duì)于這個(gè)常微分方程的極點(diǎn)形式的了解有助于我們認(rèn)識(shí)這個(gè)描述函數(shù)的物理意義。這是高數(shù)的知識(shí),就不再累述。通過(guò)求解,可以看到極點(diǎn)其實(shí)就是這個(gè)經(jīng)過(guò)拉普拉斯變換的描述函數(shù)的一次項(xiàng)的系數(shù),零點(diǎn)是反饋量的相關(guān)函數(shù)的系數(shù)。也就是說(shuō),極點(diǎn)一旦確定,這個(gè)函數(shù)也就確定了,對(duì)于每一個(gè)輸入函數(shù),賦予零點(diǎn)變換,再進(jìn)過(guò)極點(diǎn)變換 ,最后生成輸出量。
把我們現(xiàn)在得到的結(jié)論聯(lián)系一下:對(duì)于一個(gè)閉環(huán)的系統(tǒng)我們通過(guò)對(duì)控制器一些參數(shù)的理論求解,或者說(shuō)調(diào)試求解,最終改變輸出變量,從而使這個(gè)系統(tǒng)持續(xù)穩(wěn)定。也就是說(shuō),在控制器內(nèi),存儲(chǔ)了有關(guān)于反饋值某種預(yù)期的實(shí)現(xiàn)方法,這些方法用一些固定的參數(shù)來(lái)描述,然后輸出變量改變系統(tǒng)的狀態(tài)。我的任務(wù)是調(diào)試這些具有物理意義的參數(shù)。
下面是一個(gè)簡(jiǎn)單的PID程序設(shè)計(jì):
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;
}
你會(huì)發(fā)現(xiàn)其實(shí)想象中的PID要比現(xiàn)實(shí)中的PID復(fù)雜很多,這是理所當(dāng)然的,因?yàn)榻?jīng)過(guò)PID數(shù)學(xué)計(jì)算之后,帶入的公式只是一個(gè)近似量。但是這可不是隨便瞎設(shè)的一個(gè)值,最重要的是,你需要數(shù)學(xué)計(jì)算。
不得不說(shuō)一下,對(duì)于一個(gè)完全的門(mén)外漢來(lái)說(shuō),PID是一個(gè)十分高神的名詞,很多人一上手就接觸PID,結(jié)果連輸出輸入的到底是什么都搞不明白,其實(shí)不妨接觸一下線性控制的理論,這對(duì)于你的視野和思路有及其清晰的指導(dǎo)。
參數(shù)整定尋最佳,從小到大順序查;
先是比例后積分,最后才把微分加;
曲線振蕩很頻繁,比例度盤(pán)要放大;
曲線漂浮繞大彎,比例度盤(pán)往小扳;
曲線偏離回復(fù)慢,積分時(shí)間往下降;
曲線波動(dòng)周期長(zhǎng),積分時(shí)間再加長(zhǎng);
曲線振蕩變很快,先把微分降下來(lái);
動(dòng)差大來(lái)波動(dòng)慢,微分時(shí)間要加長(zhǎng);
聯(lián)想曲線兩個(gè)波,前高后低4比1;
一看二調(diào)多分析,調(diào)節(jié)質(zhì)量不會(huì)低。
評(píng)論
查看更多