% % B747 lateral dynamics % from Etkin and Reid % Jonathan P. How % 16.333 Fall 2004 % % note Reid definition of positive aileron is different than nelson's on % (6-4) - Reid defines positive Aileron as right A down (pg 86) if 1 Yv=-1.61e4;Yp=0;Yr=0; Lv=-3.062e5;Lp=-1.076e7;Lr=9.925e6; Nv=2.131e5;Np=-1.33e6;Nr=-8.934e6; g=9.81;theta0=0;S=511;cbar=8.324;b=59.64; U0=235.9; m=2.83176e6/g;cbar=8.324;rho=0.3045; Iyy=.449e8;Ixx=.247e8;Izz=.673e8;Ixz=-.212e7; else Yv=-1.103e3;Yp=0;Yr=0; Lv=-6.885e4;Lp=-7.934e6;Lr=7.321e6; Nv=4.79e4;Np=-9.809e5;Nr=-6.590e6; g=32.2;U0=774;Iyy=.331e8;m=636636/g;cbar=27.31;rho=0.0005909; theta0=0;S=5500;b=195.7; Ixx=.183e8;Izz=.497e8;Ixz=-.156e7; end % % nondimensional control derivatives % Cyda=0;Cydr=.1146; Clda=-1.368e-2;Cldr=6.976e-3; Cnda=-1.973e-4;Cndr=-.1257; QdS=1/2*rho*U0^2*S; Yda=QdS*Cyda;Ydr=QdS*Cydr;Lda=QdS*b*Clda;Ldr=QdS*b*Cldr; Nda=QdS*b*Cnda;Ndr=QdS*b*Cndr; Ixxp=(Ixx*Izz-Ixz^2)/Izz; Izzp=(Ixx*Izz-Ixz^2)/Ixx; Ixzp=Ixz/(Ixx*Izz-Ixz^2); % % full lateral derivatives % A=[Yv/m Yp/m (Yr/m-U0) g*cos(theta0); (Lv/Ixxp + Ixzp*Nv) (Lp/Ixxp + Ixzp*Np) (Lr/Ixxp + Ixzp*Nr) 0; (Ixzp*Lv + Nv/Izzp) (Ixzp*Lp + Np/Izzp) (Ixzp*Lr + Nr/Izzp) 0; 0 1 tan(theta0) 0]; B=[1/m 0 0;0 1/Ixxp Ixzp;0 Ixzp 1/Izzp;0 0 0]*[Yda Ydr;Lda Ldr;Nda Ndr]; % % reduced models % A_roll=(Lp/Ixxp + Ixzp*Np); A_dr=[Yv/m -U0;(Ixzp*Lv + Nv/Izzp) (Ixzp*Lr + Nr/Izzp)]; [V,ev]=eig(A);ev=diag(ev);D=V; %rifd(ev) [ev_roll]=eig(A_roll); %rifd(ev_roll) [ev_dr]=eig(A_dr); %rifd(ev_dr) % nondimensionalization V(1,:)=V(1,:)/U0; V(2,:)=V(2,:)/(2*U0/b); V(3,:)=V(3,:)/(2*U0/b); for i=1:4 V(:,i)=V(:,i)/V(4,i); end %return C=[eye(4)]; freq=logspace(-2,1,400); sys=ss(A,B,C,zeros(4,2)); G=freqresp(sys,freq); TT=[0:.05:30]'; %sys_a=ss(A,[B(:,1)/180*pi],diag([180/pi/U0 180/pi 180/pi 180/pi]),zeros(4,1)); %[Ya,Ta]=impulse(sys_a,200); sys_a=ss(A,[B(:,1)/180*pi],diag([1/U0 1 1 1]),zeros(4,1)); [Ya,Ta]=step(sys_a,30); ii=find(TT <= 2); Uda=0*TT;Uda(ii)=1*ones(size(ii)); [Ya,Ta]=lsim(sys_a,Uda,TT'); Udr=Uda; %sys_r=ss(A,[B(:,2)/180*pi],diag([180/pi/U0 180/pi 180/pi 180/pi]),zeros(4,1)); %[Yr,Tr]=impulse(sys_r,200); sys_r=ss(A,[B(:,2)/180*pi],diag([1/U0 1 1 1]),zeros(4,1)); [Yr,Tr]=step(sys_r,30); %[Yr,Tr]=lsim(sys_r,Udr,TT'); figure(5);clf; %plot(Tr,Yr(:,1),'-',Tr,Yr(:,2),'--',Tr,Yr(:,3),'^',Tr,Yr(:,4),'o') %axis([0 30 -.1 .1]) %ylabel('angles in rad') %legend('Beta','P','R','Phi') %xlabel('time sec') %title('Rudder Impulse') subplot(411) plot(Tr,Yr(:,1),'-','LineWidth',2);grid ylabel('\beta rad') title('Rudder 1 deg step') subplot(412) plot(Tr,Yr(:,2),'-','LineWidth',2);grid ylabel('p rad/sec') subplot(413) plot(Tr,Yr(:,3),'-','LineWidth',2);grid ylabel('r rad/sec') subplot(414) plot(Tr,Yr(:,4),'-','LineWidth',2);grid ylabel('\phi rad') %plot(Ta,Ya(:,1),'-',Ta,Ya(:,2),'--',Ta,Ya(:,3),'^',Ta,Ya(:,4),'o') %axis([0 20 -.25 .1]) %axis([0 30 -.02 .1]);grid %legend('Beta','P','R','Phi') xlabel('time sec') print -depsc ac2_fig2 figure(6);clf; subplot(411) plot(Ta,Ya(:,1),'-','LineWidth',2);grid ylabel('\beta rad') title('Aileron 1 deg Impulse - 2sec on then off') subplot(412) plot(Ta,Ya(:,2),'-','LineWidth',2);grid ylabel('p rad/sec') legend('\delta_a > 0 ==> right wing up') subplot(413) plot(Ta,Ya(:,3),'-','LineWidth',2);grid ylabel('r rad/sec') legend('Initial adverse yaw ==> RY coupling') subplot(414) plot(Ta,Ya(:,4),'-','LineWidth',2);grid ylabel('\phi rad') %plot(Ta,Ya(:,1),'-',Ta,Ya(:,2),'--',Ta,Ya(:,3),'^',Ta,Ya(:,4),'o') %axis([0 20 -.25 .1]) %axis([0 30 -.02 .1]);grid %legend('Beta','P','R','Phi') xlabel('time sec') print -depsc ac2_fig2a clear Gvda Gpda Grda Gvdr Gpdr Grdr Gphda Gphdr Gvda(:,1)=G(1,1,:); Gpda(:,1)=G(2,1,:); Grda(:,1)=G(3,1,:); Gphda(:,1)=G(4,1,:); Gvdr(:,1)=G(1,2,:); Gpdr(:,1)=G(2,2,:); Grdr(:,1)=G(3,2,:); Gphdr(:,1)=G(4,2,:); figure(1);clf orient('landscape') subplot(231) loglog(freq,abs(Gvda),min(abs(ev))*[1 1],[.1 1e4],'--',max(abs(ev))*[1 1],[.1 1e4],'--','LineWidth',2) axis([.01 5 1e-2 1e2]) ylabel('|G_\beta_d_a|') xlabel('Freq (rad/sec)') subplot(232) loglog(freq,abs(Gpda),min(abs(ev))*[1 1],[.1 1e4],'--',max(abs(ev))*[1 1],[.1 1e4],'--','LineWidth',2) axis([.01 5 1e-2 1e2]) ylabel('|G_p_d_a|') xlabel('Freq (rad/sec)') title('Transfer function from aileron to flight variables') subplot(233) loglog(freq,abs(Grda),min(abs(ev))*[1 1],[.1 1e4],'--',max(abs(ev))*[1 1],[.1 1e4],'--','LineWidth',2) ylabel('|G_r_d_a|') xlabel('Freq (rad/sec)') axis([.01 5 .01 1e2]) subplot(234) semilogx(freq,180/pi*phase(Gvda.'),min(abs(ev))*[1 1],[-360 0],'--',max(abs(ev))*[1 1],[-360 0],'--','LineWidth',2) ylabel('arg G_\beta_d_a') xlabel('Freq (rad/sec)') axis([.01 5 -200 200]) subplot(235) semilogx(freq,180/pi*phase(Gpda.'),min(abs(ev))*[1 1],[-360 0],'--',max(abs(ev))*[1 1],[-360 0],'--','LineWidth',2) ylabel('arg G_p_d_a') xlabel('Freq (rad/sec)') axis([.01 5 -360 0]) subplot(236) semilogx(freq,180/pi*phase(Grda.'),min(abs(ev))*[1 1],[-360 0],'--',max(abs(ev))*[1 1],[-360 0],'--','LineWidth',2) ylabel('arg G_r_d_a') xlabel('Freq (rad/sec)') axis([.01 5 -200 200]) print -depsc ac2_fig1 figure(2);clf orient('landscape') subplot(231) loglog(freq,abs(Gvdr),min(abs(ev))*[1 1],[.1 1e4],'--',max(abs(ev))*[1 1],[.1 1e4],'--','LineWidth',2) axis([.01 5 1 1e4]) ylabel('|G_\beta_d_a|') xlabel('Freq (rad/sec)') subplot(232) loglog(freq,abs(Gpdr),min(abs(ev))*[1 1],[.1 1e4],'--',max(abs(ev))*[1 1],[.1 1e4],'--','LineWidth',2) axis([.01 5 1e-2 1e2]) ylabel('|G_p_d_a|') xlabel('Freq (rad/sec)') title('Transfer function from rudder to flight variables') subplot(233) loglog(freq,abs(Grdr),min(abs(ev))*[1 1],[.1 1e4],'--',max(abs(ev))*[1 1],[.1 1e4],'--','LineWidth',2) ylabel('|G_r_d_a|') xlabel('Freq (rad/sec)') axis([.01 5 .01 100]) subplot(234) semilogx(freq,180/pi*phase(Gvdr.'),min(abs(ev))*[1 1],[-360 0],'--',max(abs(ev))*[1 1],[-360 0],'--','LineWidth',2) ylabel('arg G_\beta_d_a') xlabel('Freq (rad/sec)') axis([.01 5 -200 200]) subplot(235) semilogx(freq,180/pi*phase(Gpdr.'),min(abs(ev))*[1 1],[-360 0],'--',max(abs(ev))*[1 1],[-360 0],'--','LineWidth',2) ylabel('arg G_p_d_a') xlabel('Freq (rad/sec)') axis([.01 5 -540 0]) subplot(236) semilogx(freq,180/pi*phase(Grdr.'),min(abs(ev))*[1 1],[-360 0],'--',max(abs(ev))*[1 1],[-360 0],'--','LineWidth',2) ylabel('arg G_r_d_a') xlabel('Freq (rad/sec)') axis([.01 5 -360 200]) print -depsc ac2_fig1a % %return !eps2pdf /f="ac2_fig1.eps" !mv c:\ac2_fig1.pdf ./ac2_fig1.pdf !eps2pdf /f="ac2_fig1a.eps" !mv c:\ac2_fig1a.pdf ./ac2_fig1a.pdf !eps2pdf /f="ac2_fig2.eps" !mv c:\ac2_fig2.pdf ./ac2_fig2.pdf !eps2pdf /f="ac2_fig2a.eps" !mv c:\ac2_fig2a.pdf ./ac2_fig2a.pdf return