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

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

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

什么是PID?位置式PID與增量式PID有何不同

電子設(shè)計 ? 來源:CSDN博主 ? 作者:Z小旋 ? 2021-03-22 15:32 ? 次閱讀

1PID控制算法

什么是PID

PID 控制器以各種形式使用超過了 1 世紀(jì),廣泛應(yīng)用在機(jī)械設(shè)備、氣動設(shè)備 和電子設(shè)備.在工業(yè)應(yīng)用中PID及其衍生算法是應(yīng)用最廣泛的算法之一,是當(dāng)之無愧的萬能算法

PID 實指“比例 proportional”、“積分 integral”、“微分 derivative”,這三項構(gòu) 成 PID 基本要素。每一項完成不同任務(wù),對系統(tǒng)功能產(chǎn)生不同的影響。它的結(jié)構(gòu)簡單,參數(shù)易 于調(diào)整,是控制系統(tǒng)中經(jīng)常采用的控制算法。

PID:比例單元(P)、積分單元(I)和微分單元(D)組成

其中:u(t)為控制器輸出的控制量;(輸出)

e(t)為偏差信號,它等于給定量與輸出量之差;(輸入)

KP 為比例系數(shù);(對應(yīng)參數(shù) P)

TI 為積分時間常數(shù);(對應(yīng)參數(shù)I)

TD 為微分時間常數(shù)。(對應(yīng)參數(shù) D)

數(shù)字 PID 控制算法通常分為位置式 PID 控制算法和增量式 PID 控制算法。

位置式 PID 算法 :

e(k): 用戶設(shè)定的值(目標(biāo)值) - 控制對象的當(dāng)前的狀態(tài)值

比例P : e(k)

積分I : ∑e(i) 誤差的累加

微分D : e(k) - e(k-1) 這次誤差-上次誤差

也就是位置式PID是當(dāng)前系統(tǒng)的實際位置,與你想要達(dá)到的預(yù)期位置的偏差,進(jìn)行PID控制

因為有誤差積分 ∑e(i),一直累加,也就是當(dāng)前的輸出u(k)與過去的所有狀態(tài)都有關(guān)系,用到了誤差的累加值;(誤差e會有誤差累加),輸出的u(k)對應(yīng)的是執(zhí)行機(jī)構(gòu)的實際位置,,一旦控制輸出出錯(控制對象的當(dāng)前的狀態(tài)值出現(xiàn)問題 ),u(k)的大幅變化會引起系統(tǒng)的大幅變化

并且位置式PID在積分項達(dá)到飽和時,誤差仍然會在積分作用下繼續(xù)累積,一旦誤差開始反向變化,系統(tǒng)需要一定時間從飽和區(qū)退出,所以在u(k)達(dá)到最大和最小時,要停止積分作用,并且要有積分限幅和輸出限幅

所以在使用位置式PID時,一般我們直接使用PD控制

而位置式 PID 適用于執(zhí)行機(jī)構(gòu)不帶積分部件的對象,如舵機(jī)和平衡小車的直立和溫控系統(tǒng)的控制

結(jié)合代碼可以很好理解

typedef struct PID

{

float P,I,D,limit;

}PID;

typedef struct Error

{

float Current_Error;//當(dāng)前誤差

float Last_Error;//上一次誤差

float Previous_Error;//上上次誤差

}Error;

/*!

* @brief 位置式PID

* @since v1.0

* *sptr :誤差參數(shù)

* *pid: PID參數(shù)

* NowPlace:當(dāng)前位置

* Point: 預(yù)期位置

*/

// 位置式PID控制

float PID_Realize(Error *sptr,PID *pid, int32 NowPlace, float Point)

{

int32 iError, // 當(dāng)前誤差

Realize; //實際輸出

iError = Point - NowPlace; // 計算當(dāng)前誤差

sptr->Current_Error += pid->I * iError; // 誤差積分

sptr->Current_Error = sptr->Current_Error > pid->limit?pid->limit:sptr->Current_Error;//積分限幅

sptr->Current_Error = sptr->Current_Error <-pid->limit?-pid->limit:sptr->Current_Error;

Realize = pid->P * iError //比例P

+ sptr->Current_Error //積分I

+ pid->D * (iError - sptr->Last_Error); //微分D

sptr->Last_Error = iError; // 更新上次誤差

return Realize; // 返回實際值

}

