⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fuzzypid.m

📁 实现PID解耦控制算法
💻 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 + -