這一節(jié)聊聊PID使用中的一些實(shí)際問(wèn)題。為了限制篇幅,很多細(xì)節(jié)沒(méi)有展開(kāi),以后有機(jī)會(huì)專門做一節(jié)細(xì)講PID的編程。 PID算法主要的三種形式 下面三種PID算法的形式是目前比較主流的。其中形式1為并行式,也稱獨(dú)立式;形式2為標(biāo)準(zhǔn)式,也稱理想式,是最常見(jiàn)的;形式3為串行式,比較少見(jiàn)。這三種形式在數(shù)學(xué)上是等價(jià)的。 第一種形式的PID三個(gè)參數(shù)是相互獨(dú)立的,其好處是可以取消任意一項(xiàng)的作用。比如只想保留積分I的作用,則可以把Kp和Kd都設(shè)為0。 第二種形式的I和D是相互獨(dú)立的,但是它們都與Kp有關(guān)系。調(diào)整Kp,會(huì)導(dǎo)致P、I和D項(xiàng)的改變。 而第三種形式PID三者相互有關(guān)系。第二和第三種非獨(dú)立形式的好處是只要調(diào)整一個(gè)參數(shù)即可改變PID整體性能。 既然三種形式在數(shù)學(xué)上是等價(jià)的,選擇哪一種完全取決于個(gè)人喜好和熟悉程度(除非你想取消P的作用,那就只能選擇第一種形式了)。 不完全微分 上述三種形式雖然是標(biāo)準(zhǔn)的PID公式,但是在實(shí)際應(yīng)用中,更多見(jiàn)的可能是下面的形式: 這個(gè)式子與前面的區(qū)別是在微分項(xiàng)加了一個(gè)一階低通濾波器。這種形式也稱為不完全微分,其主要目的是減少微分沖擊。如果想取消濾波作用,可以把濾波時(shí)間tf設(shè)為0,則公式就變?yōu)闃?biāo)準(zhǔn)形式了。關(guān)于濾波器和不完全微分,在之前的視頻中都已有介紹,這里不再重復(fù)了。 以下公式摘自西門子S7-1500 PID手冊(cè), 其中y為輸出,w為設(shè)定值,x為反饋值,a為微分項(xiàng)濾波時(shí)間,b為比例項(xiàng)設(shè)定值權(quán)重,c為微分項(xiàng)設(shè)定值權(quán)重(b和c的取值范圍是0-1)。 可見(jiàn)其形式又有點(diǎn)不一樣,從該式子可見(jiàn):
西門子的PID實(shí)現(xiàn)是比較全面的,但只憑一個(gè)公式還不能展現(xiàn)PID的全部,還有諸如前饋、串級(jí)、操作模式、無(wú)擾切換、積分飽,輸出信號(hào)類型和很多輔助功能等的考慮。 PID操作模式 PID控制器可能存在多種操作模式,下面介紹主要的幾個(gè):
無(wú)擾切換 無(wú)擾切換是指PID在各種模式來(lái)回切換中,其輸出不會(huì)突變。實(shí)現(xiàn)PID無(wú)擾切換的原則是使得切換后的PID輸出是在切換前的輸出的基礎(chǔ)上作調(diào)整。 實(shí)現(xiàn)無(wú)擾切換有多種不同的方法,在不同的模式下所使用的方法也可能不同。其中“限制PID輸出變化率”是比較常見(jiàn)的一種,其好處是它對(duì)所有模式都適用,而且在改變了PID參數(shù)的情況下,也能保證平緩輸出。其實(shí)現(xiàn)原理是使得PID輸出按照一定的變化率增加或者減少,比如5%/秒,如果要求PID輸出從0%到100%,整個(gè)過(guò)程需要20秒才能完成。 另外一種從自動(dòng)到手動(dòng)的無(wú)擾切換是:當(dāng)PID控制器在自動(dòng)模式下,手動(dòng)設(shè)定值應(yīng)實(shí)時(shí)跟隨PID的輸出(即把PID輸出持續(xù)寫入到手動(dòng)設(shè)定值)。這樣在切換后,PID的輸出就能保持在切換前一刻的輸出值。 而從手動(dòng)到自動(dòng)的無(wú)擾切換,這里介紹兩種方法:
抗積分飽和 積分項(xiàng)是對(duì)誤差的累積,只要誤差不等于0,積分的結(jié)果會(huì)隨著時(shí)間越來(lái)越大(誤差大于0時(shí))或者越來(lái)越?。ㄕ`差小于0時(shí)),直到無(wú)窮。當(dāng)然PID的輸出不可能無(wú)窮,一般有效的輸出范圍是0%-100%或者-100%到+100%,也可以由用戶自定義。當(dāng)PID輸出達(dá)到飽和狀態(tài)時(shí),此時(shí)就不能允許積分向超出飽和的方向繼續(xù)進(jìn)行下去了,這種措施叫做抗積分飽和。 抗積分飽和的方法也是有多種,最直接的一種是當(dāng)輸出飽和時(shí),如果輸出仍然有超出飽和方向的趨勢(shì)(誤差與控制信號(hào)同方向),則停止積分計(jì)算。 另外一種更常用的抗積分飽和的方法是當(dāng)輸出飽和時(shí),重新折算積分項(xiàng)。與無(wú)擾切換的思路類似,這種方法是對(duì)積分項(xiàng)進(jìn)行重新折算,使得輸出不超出飽和值。這種方法能更快地退出飽和狀態(tài)。 PID程序的調(diào)用 手冊(cè)上推薦在循環(huán)中斷里調(diào)用PID程序,即按照嚴(yán)格的等間隔時(shí)間調(diào)用,從而保證每次相等的采樣時(shí)間。如果采樣時(shí)間不等,而PID又以固定的采樣時(shí)間計(jì)算,以積分為例,會(huì)導(dǎo)致每次采樣的計(jì)算結(jié)果有偏差,并且偏差也是會(huì)被累加的,時(shí)間越長(zhǎng),偏差就會(huì)越大。 如果不在循環(huán)中斷里調(diào)用PID程序,也可以每次計(jì)算采樣時(shí)間,PID則以每次計(jì)算得到的采樣時(shí)間來(lái)作運(yùn)算。 關(guān)于這部分內(nèi)容,詳情可見(jiàn)之前的視頻《積分?jǐn)?shù)學(xué)基礎(chǔ)》。 綜上可見(jiàn),PID的實(shí)現(xiàn)有很多細(xì)節(jié)需要注意,要自行編程實(shí)現(xiàn)一個(gè)比較完整的PID算法并不簡(jiǎn)單,即使使用現(xiàn)成的庫(kù)程序,也要好好理解這些細(xì)節(jié),才能用好。而且并不是所有PID庫(kù)程序都提供所有細(xì)節(jié)的實(shí)現(xiàn),有時(shí)候需要自行編程,所以理解這些思路也很重要。 |
|