?? fuzzypid.m
字號:
close all;
ts=1; %抽樣時間
N_sample=200; %使用200個點采樣,時間跨度為200s
kp=1;
ks=1;
kd=1; %對PID參數付初值
e=zeros(1,N_sample);
y=zeros(1,N_sample);
ec=zeros(1,N_sample);
time=zeros(1,N_sample);
time(2)=ts; %這是因為下面K從3開始
for k=3:1:N_sample
sys=tf([0,1],[kd,ks,kp]); %輸入pID傳遞函數
dsys=c2d(sys,ts,'zoh') ;%連續的傳遞函數離散化
[num,den]=tfdata(dsys,'v'); %得到H(Z)的分子和分母
%根據H(Z)的分子分母得到控制方程
y(k)=(-den(2)*y(k-1)-den(3)*y(k-2)+num(2)*e(k-1)+num(3)*e(k-2))/den(1);
r(k)=1; %設定值
e(k)=r(k)-y(k);
ec(k)=e(k)-e(k-1);
%kp=0.2*abs(e(k))+0.8*abs(ec(k)); %控制函數,如果不采用模糊PID可以把這三句話屏蔽調,就是一般的pid控制
%ks=0.2*abs(e(k))+0.9*abs(ec(k));
%kd=0.2*abs(e(k))+0.122*abs(ec(k));
time(k)=k*ts;
end
figure(1);
plot(time,y,'r'); %畫圖
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -