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

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

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

重溫經(jīng)典 PID 算法

黃工的嵌入式技術(shù)圈 ? 來源:網(wǎng)站整理 ? 2020-03-12 11:09 ? 次閱讀

PID算法可以說是在自動(dòng)控制原理中比較經(jīng)典的一套算法,在現(xiàn)實(shí)生活中應(yīng)用的比較廣泛。

大學(xué)參加過電子競(jìng)賽的朋友都應(yīng)該玩過電機(jī)(或者說循跡小車),我們要控制電機(jī)按照設(shè)定的速度運(yùn)轉(zhuǎn),PID控制在其中起到了關(guān)鍵的作用。

說來慚愧,大學(xué)這門課程學(xué)的不咋滴,老師講的課基本沒聽進(jìn)去過。直到后面接觸競(jìng)賽,算是對(duì)PID有了很基礎(chǔ)的一點(diǎn)點(diǎn)認(rèn)識(shí),直到現(xiàn)在工作實(shí)際應(yīng)用的比較廣泛才知道它的重要性。所以,這里特地回顧一下。

Ⅰ什么是PID

PID,即比例Proportion、積分Integral和微分Derivative三個(gè)單詞的縮寫。

閉環(huán)自動(dòng)控制技術(shù)是基于反饋的概念以減少不確定性,在閉環(huán)自動(dòng)控制原理中,我們把它叫做“PID控制器”,拿控制電機(jī)來說,參考下面模型:

下面引用一段網(wǎng)上經(jīng)典的話:

工業(yè)應(yīng)用中PID及其衍生算法是應(yīng)用最廣泛的算法之一,是當(dāng)之無愧的萬能算法,如果能夠熟練掌握PID算法的設(shè)計(jì)與實(shí)現(xiàn)過程,對(duì)于一般的研發(fā)人員來講,應(yīng)該是足夠應(yīng)對(duì)一般研發(fā)問題了,而難能可貴的是,在我所接觸的控制算法當(dāng)中,PID控制算法又是最簡(jiǎn)單,最能體現(xiàn)反饋思想的控制算法,可謂經(jīng)典中的經(jīng)典。經(jīng)典的未必是復(fù)雜的,經(jīng)典的東西常常是簡(jiǎn)單的,而且是最簡(jiǎn)單的,想想牛頓的力學(xué)三大定律吧,想想愛因斯坦的質(zhì)能方程吧,何等的簡(jiǎn)單!簡(jiǎn)單的不是原始的,簡(jiǎn)單的也不是落后的,簡(jiǎn)單到了美的程度。

ⅡPID原理

常規(guī)的模擬 PID 控制系統(tǒng)原理框圖如下:

該系統(tǒng)由模擬 PID 控制器和被控對(duì)象組成。

上面框圖中, r(t) 是給定值, y(t) 是系統(tǒng)的實(shí)際輸出值,給定值與實(shí)際輸出值構(gòu)成控制偏差e(t) = r(t) ? y(t).

e(t)作為 PID 控制的輸入,u(t)作為 PID 控制器的輸出和被控對(duì)象的輸入。 所以模擬 PID 控制器的控制規(guī)律為:

三個(gè)重要的參數(shù)

Kp:控制器的比例系數(shù).

Ti:控制器的積分時(shí)間,也稱積分系數(shù).

Td:控制器的微分時(shí)間,也稱微分系數(shù).

1、P - 比例部分

比例環(huán)節(jié)的作用是對(duì)偏差瞬間作出反應(yīng)。偏差一旦產(chǎn)生控制器立即產(chǎn)生控制作用, 使控制量向減少偏差的方向變化。 控制作用的強(qiáng)弱取決于比例系數(shù)Kp, 比例系數(shù)Kp越大,控制作用越強(qiáng), 則過渡過程越快, 控制過程的靜態(tài)偏差也就越??; 但是Kp越大,也越容易產(chǎn)生振蕩, 破壞系統(tǒng)的穩(wěn)定性。 故而, 比例系數(shù)Kp選擇必須恰當(dāng), 才能過渡時(shí)間少, 靜差小而又穩(wěn)定的效果。

2、I - 積分部分

從積分部分的數(shù)學(xué)表達(dá)式可以知道, 只要存在偏差, 則它的控制作用就不斷的增加; 只有在偏差e(t)=0時(shí), 它的積分才能是一個(gè)常數(shù),控制作用才是一個(gè)不會(huì)增加的常數(shù)。 可見,積分部分可以消除系統(tǒng)的偏差。

