Розрахунок одноконтурної системи автоматичного керування за допомогою пакету Matlab
Текст программы:
clc
clear
sys=tf(1.2,[85,1]);
sys.ioDelay=35;
get(sys);
figure(1)
subplot(2,1,1)
step(sys),grid on
subplot(2,1,2)
impulse(sys),grid on
figure(2)
[Re_,Im_,Omega]=nyquist(sys,[0:0.001:35]);
Re=[];
Im=[];
Re(:,1,1)=Re_(1,: );
Im(:,1,1)=Im_(1,: );
plot(Re,Im,Re,Im),grid on
figure(3)
[Amp,Phasep,Omega]=bode(sys,[0:0.001:0.1]);
Am=[];
Phase=[];
Am(:,1)=Amp(1,1,: );
Phase(:,1)=Phasep(1,1,: );
subplot(2,1,1)
plot(Omega,Am),grid on
subplot(2,1,2)
plot(Omega,Phase),grid on
m=0.366;
tau=35;
k=1.2;
T=85;
hw=0.0015;
w=0;
vc0=[];
vc1=[];
c0=0;
figure(4)
while c0>=0
A=1-(T*m*w);
B=-(T*w);
c1=((A*m-B)*sin(w*tau)-(A+m*B)*cos(w*tau))/(k*exp(m*w*tau));
c0=((A*sin(w*tau)-B*cos(w*tau))/(k*exp(m*w*tau)))*((1+m^2)*w);
vc0=[vc0,c0];
vc1=[vc1,c1];
w=w+hw;
end
n=length(vc0);
n=length(vc1);
vc0(n)=[];
vc1(n)=[];
[c0max,n]=max(vc0);
c0opt=vc0(n+1)
c1opt=vc1(n+1)
plot(vc1,vc0,vc1,vc0,'r.',c1opt,c0opt,'green*'),grid on
figure(5)
w0=tf([k],[T,1]);
w0.ioDelay=tau;
w0ss=ss(w0);
wp=tf([c1opt,c0opt],[1 0]);
wpss=ss(wp);
w=feedback(w0ss,wpss);
t=[0:1:600];
[ht,t]=step(w,t);
plot(t,ht),grid on,hold on
n=length(ht);
[Ddin,ndin]=max(ht)
tdin=[t(ndin),t(ndin)];
Ddinh=[0,Ddin];
plot(tdin,Ddinh,'k',tdin(1),Ddinh(1),'kv',tdin(2),Ddinh(2),'k^')
s4et4ik=0;
for i=[2:n-1];
if (ht(i)>ht(i-1))&(ht(i)>ht(i+1))
s4et4ik=s4et4ik+1;
if s4et4ik==2
Dstat=ht(i)
Treg=t(i)
end
end
end
plot(Treg,Dstat,'red*'), hold on
Dstath=[-Dstat];
IntArea=sum(abs(ht)*(t(2)-t(1)))
figure (6)
logvec=logspace(-2,-0.876,2000);
nyquist(w0*wp,logvec),grid on;
figure (7)
a0 = 0.032;
a1 = 1.698;
a2 =85;
Re=[];Im=[];
for w=0.0001:0.001:0.45,
Njw= a2*((w*j)^2)+a1*(w*j)+(a0);
Re = real(Njw);
Im = imag(Njw);
plot(Re, Im, 'k.')
xlabel('Re(W)')
ylabel('Im(W)')
hold on
end
hold off
grid on
axis([-0.45 0.45 0.45 0.45])
A=[a1,0;a2,a0];
D=det(A);
if D>0&a1>0
disp ('система устойчива');
else
disp (' система не устойчива');
end