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

34 篇文章 1 订阅

注意:
注释代码是基于采样周期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参数,运行结果如下:

在这里插入图片描述

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

  • 0
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨铮...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值