0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PID算法終于弄明白了,沒有公式那么嚇人

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 2024-01-18 16:09 ? 次閱讀

看起來PID高大尚,先被別人唬住,后被公式唬住,由于大多數(shù)人高數(shù)一點(diǎn)都不會(huì)或者遺忘,所以再一看公式,簡(jiǎn)直嚇?biāo)馈?/p>

直接從網(wǎng)上找了PID相關(guān)公式截圖如下。

05e96aa6-b5d7-11ee-8b88-92fbcf53809c.png

了解了很淺的原理后,結(jié)果公式看不懂,不懂含義,所以最終沒有透徹。我這里先對(duì)公式進(jìn)行剖析,公式理解明白了,結(jié)合網(wǎng)上的一些PID講述的例子,就明白了。

先對(duì)PID這三個(gè)系數(shù)的含義進(jìn)行簡(jiǎn)單掃盲。同時(shí)也防止自己遺忘。P是比例系數(shù),I是積分系數(shù)、D是微分系數(shù)。

下面對(duì)PID這三個(gè)系數(shù)進(jìn)行詳細(xì)說明:演示PID三個(gè)參數(shù)的控制作用。

比例系數(shù)P

比例系數(shù)P是干什么用,其實(shí)如果現(xiàn)在你是初中生的話,你一下子就懂了,比例系數(shù)就是用在穿過(0,0)這個(gè)坐標(biāo)點(diǎn)直線的放大倍數(shù)k,k越大,直線的斜率越大,所以是用在y = k * x中的,其中的k就是比例系數(shù)p,大家都簡(jiǎn)稱為kp,所以就變成了y = Kp * x。

x就是當(dāng)前值currentValue和目標(biāo)值totalValue的差值,簡(jiǎn)稱誤差err,則err = currentValue - totalValue。y就是執(zhí)行器對(duì)應(yīng)的輸出值U,所以執(zhí)行器對(duì)應(yīng)的輸出值U = Kp * ( currentValue - totalValue ) 。

所以,如果說是使用比例進(jìn)行調(diào)節(jié)。

則當(dāng)前第1次調(diào)節(jié)時(shí)執(zhí)行器對(duì)應(yīng)的輸出值為:

U1 = Kp * ( curentValue1 - totalValue1 )

第2次調(diào)節(jié)時(shí)執(zhí)行器對(duì)應(yīng)的輸出值為:

U2 = Kp * ( currentValue2 - totalValue2 )

這就是比例系數(shù)P的應(yīng)用,也就是大家說的比例調(diào)節(jié)。比例調(diào)節(jié)就是根據(jù)當(dāng)前的值與目標(biāo)值的差值,乘以了一個(gè)Kp的系數(shù),來得到一個(gè)輸出值,這輸出值直接影響了下次當(dāng)前值的變化。如果只有比例調(diào)節(jié)的話,系統(tǒng)會(huì)震蕩的比較厲害。比如你的汽車現(xiàn)在運(yùn)行的速度是60km/h,現(xiàn)在你想通過你的執(zhí)行器去控制這個(gè)汽車達(dá)到恒定的50km/h,如果你只用kp進(jìn)行比例調(diào)節(jié)話。U = Kp * ( 60 - 50 ),假設(shè)Kp取值為1,此時(shí)得到U執(zhí)行器的輸出值是10,結(jié)果當(dāng)你執(zhí)行器輸出后,發(fā)現(xiàn)汽車一下變成了35Km/h,此時(shí)U2 = Kp * (35 - 50),此時(shí)得到U執(zhí)行器的輸出值是-15,結(jié)果當(dāng)你執(zhí)行器輸出后,發(fā)現(xiàn)汽車變成了55Km/h,由于慣性和不可預(yù)知的誤差因素,你的汽車始終無法達(dá)到恒定的50km/h。始終在晃動(dòng),相信如果你在車上,你一定吐的很厲害。所以光有比例系數(shù)進(jìn)行調(diào)節(jié),在有些場(chǎng)合是沒有辦法將系統(tǒng)調(diào)穩(wěn)定的。所以可以為了減緩震蕩的厲害,則會(huì)結(jié)合使用比例P和微分D。

微分系數(shù)D

