PID算法,對于經(jīng)常使用科研儀器設(shè)備的小伙伴們應(yīng)該已經(jīng)司空見慣,這個經(jīng)典的算法已經(jīng)有100多年的歷史,是工業(yè)應(yīng)用中最廣泛算法之一,在閉環(huán)系統(tǒng)的控制中,可自動對系統(tǒng)進(jìn)行準(zhǔn)確且迅速的校正,所謂閉環(huán),就是在系統(tǒng)的輸出端可以有一個直接的參數(shù)反饋,利用輸出量同期望值的偏差對系統(tǒng)進(jìn)行控制,以用于控制輸入端,使系統(tǒng)穩(wěn)定,因此閉環(huán)系統(tǒng)又稱作反饋控制系統(tǒng),由下圖中可以明顯的看出,此控制系統(tǒng)比開環(huán)系統(tǒng)多了一個環(huán)節(jié)——傳感器,通過傳感器進(jìn)行采集和反饋到控制算法中,形成一個閉合的回環(huán),這也就是閉環(huán)控制系統(tǒng)中的閉環(huán)。
舉個簡單的例子,鍋爐燒水,加熱器可以以一個功率給水加熱,功率越高,加熱越快,但是如果想恒定在一個溫度值,就需要一個溫度傳感器來實時采集溫度數(shù)據(jù)然后反饋給加熱端的控制器,因為加熱器的溫度遠(yuǎn)大于水,而且水的比熱非常大,所以當(dāng)溫度達(dá)到設(shè)定的溫度后去關(guān)閉加熱開關(guān),水一定不會就恒定在設(shè)定溫度,余溫會使水溫高出一些,因此這部分落差的控制,就需要更精準(zhǔn)的控制了。
圖片源于網(wǎng)絡(luò)
PID控制在我們生活中也有很多應(yīng)用的身影,比如四軸無人機,汽車(定速巡航),電飯鍋控溫等等;當(dāng)然,在精密儀器領(lǐng)域,PID控制更是萬金油般的存在,可以說只要涉及到精確控制,就有PID的身影;在英賽斯的Auto系列蛋白純化層析設(shè)備上,PID主要應(yīng)用于系統(tǒng)的恒壓控制,利用調(diào)節(jié)流速的變化,在復(fù)雜的層析柱運行工況下,恒定壓力,來完成諸如裝柱、壓柱、平衡等的一系列操作;而在英賽斯另一個Auto Oligo大規(guī)模核酸合成系列產(chǎn)品,對于PID的恒壓控制則使用的更加頻繁,且非常重要,因為合成過程基于對節(jié)省試劑、充分接觸、節(jié)約時間等的較高要求,需要在一定的壓力限制下輸出充分的流速,來滿足這些需求,并應(yīng)用于合成循環(huán)中的多個步驟。
下面對PID算法做一個簡單介紹:
PID算法 是將偏差的比例(Proportion)、積分(Integral)和微分(Differential)通過線性組合構(gòu)成控制量,用這一控制量對被控對象進(jìn)行控制,這樣的控制器稱PID控制器。具體原理和公式如下:
其中:
Kp:比例增益,是調(diào)適參數(shù);
Ki:積分增益,也是調(diào)適參數(shù);
Kd:微分增益,也是調(diào)適參數(shù);
e:誤差=設(shè)定值(SP)- 回授值(PV);
t:目前時間。
當(dāng)然,直接看公式,還是有點枯燥的,下面將PID分開解釋,會更直白一些。
P為比例控制,這部分是與“現(xiàn)在”有關(guān),考量的是當(dāng)前誤差,誤差值和一個正值的常數(shù)Kp(表示比例,可以理解為放大倍數(shù))相乘,P環(huán)節(jié)的第k時刻的輸出為:u(k)=Kp * e(k),簡單說,就是現(xiàn)在時刻,通過考量當(dāng)前誤差的情況,來實施一定正比例的輸入,Kp越大,調(diào)節(jié)作用越激進(jìn),Kp調(diào)小會讓調(diào)節(jié)作用更保守;就像燒水,當(dāng)當(dāng)前溫度與設(shè)定的溫度差距不大時,就讓加熱器輕微加熱一下,要是因為某些外界因素,溫度降低了很多,就讓加熱器稍用力地加熱一下,要是當(dāng)前溫度比目標(biāo)溫度低得多,就讓加熱器開足馬力加熱,盡快讓水溫到達(dá)目標(biāo)附近。但單一P算法中的缺陷:當(dāng)系統(tǒng)不存在偏差(e(k)=0)時,執(zhí)行部件便無輸出,被控對象容易處于正負(fù)大幅度搖擺的失控狀態(tài)。
I為積分增益,這部分是與“過去”有關(guān),積分控制考慮的是過去的誤差,將誤差值過去一段時間和(誤差和)乘以一個正值的常數(shù)Ki。I環(huán)節(jié)的第k時刻的輸出:u(k)=Ki * ∑ei (對過去所有時間的偏差進(jìn)行求和)。這里是指對輸出設(shè)置了一個積分量,只要偏差存在,就不斷地對偏差進(jìn)行積分(累加),并反應(yīng)在調(diào)節(jié)力度上;Ki的值越大,積分時乘的系數(shù)就越大,積分效果越明顯;就比如給水加熱,如果實際溫度和目標(biāo)溫度相差不大,對于Kp來說已經(jīng)很接近目標(biāo)值了,不會再做很大的調(diào)節(jié),加熱量只夠散熱的,這個差值始終不能縮小,但是加了Ki后,隨著時間的推移,只要沒達(dá)到目標(biāo)溫度,積分量就不斷增加,系統(tǒng)就會慢慢意識到:還沒有到達(dá)目標(biāo)溫度,該增加功率!當(dāng)?shù)搅四繕?biāo)溫度后,假設(shè)溫度沒有波動,積分值就不會再變動,這時,加熱功率仍然等于散熱功率,但是,實際溫度會穩(wěn)定在目標(biāo)溫度。所以,I的作用就是,減小靜態(tài)情況下的誤差,讓受控物理量盡可能接近目標(biāo)值。
D微分增益,這部分是與“將來”有關(guān),微分控制考慮將來誤差,計算誤差的一階導(dǎo),并和一個正值的常數(shù)Kd相乘。之前有了P的作用,不難發(fā)現(xiàn),只有P好像不能讓輸出值與目標(biāo)值穩(wěn)定,控制的晃晃悠悠,好像整個系統(tǒng)不是特別穩(wěn)定,總是在“抖動”。設(shè)想空氣中有一個彈簧被拉了一下,因為阻力很小,它可能會震蕩很長時間才會停在平衡位置,但是如果要是把這根彈簧浸沒在水里,同樣拉它一下,這種情況下,重新停在平衡位置的時間就短得多。所以這樣的系統(tǒng)需要一個控制作用,讓被控制的物理量的“變化速度”趨于0,即類似于“阻尼”的作用,讓物理量的速度趨于0,只要什么時候,這個量具有了速度,D就向相反的方向用力,盡力剎住這個變化。
小伙伴聽到這里,可能對PID的意思有個初步的了解,但是對于實際應(yīng)用的規(guī)律,還是有點不清晰,這里就用英賽斯核酸合成系統(tǒng)軟件的幾張圖和來說明我們的軟件和系統(tǒng),是怎樣通過調(diào)節(jié)PID,來進(jìn)行系統(tǒng)流速的控制的。
一般P值越大,控制響應(yīng)的速度大,流速值會更快地前往設(shè)定值,但是過沖以及波動也會很大,過沖的時候很容易超過系統(tǒng)的壓力限制,導(dǎo)致耐壓薄弱處(如柱子或者填料)的損壞。下圖是英賽斯 Auto Oligo系統(tǒng)的一個恒壓控制圖,可見當(dāng)設(shè)置P=9時,壓力波動會很大,而設(shè)置P=3時,波動最緩。
I值則是用于調(diào)節(jié)流速的波動范圍,一般I值越小,曲線偏離回復(fù)的速度越快,波動的時間越長;I值越大,往目標(biāo)值調(diào)節(jié)的越緩和,波動值會越小。下圖可見當(dāng)I值較低時,可見波動明顯放緩。
D值主要是對過沖的控制,在英賽斯系統(tǒng)里,D值一般默認(rèn)為0,不需要做調(diào)節(jié)。因此,在英賽斯系統(tǒng)里,PI(D值無需調(diào)節(jié))值均有它的作用,不過在設(shè)備出廠測試時,數(shù)值都已經(jīng)調(diào)節(jié)到最佳狀態(tài),非特殊情況,大家不要去輕易調(diào)整;如果調(diào)節(jié)有一定誤差,可在英賽斯技術(shù)服務(wù)部工程師的指導(dǎo)下進(jìn)行調(diào)整。當(dāng)然,系統(tǒng)軟件也自帶恢復(fù)默認(rèn)值的功能,當(dāng)參數(shù)都已變動并無法調(diào)節(jié)到最佳時,也可以利用這個功能恢復(fù)到出廠狀態(tài)。