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