Sunteți pe pagina 1din 9

Statie Mihai -331 AC

Lascae Stefan- 331 AC

PROIECT MODELARE SI SIMULARE


TEMA 3- ELICOPTER DIDACTIC

Pentru a realiza modelul analitic al procesului , dat de cele patru ecuatii dinamice( pentru
dinamica interna a motoarelor si pentru dinamica de rotatie a unghiurilor de azimut si rotatie),
am luat in considerare functiile de tip Matlab function , schema aratand astfel:

Fiecare bloc-functie are propriul script in Matlab , depinzand de cele doua variabile :
Omega(ω) si Phi(φ) .
Statie Mihai -331 AC
Lascae Stefan- 331 AC

Subpunctul a)
Am setat valoarea intrarii u1 la 1 , iar pe u2 am facut-o 0. Astfel , cele doua SCOPE-uri
au afisat:
-pentru phi :

-pentru psi :
Statie Mihai -331 AC
Lascae Stefan- 331 AC

Subpunctul b)
Am fixat intrarea u2 la 0 , iar intrarea u1 a luat valori in intervalul [0,1:1,2]. Am ilustrat
raspunsul pentru diferitele valori ale lui u1.
% Subpunctul b

%Am ilustrat raspunsul sistemului pentru diverse stari initiale

T=0:0.1:100;
u1=double(T>=1);
u2=double(T>=1);
u2=[0 0;0 0];
intrari=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2];

for i=1:length(intrari)
u1(1,1)=intrari(i);
u1(1,2)=intrari(i);
u1(2,1)=intrari(i);
u1(2,2)=intrari(i);
hold on
sim('elicopter')
figure(1)
plot(psi)
hold off
end
saveas(gcf,'psi.png');

for i=1:length(intrari)
u1(1,1)=intrari(i);
u1(1,2)=intrari(i);
Statie Mihai -331 AC
Lascae Stefan- 331 AC
u1(2,1)=intrari(i);
u1(2,2)=intrari(i);
hold on
sim('elicopter')
figure(2)
plot(phi)
hold off

end
saveas(gcf,'phi.png');
Statie Mihai -331 AC
Lascae Stefan- 331 AC

Subpunctul c)
Am mentinut intrarea u2 la 0 si am variat din nou intrarea u1 , la fel ca la punctul b,
ilustrand grafic caracteristica statica. Am verificat valorile obtinute cu ajutorul functiei trim.

T=0:0.1:100;
u1=double(T>=1);
u2=double(T>=1);

u1_0=linspace(0.1,0.5,5)
u2_0=0;

for i=1:12
u1=timeseries(u1_0(i),T);
u2=timeseries(u2_0,T);
sim('elicopter');

figure(1)
hold on;
plot(phi);
title('Phi la diferite intrari');
hold off;
saveas(gcf,'phic.png');

figure(2)
hold on;
plot(psi);
title('Psi la diferite intrari');
hold off;
saveas(gcf,'psic.png');

ustar=linspace(0.1,0.5,5);
[x(:,i),u(:,i),y(:,i),dx(:,i)]=trim('elicopter',[],[ustar(i)],[],[],[1;2],
[]);
ustar_0=u;
ystar_0=y;

end

A=polyfit(ustar_0,ystar_0,1);
Statie Mihai -331 AC
Lascae Stefan- 331 AC
Statie Mihai -331 AC
Lascae Stefan- 331 AC

Subpunctul d)

Am considerat un vector de intrari cu valori in intervalul [0.4;1] si am liniarizat sistemul


pentru valorile de regim stationar corespunatoare intrarilor . Intrarea u2 a fost mentinuta la
valoarea 0. Am aflat matricile A,B,C si D cu ajutorul functiei linmod si am afisat pe acelasi
grafic raspunsul sistemului neliniar (ecuatiile 1 ) si raspunsul sistemului liniarizat ( ecuatiile 2 ),
pentru diferite valori stabilite.

intrari=[0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1];


%Psi liniar
for i = 1:length(intrari)
u1=[1, intrari(i)];
u2=[0, 0];
u=[u1;u2];
sim('elicopter');
[x,u,y]=trim('elicopter');
[A,B,C,D]=linmod('elicopter',x,u)
u1=intrari(i);
u2=0;
sim('elicopter');
v = psi(:,1);
t = 0:length(v)-1;
if(i==1) %extragere psi liniar pentru u1=0.4
psi_lin1=v;
end
if(i==4) %extragere psi liniar pentru u1=0.7
psi_lin2=v;
end
figure(1)
plot(v)
hold on
title('Raspunsul liniar al unghiului de elevatie psi');
end
%Phi liniar
for i = 1:length(intrari)
u1=[1, intrari(i)];
u2=[0, 0];
u=[u1;u2];
sim('elicopter');
[x,u,y]=trim('elicopter');
[A,B,C,D]=linmod('elicopter',x,u);
u1=intrari(i);
u2=0;
sim('elicopter');
z = phi(:,1);
t = 0:length(z)-1;
if(i==1)
phi_lin1=z; %extragere phi liniar pentru u1=0.1
end
if(i==4)
phi_lin2=z; %extragere phi liniar pentru u1=0.7
Statie Mihai -331 AC
Lascae Stefan- 331 AC
end
figure(2)
plot(z)
hold on
title('Raspunsul liniar al unghiului de azimut phi');
end
%
% Determinare raspuns neliniar pentru 2 intrari diferite:
% u1=0.1, u1=0.7
for i=1:4
u1=[1, intrari(i)];
u2=[0, 0];
u=[u1;u2];
sim('elicopter')
if(i==1)
psi_nelin1=psi; %extragere psi neliniar pentru u1=0.1
phi_nelin1=phi; %extragere phi neliniar pentru u1=0.1
end
if(i==4)
psi_nelin2=psi; %extragere psi neliniar pentru u1=0.7
phi_nelin2=phi; %extragere phi neliniar pentru u1=0.7
end
end

% Reprezentare raspuns liniar si raspuns neliniar


% pentru u1=0.1
psi_nelin1=psi_nelin1(1:length(psi_lin1));
t=0:length(psi_lin1)-1;
figure(3);
subplot(2,1,1);
plot(psi_lin1)
hold on
subplot(2,1,2);
plot(psi_nelin1)
title('Psi liniar si psi neliniar pentru u1=0.4');

phi_nelin1=phi_nelin1(1:length(phi_lin1));
t=0:length(phi_lin1)-1;
figure(4);
subplot(2,1,1);
plot(phi_lin1,'g')
hold on
subplot(2,1,2);
plot(phi_nelin1,'r')
hold off
title('Phi liniar si phi neliniar pentru u1=0.4');

% pentru u1=0.7

psi_nelin2=psi_nelin2(1:length(psi_lin2));
t=0:length(psi_lin2)-1;
figure(5);
subplot(2,1,1);
plot(psi_lin2)
hold on
Statie Mihai -331 AC
Lascae Stefan- 331 AC
subplot(2,1,2);
plot(psi_nelin2)
title('Psi liniar si psi neliniar pentru u1=0.7');

phi_nelin2=phi_nelin2(1:length(phi_lin2));
t=0:length(phi_lin2)-1;
figure(6);
subplot(2,1,1);
plot(phi_lin2)
hold on
subplot(2,1,2);
plot(phi_nelin2)
title('Phi liniar si phi neliniar pentru u1=0.8');