You are on page 1of 12

Small Perturbation and Disturbance Analysis F-104 Starfighter

Brandon Barry1, Michael Spain2, and Robert Potter3 Aerospace Engineering, Cal Poly, San Luis Obispo, CA, 93407

This document will provide an introduction, run-through, and explanation of a series of models designed to simulate the control response and analyze the transfer functions of an aircraft responding to small disturbance inputs under the small perturbation theory.

Nomenclature
b cbar g Ix Iy Iz Ixz m Mn Mu Mw Mwd Mq Mt Rho S theta V Xn Xq Xt Xu Xw Xwd Zn Zwd Zq Zt Zu = Reference Wing Spain (ft) = Reference Chord (ft) = Gravitational Acceleration Constant (ft/sec2) = Moment of Inertia, 1st Body Axis (slug-ft2) = Moment of Inertia, 2nd Body Axis (slug-ft2) = Moment of inertia, 3rd Body Axis (slug-ft2) = Product of inertia referred to body axis (slug-ft2) = mass (slugs) = Mach Number = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative (Thrust) = Mass Density of Air (slugs/ft3) = Reference Wing Area (ft3) = Pitch Angle (degrees) = Linear Perturbed Velocity (ft/s) = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative (Thrust) = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative = Longitudinal Dimensional Derivative (Thrust) = Longitudinal Dimensional Derivative

Aerospace Engineering, Building 41A, Room 134, Cal Poly, 1 Grand Avenue, San Luis Obispo, CA 93407 1 American Institute of Aeronautics and Astronautics

I. Introduction

HIS document presents the results of rotational motion with small perturbations modeled with the F-104 Starfighter. The problem was to model and analyze the motion and accompanying equations of rigid body motion acting according to the small perturbation theory. As Aerospace Engineering students with interest in the defense industry, our group decided to model a well-known aircraft and analyze its motion. Considering factors such as: data availability, general airframe design, and modeling simplicity, our team determined analysis the F-104 Starfighter would be within the scope of our abilities. We proceeded to discern rotations about roll, pitch and yaw axes, or more commonly known as the body-frame axes. Our roll axis was aligned with the nose and tail of our aircraft, the pitch axis defined as the line connecting wing-tips, and the yaw axis pointing vertically down toward the surface of the earth.

II. Approach
In most conventional aircraft, there is exists a tail assembly consisting of vertical and horizontal stabilizers that create yaw and roll responses from each control surface on the tail, as well as, elevators that create motion in the a pitch response. Initially, the equations of motion are nonlinear and can be derived from the Euler angles, angular momentum equations, and Newtons second law, which are listed below.

In order to simplify the analysis of the system, it is necessary to linearize the equations of motion. This is achieved by using Small Perturbation Theory and assumptions based on steady trimmed rectilinear flight. This results in six transfer functions, which described six independent rotational motions. In order to further simplify the system, the equations of motion can be decoupled into longitudinal and lateral components. The longitudinal equations describe the relationship between elevator and thrust disturbances with respect to pitch. The lateral equations describe the relationship between aileron and rudder disturbance with respect to roll and yaw. These linear equations can be arranged in state space form as listed below.

After the equations of motion have been arranged in this form, Laplace analysis techniques can be used in MATLAB to find the relevant transfer functions. Using Laplace transforms is a highly efficient way to analyze and numerically solve differential equations. In our research, we were able to find all necessary aerodynamic coefficients listed in Nomenclature. Substituting the aerodynamic coefficients data into the equations of motion yields 12 differential equations that fully model the motion of the system. The six transfer functions that result from solving the 12 differential equations describe roll response to aileron input and rudder input, yaw response to aileron input and rudder input, and pitch response to elevator input and thrust input.

III. Results
The results to the transfer function analysis were as expected. All responses eventually converged to a value given a certain input, and all responses to control surface inputs were stable. A. Figures

2 American Institute of Aeronautics and Astronautics

Figure 1. Control Responses to Different Control Surface Inputs

Figure 2. Closed Loop Control Plots with a Step Input

3 American Institute of Aeronautics and Astronautics

Figure 3. Closed Loop Control Plots with a step disturbance and no input.

Figure 4. Error of the Closed Loop Control Diagrams measured with respect to an input and a disturbance.

IV. Analysis & Conclusion


The converging control responses suggest that our mathematics modeled a stable system, given small disturbances. Outside of the small perturbation theory, there are a multitude of different flight configurations to enter 4 American Institute of Aeronautics and Astronautics

that are unrecoverable, as there are with any aircraft. Within the specifications of our analysis, however, we can conclude that the aircraft was stable. The roll response to aileron input and yaw response to rudder input both converged in about 106 seconds. The roll and yaw responses, for the most part, act as over damped oscillatory systems. The evidence can be seen in Figures 1 and 2. The pitch responses, on the other hand, were less damped, and oscillated quite a bit, over a range of amplitudes, before settling to steady flight attitudes on the order of 104 seconds. The response of the pitch to a thrust input did not return to level flight attitude. The variation is due to the constant thrust change, the attitude with stabilize, but as long as the thrust input is still active, the attitude will not be level. As us pilots say when preparing to land: pitch for airspeed, thrust for altitude. To close, we conclude that the F-104 Starfighter was a stable aircraft, capable of stabilizing its attitude given a small control disturbance and response. The transfer functions have roots to their characteristic equations, all of which lie to the left of the imaginary axis in the Real-Imaginary plane. This suggests that the transfer functions are in fact stable, as shown in our plots. The plots and mathematics shown above and in Appendix A can show that the small perturbation theory is a valid method of analyzing rotational motion. Given the task of analyzing an aircraft with six degrees of freedom, we successfully modeled its rotation about the three body-frame axes and were able to accurately predict stability.

5 American Institute of Aeronautics and Astronautics

References
1

Heffley, Robert K., and Wayne F. Jewel. Aircraft Handling Qualities Data. Rep. no. NASA-CB-2144. Washington D.C.: NASA, 1972. NASA. Web. 29 Aug. 2013. <http://jsbsim.sourceforge.net/NASA_CR-2144.pdf>. Curtis, Howard D. Orbital Mechanics for Engineering Students. Amsterdam [u.a.: Butterworth-Heinemann, 2010. Print.

How, Jonathan. 16.333 Aircraft Stability and Control, Fall 2004. (MIT OpenCourseWare: Massachusetts Institute of Technology), http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-333-aircraft-stability-and-control-fall-2004 (Accessed 29 Aug, 2013). License: Creative Commons BY-NC-SA "F-104." Wikipedia. Wikimedia Foundation, 24 Aug. 2013. Web. 29 Aug. 2013. <http://en.wikipedia.org/wiki/F-104>.

Appendix A
% Robert Potter % Aero 320 Final Project

clear all close all clc % Initial Conditions V = .257*1116.4; %ft/s m = 16300/32.2; %lbm Ix = 3582; %slug-ft2 Iy = 55802; %slug-ft2 Iz = 56669; %slug-ft2 Ixz = 2658; %slug-ft2 rho = .00238; %slug/ft3 S = 196.1; %ft2 cbar = 9.55; %ft g = 32.2; % ft/s2 theta = 0; %degrees b = 21.94; % ft

%% Longitudinal Directional Dimensional Derivatives

Xu = -.0737; Xw = .0631; Xwd = 0; Xq = 0; Zu = -.204; Zw = -.570; Zwd = 0; Zq = 0; Mu = .000294; Mw = -.00732; Mwd = -.000304; Mq = -.317; Xn = 1.19; Zn = -29.7;

6 American Institute of Aeronautics and Astronautics

Mn = -4.79; Xt = .00228; Zt = .994*10^(-4); Mt = 0; % Must change values into dimensionless derivatives m = 2*m/(rho*V*S); Iy = Iy/(.5*rho*V*S*cbar); Ue = V*cos(theta); We = V*sin(theta); % The state vector is [u w q theta] (Different theta than the constant) % The input vector is [n T] % Longitudinal State Space Equations M = [m -Xwd*cbar/V 0 0; 0 (m-Zwd*cbar/V) 0 0; 0 -Mwd*cbar/V Iy 0; 0 0 0 1];

A = [Xu Xw (Xq*cbar-m*We) -m*g*cos(theta); Zu Zw (Zq*cbar+m*Ue) -m*g*sin(theta); Mu Mw Mq*cbar 0; 0 0 1 0]; A = M\A; B = V*[Xn Xt; Zn Zt; Mn Mt; 0 0]; B = M\B; C = eye(size(A)); D = zeros(size(B)); % Elevator response transfer functions [Ele,Den] = ss2tf(A,B,C,D,1); Pitch_Ele = tf(Ele(4,:),Den) [Coefficients,Poles,k] = residue(Ele(4,:),Den) % Pitch altitude response to elevator input subplot(2,3,1) step(Pitch_Ele) xlabel('time') ylabel('position') title('Pitch Altitude Response to Elevator Input OL')

% Thrust response transfer functions [Thrust,Den1] = ss2tf(A,B,C,D,2); Pitch_Thrust = tf(Thrust(4,:),Den1) [Coefficients,Poles,k] = residue(Thrust(4,:),Den1) % Pitch altitude response to thrust input subplot(2,3,2) step(Pitch_Thrust) xlabel('time') ylabel('position') title('Pitch Altitude Response to Thrust Input OL')

%% Lateral Directional Dimensional Derivatives

Yv = -.178; Yb = -51.1;

7 American Institute of Aeronautics and Astronautics

Lb = -20.9; Nb = 2.68; % I am assuming these next few values with the help of 5.125: Lv = Lb/V; Nv = Nb/V; Yp = 0; Yr = Yb*V;

Lp = -1.38; Np = -.0993; Lr = 1.16; Nr = -.157; Ye = 0; Le = 4.76; Ne = .266; Yc = .0317; Lc = 5.35; Nc = -.923; % Must change values into dimensionless derivatives Ix = Ix/(.5*rho*V*S*b); Iz = Iz/(.5*rho*V*S*b); Ixz = Ixz/(.5*rho*V*S*b); % The state vector is [v p r phi psi] % The input vector is [e c] e = aileron and c = rudder % The augmented state vector is [B p r phi] % Lateral State Space Equations % The matrices have been augmented to account for sideslip M2 = [m 0 0 0 0; 0 Ix -Ixz 0 0; 0 -Ixz Iz 0 0; 0 0 0 1 0; 0 0 0 0 1]; A2 = [Yv (Yp*b+m*We) (Yr*b-m*Ue) m*g*cos(theta); Lv Lp*b Lr*b 0; Nv Np*b Nr*b 0; 0 1 0 0]; A2 = M\A2; A2(1,2:4) = A2(1,2:4)/V; A2(2:3,1) = A2(2:3,1)/V; B2 = V*[Ye Yc; Le Lc; Ne Nc; 0 0]; B2 = M\B2; B2(1,:) = B2(1,:)/V; C2 = eye(size(A2)); D2 = zeros(size(B2)); % Aileron response transfer functions [Ail,Den2] = ss2tf(A2,B2,C2,D2,1); Roll_Ail = tf(Ail(2,:),Den2) [Coefficients,Poles,k] = residue(Ail(2,:),Den2) Yaw_Ail = tf(Ail(3,:),Den2) [Coefficients,Poles,k] = residue(Ail(3,:),Den2) % Roll altitude response to Aileron input subplot(2,3,3) step(Roll_Ail)

8 American Institute of Aeronautics and Astronautics

xlabel('time') ylabel('position') title('Roll Altitude Response to Aileron Input OL') % Yaw altitude response to Aileron input subplot(2,3,4) step(Yaw_Ail) xlabel('time') ylabel('position') title('Yaw Altitude Response to Aileron Input OL') % Rudder response transfer functions [Rud,Den3] = ss2tf(A2,B2,C2,D2,2); Roll_Rud = tf(Rud(2,:),Den3) [Coefficients,Poles,k] = residue(Rud(2,:),Den3) Yaw_Rud = tf(Rud(3,:),Den3) [Coefficients,Poles,k] = residue(Rud(3,:),Den3) % Roll altitude response to Rudder input subplot(2,3,5) step(Roll_Rud) xlabel('time') ylabel('position') title('Roll Altitude Response to Rudder Input OL') % Yaw altitude response to Rudder input subplot(2,3,6) step(Yaw_Rud) xlabel('time') ylabel('position') title('Yaw Altitude Response to Rudder Input OL')

%% Simulink Files fprintf('\n \n Please be patient. My simulink files may take a few minutes') fprintf('\n to run because some of my plots take a million seconds to converge. \n \n') % Two Simulink diagrams that model the transfer functions in a closed loop % with a control law. Two Simulink files are needed because 3 of the % responses converge quickly while the other 3 need a lot more time. sim('Aero320_sim') sim('Aero320_sim2')

%% The Closed Loop Control Plots with a step input figure(2) subplot(2,3,1) plot(Steady_Flight.time(:,1),Steady_Flight.signals.values(:,1)) xlabel('time') ylabel('position') title('Pitch from Elevator with Control') axis([0 600 0 1.21]) subplot(2,3,2) plot(Steady_Flight_Slow.time(:,1),Steady_Flight_Slow.signals.values(:,3)) xlabel('time') ylabel('position') title('Pitch from Thrust with Control') subplot(2,3,3)

