增量式數字pid的matlab實現

2021-10-01 10:43:07 字數 2184 閱讀 5205

clear all;

close all;

%獲取離散化模型

ts =

0.001

;%取樣時間

sys =tf(

[400],

[1,50

,0])

;dsys =

c2d(sys,ts,

'z')

;[num,den]

=tfdata

(dsys,

'v')

;%設定pid引數

k_p=8;

k_i=

0.1;

k_d=10;

%設定輸入訊號形式

y_d =

ones(1

,500);

%輸入訊號為階躍訊號

%y_d =

[ones(1

,250

)zeros(1

,250)]

;%輸入訊號為階躍訊號

%for k=1:

1:500%輸入訊號為正弦訊號

%y_d

(k)=

0.5*

sin(

4*pi*k*ts)

;% end

y =zeros(1

,500);

%初始化輸出訊號

y_feed=0;

%反饋回來的訊號,y_feed=y

erro =0;

%訊號差值

erro_1 =0;

%上一時刻訊號差值

erro_2 =0;

%上上一時刻訊號差值

y_1=0;

%上一時刻的輸出

y_2=0;

%上一上一時刻的輸出

pi_out=0;

%pid控制器的輸出,注意不是系統輸出

pi_out_1=0;

%上一時刻pid控制器的輸出,注意不是系統輸出

pi_out_2=0;

%上一上一時刻pid控制器的輸出,注意不是系統輸出

pi_out =0;

%初始的pid控制輸出值

delta_pi_out =0;

%初始的pid控制輸出增量值

for k=1:

1:500time

(k)=k*ts;

%儲存時間,用於後面畫圖

erro=

y_d(k)

-y_feed;

delta_pi_out = k_p*

(erro - erro_1)

+k_i*erro +k_d*

(erro -

2*erro_1+erro_2)

; pi_out =pi_out+delta_pi_out ;

%對pid的輸出進行限幅

if pi_out>=

10 pi_out =10;

endif pi_out<=-10

pi_out =-10

; end

y(k)=

-den(2

)*y_1-

den(3)

*y_2+

num(2)

* pi_out_1+

num(3)

*pi_out_2;

%控制物件

y_feed=

y(k)

;%更新系統輸出狀態

y_2=y_1;

y_1=

y(k)

;%更新pid輸出狀態

pi_out_2=pi_out_1;

pi_out_1=pi_out;

%更新訊號差值狀態

erro_2=erro_1;

erro_1=erro;

end%畫圖

PID的位置式PID和增量式PID

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

增量式PID控制

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

位置式 和 增量式 PID

pid控制是乙個二階線性控制器 定義 通過調整比例 積分和微分三項引數,使得大多數的工業控制系統獲得良好的閉環控制效能。優點a.技術成熟 b.易被人們熟悉和掌握 c.不需要建立數學模型 d.控制效果好 e.魯棒性 通常依據控制器輸出與執行機構的對應關係,將基本數字pid演算法分為位置式pid和增量式...