概述
注意:
注释代码是基于采样周期ts=20s形式… ;频域到时域变化请参考 MATLAB编程测试传递函数的响应曲线(系统辨识第一篇)。
https://blog.csdn.net/weixin_37928884/article/details/127799637
% 传递函数:一阶惯性加滞后
%
1
%
exp(-80*s) * --------
%
60 s + 1
clear;close all;clc;
% 采样周期ts与tdelay有关、修改ts观察tdelay变化
ts=20;
sys=tf([1],[60,1],'inputdelay',80);
dsys=c2d(sys,ts,'zoh');
[num,den]=tfdata(dsys,'v');
% u_1=0;
% u_2=0;
% u_3=0;
% u_4=0;
% u_5=0;
% 设定初值u,由于滞后,故y的输出在刚开始有输入的滞后时间内为零
tdelay = dsys.InputDelay + 1;
for m=1:tdelay
u_(m)=0;
end
%-----------------计算PID使用-----------------%
y_1=0;
y_2=0;
y_3=0;
error_1=0;
error_2=0;
%-----------------计算PID使用-----------------%
ei=0;
for k=1:1:2000/ts
time(k)=k*ts;
rin(k)=1.0;%Step Signal
%
yout(k)=-den(2)*y_1+num(2)*u_5;
yout(k)=-den(2)*y_1+num(2)*u_(tdelay);
error(k)=rin(k)-yout(k);
kp=0.45;
kd=12;
ki=0.0048;
ei=ei+(error(k)+error_1)/2*ts;
u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*ei;
if u(k)>=10
u(k)=10;
end
if u(k)<=-10
u(k)=-10;
end
%
u_5=u_4;
%
u_4=u_3;
%
u_3=u_2;
%
u_2=u_1;
%
u_1=u(k);
for m=2:tdelay
u_(m)=u_(m-1);
end
u_(1)=u(k);
%-----------------计算PID使用-----------------%
y_3=y_2;
y_2=y_1;
y_1=yout(k);
error_2=error_1;
error_1=error(k);
%-----------------计算PID使用-----------------%
end
figure(1);
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)');ylabel('rin,yout');
pid参数自整定用到Simulink,这里给出调节PID方法:
第一种:经验法 参考pid调试经验,观察现象调试参数
https://download.csdn.net/download/weixin_37928884/86764992
第二种:自整定法
第一步:选择Discrete-time;
第二步:Sample time(-1 for inherited)20;
第三步:去掉Use filtered derivative;
第四步:点击Tune…按钮,弹出自整定界面;
第五步:点击Update Block,将自整定pid参数返回PID(Z)块配置中。
MATLAB的m文件代码采用Simulink中整定pid参数,运行结果如下:
综上所述,以上方法可行…
最后
以上就是儒雅服饰为你收集整理的MATLAB测试一阶惯性滞后系统、PID参数采用Simulink整定结果的全部内容,希望文章能够帮你解决MATLAB测试一阶惯性滞后系统、PID参数采用Simulink整定结果所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复