9 American Institute of Aeronautics and Astronautics

plot(Steady_Flight.time(:,1),Steady_Flight.signals.values(:,2)) xlabel('time') ylabel('position') title('Roll from Aileron with Control') axis([0 20 0 1.21]) subplot(2,3,4) plot(Steady_Flight_Slow.time(:,1),Steady_Flight_Slow.signals.values(:,2)) xlabel('time') ylabel('position') title('Yaw from Aileron with Control') axis([0 200000 -.1 1.21]) subplot(2,3,5) plot(Steady_Flight.time(:,1),Steady_Flight.signals.values(:,3)) xlabel('time') ylabel('position') title('Roll from Rudder with Control') subplot(2,3,6) plot(Steady_Flight_Slow.time(:,1),Steady_Flight_Slow.signals.values(:,1)) xlabel('time') ylabel('position') title('Yaw from Rudder with Control')

%% The Closed Loop Control Plots with a step disturbance and no input. figure(3) subplot(2,3,1) plot(Steady_Flight_Dist.time(:,1),Steady_Flight_Dist.signals.values(:,1),'r') xlabel('time') ylabel('position') title('Pitch from Elevator Disturbance with Control') axis([0 600 -25.1 5.1]) subplot(2,3,2) plot(Steady_Flight_Slow_Dist.time(:,1),Steady_Flight_Slow_Dist.signals.values(:,3),'r') xlabel('time') ylabel('position') title('Pitch from Thrust Disturbance with Control') subplot(2,3,3) plot(Steady_Flight_Dist.time(:,1),Steady_Flight_Dist.signals.values(:,2),'r') xlabel('time') ylabel('position') title('Roll from Aileron Disturbance with Control') axis([0 20 -2.1 10.1]) subplot(2,3,4) plot(Steady_Flight_Slow_Dist.time(:,1),Steady_Flight_Slow_Dist.signals.values(:,2),'r') xlabel('time') ylabel('position') title('Yaw from Aileron Disturbance with Control') %axis([0 200000 -.1 1.21]) subplot(2,3,5) plot(Steady_Flight_Dist.time(:,1),Steady_Flight_Dist.signals.values(:,3),'r') xlabel('time') ylabel('position') title('Roll from Rudder Disturbance with Control') axis([0 3000 -20.1 50.1])

10 American Institute of Aeronautics and Astronautics

subplot(2,3,6) plot(Steady_Flight_Slow_Dist.time(:,1),Steady_Flight_Slow_Dist.signals.values(:,1),'r') xlabel('time') ylabel('position') title('Yaw from Rudder Disturbance with Control')

%% The Error of the Closed Loop Control Diagrams measured with respect to an input and a disturbance.

figure(4) subplot(2,3,1) hold on plot(Error1.time,Error1.Data) plot(Error1D.time,Error1D.Data,'r') hold off xlabel('time') ylabel('error') title('Error in Pitch from Elevator with Control') legend('Input Error','Disturbance Error') axis([0 600 -5 25.1]) subplot(2,3,2) hold on plot(Error6.time,Error6.Data) plot(Error6D.time,Error6D.Data,'r') hold off xlabel('time') ylabel('error') title('Error in Pitch from Thrust with Control') legend('Input Error','Disturbance Error') subplot(2,3,3) hold on plot(Error2.time,Error2.Data) plot(Error2D.time,Error2D.Data,'r') hold off xlabel('time') ylabel('error') title('Error in Roll from Aileron with Control') legend('Input Error','Disturbance Error') axis([0 20 -10.1 2.1]) subplot(2,3,4) hold on plot(Error5.time,Error5.Data) plot(Error5D.time,Error5D.Data,'r') hold off xlabel('time') ylabel('error') title('Error in Yaw from Aileron with Control') legend('Input Error','Disturbance Error') %axis([0 200000 -.1 1.21]) subplot(2,3,5) hold on plot(Error3.time,Error3.Data) plot(Error3D.time,Error3D.Data,'r') hold off xlabel('time') ylabel('error') title('Error in Roll from Rudder with Control')

11 American Institute of Aeronautics and Astronautics

legend('Input Error','Disturbance Error') axis([0 3000 -50.1 20.1]) subplot(2,3,6) hold on plot(Error4.time,Error4.Data) plot(Error4D.time,Error4D.Data,'r') hold off xlabel('time') ylabel('error') title('Error in Yaw from Rudder with Control') legend('Input Error','Disturbance Error')

12 American Institute of Aeronautics and Astronautics

You might also like