增量式PID

比例P : e(k)-e(k-1) 這次誤差-上次誤差

積分I : e(i) 誤差

微分D : e(k) - 2e(k-1)+e(k-2) 這次誤差-2*上次誤差+上上次誤差

增量式PID根據(jù)公式可以很好地看出,一旦確定了 KP、TI 、TD,只要使用前后三次測量值的偏差, 即可由公式求出控制增量

而得出的控制量▲u(k)對應(yīng)的是近幾次位置誤差的增量,而不是對應(yīng)與實際位置的偏差 沒有誤差累加

也就是說,增量式PID中不需要累加。控制增量Δu(k)的確定僅與最近3次的采樣值有關(guān),容易通過加權(quán)處理獲得比較好的控制效果,并且在系統(tǒng)發(fā)生問題時,增量式不會嚴(yán)重影響系統(tǒng)的工作

總結(jié):增量型 PID,是對位置型 PID 取增量,這時控制器輸出的是相鄰兩次采樣時刻所計算的位置值

之差,得到的結(jié)果是增量,即在上一次的控制量的基礎(chǔ)上需要增加(負(fù)值意味減少)控制量。

typedef struct PID

{

float P,I,D,limit;

}PID;

typedef struct Error

{

float Current_Error;//當(dāng)前誤差

float Last_Error;//上一次誤差

float Previous_Error;//上上次誤差

}Error;

/*!

* @brief 增量式PID

* @since v1.0

* *sptr :誤差參數(shù)

* *pid: PID參數(shù)

* NowPlace:實際值

* Point: 期望值

*/

// 增量式PID電機(jī)控制

int32 PID_Increase(Error *sptr, PID *pid, int32 NowPlace, int32 Point)

{

int32 iError, //當(dāng)前誤差

Increase; //最后得出的實際增量

iError = Point - NowPlace; // 計算當(dāng)前誤差

Increase = pid->P * (iError - sptr->Last_Error) //比例P

+ pid->I * iError //積分I

+ pid->D * (iError - 2 * sptr->Last_Error + sptr->Previous_Error); //微分D

sptr->Previous_Error = sptr->Last_Error; // 更新前次誤差

sptr->Last_Error = iError; // 更新上次誤差

return Increase; // 返回增量

}

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

1增量式算法不需要做累加,控制量增量的確定僅與最近幾次偏差采樣值有關(guān),計算誤差對控制 量計算的影響較小。而位置式算法要用到過去偏差的累加值,容易產(chǎn)生較大的累加誤差。

2增量式算法得出的是控制量的增量,例如在閥門控制中,只輸出閥門開度的變化部分,誤動作 影響小,必要時還可通過邏輯判斷限制或禁止本次輸出,不會嚴(yán)重影響系統(tǒng)的工作。 而位置式的輸出直接對應(yīng)對象的輸出,因此對系統(tǒng)影響較大。

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

4在進(jìn)行PID控制時,位置式PID需要有積分限幅和輸出限幅,而增量式PID只需輸出限幅

位置式PID優(yōu)缺點:

優(yōu)點:

①位置式PID是一種非遞推式算法,可直接控制執(zhí)行機(jī)構(gòu)(如平衡小車),u(k)的值和執(zhí)行機(jī)構(gòu)的實際位置(如小車當(dāng)前角度)是一一對應(yīng)的,因此在執(zhí)行機(jī)構(gòu)不帶積分部件的對象中可以很好應(yīng)用

缺點:

①每次輸出均與過去的狀態(tài)有關(guān),計算時要對e(k)進(jìn)行累加,運(yùn)算工作量大。

增量式PID優(yōu)缺點:

優(yōu)點:

①誤動作時影響小,必要時可用邏輯判斷的方法去掉出錯數(shù)據(jù)。