微分,實(shí)際上是對(duì)誤差進(jìn)行微分。加入誤差1是err(1)。誤差2是err(2)。則誤差err的微分是 (err2 - err1)。乘上微分系數(shù)D,大家叫做KD,則當(dāng)執(zhí)行器第1次調(diào)節(jié)后有了第1次的誤差,第2次調(diào)節(jié)后有了第2次的誤差,則結(jié)合P系數(shù)。就有了PD結(jié)合,根據(jù)每次調(diào)節(jié)時(shí),誤差的值的經(jīng)驗(yàn)推算,你就能選取出D的系數(shù)。假如誤差是越來越小的,那么微分后肯定是一個(gè)負(fù)值。負(fù)值在乘以了一個(gè)D系數(shù) 加上了比例調(diào)節(jié)的值后肯定值要比單純使用比例調(diào)節(jié)的值要小,所以就啟到了阻尼的作用。有了阻尼的作用就會(huì)使得系統(tǒng)區(qū)域穩(wěn)定。

PD結(jié)合的公式經(jīng)過上面的分析后為:

U(t) = Kp * err(t) + Kd * derr(t)/dt

積分系數(shù)I

積分,實(shí)際上是對(duì)誤差的積分,也就是誤差的無限和。如何理解積分系數(shù)I,這里引用網(wǎng)上的例子

以熱水為例。假如有個(gè)人把我們的加熱裝置帶到了非常冷的地方,開始燒水了。需要燒到50℃。

在P的作用下,水溫慢慢升高。直到升高到45℃時(shí),他發(fā)現(xiàn)了一個(gè)不好的事情:天氣太冷,水散熱的速度,和P控制的加熱的速度相等了。
這可怎么辦?

P兄這樣想:我和目標(biāo)已經(jīng)很近了,只需要輕輕加熱就可以了。
D兄這樣想:加熱和散熱相等,溫度沒有波動(dòng),我好像不用調(diào)整什么。

于是,水溫永遠(yuǎn)地停留在45℃,永遠(yuǎn)到不了50℃。

根據(jù)常識(shí),我們知道,應(yīng)該進(jìn)一步增加加熱的功率??墒窃黾佣嗌僭撊绾斡?jì)算呢?
前輩科學(xué)家們想到的方法是真的巧妙。

設(shè)置一個(gè)積分量。只要偏差存在,就不斷地對(duì)偏差進(jìn)行積分(累加),并反應(yīng)在調(diào)節(jié)力度上。

這樣一來,即使45℃和50℃相差不太大,但是隨著時(shí)間的推移,只要沒達(dá)到目標(biāo)溫度,這個(gè)積分量就不斷增加。系統(tǒng)就會(huì)慢慢意識(shí)到:還沒有到達(dá)目標(biāo)溫度,該增加功率啦!
到了目標(biāo)溫度后,假設(shè)溫度沒有波動(dòng),積分值就不會(huì)再變動(dòng)。這時(shí),加熱功率仍然等于散熱功率。但是,溫度是穩(wěn)穩(wěn)的50℃。
kI的值越大,積分時(shí)乘的系數(shù)就越大,積分效果越明顯。

所以,I的作用就是,減小靜態(tài)情況下的誤差,讓受控物理量盡可能接近目標(biāo)值。

I在使用時(shí)還有個(gè)問題:需要設(shè)定積分限制。防止在剛開始加熱時(shí),就把積分量積得太大,難以控制。最后推薦下相關(guān)文章:PID到底是個(gè)啥?講個(gè)故事告訴你。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4576

    瀏覽量

    92341
  • PID
    PID
    +關(guān)注

    關(guān)注

    35

    文章

    1467

    瀏覽量

    85086
  • 執(zhí)行器
    +關(guān)注

    關(guān)注

    5

    文章

    375

    瀏覽量

    19284

