700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > MATLAB测试一阶惯性滞后系统 PID参数采用Simulink整定结果

MATLAB测试一阶惯性滞后系统 PID参数采用Simulink整定结果

时间:2021-03-24 15:20:11

相关推荐

MATLAB测试一阶惯性滞后系统 PID参数采用Simulink整定结果

注意:

注释代码是基于采样周期ts=20s形式… ;频域到时域变化请参考 MATLAB编程测试传递函数的响应曲线(系统辨识第一篇)。

/weixin_37928884/article/details/127799637

% 传递函数:一阶惯性加滞后% 1% exp(-80*s) * --------%60 s + 1clear;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:tdelayu_(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/tstime(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)>=10u(k)=10;endif u(k)<=-10u(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:tdelayu_(m)=u_(m-1);endu_(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使用-----------------%endfigure(1);plot(time,rin,'b',time,yout,'r');xlabel('time(s)');ylabel('rin,yout');

pid参数自整定用到Simulink,这里给出调节PID方法:

第一种:经验法 参考pid调试经验,观察现象调试参数

/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参数,运行结果如下:

综上所述,以上方法可行…

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。