PID控制器开发笔记之十:步进式PID控制器的实现
對(duì)于一般的PID控制系統(tǒng)來(lái)說(shuō),當(dāng)設(shè)定值發(fā)生較大的突變時(shí),很容易產(chǎn)生超調(diào)而使系統(tǒng)不穩(wěn)定。為了解決這種階躍變化造成的不利影響,人們發(fā)明了步進(jìn)式PID控制算法。
1、步進(jìn)式PID的基本思想
所謂步進(jìn)式PID算法,實(shí)際就是在設(shè)定值發(fā)生階躍變化時(shí),不直接對(duì)階躍信號(hào)進(jìn)行響應(yīng),而是在一定的時(shí)間內(nèi)逐步改變?cè)O(shè)定值,直至使設(shè)定值達(dá)到目標(biāo)值。這種逐步改變?cè)O(shè)定值的辦法使得對(duì)象運(yùn)行平穩(wěn)。適用于高精度伺服系統(tǒng)的位置跟蹤。
佷顯然,這一方法并未改變PID控制器本身,而是對(duì)設(shè)定值做了前期處理。所以其結(jié)構(gòu)框圖與控制方程與其他的PID控制算法是一致的。
為了對(duì)設(shè)定值做必要處理,以使其不知快速變化,有多種方法。比較常用的是建立線性變化函數(shù)的辦法。我們可以規(guī)定設(shè)定值從0-100%的變化時(shí)間為T,則可以確定設(shè)定值變化的斜率絕對(duì)值,或者說(shuō)是步長(zhǎng)。知道補(bǔ)償后,我們就可以根據(jù)不常來(lái)不斷修改設(shè)定值,直到目標(biāo)值??捎霉矫枋鰹?#xff1a;
SPt=SPs+k*sl
其中SPt為設(shè)定值目標(biāo)值,SPs為設(shè)定值的起始值,sl為步長(zhǎng),k為步長(zhǎng)的變化系數(shù):
而控制器本身的位置型和增量型表達(dá)式都保持不變。
2、算法實(shí)現(xiàn)
步進(jìn)式PID的實(shí)質(zhì)是將設(shè)定值的突變修改為平緩的變化,這一處理方式在控制中有大量應(yīng)用。處理設(shè)定值變化過(guò)程的流程如下所示:
根據(jù)這一流程我們可變寫處理函數(shù)如下:
/*步進(jìn)式PID控制設(shè)定值步進(jìn)處理函數(shù)*/ float StepInProcessing(CLASSICPID vPID,float sp) {float stepIn=(vPID->maximum-vPID->minimum))*0.1;float kFactor=0.0;if(fabs(vPID->setpoint-sp)<=stepIn){vPID->setpoint=sp;}else{if(vPID->setpoint-sp>0){kFactor=-1.0;}else if(vPID->setpoint-sp<0){kFactor=1.0;}else{kFactor=0.0;}vPID->setpoint=vPID->setpoint+kFactor*stepIn;}return vPID->setpoint; }有了這一處理函數(shù)后,在調(diào)用PID控制器前,先對(duì)設(shè)定值進(jìn)行判斷,然后將該函數(shù)的結(jié)果作為設(shè)定值給PID控制器。至于PID控制器才用前面講述的哪種形式,根據(jù)具體應(yīng)用需求和使用方便去年而定。
3、總結(jié)
所謂步進(jìn)式實(shí)質(zhì)是對(duì)設(shè)定值進(jìn)行平緩變化處理,防止因?yàn)樵O(shè)定值的跳變而引起系統(tǒng)的波動(dòng)。這一辦法雖然能夠減少階躍跳變的干擾,但也會(huì)讓系統(tǒng)的響應(yīng)速度變慢,當(dāng)然這要根據(jù)需要來(lái)處理,因?yàn)椴介L(zhǎng)的選擇決定了作用大小,補(bǔ)償越小約平緩,相應(yīng)的響應(yīng)速度也越慢。
歡迎關(guān)注:
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的PID控制器开发笔记之十:步进式PID控制器的实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2020,再见;2021,我来了!
- 下一篇: Modbus协议栈实现Modbus RT