增量式PID計算公式4個疑問與理解

2021-07-31 15:15:20 字數 1997 閱讀 7463

一開始見到pid計算公式時總是疑問為什麼是那樣子?為了理解那幾道公式,當時將其未簡化前的公式「活生生」地算了一遍,現在想來,這樣的演算過程固然有助於理解,但假如一開始就帶著對疑問的答案已有一定看法後再進行演算則會理解的更快!

首先推薦白志剛的《由入門到精通—吃透pid 2.0版》看完

一、二章之後,建議你先通過實踐練習然後再回來看接下來的所有章節,這樣你對這本書的掌握會更加牢固、節省時間。

pid就是對輸入偏差進行比例積分微分運算,運算的疊加結果去控制執行機構。實踐練習中,如何把這一原理轉化為程式?為什麼是用那幾個error進行計算?

以下是我摘錄的一段pid程式,我曾用其對智慧型車的速度進行閉環控制:

p:proportional  比例

i:integrating 積分

d:differentiation 微分

pwm_value:輸出pwm暫空比的值

current_error:當前偏差  last_error:上次偏差   prev_error:上上次偏差

增量式pid計算公式: 

p=kp*(current_error﹣last_error);

d=kd*(current_error﹣2*last_error﹢prev_error);

i=ki*current_error;

pid_add=pwm_value+p﹢i﹢d;

一、為什麼是pid_add=pwm_value+(p﹢i﹢d)而不是pid_add=p+i+d?

二、純比例控制p=kp*(current_error﹣last_error),怎樣理解﹙current_error﹣last_error﹚?

pid中純比例控制就是把被控制量的偏差乘以乙個係數作為調節器的輸出,在增量式pid中,反映在程式上的,我們被控制量就是error,而實際上,例如在速度控制中error=目標速度﹣當前速度,所以明確目的:我們通過控制error趨近於0,最終使得當前速度趨近於目標速度。

如右圖,假如考試時有這麼一種題:函式經過時間δt,由y1變化為y2時,問y增長的比例為多少?你很容易地得出答案:k=﹙y2-y1﹚/δt;

以速度控制為例,若y為error,得右圖,在時間t1到t2的過程中,我們可以得到輸出控制量error變化的趨勢為(current_error—last_error)/δt。得到偏差的變化趨勢後,乘以kp使輸出量與error相對變化。這個道理猶如模擬電子電路中,聲音頻號經過功放管放大輸出的訊號與輸入訊號相對應變化。

三、微分控制:

然而,通常情況下,我們的被控制量並非純比例式地變化,如下圖:

四、積分控制:

積分控制可以消除偏差,體現在公式中較容易理解,當前的偏差差經過係數ki的放大後對映為輸出控制量,即i=ki*current_error。p只要前後偏差之差為0,即current_error—last_current=0,則不進行調節,d只要前後偏差變化率為0,即(current_error﹣2*last_error﹢prev_error)=0,則不進行調節。而對於積分只要偏差存在,調節就始終進行,因此積分可以消除誤差度,但在在某些情況下,一定範圍內的誤差是允許的,而如果此時積分調節始終存在,可能會導致系統穩定性下降,如右圖,此時可通過弱化積分係數ki使系統穩定。

計算公式 UPS電池計算公式

很多的弱電朋友提到ups電池容量如何確定,其實是有計算公式的,今天我們就一起來了解ups電池的計算方法。計算如下一 恆電流模式計算 根據能量守恆原理,按如下公式計算 c pl t vbat k 其中 c 為蓄電池容量 ah pl為ups輸出功率 w t 為電池後備時間 h vbat是電池組電壓 vd...

PID的位置式PID和增量式PID

位置式 控制的輸出與整個過去的狀態有關,用到了誤差的累加值 pid適用於執行機構不帶積分部件的物件。輸出直接對應物件的輸出,因此對系統影響較大。增量式 輸出只與當前拍和前兩拍的誤差有關,因此位置式pid控制的累積誤差相對更大。控制輸出的是控制量增量,並無積分作用。適用於執行機構帶積分部件的物件,如步...

增量式PID控制

增量式pid控制,數字pid控制演算法的一種基本形式,是通過對控制量的增量 本次控制量和上次控制量的差值 進行pid控制的一種控制演算法。中文名增量式pid控制 外文名increment pid control 基本概念 對控制量的增量進行pid控制 相關概念 位置式pid控制 相關領域 控制理論 ...