⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mo2.m

📁 H.S.Park, D-S.Kim, and W.H.Kwon "A Scheduling Method for Network-based Control Systems", IEEE Transa
💻 M
字号:
clear
OPENLOOP=0
F_DB=1
CLQR=1
SCLQR=1

Ra=20;
Ki=20;
Kb=0.15;
J=0.012;

tf=20;

A=[-Ki*Kb/(Ra*J) 0;1 0];
B=[Ki/(Ra*J);0];
C=[1 0;0 1];
D=[0;0];

eig(A);
rank(ctrb(A,B));

if OPENLOOP==1,
t=[0:0.01:10];
[tr,tc]=size(t);
u=zeros(tr,tc);
y1=lsim(A,B,C,D,u,t);
y2=lsim(A,B,C,D,u,t,[pi/18 0]);
y3=lsim(A,B,C,D,u,t,[0 pi/18]);
plot(t,y1);
keyboard;
%pause
clg;
subplot(211)
plot(t,y2);
plot(t,y3);
end

if F_DB==1,

R=10;
%w=100;
w=0.056;
STOP=0;
while STOP==0,
R
Q=w*eye(2);
[k,s]=lqr(A,B,Q,R)
Acl=A;
Acl1=B*k;
Q=eye(2);;
P=lyap(Acl+Acl1, Q);
sigma=min(eig(Q))/2*max(abs(eig(P)));
delta=sqrt(max(abs(eig(P)))/min(abs(eig(P))));

tau1=sigma/(delta*norm(Acl1*(Acl+Acl1)))
tau=fix(tau1*1000)/1000

%%keyboard;
pause
STOP=1;

end

end

if CLQR==1,

dt=tau;
%%w=100;
%%R=10;
STOP=0;
while STOP==0,
w
R
dt
t=[0:dt:tf];
[tr,tc]=size(t);
%%Q=w*eye(2);
%%[k,s]=lqr(A,B,Q,R);

[An,Bn,Cn,Dn]=feedback(A,B*k,C,D*k,0,[0 0],[0;0],eye(2));
r=[zeros(1,tc);zeros(1,fix(tc/5)) ones(1,ceil(tc*4/5))*pi/18];

y=lsim(An,Bn,Cn,Dn,r',t);
%%clg
subplot(2,1,1);
plot(t,y(:,1),'.',t,y(:,2),t,r(2,:)');
xlabel('Time(sec)');
ylabel('rad/sec');
title('Loop 2 using a direct control');
%%keyboard;
pause
STOP=1;

end

end

if SCLQR==1,

dt=tau;
%%w=100;
%%R=10;
STOP=0;
while STOP==0,
w
R
dt
%%keyboard;
pause
t=[0:dt:tf];
[tr,tc]=size(t);
%r=[zeros(1,tc);zeros(1,round(tc/10)) ones(1,round(tc*9/10))*pi/18]';
%r=[zeros(1,tc);zeros(1,10) ones(1,tc-10)*pi/18]';
r=[zeros(1,tc);zeros(1,fix(tc/5)) ones(1,ceil(tc*4/5))*pi/18]';

%%Q=w*eye(2);
%%[k,s]=lqr(A,B,Q,R);

n=fix(tf/dt);
x0=[0 0];
x=x0;
for i=1:n,
i;
r0 = r(i:i+1,:);
t0 = [0 dt];
u0 = k*(r0(1,:)-x0)';
u0 = [u0;u0];
%pause

[ysc,x2]=lsim(A,B,C,D,u0,t0,x0);
x=[x;x2(2,:)];
x0 = x2(2,:);

end

%%clg
subplot(2,1,2);
plot(t,x(:,1),'.',t,x(:,2),t,r(:,2));
xlabel('Time(sec)');
ylabel('rad/sec');
title('Loop 2 using a networked control');

gtext('Theta_{ref}');
gtext('Theta');
gtext('Omega');
gtext('Theta_{ref}');
gtext('Theta');
gtext('Omega');


%%keyboard;
STOP=1;

end

end




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -