Proiect Avion
Proiect Avion
Comandă Automată a
Zborului și Sinteza Legilor de
Dirijare
Tema de proiectare
�
2.2 Proiectarea pilotului automat prin metoda H
Tema de proiectare
15000 ft ( 4572 m )
Altitudine -
M = 0,3 ( 317.48 m / s )
Viteză -
Caracteristici aeronavă:
h = 15000 ft
m
U 0 = 317.48
s 101\* MERGEFORMAT (.)
în care x este vectorul de stare, A este matrice de stabilitate, B este matricea de comandă, iar d
-0.4508 + 1.5704i
-0.4508 - 1.5704i
-0.0167 + 0.1393i
-0.0167 - 0.1393i
Ecuaţia 03 devine:
Trasarea răspunsurilor la comenzi treaptă şi impuls Dirac se va face pentru pentru scurta
step. Se calculează funcțiile de transfer matricea starilor având starile u , w, q,q , dar și pentru
u, nz , q, q
starile u , a , q, q , respectiv după care se reprezintă răspunsul acestora la comanda
treaptă unitate.
Program Matlab
clear all;
close all;
clc;
% Valorile proprii
Val_proprii=eig(A);
disp('Valorile proprii ale matricei A');
disp(Val_proprii);
% Functia de transfer
s=tf('s');
H=C(1,:)*(s*eye(4)-A)^(-1)*B+D;
figure(1); step(H); title('Raspunsul sistemului la comanda de tip treapta unitate');
%% Derivatele de stabilitate
Xu=A(1,1); Xw=A(1,2); Xq=A(1,3); Xtheta=A(1,4);
Zu=A(2,1); Zw=A(2,2); Zq=A(2,3); Ztheta=A(2,4);
Mu=A(3,1); Mw=A(3,2); Mq=A(3,3); Mtheta=A(3,4);
Xdelta_e=B(1); Zdelta_e=B(2); Mdelta_e=B(3);
U0=Zq; g=0.98100E+01;
%% Scurta perioada
Asp=[Zw U0;
Mw Mq];
Bsp=[Zdelta_e; Mdelta_e];
Csp=[0 1;
1 0];
Dsp=[0; 0];
% Valorile proprii
Val_proprii_sp=eig(Asp);
disp('Valorile proprii ale matricei Asp');
disp(Val_proprii_sp);
% Functia de transfer
Hsp=Csp(1,:)*(s*eye(2)-Asp)^(-1)*Bsp+Dsp;
figure(2); step(Hsp); title('Raspunsul dinamicii scurtei perioade la comanda de tip treapta unitate');
%% Scurta perioada - nz
Asp_nz=[Zw U0*Zw/g;
Mw*g/Zw Mq];
Bsp_nz=[Zdelta_e*Zw/g; Mdelta_e];
Csp_nz=Csp_alpha;
Dsp_nz=Dsp_alpha;
% Valorile proprii
Val_proprii_nz=eig(Asp_nz);
disp('Valorile proprii ale matricei Asp_nz');
disp(Val_proprii_nz);
% Functia de transfer
Hsp_nz=Csp_nz(1,:)*(s*eye(2)-Asp_nz)^(-1)*Bsp_nz+Dsp_nz;
figure(4); step(Hsp_nz); title('Raspunsul dinamicii scurtei perioade (nz) la comanda de tip treapta unitate');
%% Fugoida
Aph=[Xu Xtheta; 0 0]+[Zw 1; Mw*U0 Mq]^(-1)*[-Zu/U0 Ztheta/U0; -Mu -Mtheta];
Bph=[Zw 1; Mw*U0 Mq]^(-1)*[-Zdelta_e/U0; -Mdelta_e];
Cph=[1 0; 0 1];
Dph=[0; 0];
% Valorile proprii
Val_proprii_ph=eig(Aph);
disp('Valorile proprii ale matricei Aph');
disp(Val_proprii_ph);
% Functia de transfer
Hph=Cph(1,:)*(s*eye(2)-Aph)^(-1)*Bph+Dph;
figure(5); step(Hph); title('Raspunsul dinamicii fugoidei la comanda de tip treapta unitate');
%% Stabilizarea fugoidei
t=0:0.1:100;
var=0;
for Ktheta=-1:0.1:1
for Ku=0:0.1:0
Aph_st=Aph-Bph*[Ku Ktheta];
Val_proprii_Aph_st=eig(Aph_st);
if real(Val_proprii_Aph_st(1))<-0.01 && real(Val_proprii_Aph_st(2))<-0.01 &&
abs(imag(Val_proprii_Aph_st(1)))==abs(imag(Val_proprii_Aph_st(2)))
disp('Ku'); disp(Ku);
disp('Ktheta'); disp(Ktheta);
var=1;
break;
end
end
if var==1
break;
end
end
% Verificare grafica
% Raspunsul la comanda treapta unitate
u=step(Aph_st,Bph,[1 0],0,1,t);
theta=step(Aph_st,Bph,[0 1],0,1,t);
figure(6);
plot(t,u);
title('\bf Raspunsul sistemului la comanda treapta unitate-u');
xlabel('t[s]');
ylabel('u[rad/s]');
grid on;
figure(7);
plot(t,theta);
title('\bf Raspunsul sistemului la comanda treapta unitate-theta');
xlabel('t[s]');
ylabel('theta[rad]');
grid on;
% Raspunsul la comanda impuls Dirac
u_i=impulse(Aph_st,Bph,[1 0],0,1,t);
theta_i=impulse(Aph_st,Bph,[0 1],0,1,t);
figure(8);
plot(t,u_i);
title('\bf Raspunsul sistemului la comanda impuls Direc-u_i');
xlabel('t[s]');
ylabel('u_i[rad/s]');
grid on;
figure(9);
plot(t,theta_i);
title('\bf Raspunsul sistemului la comanda impuls Dirac-theta_i');
xlabel('t[s]');
ylabel('theta_i[rad]');
grid on;
%% Stabilizarea scurtei perioade
for Kq=-1:0.1:1
Asp_st=Asp-Bsp*[Kq 0];
Val_proprii_sp_st=eig(Asp_st);
if real(Val_proprii_sp_st(1))<0 && real(Val_proprii_sp_st(2))<0 && imag(Val_proprii_sp_st(1))~=0 && real(Val_proprii_sp_st(1))>-3 &&
real(Val_proprii_sp_st(2))>-3 && abs(imag(Val_proprii_sp_st(1)))>4
Kq_sp=Kq;
disp('Kq');
disp(Kq);
var=1;
break;
end
end
% Verificare grafica
% Raspunsul la comanda treapta unitate
alpha=step(Asp_st,Bsp,[1 0],0,1,t);
q=step(Asp_st,Bsp,[0 1],0,1,t);
figure(10);
plot(t,alpha);
title('\bf Raspunsul sistemului la comanda treapta unitate-alpha');
xlabel('t(s)');
ylabel('alfa[rad]');
grid on;
figure(11);
plot(t,q);
title('\bf Raspunsul sistemului la comanda treapta unitate-q');
xlabel('t(s)');
ylabel('q[rad/s]');
grid on;
% Raspunsul sistemului
alpha_i=impulse(Asp_st,Bsp,[0 1],0,1,t);
q_i=impulse(Asp_st,Bsp,[0 1],0,1,t);
figure(12);
plot(t,alpha_i);
title('\bf Raspunsul sistemului la comanda impuls Dirac-alfa_i');
xlabel('t(s)');
ylabel('alfa_i[rad]');
grid on;
figure(13);
plot(t,q_i);
title('\bf Raspunsul sistemului la comanda impuls Dirac-q_i');
xlabel('t(s)');
ylabel('q[rad/s]');
grid on;
Rezultate program
Ku
0
Ktheta
-1
Kq
-0.2000
Notații:
A, B, C , D - matricile ce definesc dinamica longitudinală a aeronavei (cu stările u , w, q,q )
Asp , Bsp , Csp , Dsp
- matricile ce definesc scurta perioadă (cu starile w, q )
Asp _ alpha , Bsp _ alpha , Csp _ alpha , Dsp _ alpha
- matricile ce definesc scurta perioadă (cu starile a , q )
Asp _ nz , Bsp _ nz , Csp _ nz , Dsp _ nz nz , q
- matricile ce definesc scurta perioadă (cu starile )
Aph , Bph , C ph , D ph
- maticile ce definesc fugoida (cu starile u, q )
Ku , K q , K theta
- amplificările determinate pentru stabilizarea dinamicii
Fig.1 Răspunsul sistemului principal la comanda treaptă
nz , q nz � 1, q � 2
În mod analog se procedează și pentru stările (avem corespondența: ).
Funcția de transfer este notată în program cu Hsp_nz .
Standardele privind calităţile de zbor includ toate cerinţele impuse din punct de vedere al
pilotului uman pentru siguranţa zborului şi pentru eficienţa comenzilor în vederea realizării
misiunii pentru care avionul a fost proiectat.
Unul dintre standardele militare foarte cunoscute propus la începutul anilor 1980 este
MIL-STD-1797 care este periodic revizuit în scopul realizării unor specificaţii cât mai bine
orientate către realizarea în condiiţii optime a misiunii de zbor. Pentru interpretarea acestor
specificaţii este necesară o clasificare a misiunilor de zbor. Astfel, avioanele sunt împărţite în
următoarele categorii:
Un alt factor impotant în definirea cerinţelor calităţilor de zbor este faza zborului.
Categoriile fazelor de zbor împart condiţiile de zbor şi misiunile în grupuri de acţiuni care
necesită răspunsuri asemanătoare ale avionului şi cer eforturi similare din partea pilotului.
neterminale
A - acele faze de zbor care necesită manevre rapide, precizie în urmărirea
traiectoriei
- faze de luptă aeriană
- atac la sol
- lansare de armament
- recunoaştere
- alimentarea în zbor
- căutare antisubmarin
- zbor în formaţie strânsă
B - faze realizate prin manevre graduale fără precizie deosebită
- urcare
- croazieră
- coborâre
- coborâre de urgenţă
- decolarea
- apropierea
- aterizarea
Nivelul 1 – Calităţi de zbor clar adecvate pentru fazele de zbor ale misiunii.
Nivelul 2 – Calităţi de zbor adecvate îndeplinirii misiunii de zbor, dar este necesar un efort
suplimentar din partea pilotului.
Scurta perioadă este extrasă din sistemul dinamic original după cum urmează:
A ( 2, 2 )
� A ( 2, 3) � B ( 2) �
�
Asp = � ; Bsp = �
� �
�A ( 3, 2 ) A ( 3,3 ) � B ( 3) �
�
Scurta n
+ perioa z
- dă
q
SAS
Fig 10 S.A.S
�u&= X u �
u + Xw �w - g cos g 0 �
q + X de � de
�
�w&= Z u � w + U 0q - g sin g 0 + Z d e �
u + Zw � de
�
�q&= M u �u + Mw �
w+ Mq � q + Mq � q + M de � de
�&
�q =q
707\* MERGEFORMAT
(.)
U0
Împărțim prin prima ecuaţie a sistemului 08 şi obţinem:
Zd e
a&= Za a + q + de
U0 909\* MERGEFORMAT (.)
de
Zd e �
Dacă termenul care conţine expresia se neglijeză, atunci se poate scrie:
a&= Zaa + q
w w&
w = U 0a � a = ; a&=
deoarece: U0 Uo
U0 U U
nz = ( a&- q ) = 0 ( Zaa + q - q ) = 0 Za a
g g g
nz U 0
= Za
a g 10010\* MERGEFORMAT (.)
Se consideră:
�U �� U �
n z � � 0 Z a a � � 0 Za
� 0 ��a�
sp = � �
x% = g = g �
�
q
�� � � � ��q�
� q ��0 1� �
11011\* MERGEFORMAT
(.)
x&sp = Asp � de
xsp + Bsp �
12012\* MERGEFORMAT (.)
w�
� �Z w 1 � �Zd e �
xsp = � �, Asp = � �, Bsp = � � .
q�
� �Mw Mq � �M de �
unde :
�s - Zw -1 �
c Asp ( s) = det( sI - Asp ) = det � = ( s - Z w )( s - M q ) - M w =
�- M w s - Mq �
�
= s 2 + s(- Z w - M q ) + Z w M q - M w
13013\*
MERGEFORMAT (.)
wsp 2 = Z w M q - M w
�
�
� Zw + M q
z
� sp = -
� 2 ZwM q - M w
14014\* MERGEFORMAT (.)
c Asp ( s ) = s 2 + 2 �
z sp �
wsp �
s + wsp 2
15015\* MERGEFORMAT (.)
nz U 0
= � Za = 16.1083
a g 17017\* MERGEFORMAT (.)
U0 nz a
În ecuația de mai sus este viteza avionului și are o valoare cunoscută, se citește
Za
pe grafic, iar se ia din matricea A.
Se determină:
wa = 3.45 rad s
�
�
wb = 11.5 rad s
� 18018\* MERGEFORMAT (.)
w � nz nz
avionului, facem schimbarea de variabilă , unde este accelerația verticală - folosind
relațiile:
U0
nz = (a&- q)
g 19019\* MERGEFORMAT (.)
w w&
a= ; a&= ;
U0 U0 20020\* MERGEFORMAT (.)
U 0 �w& � w&- U 0 q
nz = � - q �=
g � U0 � g
21021\* MERGEFORMAT (.)
w&- U 0 q = Zu u + Z w w + Zde d e
22022\* MERGEFORMAT (.)
Z u u + Z w w + Zd e d e Zu Z
nz = @ u+ w w
g g g 23023\* MERGEFORMAT (.)
Zd e d e @ 0
, unde s-a ținut cont de faptul că .
Tsp
Matricea de transformare a vectorului de stare,
u�
� �u �
�
w� Tsp �
� n�
� ��� �z �
�
q� �q �
�� ��
q�
� �q�
este:
�1 0 0 0�
�Z Zw �
�w 0 0�
Tsp = �g g �
�0 0 1 0�
� �
�
�0 0 0 1�
� 24024\* MERGEFORMAT (.)
�u � u�
�
� � �
a�
nz � T �
� ��� �
�q � �
q�
�� ��
�q� q�
�
este:
1
� 0 0 0�
� U �
�
0 0
Za 0 0�
Tsp = � g �
�
0 0 1 0�
� �
�
0
� 0 0 1�
� 25025\* MERGEFORMAT (.)
( A, b, c ) : ( TAT -1
, Tb, cT -1 ) ,
1
� 0 0 0�
�u � � ��u�
� � � U0
n 0 Z 0 0 �a �
�
� �= � g a
z
�� �
�q � � �q�
�� � 0 0 1 0��q �
�
�q� ��
�
0
� 0 0 1�� 26026\* MERGEFORMAT (.)
Din ecuația:
s 2 + 2z spwsp s + w sp 2 = 0
27027\* MERGEFORMAT (.)
rezultă:
1 - z sp 2
arg s1,2 = �arctg
z sp
28028\* MERGEFORMAT (.)
Alocarea polilor
Pentru ca un avion să poată îndeplini criteriile impuse de MIL, polii scurtei perioade
trebuie să se afle într-un domeniu bine stabilit conform specificațiilor MIL.
- în funcție de viteză, se determină domeniul în care vor fi alocați polii scurtei perioade, conform
specificațiilor MIL
- pentru acest domeniu se generează un patrulater în interiorul căruia se află valorile unor
amplificări care vor fi folosite pentru verificarea criteriului C*.
Polii scurtei perioade trebuie să aparțină unei coroane circulare care are drept raze două
valori ce se determină din specificațiile MIL. Din punct de vedere geometric acest fapt poate fi
reprezentat astfel:
Imaginar
w = wb
Real
w = wa
Domeniu de
alocabilitate MIL
atunci când acestea variază între valorile permise de specificațiile MIL (relațiile 016 și 017).
Fig.12 Domeniul de alegere al polilor
Observație:
wsp = wa ; z θ [ 0,35 1] ;
- ramura (1) -
wsp = wb ; z θ [ 0.35 1] ;
- ramura (2) -
z sp = 0.35; wsp �[ wa ; wb ] ;
- ramura (3) -
z sp = 1; wsp �[ wa ; wb ] .
- ramura (4) -
L( Asp + Bsp K ) = { s1 , s2 }
Se rezolvă problema de alocare:
K =�
ka
� kq �
�și se trasează curba k q = kq ( k a ) (ka , kq )
unde . Orice punct din domeniul delimitat
de acestă curbă are proprietatea:
L ( Asp + Bsp �
ka
� kq �
) �D |
� 29029\* MERGEFORMAT (.)
q, a ( q � 1, a � 2 )
În figurile 13, respectiv 14 este prezentat raspunsul stărilor la
comanda impuls Dirac. Acestea au o comportare bună deoarece se stabilizează într-un interval de
Criteriul C*
q ( t ) + nz ( t )
12.43 �
C * (t ) =
C� 31031\* MERGEFORMAT (.)
Unde:
C� = lim ( 12.43 �
q ( t ) + nz ( t ) ) q( t) nz ( t )
t �� , iar și sunt răspusurile scurtei perioade la comanda
treaptă unitate.
U0
nz =
A ( 2, 2 )
g�
fiind accelerația longitudinală a avionului.
Pentru a putea modifica curba determinată, astfel încât aceasta să se afle în domeniul
criteriului C*, dinamicii scurtei perioade i se aplică un element de întârziere de forma:
1
s + c , unde c �[ 2;5]
H=
.
kq
k nz
*
Fig.16 Analiza C
*
Fig.17 Analiza C cu prefiltru
% Verificare grafica
% Raspunsul la comanda treapta unitate
alpha=step(Asp_st,Bsp,[1 0],0,1,t);
q=step(Asp_st,Bsp,[0 1],0,1,t);
figure(10);
plot(t,alpha);
title('\bf Raspunsul sistemului la comanda treapta unitate-alpha');
xlabel('t(s)');
ylabel('alfa[rad]');
grid on;
figure(11);
plot(t,q);
title('\bf Raspunsul sistemului la comanda treapta unitate-q');
xlabel('t(s)');
ylabel('q[rad/s]');
grid on;
% Raspunsul sistemului
alpha_i=impulse(Asp_st,Bsp,[0 1],0,1,t);
q_i=impulse(Asp_st,Bsp,[0 1],0,1,t);
figure(12);
plot(t,alpha_i);
title('\bf Raspunsul sistemului la comanda impuls Dirac-alfa_i');
xlabel('t(s)');
ylabel('alfa_i[rad]');
grid on;
figure(13);
plot(t,q_i);
title('\bf Raspunsul sistemului la comanda impuls Dirac-q_i');
xlabel('t(s)');
ylabel('q[rad/s]');
grid on;
%% Alocarea polilor
disp('Alocarea polilor'); disp(' ');
% Valorile omega_a si omega_b (nz/alpha=34.6248)
nz_alpha=Zw*U0/g;
disp('nz/alpha=');
disp(nz_alpha);
omega_a=3.45;
omega_b=11.5;
j=sqrt(-1);
% Matricea de transformare T
T=eye(4);
T(2,1)=A(2,1)/g;
T(2,2)=A(2,2)/g;
% Se face schimbarea de stare folosind matricea T
A=T*A*inv(T);
B=T*B;
C=C*inv(T);
% Ramura 1
omega=omega_a;
k=0;
for zeta=0.35:0.01:1
k=k+1;
s1(k)=-zeta*omega+j*omega*sqrt(1-zeta^2);
s2(k)=-zeta*omega-j*omega*sqrt(1-zeta^2);
% Lambda(Asp-Bsp [Kalpha Kq])={s1 s2};
K_poli=acker(Asp,Bsp,[s1(k) s2(k)]);
K_nz=K_poli(1);
Kq=K_poli(2);
K1(k,1)=K_nz;
K1(k,2)=Kq;
end
figure(4);
plot(s1); hold on; plot(s2); hold on; clear s1 s2;
% Ramura 2
omega=omega_b;
k=0;
for zeta=0.35:0.01:1
k=k+1;
s1(k)=-zeta*omega+j*omega*sqrt(1-zeta^2);
s2(k)=-zeta*omega-j*omega*sqrt(1-zeta^2);
% Lambda(Asp-Bsp [Kalpha Kq])={s1 s2};
K_poli=acker(Asp,Bsp,[s1(k) s2(k)]);
K_nz=K_poli(1);
Kq=K_poli(2);
K2(k,1)=K_nz;
K2(k,2)=Kq;
end
plot(s1); hold on; plot(s2); hold on; clear s1 s2;
% Ramura 3
zeta=0.35;
k=0;
for omega=omega_a:0.1:omega_b
k=k+1;
s1(k)=-zeta*omega+j*omega*sqrt(1-zeta^2);
s2(k)=-zeta*omega-j*omega*sqrt(1-zeta^2);
K_poli=acker(Asp,Bsp,[s1(k) s2(k)]);
K_nz=K_poli(1);
Kq=K_poli(2);
K3(k,1)=K_nz;
K3(k,2)=Kq;
end
plot(s1); hold on; plot(s2); axis([-15 15 -15 15]);
title('\bf Alocarea polilor scurtei perioade');
xlabel('Re{s}');
ylabel('Im{s}');
grid on;
hold off;
clear s1 s2;
% Ramura 4
zeta=1;
k=0;
for omega=omega_a:0.1:omega_b
k=k+1;
s1(k)=-zeta*omega+j*omega*sqrt(1-zeta^2);
s2(k)=-zeta*omega-j*omega*sqrt(1-zeta^2);
K_poli=acker(Asp,Bsp,[s1(k) s2(k)]);
K_nz=K_poli(1);
Kq=K_poli(2);
K4(k,1)=K_nz;
K4(k,2)=Kq;
end
%% Analiza C*(t)
load cstar;
t=0:0.01:3;
disp('Se alege un punct (Kq,Kalpha) din interiorul domeniului');
[Kq,K_nz]=ginput(1);
Kq
K_nz
nz=step((Asp-Bsp*[K_nz Kq]),Bsp,[1 0],0,1,t);
q=step((Asp-Bsp*[K_nz Kq]),Bsp,[0 1],0,1,t);
cstar=(nz+12.43*q)/(nz(length(t))+12.43*q(length(t)));
% Trasarea graficului C*
figure(6);
plot(xcl,cl,xcu,cu,t,cstar);
% axis([0 3 0 2]);
title('\bf Analiza C*(t)');
xlabel('t [s]');
ylabel('C*');
grid on;
% Varianta cu prefiltru
disp('Varianta cu prefiltru');
c=4;
clear nz q cstar;
[Ap,Bp,Cp,Dp]=tf2ss(1,[1 c]);
[Aspr,Bspr,Cspr,Dspr]=series(Ap,Bp,Cp,Dp,Asp-Bsp*[K_nz Kq],Bsp,eye(2),zeros(2,1));
nz=step(Aspr,Bspr,Cspr(1,:),Dspr(1,:),1,t);
q=step(Aspr,Bspr,Cspr(2,:),Dspr(2,:),1,t);
cstar=(nz+12.43*q)/(nz(length(t))+12.43*q(length(t)));
% Trasarea graficului C*
figure(7);
plot(xcl,cl,xcu,cu,t,cstar);
title('\bf Analiza C*(t) (varianta cu prefiltru)');
xlabel('t [s]');
ylabel('C*');
grid on;
Rezultatele Matlab
Alocarea polilor
nz/alpha=
-16.1083
Kq =
-1.9960
K_nz =
-0.0501
Notațiile:
nz / alpha - raportul starilor nz, alpha folosit la alegerea limitelor wa , wb , z a , z b
K q , K nz q, nz
- amplificările corespunzătoare starilor
Ka = f ( K q )
Fig.18 Domeniul de alocare al polilor
După determinarea completă a scurtei perioade, aici incluzând și verificarea celor două
criterii de calitate, se trece la determinarea fugoidei care la rândul ei va fi stabilizată prin
amplificare.
Pentru a obține ecuațiile modurilor lente ale dinamicii longitudinale (fugoida), membrul
drept al ecuațiilor corespunzătoare scurtei perioade se anulează, ceea ce înseamnă că în ecuațiile
032 impunem condițiile 033.
�u&= X u �
u + Xa �a - g cos g 0 �
q + X de �
de
�
�a&= Z u � a + q - g sin g 0 �
u + Za � q + Zd e �
de
�
�q&= M u �u + Ma �a + Mq � q + Mq � q + M de �de
�&
�q =q
32032\*
MERGEFORMAT (.)
�a&= 0
�
�q&= 0 33033\* MERGEFORMAT (.)
Rezultă sistemul:
� Zu �
� a + q - g sin g 0 �
u + Za � q + Zd e �
de = 0
�
u + Ma �
�M u � a + Mq � q + Mq � q + M de �
de = 0
34034\*
MERGEFORMAT (.)
a ( u,q , d e ) q ( u,q , d e )
care se rezolvă în raport cu variabilele și .
�a = a ( u,q , d e )
�
�q = q ( u , q , d e ) 35035\* MERGEFORMAT (.)
�
�u&= X u �u + Xa � a ( u,q , d e ) + X q �
q ( u, q , d e ) - g cos g 0 �
q + X de �
de
�&
�q = q ( u,q , d e )
36036\*
MERGEFORMAT (.)
x&ph = Aph � de
x ph + B ph �
37037\* MERGEFORMAT (.)
u
+
Fugoida
- q
Kq
Valorile proprii ale fugoidei trebuie să fie foarte apropiate de valorile proprii din
dinamica longitudinală totală (fugoidă + scurtă perioadă).
Ku Kq
Pentru a stabiliza comportarea fugoidei se vor aplica amplificările și astfel:
u
+ Dinamica
fugoidei
- -
q
Kq
Ku
Fig.20 Schema bloc pentru stabilizarea fugoidei
Se poate aplica numai o singură amplificare pe q , dar pentru determinarea unei fugoide
stabile se va aplica o amplificare și pe u .
După determinarea amplificărilor și a valorilor proprii se poate spune că fugoida a fost
stabilizată ceea ce ne poate permite să determinăm răspunsul stabilizat al fugoidei.
�a&= 0
�
�q&= 0 39039\* MERGEFORMAT (.)
Se știe că:
�a = a ( u,q , d e )
�
�q = q ( u , q , d e ) 41041\* MERGEFORMAT (.)
-1
a� �
� a22 a23 � ��
a21 a24 ���
u � b2 � �
= - � � �� � + � de �
�
�
q�
� � � a31 a34 ���
a32 a33 � �� q �
�� b3 �
� � 43043\*
MERGEFORMAT (.)
� u&= a11u + a12a + a13q + a14q + b1d e
�&
�q = u = a41u + a42a + a43 q + a44q + b4d e
44044\* MERGEFORMAT
(.)
Altfel scris:
u& �
�� a11 a14 ���
u �a a� �
a13 �� b�
��= � ���+ �12 �� �+ �1 �d
�
q& �
�� a41 q
a44 ��� a42
� a43 ��q� �b4 � e
45045\*
MERGEFORMAT (.)
-1
u& ��
�� a a �� a a13 ��
a22 a23 � �a21 a24 ����
u
��
& = ��11 14 �- �12 �� � � ����+
q ��
�� a a a a43 ��
a32 a33 � � q
a31 a34 ����
� 41 44 � �42 �
-1
��b�� a a13 ��
a22 a23 � �b2 ��
+ ��1 �- �12 ��
�de
��
b a a43 ��
a32 a33 � �
� �3 ��
b
� 4 � �42 �� � 46046\*
MERGEFORMAT (.)
-1
��a a14 � � a a13 ��
a22 a23 � �
a21 a24 ��
Aph = ��11 �- �12 �� � � ��
��
a a44 � �a42 a43 ��
a32 a33 � �
a31 a34 ��
� 41 � 47047\*
MERGEFORMAT (.)
-1
��b�� a a13 ��
a22 a23 � �b2 ��
B ph = ��1 �- �12 �� � � ��
��
b a a43 ��
a32 a33 � �b3 ��
� 4 � �42 �48048\* MERGEFORMAT
(.)
-1
��B (1) � �A(1, 2) A(1,3) ��A(2, 2) A(2,3) � �B(2) � �
B ph = �� -� �
��B(4) ��� A(4, 2) ��
A(4,3) ��A(3, 2) A(3,3) �
��
�
B (3) �
��
� �
nivelul 2 - x ph �0
T2 �55s
nivelul 3 -
kq
Se caută astfel încât:
L ( Aph - Bph [ 0 kq ] ) �C -
50050\* MERGEFORMAT (.)
Sistemul SAS are ca metodă de aplicare generarea unor amplificări pe anumite ieșiri ale
sistemului dinamic nestabilizat al avionului și apoi trimiterea acestor amplificări pe intrările
sistemului dinamic, deci este vorba de amplificare în reacție.
u
Dinamica
+ a
longitudinală q
- a avionului q
kq
kq
ku
Fig.21 S.A.S.
Valorile amplificărilor care trebuiesc aplicate sunt cele determinate pentru stabilizarea
scurtei perioade și respectiv a fugoidei. Matricea de stabilitate longitudinală va fi modificată
astfel:
� U �
Asas = A - B0 �
�0, K u � 0 �
A(2, 2), K q , Kq �
� g �
Se observă că matricea s-a schimbat semnificativ față de matricea inițială, iar valorile
proprii ale matricei sunt apropiate de valorile proprii ale matricelor de stabilitate dictate de MIL.
%% Fugoida
% Valorile proprii
Val_proprii_ph=eig(Aph);
disp('Valorile proprii ale matricei Aph');
disp(Val_proprii_ph);
% Functia de transfer
Hph=Cph(1,:)*(s*eye(2)-Aph)^(-1)*Bph+Dph;
figure(5); step(Hph); title('Raspunsul dinamicii fugoidei la comanda de tip treapta unitate');
%% Stabilizarea fugoidei
t=0:0.1:100;
var=0;
for Ktheta=0:0.1:1
for Ku=-2:0.1:2
Aph_st=Aph-Bph*[Ku Ktheta];
Val_proprii_Aph_st=eig(Aph_st);
if real(Val_proprii_Aph_st(1))<-0.01 && real(Val_proprii_Aph_st(2))<-0.01 &&
abs(imag(Val_proprii_Aph_st(1)))==abs(imag(Val_proprii_Aph_st(2)))
disp('Ku'); disp(Ku);
disp('Ktheta'); disp(Ktheta);
var=1;
break;
end
end
if var==1
break;
end
end
CAPITOLUL 2
Ar , Br , Cr , Dr
Sistemul rezultant ( ) este prezentat în Figura 2.1.
1
h +
de Dinamica nz
s+c longitudinală q
- - a avionului q
-
kq
kq
knz
Fig.23 - Sistemul rezultant
unde:
�Cq = [ 0 0 0 1]
�
�Cq = [ 0 0 1 0]
�Cn z = [ 0 1 0 0 ]
� 54254\* MERGEFORMAT (.)
Iar:
x&= A � de = A �
x + B� x + B �h - kq �( (
Cq + kq �
Cq + k nz � x =
Cnz � ) )
(
= A - kq �
Cq - kq �
C q - k nz � x+ B�
Cnz � )
h = Ar � h
x + Br �
55255\*
MERGEFORMAT (.)
Am notat:
L( Ar ) �C , L ( Ar ) Ar
Se verifică dacă unde sunt valorile proprii ale matricei .
K
Etapa I - Determinarea constantelor K și 0 în cazul în care toate stările sunt
măsurabile.
Sistemul � este:
x&= Ar x + Brd e
57257\* MERGEFORMAT (.)
iar comanda
d e se poate scrie:
Rezultă sistemul:
�x&= Ar x + Br ( K 0h + Kx) = ( Ar + Br K ) x + Br K 0h
�
�h&= q c - Cq x
60260\*
MERGEFORMAT (.)
echivalent cu:
0
��
��
0
x& �
�� A + Br K x ��
Br K 0 ���
= �r 0 q
+ ��
��
h& � -Cq
�� 0 � ��
h ��c
���
0
��
��
1 61261\* MERGEFORMAT (.)
��
Ar + Br K
� Br K 0 � �Ar 0� � B�
� -C 0 �
=�
-Cq �
0 � �0 �
[K
+ �r � K 0 ] = Arond + Brond K rond
� q � � 62262\*
MERGEFORMAT (.)
Am făcut notațiile:
� �Ar 0 �
�Arond = �
� � -Cq 0 �
�
�
� � Br �
�Brond = � �
� �0 �
�K = [ K K0 ]
� rond
�
� 63263\* MERGEFORMAT (.)
Dacă se consideră:
�u �
�n�
�z �
xrond = �q �
��
�q�
�
�h�� 64264\* MERGEFORMAT (.)
0
��
��
0
��
x&= ( Arond + Brond K rond ) xrond 0 qc
+ ��
��
0
��
��
1
�� 65265\* MERGEFORMAT (.)
K
Constantele K și 0 se calculează tratând problema ca una liniar - pătratică cu indicele
de performanță:
O regulă empirică, dar frecvent utilizată în proiectare este alegerea ponderilor în forma:
� �1 1 �
�Q = diag � 2 ,..., 2 �
� �xi xnmax �
� max �
�
� �1 1 �
�R = diag �
�ui
2
,..., 2 �
unmax �
� � max � 68268\* MERGEFORMAT (.)
unde:
ximax xi
reprezintă valoarea maximă dorită a stării
uimax ui
reprezintă valoarea maximă dorită a comenzii
�x&= Ar x + Brd e + Gw
�
�y = Cr x + Drd e + v
�& &
�xˆ = ( Ar - LCr ) xˆ + Br d e + Ly 70270\* MERGEFORMAT (.)
unde:
0 1 0 0 0�
� 0
��
Cr = �
0 0 1 0 0�
� ;
� Dr = ��
0
��
�
0 0 0 1 0�
� � ��
0
��71271\* MERGEFORMAT (.)
( )
�x&= Ar x + Br d e + dd
� e
�&
( )
�xˆ = ( Ar - LCr ) xˆ + Br d e + dde d e + Ly
�
�h&= e = qc - ( q + dq ) = qc - Cq x - dq
� 72272\* MERGEFORMAT (.)
Se consideră:
�nz + d nz �
� �
y = �q + d q �
�q + dq �
� � 73273\* MERGEFORMAT (.)
�
( )
�x&= Ar x + Br K 0h + Kxˆ + dd = Ar x + Br K 0h + Br Kxˆ + Br dd
e e
�&
�xˆ = ( Ar - LCr ) xˆ + Br Kxˆ + Br K 0h + Br dd e + L ( Cr x + d )
�&
�h = q c - Cq x - dq
� 74274\*
MERGEFORMAT (.)
d nz �
�
� �
d=�dq �
�dq �
� � 75275\* MERGEFORMAT (.)
x& �Ar
�� Br K Br K 0 ���
x �� 0 �Br 0 �
�� � ��dd e �
��ˆ =�
x& LCr Ar - LCr + Br K ���
Br K 0 ��� ��
0 qc + �
xˆ + �� Br L �
� d �
�
�
��
h& � -Cq
� 0 0 � h ��
���
�� ��
1 � [ 0 0 -1] �� �
�� �0 � 76276\*
MERGEFORMAT (.)
Se identifică:
�Ar Br K Br K 0 �
A _ pa = �
�LCr Ar - LCr + Br K Br K 0 �
�
�
�-Cq 0 0 � �77277\* MERGEFORMAT
(.)
0
��
B _ pa = ��
0
��
��
1
�� 78278\* MERGEFORMAT (.)
�Br 0 �
� �
D _ pa = �Br L �
�
�0 [ 0 0 -1] �
� 79279\* MERGEFORMAT (.)
Se consideră:
Cq = [ 0 0 0 1]
Cq ' = [ 0 0 1]
L ( Ar - LCr ) �C -
�
2.2 Metoda de proiectare H
Un sistem este considerat a fi robust stabil, dacă, în orice stare (din domeniul prestabilit)
s-ar afla, pentru orice incertitudine definită în jurul condițiilor nominale și în domeniul
prestabilit, compensatorul este capabil să îl stabilizeze. Același sistem deține performanțe robuste
dacă, în aceleași condiții, compensatorul este capabil să garanteze sistemului real performanțele
cerute.
� �
Metodele de proiectare H funcționează prin minimizarea unei norme H a unei
funcții de transfer în buclă închisă astfel aleasă încât să reflecte stabilitatea și performanța
robustă a sistemului. Norma poate fi privită ca o măsură a performanței unui sistem în funcție de
mărimea semnalelor, funcțiilor de transfer și a incertitudinilor.
u1 T y1
u2 k y2
Fig.26
u1
este intrarea exogenă de tip zgomot alb;
u2
reprezintă variabila de comandă;
y1
este ieșirea de calitate;
y2
este ieșirea măsurată.
�q c �
�dd e �
� �
�d nz �
u1 = � � ; u2 = d e ;
�d q �
� �
�dq �
�
�dh � � 80280\* MERGEFORMAT (.)
� qc �
�h + d �
w ( qc - q ) �
� � h �
y1 = � �
; y2 = z
� n + d nz
�
� e d � � �
�q + d q �
�q + d �
� q �
81281\* MERGEFORMAT (.)
� (
�x&= Ar x + Br d e + dd e
�
)
h&= e = q c - q = q c - Cq x
� 82282\* MERGEFORMAT (.)
x& �Ar
�� 0 ���
x �
0 Br 0 0 0 0� � B�
= +� u1 + �r �u
h& �
��
�� -Cq
�
���
h �
0 ��� 1 0 �
0 0 0 0 � �0 �2
83283\*
MERGEFORMAT (.)
sau
x
�� �A 0� 0 Br
� 0 0 0 0� �B �
xPA = ��; A=� r ; B1 = �
� ; B2 = �r �
� .
h
�� �-Cq 0� 1 0
� 0 0 0 0� �0 � 85285\*
MERGEFORMAT (.)
0 0 0 -w 0 0�
� w 0 0 0 0 0 � ��
� 0
y1 = � �xPA + � �u1 + ��u2
0 0 0 0 0 0�
� 0 0 0 0 0 0 � ��
� 1 86286\*
MERGEFORMAT (.)
Dacă notez
0 0 0 -w 0 0�
� w 0 0 0 0 0�
� 0
��
C1 = � ; D11 = �
� ; D12 = ��
� ,
0 0 0 0 0 0�
� 0 0 0 0 0 0�
� 1
�� 87287\*
MERGEFORMAT (.)
atunci
Dacă notez
0
� 0 0 0 0 0� 1
� 0 0 0 0 0� 0
��
�
0 0 0 0 0 1 � �
0 0 0 0 0 1 � ��
0
� � � � ��
C2 = �
0 1 0 0 0 0�; D21 = �
0 0 1 0 0 0�; D22 = ��
0
� � � � ��
0
� 0 1 0 0 0� 0
� 0 0 1 0 0� 0
��
�
0
� 0 0 1 0 0�� �
0
� 0 0 0 1 0�� ��
0
�� 89289\*
MERGEFORMAT (.)
atunci
Programul Matlab
%% Proiectarea pilotului automat pentru unghiul de atitudine longitudinala
% Verificare Re{Lambda(Ar)}<0
disp('Re{Lambda(Ar)}');
disp(real(eig(Ar)));
%% METODA CONVENTIONALA
disp('METODA CONVENTIONALA');
disp(' ');
% Etapa I
% Determinarea K si K0 in cazul in care toate starile sunt masurabile
% (filtrul Kalman lipseste)
disp('Etapa I');
disp('Determinarea K si K0 in cazul in care toate starile sunt masurabile');
disp('(filtrul Kalman lipseste)');
disp(' ');
Ctheta=[0 0 0 1 0];
Arond=[Ar zeros(5,1); -Ctheta 0];
Brond=[Br; 0];
disp('Ponderile se aleg ca fiind:');
% Q=eye(6);
% R=1;
Q=eye(6);
R=1;
[Krond,x]=lqr(Arond,Brond,Q,R);
K=-Krond(:,1:5);
K0=-Krond(:,6);
disp('K='); disp(K);
disp('K0='); disp(K0);
% Verificare Re(Lambda(Arond+Brond*Krond))<0
disp('Re(Lambda(Arond-Brond*Krond))');
disp(real(eig(Arond-Brond*Krond)));
% Etapa II
% Determinarea K si K0 in cazul in care nu toate starile sunt masurabile
% (filtrul Kalman)
disp('Etapa II');
disp('Calculul filtrului Kalman');
disp(' ');
% Verificare Re(Lambda(Ar-L*Cr))<0
disp('Re(Lambda(Ar-L*Cr))');
disp(real(eig(Ar-L*Cr)));
t=0:1:200;
% Zgomote:
d1=sqrt(1e-3)*randn(201,1);
d2=sqrt(1e-3)*randn(201,1);
d3=sqrt(1e-3)*randn(201,1);
d4=sqrt(1e-3)*randn(201,1);
figure(10);
plot(t,d1);
title('\bf Zgomotul d_1=d_1(t)');
xlabel('t [s]');
ylabel('d_1');
grid on;
% Iesiri murdarite
nzm=nz+d2;
qm=q+d3;
thetam=theta+d4;
% Viteza estimata
Ve=lsim(AFK,[Br L],[1 0 0 0 0],0,[u nzm qm thetam],t);
figure(12);
plot(t,V,t,Ve);
title('\bf Viteza estimata vs. viteza reala');
xlabel('t [s]');
ylabel('V [m/s]; V_e [m/s]');
grid on;
figure(14);
plot(t,theta_e1,t,theta_e2,t,theta_e3);
title('\bf Simulare cu/fara existenta zgomotelor');
xlabel('t [s]');
ylabel('\Theta_e [rad]');
legend('theta_e_1','theta_e_2','theta_e_3');
grid on;
% Verificare Re(Lambda(Ar-L*Cr))<0
disp('Re(Lambda(A_pa))');
disp(real(eig(A_pa)));
% Impuls Dirac
figure(16);
impulse(A_pa,B_pa,[Ctheta zeros(1,6)],0);
% Comanda delta_e
figure(17);
step(A_pa,B_pa,[zeros(1,5) K K0],0);
%% Metoda H-infinit
disp('Metoda H-infinit'); disp(' ');
w=100; % ponderea erorii (theta_c-theta)
% x=A*x+B_1*u_1+B_2*u_2
A_1=[Ar zeros(5,1);
-Ctheta 0];
B_1=[Br*[0 1 0 0 0 0];
1 0 0 0 0 0];
B_2=[Br;0];
% y_1=C_1*x+D_11*u_1+D_12*u_2
C_1=[-w*Ctheta 0;
0 0 0 0 0 1];
D_11=zeros(2,6); D_11(1,1)=w;
D_12=[0;1];
% y_2=C_2*x+D_21*u_1+D_22*u_2
C_2=[zeros(2,6);zeros(3,1) eye(3) zeros(3,2)];
C_2(2,6)=1;
D_21=[zeros(2,6);zeros(3,2) eye(3) zeros(3,1)];
D_21(1,1)=1;
D_21(2,6)=1;
D_22=zeros(5,1);
[A_H,B_H,C_H,D_H]=unpck(g);
disp('Pilotul automat');
A_H
B_H
C_H
D_H
figure(19);
[theta,t]=impulse(sistem_Hinfinit);
% theta=theta/w; theta=1-theta;
plot(t,theta);
title('\bf Raspunsul pilotului automat la impuls Dirac');
xlabel('t [s]');
ylabel('\Theta [rad]');
grid on;
Rezultate Matlab
Kq
-1.9960
Ktheta
Re{Lambda(Ar)}
-9.5178
-0.3378
-0.0152
-0.0152
-4.0000
METODA CONVENTIONALA
Etapa I
Determinarea K si K0 in cazul in care toate starile sunt masurabile (filtrul Kalman lipseste)
K=
K0=
1.0000
Re(Lambda(Arond-Brond*Krond))
-9.5362
-4.1691
-1.9279
-1.9279
-0.0003
-0.2140
Etapa II
Re(Lambda(Ar-L*Cr))
-9.5439
-2.8564
-2.7260
-0.0348
-0.0348
Re(Lambda(A_pa))
-9.5439
-9.5362
-4.1691
-1.9279
-1.9279
-2.8564
-2.7260
-0.2140
-0.0003
-0.0348
-0.0348
Metoda H-infinit
-9.8e-05 -4.8e-01 -1.4e+01 6.7e-01 1.2e+00 0.0e+00 | 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00
0.0e+00
3.3e-03 -7.1e-02 -9.4e+00 0.0e+00 -4.5e+00 0.0e+00 | 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00
0.0e+00
0.0e+00 0.0e+00 1.0e+00 0.0e+00 0.0e+00 0.0e+00 | 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00
0.0e+00
0.0e+00 0.0e+00 0.0e+00 0.0e+00 -4.0e+00 0.0e+00 | 0.0e+00 1.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00
1.0e+00
0.0e+00 0.0e+00 0.0e+00 -1.0e+00 0.0e+00 0.0e+00 | 1.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00
0.0e+00
-------------------------------------------------------|---------------------------------------------------------------
0.0e+00 0.0e+00 0.0e+00 -1.0e+02 0.0e+00 0.0e+00 | 1.0e+02 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00
0.0e+00
0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 1.0e+00 | 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00
1.0e+00
0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 | 1.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00
0.0e+00
0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 1.0e+00 | 0.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 1.0e+00
0.0e+00
0.0e+00 1.0e+00 0.0e+00 0.0e+00 0.0e+00 0.0e+00 | 0.0e+00 0.0e+00 1.0e+00 0.0e+00 0.0e+00 0.0e+00
0.0e+00
0.0e+00 0.0e+00 1.0e+00 0.0e+00 0.0e+00 0.0e+00 | 0.0e+00 0.0e+00 0.0e+00 1.0e+00 0.0e+00 0.0e+00
0.0e+00
0.0e+00 0.0e+00 0.0e+00 1.0e+00 0.0e+00 0.0e+00 | 0.0e+00 0.0e+00 0.0e+00 0.0e+00 1.0e+00 0.0e+00
0.0e+00
Pilotul automat
A_H =
1.0e+04 *
Columns 1 through 12
0 0 0.0001 0 0 0 0 0 0 0 0 0
0 0 0 -0.0001 0 0 0 0 0 0 0 0
0 -0.0008 0.0004 -0.0005 0 0.0052 -0.0000 0.0003 -0.0001 -0.0036 -0.0000 -0.0006
0 0.0008 -0.0001 -0.0001 0 0.0000 -0.0000 -0.0002 -0.0014 0.0001 0.0001 -0.0000
0 -0.0001 0.0000 0.0000 0 0.0000 0.0000 0.0000 -0.0009 -0.0000 -0.0005 -0.0000
0 -0.0001 0.0000 0.0000 0 -0.0000 0.0000 0.0000 0.0001 0.0000 0.0000 0.0000
0 0.0001 -0.0000 -0.0000 0 0.0000 -0.0489 -0.2158 -0.0489 -3.3568 -0.0051 0.8138
0 0.0000 0.0000 -0.0000 0 0.0002 -0.0000 -0.0000 -0.0000 -0.0001 -0.0000 -0.0000
B_H =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 1.0000 0 0 0 0
1.0000 0 0 0 0 0
C_H =
1.0e+03 *
Columns 1 through 12
0 0 0 -0.1000 0 0 0 0 0 0 0 0
D_H =
100 0 0 0 0 0
0 0 0 0 0 0
-39.6638
-13.7109
-9.5442
-3.2586 + 6.4822i
-3.2586 - 6.4822i
-2.7936 + 0.1020i
-2.7936 - 0.1020i
-0.0082
-0.0104
-0.1272 + 0.1221i
-0.1272 - 0.1221i
-0.5057
Matlab aplicată pentru acestă metodă este lqr (Linear-quadratic regulator design) . În acest caz nu
a fost folosit un Filtru Kalman.
În figura 32 sunt prezentate evoluțiile în timp pentru viteza reală și pentru viteza estimată.
V ,Ve
Au fost notate cu și folosită procedura lsim (simulează timpul de răspuns al sistemelor
dinamice la intrări arbitrare). Se observă că cele două grafice se stabilizează la valoarea
m
U 0 = 317.48
s .
Figurile 35, respectiv 36 prezintă raspunsul sistemului la comanda traptă și impuls Dirac
Ah , Bh , Ch , Dh
după aplicarea metodei H-infinit . În program matricile rezultante s-au notat cu . Se
observă că pilotul automat stabilizează sistemul îmtr-un interval de aproximativ 600 s (figura
35), iar în cazul raspunsului la comanda impulse, dupa un interval de aproximativ 2 s valoarea
0 [ rad ]
unghiului de tangaj devine .