當(dāng)前位置:首頁 > 公眾號(hào)精選 > 小麥大叔
[導(dǎo)讀]理想的PID算法往往不能滿足實(shí)際使用中的很多場(chǎng)景,比如積分飽和的問題,因此需要在此基礎(chǔ)上對(duì)積分器做抗飽和處理,積分anti windup的優(yōu)化。這不,隆哥這次面試,直接掛在這么基礎(chǔ)的知識(shí)點(diǎn)上,腸子悔青,在這里簡(jiǎn)單總結(jié)一下。

0?前面的話

理想的PID算法往往不能滿足實(shí)際使用中的很多場(chǎng)景,比如積分飽和的問題,因此需要在此基礎(chǔ)上對(duì)積分器做抗飽和處理,積分anti windup的優(yōu)化。這不,隆哥這次面試,直接掛在這么基礎(chǔ)的知識(shí)點(diǎn)上,腸子悔青,在這里簡(jiǎn)單總結(jié)一下。



推薦一首歌,是仙劍的插曲,音樂響起,便想起了童年,非常懷念,斯人已去,世上再無阿桑,也向歌手致敬。


目錄

  • 1 什么是積分飽和

  • 2 實(shí)際的例子

  • 3 負(fù)面影響

  • 4 如何防止積分飽和

  • 5 PID算法(抗飽和)

  • 6 參考


1 什么是積分飽和

積分飽和Integral windupintegrator windup)是指PID控制器或是其他有積分器的控制器中可能會(huì)發(fā)生的一種現(xiàn)象。

