系统辨识与Simulink仿真及PID Tuner

%首先设计一个传递函数
num = [ 0.998 ];
den = [ 0.021,1 ];
sys = tf(num, den);
ts = 0.005; %采样时间
dsys = c2d(sys, ts, 'z'); %离散化
[num, den] = tfdata(dsys, 'v'); %v代表强制以向量的格式输出num和den

e_1 = 0;    %前一时刻的误差
Ee = 0;     %累积误差
u_1 = 0.0;  %前一时刻的控制量
y_1 = 0;    %前一时刻的输出
%PID参数
% Kp = 0.22;
% Ki = 0.13;
%Kd = 0.00099;
u = zeros(1,1000);
time = zeros(1,1000);
for k = 1 : 1000
    time(k) = k * ts;   %时间参数
    r(k) = 1500;        %目标值
    y(k) = -1 * den(2) * y_1 + num(1) * u(k) + num(2) * u_1;
    e(k) = r(k) - y(k);
    Ee = Ee + e(k);
    u(k) = 1500;%Kp * e(k) + Ki * Ee + Kd * (e(k) - e_1);
    y_1 = y(k);
    u_1 = u(k);
    e_1 = e(k);  
end

plot(time, r, '-.');
hold on;
plot(time, y, '--');
grid on;

因为传递函数是一阶的,且den(1)为1,所以

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

东城青年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值