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和增量式...