作者:鳳舞天 PID算法網(wǎng)上不少,往往都是基于數(shù)學(xué)模型,在實(shí)際中導(dǎo)致使用難的問(wèn)題,而數(shù)學(xué)模型屬于理想的,沒有深入本質(zhì)講解,本文從控制學(xué)的基礎(chǔ)講解。 我們看一個(gè)生活例子,冬天洗熱水澡,需要先放掉一段時(shí)間的冷水,因?yàn)樗芾镉幸欢卫渌,熱水器也需要一個(gè)加熱過(guò)程,等過(guò)了這段時(shí)間之后水溫有些接近目標(biāo)值后,開始調(diào)節(jié)水龍頭來(lái)調(diào)節(jié)冷、熱水之間的比例及出水量,之后再慢慢的微調(diào),在洗浴過(guò)程中感覺溫度不合適,再一點(diǎn)點(diǎn)的調(diào)節(jié)。這個(gè)過(guò)程,其實(shí)就是PID算法過(guò)程。我們之所以微調(diào),是因?yàn)樗疁氐淖兓俣扰c我調(diào)節(jié)的速度不相匹配,存在一個(gè)滯后效應(yīng),我們需要調(diào)節(jié)一點(diǎn)點(diǎn),等一下再感覺一下溫度,不夠再條件一點(diǎn)點(diǎn),再感覺,這個(gè)過(guò)程就叫PID算法,也可以說(shuō),滯后效應(yīng)是引入PID的原因。 失去的能否找回來(lái)?能、只是我找回了紐扣,卻發(fā)現(xiàn)衣服已經(jīng)不再了。這個(gè)就是滯后效應(yīng)。 負(fù)反饋系統(tǒng),都有滯后效應(yīng),但為什么運(yùn)放、電源這類的卻從來(lái)不提PID算法呢?這是因?yàn)檫@類系統(tǒng)的滯后延時(shí)時(shí)間非常短,若考慮這個(gè)延時(shí),負(fù)反饋引入180度相位,延時(shí)恰好引入180度相位,則完全可能引起振蕩。問(wèn)題在于這個(gè)延時(shí)時(shí)間足夠短,它的諧振頻率點(diǎn)比較高,以運(yùn)放為例,加入延時(shí)加上負(fù)反饋引起的諧振點(diǎn)為10MHz,但這顆運(yùn)放的頻率響應(yīng)是1MHz,則在10MHz下完全不可能導(dǎo)致振蕩,因?yàn)檫@個(gè)芯片的頻響特性只有1MHz。我們常用的線性電源IC,比如SOT23封裝的LDO,假如輸出不加電容,就會(huì)輸出一個(gè)振蕩的波形,相對(duì)來(lái)說(shuō)電源IC的滯后效應(yīng)比運(yùn)放要大,但是,因?yàn)殡娫匆话愫竺娑家哟箅娙莸,它的頻響特性很低,接近直流0Hz,所以當(dāng)有電容時(shí)候,就無(wú)法振蕩了。 而工業(yè)控制領(lǐng)域,比如溫度等,都是滯后效應(yīng)很嚴(yán)重的,往往都是mS,甚至是10mS級(jí)別的,若直接用負(fù)反饋,因?yàn)榧?lì)與反饋的不同步,必然導(dǎo)致強(qiáng)烈的振蕩,所以為了解決這個(gè)問(wèn)題,我們需要引入PID算法,來(lái)實(shí)現(xiàn)這類滯后效應(yīng)嚴(yán)重系統(tǒng)的負(fù)反饋控制,我們以高頻感應(yīng)加熱設(shè)備加熱工件,從常溫25度加熱到700度為例做說(shuō)明: 1、25~600度,100%的全功率加熱工件,這是因?yàn)闇夭钐螅捌谝β,先加熱到靠近目?biāo)溫度。之所以考慮在600度,是因?yàn)闇笮?yīng),若設(shè)定太高,當(dāng)發(fā)現(xiàn)接近700度再停下來(lái),但實(shí)際上,溫度會(huì)沖過(guò)700度。當(dāng)然,600度是一個(gè)經(jīng)驗(yàn)值,以下幾個(gè)溫度點(diǎn)都是經(jīng)驗(yàn)值,根據(jù)實(shí)際情況而來(lái)。 2、600以上,開啟P算法,P就是根據(jù)測(cè)量值與目標(biāo)值的誤差來(lái)決定負(fù)反饋的大小。P算法公式:反饋 = P * (當(dāng)前溫度-目標(biāo)溫度)。但因?yàn)樨?fù)反饋是基于存在誤差為前提的,所以P算法導(dǎo)致一個(gè)問(wèn)題,永遠(yuǎn)到不了想要的值:700度。因?yàn)榈搅?00度,反饋值就沒有了。P算法的開啟,進(jìn)一步逼近了目標(biāo)溫度,假設(shè)穩(wěn)態(tài)下可以達(dá)到650度,這樣就算因?yàn)闇笮?yīng)導(dǎo)致的延時(shí),也不會(huì)超過(guò)700度太多。 3、當(dāng)達(dá)到P算法的穩(wěn)態(tài)極限650度附近的時(shí)候,比如640度,就應(yīng)該開啟另外一個(gè)算法解決P算法引起的極限誤差,那就是I算法。I算法就是為了消除這個(gè)P算法導(dǎo)致的誤差值,畢竟我們想要的是700度,而不是650度。I算法,本質(zhì)上講就是獲取一個(gè)700度下對(duì)應(yīng)的一個(gè)驅(qū)動(dòng)值,之后用這個(gè)驅(qū)動(dòng)值來(lái)取代P算法,那么我們?cè)趺吹玫竭@個(gè)驅(qū)動(dòng)值呢,唯一的手段就是把之前的誤差都累加起來(lái),最后得到一個(gè)期望值,這個(gè)期望值就是我們想要的驅(qū)動(dòng)值。因?yàn)橹灰c目標(biāo)值存在誤差,那么把這些誤差值積累起來(lái)再去反饋控制,就能一步步的逼近目標(biāo)值,這如同水溫不夠高,再加一點(diǎn)點(diǎn)熱水,不夠高再加,這樣總能達(dá)到想要的水溫。值得注意的是,I算法不能接入太高,必須要在P算法的后期介入,不然很容易積累過(guò)大。這個(gè)時(shí)候可以引入一個(gè)誤差門限,比如誤差為60,當(dāng)作6來(lái)處理,誤差為50,當(dāng)作5來(lái)處理,消除大的誤差值,具體根據(jù)項(xiàng)目情況決定。 4、當(dāng)I算法把工件溫度加熱到很接近目標(biāo)溫度后,那么可以調(diào)節(jié)的范圍就很小了,最后一點(diǎn)點(diǎn)的微動(dòng),讓調(diào)節(jié)的每一次的變化,不要太大,這就是D算法。D算法本質(zhì)上講就是反對(duì)劇烈的變化,所以適用于達(dá)到目標(biāo)溫度的時(shí)候。 PID算法其實(shí)不復(fù)雜,但從目前看,很多人都是因?yàn)閷?duì)這三者的使用條件不了解導(dǎo)致的問(wèn)題,都是從加熱一開始,三個(gè)要素都上,結(jié)果可想而知。P算法是溫度接近目標(biāo)值的時(shí)候用,I算法是在P算法到穩(wěn)態(tài)極限的時(shí)候用,D算法是達(dá)到目標(biāo)值附近的時(shí)候用。實(shí)際項(xiàng)目中,D算法一般不用,效果不大。假如非要找一個(gè)現(xiàn)實(shí)中對(duì)應(yīng)的實(shí)物,那么以開關(guān)電源為例,TL431基準(zhǔn)電源比較器可以認(rèn)為是P,輸出濾波電容C是I,輸出濾波電感是D,兩者完全等價(jià)。它們各自的應(yīng)用工作點(diǎn)可以認(rèn)為:假設(shè)目標(biāo)溫度700度,600~800度:P算法;640~760度:I算法;690~710度:D算法。具體值,以實(shí)驗(yàn)為準(zhǔn),數(shù)據(jù)僅供參考。 |