這種現(xiàn)象往往發(fā)生在誤差有大幅變化(例如大幅增加),積分器因?yàn)檎`差的大幅增加有很大的累計(jì)量,因?yàn)榉e分器的輸出滿足下式;

離散化形式表示為:

所以隨著時(shí)間的增加,每次累積較大的誤差 ,很容易造成積分飽和并產(chǎn)生較大的過沖,而且當(dāng)誤差變?yōu)樨?fù)時(shí),其過沖仍維持一段時(shí)間之后才恢復(fù)正常的情形。

2 實(shí)際的例子

這里舉一個(gè)直流電機(jī)調(diào)速例子,先看下圖;

  • 隆哥設(shè)定了轉(zhuǎn)速為 ,這里可以是 100 rpm,但是由于某種原因電機(jī)一開始堵轉(zhuǎn)了,所以反饋的轉(zhuǎn)速 0;
  • 這時(shí)候仍然處于堵轉(zhuǎn)狀態(tài),那偏差 就會(huì)一直處于很大的狀態(tài),積分器對(duì)偏差 進(jìn)行累積,便迅速達(dá)到一個(gè)很大的值,導(dǎo)致 PID的輸出已經(jīng)接近輸出的 上限,導(dǎo)致最終輸出的 PWM的占空比很大;
  • 此時(shí),堵轉(zhuǎn)忽然消失,但是前面提到 PID的輸出已經(jīng)接近輸出的 上限,因此電機(jī)轉(zhuǎn)速也急劇上升,當(dāng) 時(shí), ,此時(shí)偏差都處于負(fù)數(shù)狀態(tài);
  • 雖然誤差變成負(fù)數(shù),并且積分器開始累加負(fù)數(shù),但是由于之前積分器累積的值已經(jīng)很大,于是,PID依然會(huì)保持較大的輸出一段時(shí)間,從而產(chǎn)生了很大的過沖

通常會(huì)產(chǎn)生的輸出如下圖所示;

從圖中我們不難發(fā)現(xiàn),這里有三個(gè)過程;

  • 過程①:因?yàn)檫@個(gè)過程存在 較大幅度變化的誤差,因此積分器累積了較大的值,從圖中可以看到,積分器的面積比較大(陰影部分);
  • 過程②:此時(shí)積分已經(jīng)飽和,產(chǎn)生了較大的過沖,并且在較長的一段時(shí)間內(nèi),一直處于過沖的狀態(tài);
  • 過程③:積分脫離飽和狀態(tài),產(chǎn)生了積極的調(diào)節(jié)作用,消除靜差,系統(tǒng)輸出達(dá)到設(shè)定值;

3 負(fù)面影響

積分器的作用是消除系統(tǒng)穩(wěn)態(tài)誤差,如果出現(xiàn)積分飽和,往往會(huì)對(duì)系統(tǒng)造成負(fù)面的影響;

  • 系統(tǒng)輸出會(huì)產(chǎn)生較大的過沖(超調(diào)量);
  • 如果產(chǎn)生正向飽和(圖一所示)則系統(tǒng)對(duì)于反向的變化會(huì)偏慢;

系統(tǒng)產(chǎn)生了較大的過沖 ,并且較大的一段時(shí)間 都處于過沖的狀態(tài);具體如下圖所示;

4 如何防止積分飽和

為了防止PID控制器出現(xiàn)積分飽和,需要在算法加入抗積分飽和(anti-integral windup)的算法;通常有以下幾種措施;

  • 積分分離或者稱為去積分算法;
  • 在飽和的時(shí)候?qū)⒎e分器的累計(jì)值初始化到一個(gè)比較理想的值;
  • 若積分飽和因?yàn)槟繕?biāo)值突然變化而產(chǎn)生,將目標(biāo)值以適當(dāng)斜率的斜坡變化可避免此情形;
  • 將積分累計(jì)量限制上下限,避免積分累計(jì)量超過限制值;
  • 如果 PID輸出已經(jīng)飽和,重新計(jì)算積分累計(jì)量,使輸出恰好為合理的范圍;

TI文檔中的方法

下面是TI的位置式PI算法所做的改進(jìn),如下圖所示;

比例部分的輸出:

積分部分的輸出:

未做處理的PID輸出:

最終PID輸出

抗積分飽和用的系數(shù)

根據(jù)我的理解,由上述輸出和①式可知,判斷系統(tǒng)是否處于飽和的狀態(tài);

如果 ,說明積分器處于飽和狀態(tài),此時(shí)使 系數(shù)為0,這樣防止積分進(jìn)一步進(jìn)行累積。

反計(jì)算抗飽和法

反計(jì)算Anti-Windup法,簡(jiǎn)稱AW法,就是在輸出限幅部分根據(jù)輸入信號(hào)和輸出信號(hào)的差值,把 作為反饋值輸入到積分部分,從而達(dá)到抑制積分飽和現(xiàn)象的目的;

具體如下圖所示;

不難發(fā)現(xiàn),在輸出未飽和的情況下, 因此不會(huì)對(duì)積分器造成影響;當(dāng)系統(tǒng)發(fā)生飽和時(shí),則 ;

現(xiàn)在假設(shè)此時(shí)為正向飽和,則 ,那么 ,所以最終將 反饋到積分部分;那么從圖中可知,相當(dāng)于從 中減去了 ,這樣可以削弱積分,讓它退出飽和的狀態(tài);

關(guān)于 系數(shù), 越大,積分器退出飽和的作用越強(qiáng),反之則越弱;

當(dāng)然,積分抗飽和的方法還有很多 遇限積分削弱法,遇限保留積分法 ,這只是其中的一種,下面給出TI的位置式PID算法,增量式的抗飽和處理也是類似的做法。

5 PID算法(抗飽和)

TI的算法中只實(shí)現(xiàn)了比例和積分,如果需要微分項(xiàng),可以去除結(jié)尾部分的注釋;

/*?==================================================================================
File?name:???????PID_REG3.H??(IQ?version)????????????????????
=====================================================================================*/


#ifndef?__PIDREG3_H__
#define?__PIDREG3_H__

typedef?struct?{??_iq??Ref;??????//?Input:?Reference?input?
??????_iq??Fdb;??????//?Input:?Feedback?input?
??????_iq??Err;????//?Variable:?Error
??????_iq??Kp;????//?Parameter:?Proportional?gain
??????_iq??Up;????//?Variable:?Proportional?output?
??????_iq??Ui;????//?Variable:?Integral?output?
??????_iq??Ud;????//?Variable:?Derivative?output??
??????_iq??OutPreSat;???//?Variable:?Pre-saturated?output
??????_iq??OutMax;??????//?Parameter:?Maximum?output?
??????_iq??OutMin;??????//?Parameter:?Minimum?output
??????_iq??Out;??????//?Output:?PID?output?
??????_iq??SatErr;???//?Variable:?Saturated?difference
??????_iq??Ki;???????//?Parameter:?Integral?gain
??????_iq??Kc;????????//?Parameter:?Integral?correction?gain
??????_iq??Kd;???????????//?Parameter:?Derivative?gain
??????_iq??Up1;??????????//?History:?Previous?proportional?output
??????}?PIDREG3;?????????????

typedef?PIDREG3?*PIDREG3_handle;
/*-----------------------------------------------------------------------------
Default?initalizer?for?the?PIDREG3?object.
-----------------------------------------------------------------------------*/
?????????????????????
#define?PIDREG3_DEFAULTS?{?0,????\
???????????????????????????0,????\
???????????????????????????0,????\
???????????????????????????_IQ(1.3),??\
???????????????????????????0,????\
???????????????????????????0,????\
???????????????????????????0,????\
???????????????????????????0,????\
???????????????????????????_IQ(1),???\
???????????????????????????_IQ(-1),??\
???????????????????????????0,????\
???????????????????????????0,????\
???????????????????????????_IQ(0.02),??\
???????????????????????????_IQ(0.5),??\
???????????????????????????_IQ(1.05),??\
???????????????????????????0,????\
???????????????????}


/*------------------------------------------------------------------------------
??PID?Macro?Definition
------------------------------------------------------------------------------*/



#define?PID_MACRO(v)?????????????????????\
?v.Err?=?v.Ref?-?v.Fdb;??????????/*?Compute?the?error?*/??????\
?v.Up=?_IQmpy(v.Kp,v.Err);????????/*?Compute?the?proportional?output?*/??\
?v.Ui=?v.Ui?+?_IQmpy(v.Ki,v.Up)?+?_IQmpy(v.Kc,v.SatErr);?/*?Compute?the?integral?output?*/???\
?v.OutPreSat=?v.Up?+?v.Ui;????????/*?Compute?the?pre-saturated?output?*/??\
?v.Out?=?_IQsat(v.OutPreSat,?v.OutMax,?v.OutMin);??/*?Saturate?the?output?*/?????\
?v.SatErr?=?v.Out?-?v.OutPreSat;???????/*?Compute?the?saturate?difference?*/??\
?v.Up1?=?v.Up;???????????/*?Update?the?previous?proportional?output?*/


#endif?//?__PIDREG3_H__

//?Add?the?lines?below?if?derivative?output?is?needed?following?the?integral?update
//?v.Ud?=?_IQmpy(v.Kd,(v.Up?-?v.Up1));?
//?v.OutPreSat?=?v.Up?+?v.Ui?+?v.Ud;?

6 參考

https://www.mathworks.com/help/simulink/slref/anti-windup-control-using-a-pid-controller.html

雖然寫的不一定是最好,但是每一個(gè)字、每一個(gè)公式都是用心碼的,每一張圖都是用心畫的,每一句話都是加入了自己的理解,如果幫到了你,請(qǐng)無情三連吧;另外筆者能力有限,文中難免存在錯(cuò)誤和紕漏,望輕拍指正。

增量式PID到底是什么?

?簡(jiǎn)易PID算法的快速掃盲?

?一文教你搞懂C語言的Q格式

??現(xiàn)成輪子OSAL操作系統(tǒng)抽象層的移植

?一招教你單片機(jī)固件快速瘦身

基礎(chǔ)知識(shí) | hex文件格式詳解


—— The End?—


長按識(shí)別二維碼關(guān)注獲取更多內(nèi)容



免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