積分環(huán)節(jié)的調(diào)節(jié)作用雖然會(huì)消除靜態(tài)誤差,但也會(huì)降低系統(tǒng)的響應(yīng)速度,增加系統(tǒng)的超調(diào)量。積分常數(shù)Ti越大,積分的積累作用越弱,這時(shí)系統(tǒng)在過渡時(shí)不會(huì)產(chǎn)生振蕩; 但是增大積分常數(shù)Ti會(huì)減慢靜態(tài)誤差的消除過程,消除偏差所需的時(shí)間也較長(zhǎng), 但可以減少超調(diào)量,提高系統(tǒng)的穩(wěn)定性。

當(dāng) Ti 較小時(shí), 則積分的作用較強(qiáng),這時(shí)系統(tǒng)過渡時(shí)間中有可能產(chǎn)生振蕩,不過消除偏差所需的時(shí)間較短。所以必須根據(jù)實(shí)際控制的具體要求來確定Ti 。

3、D - 微分部分

實(shí)際的控制系統(tǒng)除了希望消除靜態(tài)誤差外,還要求加快調(diào)節(jié)過程。在偏差出現(xiàn)的瞬間,或在偏差變化的瞬間, 不但要對(duì)偏差量做出立即響應(yīng)(比例環(huán)節(jié)的作用), 而且要根據(jù)偏差的變化趨勢(shì)預(yù)先給出適當(dāng)?shù)募m正。為了實(shí)現(xiàn)這一作用,可在 PI 控制器的基礎(chǔ)上加入微分環(huán)節(jié),形成 PID 控制器。

微分環(huán)節(jié)的作用使阻止偏差的變化。它是根據(jù)偏差的變化趨勢(shì)(變化速度)進(jìn)行控制。偏差變化的越快,微分控制器的輸出就越大,并能在偏差值變大之前進(jìn)行修正。微分作用的引入, 將有助于減小超調(diào)量, 克服振蕩, 使系統(tǒng)趨于穩(wěn)定, 特別對(duì)髙階系統(tǒng)非常有利, 它加快了系統(tǒng)的跟蹤速度。但微分的作用對(duì)輸入信號(hào)的噪聲很敏感,對(duì)那些噪聲較大的系統(tǒng)一般不用微分, 或在微分起作用之前先對(duì)輸入信號(hào)進(jìn)行濾波。

ⅢPID算法代碼

PID 控制算法可以分為位置式 PID和增量式 PID控制算法。

兩者的區(qū)別:

(1)位置式PID控制的輸出與整個(gè)過去的狀態(tài)有關(guān),用到了誤差的累加值;而增量式PID的輸出只與當(dāng)前拍和前兩拍的誤差有關(guān),因此位置式PID控制的累積誤差相對(duì)更大;

(2)增量式PID控制輸出的是控制量增量,并無積分作用,因此該方法適用于執(zhí)行機(jī)構(gòu)帶積分部件的對(duì)象,如步進(jìn)電機(jī)等,而位置式PID適用于執(zhí)行機(jī)構(gòu)不帶積分部件的對(duì)象,如電液伺服閥。

(3)由于增量式PID輸出的是控制量增量,如果計(jì)算機(jī)出現(xiàn)故障,誤動(dòng)作影響較小,而執(zhí)行機(jī)構(gòu)本身有記憶功能,可仍保持原位,不會(huì)嚴(yán)重影響系統(tǒng)的工作,而位置式的輸出直接對(duì)應(yīng)對(duì)象的輸出,因此對(duì)系統(tǒng)影響較大。

下面給出公式直接體現(xiàn)的C語言源代碼(請(qǐng)結(jié)合項(xiàng)目修改源代碼):

1.位置式PID

