PID控制器開發筆記之一 PID演算法原理及基本實現

2022-06-20 16:33:10 字數 2952 閱讀 4488

在自動控制中,pid及其衍生出來的演算法是應用最廣的演算法之一。各個做自動控制的廠家基本都有會實現這一經典演算法。我們在做專案的過程中,也時常會遇到類似的需求,所以就想實現這一演算法以適用於更多的應用場景。

1pid演算法基本原理

pid演算法是控制行業最經典、最簡單、而又最能體現反饋控制思想的演算法。對於一般的研發人員來說,設計和實現pid演算法是完成自動控制系統的基本要求。這一演算法雖然簡單,但真正要實現好,卻也需要下一定功夫。首先我們從pid演算法最基本的原理開始分析和設計這一經典命題。

pid演算法的執行流程是非常簡單的,即利用反饋來檢測偏差訊號,並通過偏差訊號來控制被控量。而控制器本身就是比例、積分、微分三個環節的加和。其功能框圖如下:

根據上圖我們考慮在某個特定的時刻t,此時輸入量為rin(t),輸出量為rout(t),於是偏差就可計算為err(t)=rin(t)-rout(t)。於是pid的基本控制規律就可以表示為如下公式:

其中kp為比例帶,ti為積分時間,td為微分時間。pid控制的基本原理就是如此。

2pid演算法的離散化

上一節簡單介紹了pid演算法的基本原理,但要在計算機上實現就必須將其離散化,接下來我們就說一說pid演算法的離散化問題。在實現離散化之前,我們需要對比例、積分、微分的特性做乙個簡單的說明。

比例就是用來對系統的偏差進行反應,所以只要存在偏差,比例就會起作用。積分主要是用來消除靜差,所謂靜差就是指系統穩定後輸入輸出之間依然存在的差值,而積分就是通過偏差的累計來抵消系統的靜差。而微分則是對偏差的變化趨勢做出反應,根據偏差的變化趨勢實現超前調節,提高反應速度。

在實現離散前,我們假設系統取樣週期為t。假設我們檢查第k個取樣週期,很顯然系統進行第k次取樣。此時的偏差可以表示為err(k)=rin(k)-rout(k),那麼積分就可以表示為:err(k)+ err(k+1)+┈┈,而微分就可以表示為:(err(k)- err(k-1))/t。於是我們可以將第k次取樣時,pid演算法的離線形式表示為:

也可以記為:

這就是所謂的位置型pid演算法的離散描述公式。我們知道還有乙個增量型pid演算法,那麼接下來我們推到一下增量型pid演算法的公式。上面的公式描述了第k個取樣週期的結果,那麼前一時刻也就是k-1個取樣週期就不難表示為:

那麼我們再來說第k個取樣週期的增量,很顯然就是u(k)-u(k-1)。於是我們用第k個取樣週期公式減去第k-1個取樣週期的公式,就得到了增量型pid演算法的表示公式:

當然,增量型pid必須記得一點,就是在記住u(k)=u(k-1)+∆u(k)。

3pid控制器的基本實現

完成了離散化後,我們就可以來實現它了。已經用離散化的資料公式表示出來後,再進型計算機程式設計已經不是問題了。接下來我們就使用c語言分別針對位置型公式和增量型公式來具體實現。

1)位置型pid的簡單實現

位置型pid的實現就是以前面的位置型公式為基礎。這一節我們只是完成最簡單的實現,也就是將前面的離散位置型pid公式的計算機語言化。

首先定義pid物件的結構體:

1

/*定義結構體和公用體*/2

3 typedef struct45

pid;

接下來實現pid控制器:

1

void pidregulation(pid *vpid, float

processvalue)23

這就實現了乙個最簡單的位置型pid控制器,當然沒有考慮任何干擾條件,僅僅只是對數學公式的計算機語言化。

2)增量型pid的簡單實現

增量型pid的實現就是以前面的增量型公式為基礎。這一節我們只是完成最簡單的實現,也就是將前面的離散增量型pid公式的計算機語言化。

首先定義pid物件的結構體:

1

/*定義結構體和公用體*/2

3 typedef struct45

pid;

接下來實現pid控制器:

void pidregulation(pid *vpid, float

processvalue)

這就實現了乙個最簡單的增量型pid控制器,也沒有考慮任何的干擾條件,僅僅只是對數學公式的計算機語言化。

4、基本特點

前面講述並且實現了pid控制器,包括位置型pid控制器和增量型pid控制器。界限來我們對這兩種型別的控制器的特點作乙個簡單的描述。

位置型pid控制器的基本特點:

增量型pid控制器的基本特點:

PID控制器開發筆記之五 變積分PID控制器的實現

在普通的pid控制演算法中,由於積分係數ki是常數,所以在整個控制過程中,積分增量是不變的。然而,系統對於積分項的要求是,系統偏差大時,積分作用應該減弱甚至是全無,而在偏差小時,則應該加強。積分係數取大了會產生超調,甚至積分飽和,取小了又不能短時間內消除靜差。因此,如何根據系統的偏差大小改變積分速度...

PID控制器簡介

pid調節 基於誤差來消除誤差 可以認為是 誤差的過去 i 現在 p 未來 變化趨勢 d的加權和 pid控制器就是根據系統的誤差,利用比例 積分 微分計算出控制量進行控制的。pid控制的不足 1.在實際工業生產過程往往具有非線性 時變不確定,難以建立精確的數學模型,常規的pid控制器不能達到理想的控...

4 ROS程式設計入門 PID控制器

介紹 這篇教程是交給大家怎麼在ros裡寫乙個pid控制器,pid控制器有三部分 比例部分 p 積分部分 i 微分部分 d pid的輸出是這三部分的加和。pid可以控制機械人的位置和航向角,期望機械人向前走x公尺,x即為參考值 pid控制器的輸入期望 旋轉期望角度 pid輸入是里程計訊息。首先你要計算...