②手動/自動切換時沖擊小,便于實現(xiàn)無擾動切換。當(dāng)計算機(jī)故障時,仍能保持原值。

③算式中不需要累加。控制增量Δu(k)的確定僅與最近3次的采樣值有關(guān)。

缺點:

①積分截斷效應(yīng)大,有穩(wěn)態(tài)誤差;

②溢出的影響大。有的被控對象用增量式則不太好;

編輯:hfy

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

    關(guān)注

    3534

    文章

    1879

    瀏覽量

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

    關(guān)注

    35

    文章

    1472

    瀏覽量

    85511
收藏 人收藏

    評論

    相關(guān)推薦

    請問一下STM MCSDK_v5.3.2的PID(PI_Controller() function)是增量PID位置PID?

    請問一下STM MCSDK_v5.3.2的PID(PI_Controller() function)是增量PID位置
    發(fā)表于 04-22 08:09

    淺析位置PID增量PID算法

    位置PID增量PID算法通常依據(jù)控制器輸出與執(zhí)行機(jī)構(gòu)的對應(yīng)關(guān)系,將基本數(shù)字
    發(fā)表于 01-15 18:35

    教你用C語言實現(xiàn)位置PID增量PID

    ,對那些噪聲較大的系統(tǒng)一般不用微分, 或在微分起作用之前先對輸入信號進(jìn)行濾波。ⅢPID算法代碼 PID 控制算法可以分為位置 PID
    發(fā)表于 05-30 08:00

    請問是用位置PID好還是增量PID好?

    本人菜鳥一只,最近遇到一個產(chǎn)品,要求用PID對烘箱控制溫度。溫度的分辨率是0.01℃,要求溫度控制在60℃,請問:1、用位置PID好,還是增量
    發(fā)表于 10-29 03:58

    位置PID增量PID的區(qū)別在哪?

    什么是PIDPID控制器主要有哪些應(yīng)用?位置PID增量
    發(fā)表于 07-13 08:13

    PID控制及位置增量的區(qū)別在哪

    PID控制及位置增量區(qū)別
    發(fā)表于 08-27 07:01

    什么是增量PID

    目錄:一、什么是增量PID二、硬件部分三、軟件部
    發(fā)表于 09-13 09:05

    位置PID增量PID簡介

    位置PID公式增量PID公式位置
    發(fā)表于 01-20 07:40

    位置PID增量PID區(qū)別是什么?

    位置 PID增量 PID什么區(qū)別。在小車調(diào)
    發(fā)表于 10-26 06:54

    請問如何調(diào)節(jié)增量pid?

    增量pid中的kpkikd對應(yīng)位置的中的pi d 的值嗎,調(diào)節(jié)增量
    發(fā)表于 11-09 07:27

    增量PID控制算法

    增量PID控制算法-2011,需要的下來看看。
    發(fā)表于 04-01 14:54 ?30次下載

    增量位置PID

    最近看了一些文獻(xiàn),發(fā)現(xiàn)其中一些文獻(xiàn)標(biāo)題寫著是用增量PID控制,但是看表達(dá)式乎仍是位置PID
    發(fā)表于 11-25 11:31 ?1567次閱讀

    使用單片機(jī)和Arduino實現(xiàn)增量PID位置PID算法和PID庫免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)和Arduino實現(xiàn)增量PID位置PID算法和
    發(fā)表于 05-28 16:30 ?69次下載
    使用單片機(jī)和Arduino實現(xiàn)<b class='flag-5'>增量</b><b class='flag-5'>式</b><b class='flag-5'>PID</b><b class='flag-5'>位置</b><b class='flag-5'>式</b><b class='flag-5'>PID</b>算法和<b class='flag-5'>PID</b>庫免費下載

    PID:智能小車入門(位置增量

    PID:智能小車入門(位置增量PID的公式今年大二,以一個新人的角度來說一下
    發(fā)表于 01-14 11:22 ?17次下載
    <b class='flag-5'>PID</b>:智能小車入門(<b class='flag-5'>位置</b><b class='flag-5'>式</b>和<b class='flag-5'>增量</b><b class='flag-5'>式</b>)

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

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