typedef struct { float Kp; //比例系數(shù)Proportional float Ki; //積分系數(shù)Integral float Kd; //微分系數(shù)Derivative float Ek; //當(dāng)前誤差 float Ek1; //前一次誤差 e(k-1) float Ek2; //再前一次誤差 e(k-2) float LocSum; //累計(jì)積分位置 }PID_LocTypeDef; /************************************************函數(shù)名稱 : PID_Loc功 能 : PID位置(Location)計(jì)算參 數(shù) : SetValue ------ 設(shè)置值(期望值) ActualValue --- 實(shí)際值(反饋值) PID ----------- PID數(shù)據(jù)結(jié)構(gòu)返 回 值 : PIDLoc -------- PID位置作 者 : strongerHuang*************************************************/ float PID_Loc(float SetValue, float ActualValue, PID_LocTypeDef *PID){ float PIDLoc; //位置 PID->Ek = SetValue - ActualValue; PID->LocSum += PID->Ek; //累計(jì)誤差 PIDLoc = PID->Kp * PID->Ek + (PID->Ki * PID->LocSum) + PID->Kd * (PID->Ek1 - PID->Ek); PID->Ek1 = PID->Ek; return PIDLoc;}

2.增量式PID

typedef struct { float Kp; //比例系數(shù)Proportional float Ki; //積分系數(shù)Integral float Kd; //微分系數(shù)Derivative float Ek; //當(dāng)前誤差 float Ek1; //前一次誤差 e(k-1) float Ek2; //再前一次誤差 e(k-2) }PID_IncTypeDef; /************************************************函數(shù)名稱 : PID_Inc功 能 : PID增量(Increment)計(jì)算參 數(shù) : SetValue ------ 設(shè)置值(期望值) ActualValue --- 實(shí)際值(反饋值) PID ----------- PID數(shù)據(jù)結(jié)構(gòu)返 回 值 : PIDInc -------- 本次PID增量(+/-)作 者 : strongerHuang*************************************************/ float PID_Inc(float SetValue, float ActualValue, PID_IncTypeDef *PID){ float PIDInc; //增量 PID->Ek = SetValue - ActualValue; PIDInc = (PID->Kp * PID->Ek) - (PID->Ki * PID->Ek1) + (PID->Kd * PID->Ek2); PID->Ek2 = PID->Ek1; PID->Ek1 = PID->Ek; return PIDInc;}

聲明:本文內(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)投訴
  • 電機(jī)
    +關(guān)注

    關(guān)注

    142

    文章

    9021

    瀏覽量

    145501
  • PID算法
    +關(guān)注

    關(guān)注

    2

    文章

    172

    瀏覽量

    24311
  • Integrate
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    9002
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    西門子增量式PID算法帶積分分離

    西門子增量式帶積分分離PID控制器是一種改進(jìn)的PID控制算法,它結(jié)合了增量式PID和積分分離的優(yōu)點(diǎn)。這種控制器在處理某些特定類型的控制問題時(shí)特別有效,尤其是在需要快速響應(yīng)且避免積分飽和
    的頭像 發(fā)表于 12-07 09:34 ?239次閱讀
    西門子增量式<b class='flag-5'>PID</b><b class='flag-5'>算法</b>帶積分分離

    如何使用Python實(shí)現(xiàn)PID控制

    PID控制(比例-積分-微分控制)是一種常見的反饋控制算法,廣泛應(yīng)用于工業(yè)控制系統(tǒng)中。在Python中實(shí)現(xiàn)PID控制,我們可以遵循以下步驟: 1. 理解PID控制原理
    的頭像 發(fā)表于 11-14 09:09 ?486次閱讀

    PID控制在工業(yè)自動(dòng)化中的重要性

    在現(xiàn)代工業(yè)自動(dòng)化領(lǐng)域,精確和高效的控制是實(shí)現(xiàn)生產(chǎn)效率和質(zhì)量的關(guān)鍵。PID控制作為一種經(jīng)典的控制算法,因其簡(jiǎn)單、魯棒和易于實(shí)現(xiàn)的特點(diǎn),在工業(yè)控制系統(tǒng)中占據(jù)了舉足輕重的地位。 PID控制的
    的頭像 發(fā)表于 11-13 14:33 ?700次閱讀

    什么是PID控制器的原理 PID算法在自動(dòng)化中的應(yīng)用

    PID控制器是一種廣泛應(yīng)用于工業(yè)控制系統(tǒng)中的控制器,它根據(jù)系統(tǒng)的偏差來計(jì)算控制量,以實(shí)現(xiàn)對(duì)被控對(duì)象的精確控制。PID是比例(Proportional)、積分(Integral)和微分
    的頭像 發(fā)表于 11-13 14:27 ?847次閱讀

    什么是PID控制與傳統(tǒng)控制的區(qū)別

    在自動(dòng)化控制系統(tǒng)中,PID控制(比例-積分-微分控制)是一種廣泛應(yīng)用的控制算法。它以其簡(jiǎn)單、魯棒和易于實(shí)現(xiàn)的特點(diǎn),在工業(yè)和工程領(lǐng)域中占據(jù)了重要地位。然而,隨著技術(shù)的發(fā)展,傳統(tǒng)控制方法已經(jīng)不能完全滿足
    的頭像 發(fā)表于 11-06 10:34 ?451次閱讀

    PID控制的優(yōu)缺點(diǎn)分析 PID參數(shù)調(diào)節(jié)的常見方法

    PID控制,即比例-積分-微分控制,是一種廣泛應(yīng)用于工業(yè)控制系統(tǒng)中的控制算法。它通過比例(P)、積分(I)和微分(D)三個(gè)參數(shù)的調(diào)整來實(shí)現(xiàn)對(duì)系統(tǒng)輸出的精確控制。 PID控制的優(yōu)點(diǎn) 簡(jiǎn)單易行 :
    的頭像 發(fā)表于 11-06 10:33 ?1669次閱讀

    PID算法的基本原理介紹

    在現(xiàn)代工業(yè)自動(dòng)化和控制系統(tǒng)中,PID控制器因其簡(jiǎn)單、魯棒和高效而成為最廣泛使用的控制算法之一。PID代表比例(Proportional)、積分(Integral)和微分(Derivative
    的頭像 發(fā)表于 11-06 10:28 ?388次閱讀

    第13章-循跡功能 STM32智能小車循跡教程 PID循跡算法分析

    第13章-循跡功能 循跡小車講解 原理分析 STM32智能小車循跡教程 紅外對(duì)管使用 PID循跡算法分析V3:HAL庫(kù)開發(fā)、功能:PID速度控制、PID循跡、
    的頭像 發(fā)表于 08-21 16:27 ?1497次閱讀
    第13章-循跡功能 STM32智能小車循跡教程 <b class='flag-5'>PID</b>循跡<b class='flag-5'>算法</b>分析

    機(jī)器學(xué)習(xí)的經(jīng)典算法與應(yīng)用

    關(guān)于數(shù)據(jù)機(jī)器學(xué)習(xí)就是喂入算法和數(shù)據(jù),讓算法從數(shù)據(jù)中尋找一種相應(yīng)的關(guān)系。Iris鳶尾花數(shù)據(jù)集是一個(gè)經(jīng)典數(shù)據(jù)集,在統(tǒng)計(jì)學(xué)習(xí)和機(jī)器學(xué)習(xí)領(lǐng)域都經(jīng)常被用作示例。數(shù)據(jù)集內(nèi)包含3類共150條記錄,每類各50個(gè)數(shù)
    的頭像 發(fā)表于 06-27 08:27 ?1661次閱讀
    機(jī)器學(xué)習(xí)的<b class='flag-5'>經(jīng)典</b><b class='flag-5'>算法</b>與應(yīng)用

    PID在工業(yè)控制領(lǐng)域的應(yīng)用

    在工業(yè)控制領(lǐng)域,PID(比例-積分-微分)控制算法以其簡(jiǎn)單實(shí)用、魯棒性好、應(yīng)用范圍廣等特點(diǎn),成為了工程師們實(shí)現(xiàn)穩(wěn)定、高效控制的首選方案。PID控制算法通過調(diào)整比例、積分和微分三個(gè)參數(shù),
    的頭像 發(fā)表于 06-11 14:47 ?1159次閱讀

    位置式PID與增量式PID的區(qū)別

    PID(比例-積分-微分)控制器作為工業(yè)自動(dòng)化領(lǐng)域中的核心控制算法,廣泛應(yīng)用于各種需要精確控制的系統(tǒng)中。在PID控制器的實(shí)現(xiàn)中,有兩種主要的控制模式:位置式PID和增量式
    的頭像 發(fā)表于 06-05 16:23 ?6906次閱讀

    在定時(shí)器內(nèi)使用浮點(diǎn)運(yùn)算的PID控制算法,程序就會(huì)重啟,為什么?

    在定時(shí)器內(nèi)使用浮點(diǎn)運(yùn)算的PID控制算法,程序就會(huì)重啟,把浮點(diǎn)數(shù)換為整形數(shù)據(jù)就不會(huì)。
    發(fā)表于 06-05 07:24

    什么是PIDPID各個(gè)參數(shù)有什么作用?

    PID,就是“比例(proportional)、積分(integral)、微分(derivative)”,是一種很常見的控制算法。 PID已經(jīng)有107年的歷史了,它并不是什么很神圣的東西,大家一定都見過
    發(fā)表于 03-18 11:24 ?1.2w次閱讀
    什么是<b class='flag-5'>PID</b>?<b class='flag-5'>PID</b>各個(gè)參數(shù)有什么作用?

    什么是pid控制原理 pid各個(gè)參數(shù)對(duì)系統(tǒng)的影響

    PID(Proportional-Integral-Derivative)控制是一種常見的控制算法,廣泛應(yīng)用于工業(yè)過程控制、機(jī)器人控制、自動(dòng)駕駛等領(lǐng)域。本文將詳細(xì)介紹PID控制的原理以及其中的各個(gè)
    的頭像 發(fā)表于 01-22 15:35 ?5910次閱讀

    什么是PID控制器?PID控制器積分控制介紹

    PID,就是“比例(proportional)、積分(integral)、微分(derivative)”,是一種很常見的控制算法
    的頭像 發(fā)表于 01-11 18:14 ?1410次閱讀
    什么是<b class='flag-5'>PID</b>控制器?<b class='flag-5'>PID</b>控制器積分控制介紹