matlab重复执行m文件并记录,重复控制Matlab的M文件

%PID Control with Repetitive Control compensation

clear all;close all;

ts=0.001;

sys=tf(50,[0.000046,0.006,1,0]);

dsys=c2d(sys,ts,'z');

[num,den]=tfdata(dsys,'v');

q=tf(1,[0.20,1]); %Filter

dq=c2d(q,ts,'z');

[numq,denq]=tfdata(dq,'v');

F=1;

N=1/F*1/ts;

zz=tf([1],[1 zeros(1,N)],ts);

dz=dq*zz;

[numz,denz]=tfdata(dz,'v');

Gr=1/(1-dz); %Repetitive controller

u_1=0;u_2=0;u_3=0;

y_1=0;y_2=0;y_3=0;

ei=0;

ue_1=0;ue_2=0;

ue_N=0;ue_N1=0;ue_N2=0;

e2_N=0;e2_N1=0;e2_N2=0;这几个参数是什么?

e_N1=0;

e1_1=0;

e2_1=0;

for k=1:1:10000

time(k)=k*ts;

rin(k)=1.0*sin(F*2*pi*k*ts);

yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_3;这个输出是如何得出来的?

e(k)=rin(k)-yout(k);

ei=ei+e(k)*ts;

up(k)=1.5*e(k)+10*ei;

e1(k)=-denq(2)*e1_1+numq(2)*e_N1;还有这句是怎么回事?

K=1.2;

e2(k)=K*e1(k);

ue(k)=0.8187*ue_1+0.1813*ue_N1+e2(k)-0.8187*e2_1;这个也不明白

M=2;

if M==1

u(k)=up(k); %Only using PID

end

if M==2

u(k)=ue(k)+up(k); %Using REP+PID

end

if k>N

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值