原文標(biāo)題:PID算法終于弄明白了,沒有公式那么嚇人

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    看完這個(gè)故事你就明白PID控制原理

    現(xiàn)在一般采用的是臨界比例法。利用該方法進(jìn)行 PID控制器參數(shù)的整定步驟如下:(1)首先預(yù)選擇一個(gè)足夠短的采樣周期讓系統(tǒng)工作;(2)僅加入比例控制環(huán)節(jié),直到系統(tǒng)對(duì)輸入的階躍響應(yīng)出現(xiàn)臨界振蕩,記下這時(shí)的比例放大系數(shù)和臨界振蕩周期;(3)在一定的控制度下通過公式計(jì)算得到
    的頭像 發(fā)表于 11-26 16:01 ?9732次閱讀

    誰有PID算法的詳細(xì)資料

    一直都對(duì)PID算法的原理和應(yīng)用存在疑問,所以現(xiàn)在迫切要明白
    發(fā)表于 07-26 11:08

    最全PID控制算法的C語言實(shí)現(xiàn)(轉(zhuǎn))

    最近項(xiàng)目中用到PID控制算法,查很多資料,資料上說的一塌糊涂,什么手動(dòng)調(diào)節(jié)???說的和沒說一樣,對(duì)于剛接觸PID的人根本
    發(fā)表于 06-01 10:53

    四軸飛行器的PID算法

    得到PID計(jì)算公式 式(8)中T為更新時(shí)間。 基于公式(8),姿態(tài)PID控制算法 式(9)為角度環(huán)PID
    發(fā)表于 01-15 17:03

    PID控制器開發(fā)筆記之一:PID算法原理及基本實(shí)現(xiàn)

    PID算法,那么接下來我們推到一下增量型PID算法公式。上面的
    發(fā)表于 04-21 16:58

    四軸姿態(tài)控制中的PID算法的原理和實(shí)現(xiàn)

    ;lasterror);vPID->lasterror=thisError;}這就實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的位置型PID控制器,當(dāng)然沒有考慮任何干擾條件,僅僅只是對(duì)數(shù)學(xué)公式的計(jì)算機(jī)語言化。(2
    發(fā)表于 06-11 06:00

    PID算法的愚見分享!

    ,使用的是增量式PID算法.自我感覺這個(gè)算法并不是準(zhǔn)確的PID計(jì)算公式,只是簡(jiǎn)化計(jì)算后的計(jì)算方法,適合計(jì)算能力較弱的單片機(jī)等使用.[C] 純
    發(fā)表于 07-24 02:23

    PID算法之模糊PID 精選資料推薦

    在實(shí)際的控制系統(tǒng)中,線性系統(tǒng)畢竟是少數(shù),大部分的系統(tǒng)屬于非線性系統(tǒng),或者說是系統(tǒng)模型不確定的系統(tǒng),如果控制精度要求較高的話,那么對(duì)于參數(shù)的整定過程是有難度的。專家 PID 和模糊 PID 就是為滿足
    發(fā)表于 07-19 06:29

    PID算法的核心及功能

    PID算法是控制中使用的最多并且最簡(jiǎn)單的一種控制算法,算法的核心就是不斷計(jì)算當(dāng)前值和目標(biāo)值的誤差,并根據(jù)誤差來改變輸入,最終達(dá)到目標(biāo)值。廢話不多說,一看代碼就
    發(fā)表于 09-07 09:00

    掌握PID算法

    掌握PID算法?要深刻理解反饋機(jī)構(gòu)和執(zhí)行機(jī)構(gòu)PID算法,不管是原理上,還是代碼上都比較簡(jiǎn)單。主要運(yùn)用在電機(jī)控制、開關(guān)電源、電源管理芯片等領(lǐng)域。 PI
    發(fā)表于 09-13 06:20

    PID算法增量式算法

    這里的PID是指控制類的比例-積分-微分算法,而不是進(jìn)程ID號(hào)。PID算法,不管是原理上,還是代碼上都比較簡(jiǎn)單。主要運(yùn)用在電機(jī)控制、開關(guān)電源、電源管理芯片等領(lǐng)域。一般《自動(dòng)控制原理》上
    發(fā)表于 09-13 06:06

    PID算法的應(yīng)用

    這里的PID是指控制類的比例-積分-微分算法,而不是進(jìn)程ID號(hào)。PID算法,不管是原理上,還是代碼上都比較簡(jiǎn)單。主要運(yùn)用在電機(jī)控制、開關(guān)電源、電源管理芯片等領(lǐng)域。一般《自動(dòng)控制原理》上
    發(fā)表于 09-13 06:01

    pid算法_什么是pid算法

    PID控制器是一種最優(yōu)控制。本文講述增量式PID算法原理與數(shù)字PID算法原理與數(shù)字
    發(fā)表于 01-01 11:58 ?1.1w次閱讀
    <b class='flag-5'>pid</b><b class='flag-5'>算法</b>_什么是<b class='flag-5'>pid</b><b class='flag-5'>算法</b>

    數(shù)字PID及其算法

    數(shù)字PID及其算法詳細(xì)介紹,非常實(shí)用的,一看就明白
    發(fā)表于 07-29 17:11 ?6次下載

    兩種實(shí)現(xiàn)PID控制的算法的技巧

    PID控制算法公式*
    的頭像 發(fā)表于 05-19 16:45 ?728次閱讀
    兩種實(shí)現(xiàn)<b class='flag-5'>PID</b>控制的<b class='flag-5'>算法</b>的技巧