Aircraft Control Tutorial

Page 1

Aircraft Control Lectures Using the text: Stevens & Lewis, Aircraft Control & Simulation, 2nd Ed. Steve Rogers 2011

1


Overview • • • •

Control Engineer Challenges/Philosophy Definition of Control System Functions Transfer Functions – longitudinal & lateral SAS (stability augmentation system) examples – pitch damper and yaw damper • CAS ( control augmentation system) examples • Autopilot examples: Pitch attitude hold and automatic lander • Modern control design: pole placement, LQR state & output feedback, model reference design, inverse dynamics control 2


Control Engineer Challenges •

Work output in terms of: – – – –

Utilize modern techniques including – – – – –

guidance & control Algorithms & simulations Numerical methods or solutions Software or digital implementation

Optimization Sensitivity analyses Robustness to parameter variations Adaptive techniques Multivariable control

Interface to other disciplines – – – – – – –

Structures Thermal Propulsion Energy management & performance Human factors Mission operations Failure modes & effects analyses 3


Aircraft Altitude-Mach Envelope for High-Performance

d lim

it

α-li

mit

Propulsion limit

Service ceiling

Airsp ee

Altitude

Speed • The α-limit is determined by the maximum lift that can be generated at low air speeds. • The high speed limit (composed of airspeed limit & propulsion limit) generally follows a constant dynamic pressure contour. At higher elevations the speed is limited by maximum engine thrust • Service ceiling exists due to a combination airframe and engine limitations. • The basic aerodynamic coefficients change with air speed and as functions of the α 4 angle.


Control Philosophy • • • • •

A flight condition that produces a stable dynamic mode may be unstable or lightly damped in another flight condition. Instability or lightly damped oscillations may be overcome by using feedback control to stabilize aircraft dynamics. The aircraft motion variables are sensed & utilized to generate signals fed to the aircraft control-surfaces or propulsion systems to modify the dynamic behavior. Control signals from the sensor feedback must be adjusted according to the flight condition. A commonly used adjustment process is gain scheduling, which is adjusting control signals as a function of ‘scheduling’ variables. Most commonly used scheduling variables are measured dynamic pressure and/or air speed. For narrow envelopes gain scheduling may not be needed. In this case unsatisfactory dynamic modes must be corrected by modifying the aircraft design. 5


Control System Functions SAS

CAS

Autopilot

Roll Damper

Roll Rate

Pitch attitude hold

Pitch damper

Pitch rate

Altitude hold

Yaw damper

Normal acceleration

Speed hold

Lateral/directional

Automatic landing Roll-angle hold Turn coordination Heading hold/VOR hold

• SAS – stability augmentation systems. These are intended to provide proper damping and/or stability to given roll-pitch-yaw control modes. • CAS – control augmentation systems. These control systems are intended to not only control the mode but to provide the pilot with a particular type of response to the control inputs. • autopilots – these are to provide ‘pilot relief’ from controlling slower modes (phugoid and spiral). These also include special functions, such as automatic landing and other guidance features. 6


Longitudinal Transfer Functions (pitch)

• The pitch rate to elevator transfer function general function is shown above. • The longitudinal state vector and input vector are shown. • The following sheets have short-period approximations. 7


Longitudinal Short-Period Approximations

• Since the denominator is the same the two transfer function natural frequency and damping coefficient are the same. • If either the pitch rate or angle-of-attack tracks a setpoint the other will have a bias. • A pitch damper SAS or a pitch rate CAS will provide the same dynamics for the angle-of-attack. • Above approximations valid for low Mach numbers. Also, these assume a damped, oscillatory short-period mode. 8


Phugoid Approximation • Phugoid frequency is inversely ~ airspeed. Phugoid has lower frequency than the short period mode. • For an example longitudinal characteristic equation: Δ(s) = (s2 + 0.033s + 0.020)(s2 + 0.902s + 2.666) = 0. The first pair of complex roots describes the phugoid stability mode, with characteristics: – Damping ratio ζp = 0.11 = 0.033/2/sqrt(0.02) – Undamped natural frequency ωp = 0.14 rad/s = sqrt(0.02)

• The second pair of complex roots describes the short period pitching oscillation, or short period stability mode, with characteristics: – Damping ratio ζs = 0.28 = 0.902/2/sqrt(2.666) – Undamped natural frequency ωs = 1.63 rad/s = sqrt(2.666)

9


Stability Augmentation • Modify natural aircraft modes by adjusting control surfaces according to angular rate sensor signals. • Desirable as flight condition changes result in local variations in airflows (laminar to turbulent or the reverse). These local variations cause large uncertainties in aerodynamic coefficients over the typical operational flight envelope of most aircraft. • Large uncertainties or variations in aerodynamic coefficients create serious challenges for control systems. Control systems are either ‘gain scheduled’ or on-line adapted. 10


Longitudinal Model for F16 - 1 A = [-0.019311 8.8157 -32.17 -0.57499 -0.00025389 -1.0189 0 0.90506 0001 2.9465e-12 0.82225 0 -1.0774]; B = [0.1737 -0.0021499 0 -0.17555]'; C = [0 57.29578 0 0 0 0 0 57.29578]; D = [0 0]'; sys = ss(A,B,C,D);

Eigenvalue 9.76e-002 -1.51e-001 + 1.15e-001i -1.51e-001 - 1.15e-001i -1.91e+000

Damping

Freq. (rad/s)

-1.00e+000 7.94e-001 7.94e-001 1.00e+000

9.76e-002 1.90e-001 1.90e-001 1.91e+000

• In the above model from Stevens & Lewis, the elevator deflection is the input, and the outputs are alpha and pitch rate (q). The states are vT, alpha, theta, and q. • There is an unstable exponential pole at 0.0976 with tc = 2*pi/0.0976 ~ 10 s (time constant) • An oscillatory couple at damping 0.794 & freq 0.19 rad/s  tc = 2*pi/0.19 ~ 33 s (time constant) • The last pole will not cause a problem. • A control system must be designed to counter the effects of the unstable pole, while providing good handling qualities. 11


Longitudinal Model for F16 - 2 ka kq

Noise Filter

Alpha Sensor

Noise Filter

Pitch rate Sensor

Alpha-q SAS

α

Imaginary Axis

actuator

Pole-Zero Map 0.2 0.1 0 -0.1 -0.2 -2

-1.5

-1

-0.5

0

0.5

Real Axis

q

Root Locus 10 Imaginary Axis

Σ

Aircraft model

5 0 -5 -10 -80

-70

-60

-50

-40

-30

-20

-10

0

Real Axis

• The above configuration is a basic way of providing good handling qualities for the unstable & oscillatory system. This is called a pitch damper SAS (stability augmentation system). • The pole-zero map shows the 4 poles excluding the actuator pole. The root locus shows the overall motion of the root locus at a large scale.

12

10


Longitudinal Model for F16 - 3 Root Locus

Imaginary Axis

10 5 0 -5 -10 -20

-18

-16

-14

-12

-10

-8

-6

-4

-2

0

0.3

0.4

2

Real Axis Root Locus

Imaginary Axis

0.5

0

-0.5 -0.5

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.5

Real Axis

• This is the root locus scale of most interest to us. The unstable pole increases in instability with increasing gain. • The short period poles have been drawn closer to the origin. 13


Longitudinal Model for F16 - 4 2.55e-002 2.55e-002 1.29e+000 1.89e+000 1.00e+001 1.00e+001 1.91e+001

To: alpha

4.03e-001 4.03e-001 1.00e+000 1.00e+000 1.00e+000 1.00e+000 1.00e+000

-2 -4 10

To: q

-1.03e-002 + 2.33e-002i -1.03e-002 - 2.33e-002i -1.29e+000 -1.89e+000 -1.00e+001 -1.00e+001 -1.91e+001

0

Amplitude

Freq. (rad/s)

0 -10 0

To: alph filter

Damping

To: q filter

Eigenvalue

Impulse Response From: elevator

-2 -4 10 0 -10

0

2

4

6

8

10

12

14

16

18

20

Time (sec)

• In the case ka = kq = 0.1, the minimum damping is 0.4, which is reasonable, for a short period. • The matlab command to create the whole system is: sys = feedback(feedback(sys,-0.1,1,1),-0.1,1,2); • The impulse responses show good stability. 14


Longitudinal Model for F16 - 5 Eigenvalue

Damping

Freq. (rad/s)

Impulse Response From: elevator

2.12e-002 2.12e-002 1.13e+000 3.34e+000 1.00e+001 1.00e+001 1.78e+001

To: alpha

4.95e-001 4.95e-001 1.00e+000 1.00e+000 1.00e+000 1.00e+000 1.00e+000

To: q

-1.05e-002 + 1.84e-002i -1.05e-002 - 1.84e-002i -1.13e+000 -3.34e+000 -1.00e+001 -1.00e+001 -1.78e+001

Amplitude

0 -1 -2 10 0 -10

0

2

4

6

8

10

12

14

16

18

20

14

16

18

20

Time (sec) Step Response From: elevator

To: q

To: alpha

Amplitude

0 -5 -10 0 -2 -4

0

2

4

6

8

10

12

Time (sec)

• • • •

The alpha signal is noisy & may be unreliable, so it may be advantageous to reduce the gain (deemphasize) on it. At the same time we may increase the pitch rate gain as it is more reliable. With the matlab command of: sys = feedback(feedback(sys,-0.1,1,1),-0.2,1,2); We now have ka = 0.1 & kp = 0.2 which produces a better damping of 0.495 for the short period mode. The impulse response shows that the system settles quickly following a disturbance, which is due to the higher damping coefficient. 15


Longitudinal Model for F16 – 6 (pole placement) A = [-0.019311 8.8157 -32.17 -0.57499 -0.00025389 -1.0189 0 0.90506 0001 2.9465e-12 0.82225 0 -1.0774]; B = [0.1737 -0.0021499 0 -0.17555]'; C = [0 57.29578 0 0 0 0 0 57.29578]; D = [0 0]'; sys = ss(A,B,C,D); •

Model

The previous control solutions were the classical approaches in Stevens & Lewis. We’ll now introduce ‘modern’ pole placement which is a commonly used multivariable approach. By using a state space pole placement method we can generate an observer which produces an estimated or smoothed state vector which is fed into the control law. By use of the ‘place’ command we can specify the observer (smoother) poles and the system poles with verifiable accuracy. Pole placement allows us to design very quickly as well as accurately. The pc vector is the desired system poles. The design results are shown under Controlled system. Note the Lcon values emphasize alpha & q with most emphasis on q, which is desirable since alpha is noisy & less reliable. The po vector is the desired observer poles. We arbitrarily offset them a reasonable distance from the pc vector so the observer poles would not interfere with the control law performance. The new damping coefficient for the system is 0.707, which will satisfy short period mode pilot handling qualities.

pc = [-1.5e-002+1.5e-002i,... -1.5e-002-1.5e-002i,... -1.13,-3.5]; po = -10 + pc; Lobs = place(a',c',po).'; Lcon = place(a,b,pc); Lcon = -0.0002 -6.2655 -0.1963 -14.4173 State vector: vT, alpha, theta, q sysobs = ss(a-Lobs*c,Lobs,Lcon,0); Observer Eigenvalue -1.00e+001 + 1.50e-002i -1.00e+001 - 1.50e-002i -1.11e+001 -1.35e+001 Controlled system -1.50e-002 + 1.50e-002i -1.50e-002 - 1.50e-002i -1.13e+000 -3.50e+000

Damping

Freq. (rad/s)

1.00e+000 1.00e+000 1.00e+000 1.00e+000

1.00e+001 1.00e+001 1.11e+001 1.35e+001

7.07e-001 7.07e-001 1.00e+000 1.00e+000

2.12e-002 2.12e-002 1.13e+000 3.50e+000

16


Longitudinal Model for F16 – 7 (lqr) A = [-0.019311 8.8157 -32.17 -0.57499 -0.00025389 -1.0189 0 0.90506 0001 2.9465e-12 0.82225 0 -1.0774]; B = [0.1737 -0.0021499 0 -0.17555]'; C = [0 57.29578 0 0 0 0 0 57.29578]; D = [0 0]'; sys = ss(A,B,C,D); •

• •

Model

The previous control solution was pole placement. We’ll now introduce ‘modern’ linear quadratic regulator (lqr) which is a commonly used multivariable approach. By using a state space lqr method we can generate an observer which produces an estimated or smoothed state vector which is fed into the control law. By use of the ‘lqr’ command we can specify the observer (smoother) state and output weights . lqr allows us to design very quickly, however we cannot specify the system performance as in pole placement. This becomes an important factor regarding pilot handling qualities. The Q matrix diagonal is the desired state weights. It is modified for both the observer and the controller. Note the Lcon values emphasize theta & q with most emphasis on theta (pitch angle), which is desirable since alpha is noisy & less reliable. The new damping coefficient for the system is 0.258, which does not satisfy short period mode pilot handling qualities. We can see from this quick comparison of two multivariable approaches the great advantage of being able to precisely specify poles.

Q = diag([1e6 0.05 1e6 10]);R = c*c'*1e-3;N = c'/100; Lobs = lqr(a',c',Q,R,N).'; Q = Q*1e-6;R = b'*b;N = b; Lcon = lqr(a,b,Q,R,N); Lcon = 1.2575 4.2588 -33.4686 -13.1625 State vector: vT, alpha, theta, q sysobs = ss(a-Lobs*c,Lobs,Lcon,0); syscon = ss(a-b*Lcon,b,c,d); Observer Eigenvalue

Damping

-3.46e+000 + 4.08e+000i -3.46e+000 - 4.08e+000i -9.03e+000 -1.00e+002

6.47e-001 6.47e-001 1.00e+000 1.00e+000

5.35e+000 5.35e+000 9.03e+000 1.00e+002

Controlled system -1.14e+000 -4.02e-001 + 1.50e+000i -4.02e-001 - 1.50e+000i -2.69e+000

1.00e+000 2.58e-001 2.58e-001 1.00e+000

1.14e+000 1.55e+000 1.55e+000 2.69e+000

Freq. (rad/s)

17


Dutch Roll •

• • •

Dutch roll is a type of aircraft motion, consisting of an out-of-phase combination of "tail-wagging" and rocking from side to side. This yaw-roll coupling is one of the basic flight dynamic modes (others include phugoid, short period, and spiral divergence). This motion is normally well damped in most light aircraft, though some aircraft with well-damped Dutch roll modes can experience a degradation in damping as airspeed decreases and altitude increases. Dutch roll stability can be artificially increased by the installation of a yaw damper. Wings placed well above the center of mass, sweepback (swept wings) and dihedral wings tend to increase the roll restoring force, and therefore increase the Dutch roll tendencies; this is why high-winged aircraft often are slightly anhedral, and transport category swept wing aircraft are equipped with yaw dampers. A case study of a yaw damper for a jet transport follows.

18


Yaw Damper for a Jet Transport - 1 A = [-0.0558 -0.9968 0.0802 0.0415 0.598 -0.115 -0.0318 0 -3.05 0.388 -0.465 0 0 0.0805 1 0]; B = [0.0729 0.0001 -4.75 1.23 1.53 10.63 0 0]; C = [0 1 0 0 0 0 0 1]; D = [0 0 0 0];

• • • • •

Eigenvalue

Damping

-7.28e-003 1.00e+000 -5.63e-001 1.00e+000 -3.29e-002 + 9.47e-001i 3.48e-002 -3.29e-002 - 9.47e-001i 3.48e-002

Freq. (rad/s) 7.28e-003 5.63e-001 9.47e-001 9.47e-001

The state-space model is taken from matlab’s control system toolbox user’s guide. The 1st eigenvalue (slow real) is the spiral mode. It should be made faster. The 2nd eigenvalue (real) is the roll subsidence mode. It’s OK as is. The last two eigenvalues are due to the dutch roll mode. They are lightly damped (0.0348) & require a higher dampening (for example, >0.35) to attenuate or decrease the oscillatory effects. The dutch roll oscillation involves all of the variables. 19


Yaw Damper for a Jet Transport - 2 Impulse Response From: rudder

Root Locus

From: aileron 1 Imaginary Axis

2

Amplitude

To: yaw rate

0

-2

-4

0.5 0 -0.5 -1 -0.8

-0.6

-0.4

-0.2

0

-6

Phase (deg)Magnitude (dB)

To: bank angle

10 0 -10 -20 -30 0

5

10

15

20 0 Time (sec)

• •

• •

0.4

0.6

0.8

1

1.2

Bode Diagram From: rudder To: yaw rate

20

-40

0.2 Real Axis

5

10

15

20

50 0 -50 360 180 0 -4 10

-3

10

-2

10

-1

10

0

1

10

10

Frequency (rad/sec)

The impulse response plot shows reason for concern for the dutch roll oscillation. Note that the oscillation is mainly due to the rudder input. The oscillation appears to be about a -25 degree bank angle & a -1 degree yaw rate due to the rudder input. The aileron input causes a turn by creating a ~1 degree bias in the yaw rate & ~18 degree bias in the bank angle. The impulse response shows the complexity of the dutch roll oscillation. The root locus (from rudder to yaw rate) shows that the jet transport may quickly become unstable if we are not careful. The bode plot (from rudder to yaw rate) shows significant action due to the rudder between 0.5 & 1.0 rad/sec, which is near the Dutch roll mode. 20


Yaw Damper for a Jet Transport - 3 Root Locus 1

damp(feedback(sys(1,1),-0.27))

Imaginary Axis

0.5 0

Eigenvalue

Damping

Freq. (rad/s)

-0.5 -1 -1.2

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

Real Axis Impulse Response From: rudder To: yaw rate 2

-3.27e-001 -3.07e-001 + 6.27e-001i -3.07e-001 - 6.27e-001i -9.77e-001

1.00e+000 3.27e-001 4.40e-001 6.98e-001 4.40e-001 6.98e-001 1.00e+000 9.77e-001

Amplitude

0 -2 -4 -6

0

2

4

6

8

10

12

14

16

18

20

Time (sec)

•

•

By using a feedback gain of -0.27 we ensure the overall stability of the system as shown in the root locus. The impulse plot shows the reduction in oscillation. The trial feedback gain may be obtained by using rlocfind graphically. damp(feedback(sys(1,1),-0.27)) produces the eigenvalue results shown. This command creates a simple feedback system with a gain. Now the damping is much better, while maintaining the natural frequency < 1 rad/sec. 21


Yaw Damper for a Jet Transport - 4 Impulse Response From: rudder

Pole-Zero Map

From: aileron

1

2

0.8 0.6

-2

0.4 -4

Imaginary Axis

Amplitude

To: yaw rate

0

-6 20 To: bank angle

10 0

0.2 0 -0.2 -0.4

-10

-0.6

-20 -30 -40

-0.8 0

5

10

15

20 0 Time (sec)

5

10

15

20

-1 -1

-0.9

-0.8

-0.7

-0.6

-0.5

-0.4

-0.3

-0.2

-0.1

0

Real Axis

• • •

The impulse response plots show the original response with the simple feedback gain in green. The bias has been removed along with most of the oscillation. However, notice the aileron to bank angle. It no longer has a bias, which is desirable. It has been over-stabilized and removed from the system. The control system must regain the banking feature of the jet. The pole-zero map shows the original system in blue and the new system in green. The dutch roll poles are in a much better location now, but the spiral mode pole has been relocated way too far from the origin (see the green poles). In order to fix this a washout filter is designed to keep the spiral mode pole from moving too far from the origin. 22


Yaw Damper for a Jet Transport - 5 •

Root Locus

Imaginary Axis

1

0.76 0.88

0.5

0.64

0.5

0.38

0.24

0.12

0.97 1.2 0

1

0.8

0.6

0.4

0.2

0.97 -0.5

0.88 0.76

0.64

-1 -1.2

-1

-0.8

0.5

0.38

-0.6

-0.4

0.24

0.12

-0.2

0

0.2

Real Axis Impulse Response From: rudder To: Out(1)

2

Amplitude

0 -2

-4 -6

0

2

4

6

8

10

12

14

16

18

20

A washout filter has a zero at the origen, while the pole is farther away from the origen so as to not interfere with the spiral mode pole. A matlab command of ‘H = zpk(0,0.33,1)’ will give us such a filter. Now, the max damping is ~0.25, as shown in the root locus plot. The impulse response shows less damping than before. See also the eigenvalues below.

Time (sec)

damp(feedback(H*sys(1,1),-0.27)) Eigenvalue -3.79e-003 -4.74e-001 -1.74e-001 + 6.67e-001i -1.74e-001 - 6.67e-001i -1.42e+000

Damping

Freq. (rad/s)

1.00e+000 3.79e-003 1.00e+000 4.74e-001 2.53e-001 6.89e-001 2.53e-001 6.89e-001 1.00e+000 1.42e+000

23


Yaw Damper for a Jet Transport - 6 Impulse Response From: rudder

From: aileron

2

Amplitude

To: yaw rate

0

-2

-4

-6 20

To: bank angle

10 0 -10 -20 -30 -40

0

5

10

15

20 0 Time (sec)

5

10

15

20

• • • •

The above impulse response shows the desired constant behavior over the 20 sec. time frame. Even though the system is improved the damping specification was not met. 0.25 < 0.35 We may try different combinations of washout filter lags and feedback gains. The present combination is: kk = -0.27; H = zpk(0,-0.33,1); clsys11 = feedback(sys,kk*H,1,1); is the closed loop system. We can manipulate both kk and -0.33 (washout filter lag) to achieve our goals.

24


Yaw Damper for a Jet Transport - 7 Impulse Response From: rudder

From: aileron

2

damp(feedback(sys,kk*H,1,1))

Amplitude

To: yaw rate

0

Eigenvalue

-2

-4

-2.17e-003 1.00e+000 -4.14e-001 1.00e+000 -2.38e-001 + 6.35e-001i 3.51e-001 -2.38e-001 - 6.35e-001i 3.51e-001 -1.16e+000 1.00e+000

-6 20 10 To: bank angle

Damping

0

Freq. (rad/s) 2.17e-003 4.14e-001 6.79e-001 6.79e-001 1.16e+000

-10 -20 -30 -40

0

5

10

15

20 0

5

10

15

20

Time (sec)

• • • • •

We can manipulate both kk and -0.33 (washout filter lag): kk = -0.27; (no change) H = zpk(0,-0.33,1);  H = zpk(0,-0.13,1); The blue in the impulse response is the uncompensated system. The red is the 1 st attempt at compensation. The green is the 2nd and successful attempt at compensation. With the washout lag at -0.13 the damping is 0.351 which is acceptable. 25


F-16 Yaw Damper - 1 A = [-0.1315 0.14858 0 0.32434 -0.93964 0 0 0 1 0.33976 0 0 0 0 1.0561 -10.614 0 0 -1.1793 1.0023 0.99655 0 0 -0.0018174 -0.25855]; B = [0.00012049 0.00032897 00 00 -0.1031578 0.020987 -0.002133 -0.010715]; C = [0 0 0 57.29578 0 0 0 0 0 57.29578]; D = [0 0 0 0];

• • • • • • • •

Eigenvalue

Damping

0.00e+000 -1.00e+000 -6.79e-002 1.00e+000 -6.96e-001 1.00e+000 -4.03e-001 + 2.01e+000i 1.96e-001 -4.03e-001 - 2.01e+000i 1.96e-001

Freq. (rad/s) 0.00e+000 6.79e-002 6.96e-001 2.05e+000 2.05e+000

The state-space model is taken from the F16 models in Steven & Lewis. The state vector is: 'beta' 'roll' 'yaw' 'roll rate' 'yaw rate‘. The 1st eigenvalue is an integrator and is associated with the roll angle. The 2nd eigenvalue (slow real) is the spiral mode. This is probably OK as is. The 3rd eigenvalue (real) is the roll subsidence mode. It’s OK as is. The last two eigenvalues are due to the dutch roll mode. They are lightly damped (0.196) & require a higher dampening (for example, >0.35) to attenuate or decrease the oscillatory effects. The dutch roll oscillation involves all of the variables. In a steady state coordinated turn the yaw rate has a constant nonzero value, which the yaw rate feedback will try to oppose. A simple control systems solution is to apply a 1 st order high-pass filter to the yaw rate feedback. This is called a washout filter. 26


F-16 Yaw Damper - 2

Root Locus

4

Impulse Response From: rudder

0 To: roll rate

2

Imaginary Axis

From: aileron 2

0 -2 -4 -1

-2

-0.5

0

1.5

2

2.5

Bode Diagram From: aileron To: roll rate Phase (deg)Magnitude (dB)

Amplitude

1

Real Axis

-4

-6 0

-0.2 To: yaw rate

0.5

-0.4

50 0 -50 360 180 0 -3 10

-2

-1

10

-0.8

0

10

-0.6

1

10

2

10

10

Frequency (rad/sec) Root Locus

0

5

10

15

20 0

5

10

15

5

20

• •

The impulse response plot shows reason for concern for the dutch roll oscillation. Note that the oscillation is due to both the rudder & the aileron inputs. The oscillation appears to be about a 0 degree roll rate & a -0.3 degree yaw rate due to both inputs. The impulse response shows the complexity of the dutch roll oscillation. The root locus (from aileron to yaw rate) shows that the jet transport may quickly become unstable if we are not careful. The bode plot (from aileron to yaw rate) shows significant action due to the aileron between 1.0 & 5.0 rad/sec.

0

-5 -1.5

-1

-0.5

0

0.5

1

1.5

2

2.5

Real Axis Bode Diagram From: aileron To: yaw rate Phase (deg) Magnitude (dB)

Imaginary Axis

Time (sec)

100 0 -100 180 0 -180 -3 10

-2

10

-1

10

0

10

Frequency (rad/sec)

1

10

2

10

27


F-16 Yaw Damper - 3 Root Locus

Imaginary Axis

4 2

damp(feedback(sys(1,1),-0.4))

0

Eigenvalue

-2 -4 -1.8

-1.6

-1.4

-1.2

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

14

16

18

20

Real Axis Impulse Response From: aileron To: roll rate 2

Amplitude

0

Damping

Freq. (rad/s)

0.00e+000 -1.00e+000 0.00e+000 -8.99e-003 1.00e+000 8.99e-003 -6.83e-001 + 1.37e+000i 4.46e-001 1.53e+000 -6.83e-001 - 1.37e+000i 4.46e-001 1.53e+000 -2.56e+000 1.00e+000 2.56e+000

-2 -4 -6

0

2

4

6

8

10

12

Time (sec)

• •

By using a feedback gain of -0.4 we ensure the overall stability of the system as shown in the root locus. The impulse plot shows the reduction in oscillation. damp(feedback(sys(1,1),-0.4)) produces the eigenvalue results shown. This command creates a simple feedback system with a gain. Now the damping is much better, while maintaining the natural frequency < 2 rad/sec. Note the non-minimum phase zero (right-half plane). This will cause a tendency to roll in the opposite direction initially. 28


F-16 Yaw Damper - 4 Impulse Response From: aileron

From: rudder

Pole-Zero Map 4 Imaginary Axis

2

To: roll rate

0

-2

Amplitude

-4

2 0 -2 -4 -3

-2.5

-2

-1.5

-1

-0.5

0

Real Axis

-6 0

Pole-Zero Map 0.2 Imaginary Axis

To: yaw rate

-0.2

-0.4

-0.6

-0.8

0

5

10

15

20 0 Time (sec)

•

•

5

10

15

20

0.1 0 -0.1 -0.2 -0.2

-0.18

-0.16

-0.14

-0.12

-0.1

-0.08

-0.06

-0.04

-0.02

Real Axis

The impulse response plots show the original response in blue and the simple feedback gain (roll/yaw damper) in green. Most of the oscillation has been removed. The yaw rate now oscillates around a bias. This is as a result of the gain only. No washout filter was installed. Now the pilot will feel a fixed yaw rate during coordinated turns. The pole-zero map shows the original system in blue and the new system in green. The dutch roll poles are in a much better location now (more damping), and the spiral pole is closer to the origin. One of the zeros moved to the left. 29

0


F-16 Yaw Damper – 5 (pole placement) •

The previous control solution is the classical approach in Stevens & Lewis. We’ll now introduce ‘modern’ pole placement which is a commonly used multivariable approach. By using a state space pole placement method we can generate an observer which produces an estimated or smoothed state vector which is fed into the control law. Thus, we have more degrees of freedom to achieve the control objectives. By use of the ‘place’ command we can specify the observer (smoother) poles and the system poles with verifiable accuracy. Pole placement allows us to design very quickly as well as accurately. Note that we had to remove the yaw angle state as the state must be controllable or accessible. The po vector is the desired observer poles. We arbitrarily offset them a reasonable distance from the pc vector so the observer poles would not interfere with the control law performance. The pc vector is the desired system poles. The design results are shown under Controlled system. Note the Lcon values emphasize beta, roll rate, & yaw rate with most emphasis on beta & roll rate. The new damping coefficient for the system is 0.707, which will satisfy short period mode pilot handling qualities.

pc = [-0.02 -0.2+0.2i,... -0.2-0.2i,-3.5]; po = -10 + pc; Lobs = place(a',c',po).'; Lcon = place(a,b,pc); sysobs = ss(a-Lobs*c,Lobs,Lcon,0); Lcon = 'beta' 'roll‘ 'roll rate' 'yaw rate‘ 81.1827 -0.5088 -61.6549 -33.1050 -105.6235 1.6612 -232.9054 -77.7229 Eigenvalue Damping Observer dynamics -1.00e+001 1.00e+000 -1.02e+001 + 2.00e-001i 1.00e+000 -1.02e+001 - 2.00e-001i 1.00e+000 -1.35e+001 1.00e+000 Controlled system (roll/yaw damper) -2.00e-002 1.00e+000 -2.00e-001 + 2.00e-001i 7.07e-001 -2.00e-001 - 2.00e-001i 7.07e-001 -3.50e+000 1.00e+000

Freq. (rad/s) 1.00e+001 1.02e+001 1.02e+001 1.35e+001 2.00e-002 2.83e-001 2.83e-001 3.50e+000

30


CAS Examples • CAS – control augmentation systems. These control systems are intended to not only control the mode but to provide the pilot with a particular type of response to the control inputs. • CAS examples: pitch-rate & normal acceleration.

31


Pitch-Rate CAS - 1

We have an unstable pole @ ~0.1. We begin with the pitch-SAS design for stability.

The command creates the pitch-SAS design discussed previously: clsys = feedback(feedback(sys,-0.1,1,1),0.2,1,2); From the root locus below we see that the unstable pole is no longer an issue. The new zeros are: -75.0002 -0.0000 -0.0098 + 0.0938i -0.0217 -0.0098 - 0.0938i -1.0265 -10.0000 -10.0000 -10.0000 -10.0000 The new poles are: -10.0000 -10.0000 -17.8184 -0.0105 + 0.0184i -0.0105 - 0.0184i -1.1336 -3.3426 The phugoid damping coefficient is ~0.495.

Imaginary Axis

0.1 0 -0.1 -0.2 -25

-20

-15

-10

-5

0

5

Real Axis Root Locus 20 Imaginary Axis

Model

10 0 -10 -20 -80

-70

-60

-50

-40

-30

-20

-10

0

10

Real Axis

Root Locus 2 Imaginary Axis

The zeros of the above model are z= -75.0002 -10.0000 -0.0098 + 0.0938i -1.0265 -0.0098 - 0.0938i -0.0217 Inf -0.0000 The poles of the above model are p= -10.0000 -1.9118 -0.1507 + 0.1153i -0.1507 - 0.1153i 0.0976 -20.1000

Pole-Zero Map

0.2

1 0 -1 -2 -12

-10

-8

-6

-4

-2

0

2

Real Axis Root Locus 0.2 Imaginary Axis

A = [-0.019311 8.8157 -32.17 -0.57499 -0.00025389 -1.0189 0 0.90506 0001 2.9465e-12 0.82225 0 -1.0774]; B = [0.1737 -0.0021499 0 -0.17555]'; C = [0 57.29578 0 0 0 0 0 57.29578]; D = [0 0]'; sys = ss(A,B,C,D);

0.1 0 -0.1 -0.2 -0.4

-0.35

-0.3

-0.25

-0.2

-0.15 Real Axis

-0.1

-0.05

0

0.05

32

0.1


Pitch-Rate CAS - 1

CAS des

Σ

PI

Σ

Aircraft model

actuator

SAS

α

ka

Noise Filter

Alpha Sensor

kq

Noise Filter

Pitch rate Sensor

q

SAS (CAS=1) with [ka kq] = [0.2 0.6] 0.05

Band-Limited White Noise

s+20.2 Actuator mdl 0.6 SAS kq 0.2 SAS ka

set point alpha q

0.04

f16_long F16 long mdl 10

0.03

alph-q

s+10 q filter 10 s+10 alpha filter

0.02 angle (degrees)

-20.2

0.01 0 -0.01

• •

The plot at right shows the pitch rate SAS without a CAS to force it to track commands. The simulink and overall block diagram are above. The SAS at the given values provides a stable response. The alpha angle appears to respond the most to ‘des’ inputs. The next step following the SAS inner loop is to design a useful CAS outer loop.

-0.02 -0.03 -0.04

0

100

200

300

400

500 600 time (sec)

700

800

900

1000

33


Pitch-Rate CAS - 2 -3

0.6 SAS kq 0.2 SAS ka

f16_long F16 long mdl 10

alph-q

angle (degrees)

CASkp

s+20.2 Actuator mdl

5

0

-5

s+10 q filter

0

10

• The diagram on the left is the CAS simulink code that includes the alpha/q SAS controller. • The two plots above show the q desired versus the q output. The tracking of the PI CAS is reasonably good. • The bottom plot shows the faster short-period mode as well as the slower phugoid mode.

200

400

600

800

1000

1200

-3

-1

s+10 alpha filter

angle (degrees)

s CAS_PI

-20.2

set point q

x 10

-1.5 -2 -2.5 -3 592

594

596

598 600 time (sec)

602

604

606

Pole-Zero Map 2 Imaginary Axis

Band-Limited White Noise

0.4

1 0 -1 -2 -25

-20

-15

-10

-5

0

Real Axis Root Locus 20 Imaginary Axis

s+3

SAS/CAS with [ka kq kp z] = [0.2 0.6 0.4 3]

x 10

10

10 0 -10 -20 -25

-20

-15

-10 Real Axis

-5

0

5

34


Pitch-Rate CAS matlab code - 3

close_system('f16Long_CAS_mdl',1) A = [-0.019311 8.8157 -32.17 -0.57499 -0.00025389 -1.0189 0 0.90506 0001 2.9465e-12 0.82225 0 -1.0774]; B = [0.1737 -0.0021499 0 -0.17555]'; C = [0 57.29578 0 0 0 0 0 57.29578]; D = [0 0]'; ka = 0.2; % ka = 0.08; kq = 0.6;

s+3 Band-Limited White Noise

s CAS_PI

0.4 CASkp

-20.2 s+20.2 Actuator mdl 0.6 SAS kq 0.2 SAS ka

f16_long

alph-q

F16 long mdl 10 s+10 q filter 10 s+10 alpha filter

kp = 0.3;z1 = 3; open_system('f16Long_CAS_mdl') set_param('f16Long_CAS_mdl/SAS kq','Gain',num2str(kq)) set_param('f16Long_CAS_mdl/SAS ka','Gain',num2str(ka)) set_param('f16Long_CAS_mdl/CASkp','Gain',num2str(kp)) set_param('f16Long_CAS_mdl/CAS_PI','Numerator',... ['[',num2str(1),' ',num2str(z1),']']) CAS_mdl_io(1) = linio('f16Long_CAS_mdl/Add1',1,'in','on'); CAS_mdl_io(2) = linio('f16Long_CAS_mdl/Demux',2,'out','on'); setlinio('f16Long_CAS_mdl',CAS_mdl_io) CAS_lin_mdl = linearize('f16Long_CAS_mdl',CAS_mdl_io); sim('f16Long_CAS_mdl',1200)

35


Normal Acceleration CAS - 1 -3

10

0.4 SAS kq 0.08 SAS ka

• •

alph

f16_long F16 long mdl

angle (degrees)

CASkp

s+20.2 Actuator mdl

set point normal accel

alph-q

an

5

0

10 s+10 q filter

-5

q

-1

s+10 alpha filter

The diagram on the left is the normal acceleration (an) CAS simulink code that includes an alpha/q SAS controller. The two plots above show the an desired versus the an output. The tracking of the PI CAS is good with nominal overshoot. The bottom plot shows typical response along with a small non-minimum phase response. The pole-zero map and root locus show the compensated system pole locations. The RHP zero is the source of the nonminimum phase response.

0

200

400

600

800

1000

1200

-3

10

angle (degrees)

s CAS_PI

-20.2

x 10

-2

-3

-4 592

594

596 598 600 602 time (sec), sum error = 0.47193

604

606

5

10

Pole-Zero Map 10 Imaginary Axis

Band-Limited White Noise

1.2

5 0 -5 -10 -25

-20

-15

-10

-5

0

Real Axis Root Locus 20 Imaginary Axis

s+2.2

SAS/CAS with [ka kq kp z] = [0.08 0.4 1.2 2.2]

x 10

10 0 -10 -20 -30

-20

-10

0

10

20

Real Axis

30

40

50

60

36


Normal Acceleration CAS matlab code -2 close_system('f16Long_normAccel_CAS_mdl',1) % states = {'vT' 'alpha' 'theta' 'q'}; A = [-0.019311 8.8157 -32.17 -0.57499 -0.00025389 -1.0189 0 0.90506 0001 2.9465e-12 0.82225 0 -1.0774]; B = [0.1737 -0.0021499 0 -0.17555]'; C = [0 57.29578 0 0 0 0 0 57.29578 0.0039813 16.262 0 0.97877]; % D = [0 0 -0.048523]'; D = [0 0 0.048523]'; % ka = 0.1; ka = 0.08; kq = 0.4; A = A - B*[0 ka 0 kq]; f16_long = ss(A,B,C,D);%sys1 = sys; kp = 1.2;z1 = 2.2; open_system('f16Long_normAccel_CAS_mdl') set_param('f16Long_normAccel_CAS_mdl/SAS kq','Gain',num2str(kq)) set_param('f16Long_normAccel_CAS_mdl/SAS ka','Gain',num2str(ka)) set_param('f16Long_normAccel_CAS_mdl/CASkp','Gain',num2str(kp)) set_param('f16Long_normAccel_CAS_mdl/CAS_PI','Numerator',... ['[',num2str(1),' ',num2str(z1),']']) CAS_mdl_io(1) = linio('f16Long_normAccel_CAS_mdl/Add1',1,'in','on'); CAS_mdl_io(2) = linio('f16Long_normAccel_CAS_mdl/Demux',3,'out','on'); setlinio('f16Long_normAccel_CAS_mdl',CAS_mdl_io) CAS_lin_mdl = linearize('f16Long_normAccel_CAS_mdl',CAS_mdl_io) sim('f16Long_normAccel_CAS_mdl',1200) an_err = sum(abs(alpha_q.signals.values(:,[1]) - ... alpha_q.signals.values(:,[4])));

s+2.2 Band-Limited White Noise

s CAS_PI

1.2 CASkp

-20.2 s+20.2 Actuator mdl 0.4 SAS kq 0.08 SAS ka

alph

f16_long F16 long mdl

an

10 s+10 q filter

q

10 s+10 alpha filter

37

alph-q


Autopilot – Pitch Att. Hold with Lead - 1

SAS/CAS with [ka kq kp z] = [0.08 0.6 1.2 0.2] AP [gain lead lag] = [40 1.4 14]

-3

1.2 CASkp

-20.2 s+20.2 Actuator mdl

JET_long JET long mdl 10

0.6 SAS kq 0.08 SAS ka

alph-q

s+10 alpha filter

The diagram on the left is the Pitch attitude hold AP simulink code that includes an alpha/q SAS controller, CAS PI controller, as well as the AP theta hold. The two upper plots show the theta desired versus the theta output. The tracking of the AP theta hold is good with nominal overshoot. The bottom plot shows typical response. The pole-zero map and root locus show the compensated system pole locations.

set point theta

5 0 -5

s+10 q filter 10

0

200

400

600

800

1000

1200

-3

5 angle (degrees)

s CAS_PI

x 10

0

-5 295

300

305 310 315 320 time (sec), sum error = 0.53487

325

330

Pole-Zero Map 1 Imaginary Axis

APKld

s+14 AP_lead

0.5 0 -0.5 -1 -25

-20

-15

-10

-5

0

Real Axis Root Locus 50 Imaginary Axis

40 Band-Limited White Noise

s+0.2

angle (degrees)

10

s+1.4

x 10

0

-50 -70

-60

-50

-40

-30

-20

Real Axis

-10

0

10

20

38


Autopilot – Pitch Att. Hold with Lead - 2 100

Magnitude (dB)

50 0 -50 -100 -150 0

Phase (deg)

• Phase and gain margins are for the theta loop. • With a GM = 22.7 & a PM = 62.5 we are doing well with this system as is.

Bode Diagram Gm = 22.7 dB (at 15.7 rad/sec) , Pm = 62.5 deg (at 2.63 rad/sec) From: Add1 To: Demux/3

-90

-180

-270 -3

10

-2

10

-1

10

0

10

1

10

2

10

3

10

Frequency (rad/sec)

39


Autopilot matlab code – Pitch Att. Hold with Lead - 3 % states = {'vT' 'alpha' 'theta' 'q'}; A = [-0.038916 18.992 -32.149 0.0 -0.0010285 -0.64537 0.0056129 1.0 Band-Limited 0001 White Noise 8.0847e-5 -0.77287 -8.0979e-4 -0.529]; B = [0 0 0 -0.010992]'; C = [0 57.29578 0 0 0 0 0 57.29578 0 0 57.29578 0]; % D = [0 0 -0.048523]'; D = [0 0 0]'; % ka = 0.1; ka = 0.08;% SAS kq = 0.6;%SAS JET_long = ss(A,B,C,D);%sys1 = sys; kp = 1.2;z1 = 0.2;% CAS z2 = 1.4;p2 = 14;klead = 40;% AP open_system('JETLong_Pitch_Hold_AP_mdl') set_param('JETLong_Pitch_Hold_AP_mdl/SAS kq','Gain',num2str(kq)) set_param('JETLong_Pitch_Hold_AP_mdl/SAS ka','Gain',num2str(ka)) set_param('JETLong_Pitch_Hold_AP_mdl/CASkp','Gain',num2str(kp)) set_param('JETLong_Pitch_Hold_AP_mdl/CAS_PI','Numerator',... ['[',num2str(1),' ',num2str(z1),']']) set_param('JETLong_Pitch_Hold_AP_mdl/AP_lead','Numerator',... ['[',num2str(1),' ',num2str(z2),']']) set_param('JETLong_Pitch_Hold_AP_mdl/AP_lead','Denominator',... ['[',num2str(1),' ',num2str(p2),']']) set_param('JETLong_Pitch_Hold_AP_mdl/APKld','Gain',num2str(klead)) AP_mdl_io(1) = linio('JETLong_Pitch_Hold_AP_mdl/Add1',1,'in','on'); AP_mdl_io(2) = linio('JETLong_Pitch_Hold_AP_mdl/Demux',3,'out','on'); setlinio('JETLong_Pitch_Hold_AP_mdl',AP_mdl_io) AP_lin_mdl = linearize('JETLong_Pitch_Hold_AP_mdl',AP_mdl_io); sim('JETLong_Pitch_Hold_AP_mdl',1200)

40 APKld

s+1.4

s+0.2

s+14 AP_lead

s CAS_PI

1.2 CASkp

-20.2 s+20.2 Actuator mdl 0.6 SAS kq 0.08 SAS ka

JET_long

alph-q

JET long mdl 10 s+10 q filter 10 s+10 alpha filter

40


Autopilot for Automatic Landing - 1 • Automatic landing may be necessary when controlling the trajectory of an aircraft may be too difficult for the pilot. Cases may include bad weather or limited visibility. • Automatic control of the longitudinal trajectory requires simultaneously controlling engine thrust and pitch attitude. This may be done by regulating airspeed (vT) and deviation from glide-path (d). • This system has 2 inputs (throttle & elevator) and 2 outputs (vT & d). A multivariable system may be designed according to the classical approach by decoupling airspeed & deviation from glide-path. • The 1st step is to take the theta-hold autopilot previously developed & augment it to incorporate the 2x2 system described above. 41


Autopilot for Automatic Landing - 2 1

1.2

6s+1 Band-Limiteddsp_filt White Noise1

VTgain

(s+0.18)(s+0.5) Band-Limited White Noise

s+0.5

0.2

s+5 VT_lead

s+0.2 Throt_lag

40

s(s+5) AL_lead

APKld

s+1.4

s+0.2

s+14 s AP_lead CAS_PI

-20.2

JET_long

s+20.2 Actuator mdl

JET long mdl

0.6 SAS kq 0.08 SAS ka

alph-q

10 s+10 q filter 10 s+10 alpha filter

• Above is the simulink code for the autolander. It is based on the Stevens and Lewis cp 4 example. • For the pitch portion it includes the alpha-q SAS, the pitch rate CAS, the pitch attitude hold autopilot, and the ‘d’ tracking autopilot. • It includes an airspeed regulation on the other channel. • Due to the sluggish response of the throttle lag a 6-sec lag low pass filter was added to the set point to reduce the overshoot. 42


Autopilot for Automatic Landing - 3 1.5

1

Imaginary Axis

0.5

0

-0.5

-1

-1.5

-2 -25

-20

-15

-10

-5

0

Real Axis

Root Locus

Imaginary Axis

10 5 0 -5 -10 -25

-20

-15

-10

-5

0

5

Real Axis Root Locus 40 Imaginary Axis

• The pole-zero map at right indicates all loops have been stabilized. • The top root locus is for the vT-throttle loop. The bottom root locus is for the glide path-elevator loop.

Pole-Zero Map 2

20 0 -20 -40 -60

-50

-40

-30

-20

-10

Real Axis

0

10

20

43

30


Autopilot for Automatic Landing - 4 autolander with [kvt zvt pvt] = [1.2 0.5 5] autolander glide-slope vT sp d sp vT d

0.02 0 -0.02

0

200

400

600

800

1000

1200

0.01 angle (degrees)

• The vT appears to track well as shown. • The glide path deviation (d) has large overshoots & is subject to disturbances. • The vT set point filter seemed to help reduce the overshoot.

angle (degrees)

0.04

0.005 0 -0.005 -0.01 195

200

205 210 time (sec), sum error = 6.4916

215

220

44


Autopilot for Automatic Landing - 5 Phase (deg)Magnitude (dB)

200 0 -200 0 -90 -180 -4

10

-2

10

0

10

2

10

Frequency Bode Diagram (rad/sec) Gm = 14.9 dB (at 2.45 rad/sec) , Pm = 60.1 deg (at 0.507 rad/sec) From: Add3 To: Demux/2 Phase (deg)Magnitude (dB)

• The gain & phase margin of the two parallel loops are shown at right along with the bode plots. • Both loops have good phase margins for good performance.

Bode Diagram Gm = Inf dB (at Inf rad/sec) , Pm = 68.1 deg (at 0.605 rad/sec) From: Add2 To: Demux/1

500 0 -500 0 -180 -360 -540 -4

10

-2

10

0

10

2

10

Frequency (rad/sec)

45


Matlab code for Automatic Landing - 6 close_system('JET_Pitch_autoLand_AP_mdl',1) % states = {'vT' 'alpha' 'theta' 'q' 'h' 'd'}; % h is the altitude, d is the positive glide path deviation A = [-0.03858 18.984 -32.139 0.0 1.3233e-4 0 -0.001028 -0.63253 0.0056129 1.0 3.7553e-6 0 000100 7.8601e-5 -0.75905 -0.00079341 -0.5183 -3.0808e-7 0 -0.043622 -249.76 249.76 0 0 0 0 -250 250 0 0 0]; B = [10.1 -1.5446e-4 0 0.024656 0 0;0 0 0 -0.01077 0 0]'; C = [1 0 0 0 0 0 000001 0 0 57.29578 0 0 0 0 57.29578 0 0 0 0 0 0 0 57.29578 0 0]; % D = [0 0 -0.048523]'; D = [0 0 0 0 0;0 0 0 0 0]'; % ka = 0.1; % A = A - B*[0 ka 0 kq]; JET_long = ss(A,B,C,D);%sys1 = sys; ka = 0.08;% SAS kq = 0.6;%SAS z1 = 0.2;% CAS z2 = 1.4;p2 = 14;klead = 40;% AP theta zthr = 0.2;zvt = 0.5;kvt = 1.2;pvt = 5;% airspeed autopilot zAL = [-0.18 -0.5];pAL = [0 -5];kAL = 1; open_system('JET_Pitch_autoLand_AP_mdl')

set_param('JET_Pitch_autoLand_AP_mdl/SAS kq','Gain',num2str(kq)) set_param('JET_Pitch_autoLand_AP_mdl/SAS ka','Gain',num2str(ka)) set_param('JET_Pitch_autoLand_AP_mdl/CAS_PI','Numerator',... ['[',num2str(1),' ',num2str(z1),']']) set_param('JET_Pitch_autoLand_AP_mdl/AP_lead','Numerator',... ['[',num2str(1),' ',num2str(z2),']']) set_param('JET_Pitch_autoLand_AP_mdl/AP_lead','Denominator',... ['[',num2str(1),' ',num2str(p2),']']) set_param('JET_Pitch_autoLand_AP_mdl/APKld','Gain',num2str(klead)) set_param('JET_Pitch_autoLand_AP_mdl/Throt_lag','Numerator',... ['[',num2str(zthr),']']) set_param('JET_Pitch_autoLand_AP_mdl/Throt_lag','Denominator',... ['[',num2str(1),' ',num2str(zthr),']']) set_param('JET_Pitch_autoLand_AP_mdl/VT_lead','Numerator',... ['[',num2str(1),' ',num2str(zvt),']']) set_param('JET_Pitch_autoLand_AP_mdl/VT_lead','Denominator',... ['[',num2str(1),' ',num2str(pvt),']']) set_param('JET_Pitch_autoLand_AP_mdl/VTgain','Gain',num2str(kvt)) set_param('JET_Pitch_autoLand_AP_mdl/AL_lead','Zeros',... ['[',num2str(zAL),']'],'Poles',... ['[',num2str(pAL),']'],'Gain',... ['[',num2str(kAL),']']) AP_mdl_io(1) = linio('JET_Pitch_autoLand_AP_mdl/Add2',1,'in','on'); AP_mdl_io(2) = linio('JET_Pitch_autoLand_AP_mdl/Demux',1,'out','on'); AP_mdl_io(3) = linio('JET_Pitch_autoLand_AP_mdl/Add3',1,'in','on'); AP_mdl_io(4) = linio('JET_Pitch_autoLand_AP_mdl/Demux',2,'out','on'); set_param('JET_Pitch_autoLand_AP_mdl/dsp_filt','Denominator',... ['[',num2str(6),' ',num2str(1),']']) setlinio('JET_Pitch_autoLand_AP_mdl',AP_mdl_io) AP_lin_mdl = linearize('JET_Pitch_autoLand_AP_mdl',AP_mdl_io); sim('JET_Pitch_autoLand_AP_mdl',1200)

46


Modern Control Design • • • • •

Based directly on state variable models Specifications in terms of mathematically determined performance criteria yield matrix equations for the control gains. Matrix equations allow all the control gains to computed simultaneously, which closes all the loops at the same time. More quick and direct than equivalent classical design methods. Design features or problems include: – – – – – – – –

Pole-placement/eigenvector assignment Regulator problem, Tracker problem (tracking a command signal) Model following Dynamic inversion Robust design Observers, Kalman filters Digital control

47


F-16 Yaw Damper – 1 (pole placement) •

We’ll now introduce ‘modern’ pole placement which is a commonly used multivariable approach. By using a state space pole placement method we can generate an observer which produces an estimated or smoothed state vector which is fed into the control law. Thus, we have more degrees of freedom (length of the state vector) to achieve the control objectives. By use of the matlab ‘place’ command we can specify the observer (state space smoother) poles and the control system poles with verifiable accuracy. Pole placement allows us to design very quickly as well as accurately. Note that we had to remove the yaw angle state as the state must be controllable or accessible. The po vector is the desired observer poles. We arbitrarily offset them a reasonable distance from the pc vector so the observer poles will not interfere with the control law performance. The pc vector is the desired system poles. The design results are shown under Controlled system. Note the Lcon values emphasize beta, roll rate, & yaw rate with most emphasis on beta & roll rate. Therefore, pole placement may also be used as a sensitivity analysis tool. The new damping coefficient for the system is 0.707, which will satisfy short period mode pilot handling qualities.

Starting model. Yaw angle was removed for ‘place’ to work.

pc = [-0.02 -0.2+0.2i,... -0.2-0.2i,-3.5]; po = -10 + pc; Lobs = place(a',c',po).'; Lcon = place(a,b,pc); sysobs = ss(a-Lobs*c,Lobs,Lcon,0); Lcon = 'beta' 'roll‘ 'roll rate' 'yaw rate‘ 81.1827 -0.5088 -61.6549 -33.1050 -105.6235 1.6612 -232.9054 -77.7229

Eigenvalue Damping Freq. (rad/s) Observer dynamics -1.00e+001 1.00e+000 1.00e+001 -1.02e+001 + 2.00e-001i 1.00e+000 1.02e+001 -1.02e+001 - 2.00e-001i 1.00e+000 1.02e+001 -1.35e+001 1.00e+000 1.35e+001 Controlled system (roll/yaw damper) -2.00e-002 1.00e+000 2.00e-002 -2.00e-001 + 2.00e-001i 7.07e-001 2.83e-001 -2.00e-001 - 2.00e-001i 7.07e-001 2.83e-001 -3.50e+000 1.00e+000 3.50e+000 A = [-0.1315 0.14858 0 0.32434 -0.93964 0 0 0 1 0.33976 0 0 0 0 1.0561 -10.614 0 0 -1.1793 1.0023 0.99655 0 0 -0.0018174 -0.25855]; B = [0.00012049 0.00032897 00 00 -0.1031578 0.020987 -0.002133 -0.010715]; C = [0 0 0 57.29578 0 0 0 0 0 57.29578]; D = [0 0 0 0];

48


F-16 Yaw Damper – 2 (pole placement) Impulse Response From: rudder

2

To: roll rate

0

-2

Amplitude

-4

-6 0.5

To: yaw rate

• Pp1 uses the following commands: a1 = 0.75;b1 = 0.9; pc = [-0.01 -a1+b1*1i,... -a1-b1*1i,-5]; po = -10 + pc; Lobs = place(a',c',po).'; Lcon = place(a,b,pc); sysobs = ss(aLobs*c,Lobs,Lcon,0); syscon = ss(ab*Lcon,b,c,d); • Pp1 is based on the original plant

From: aileron

0

orig f16

-0.5

classical pp1 -1

0

5

10

15

20 0

5

10

15

20

Time (sec)

state vector = 'beta' 'roll‘ 'roll rate' 'yaw rate‘ Control vector = ‘aileron’ ‘rudder’ Lcon = 66.2803 -11.8009 -10.7259 -96.9482 -163.8392 5.1284 -34.7423 -410.4016 For the above specified poles beta & yaw rate are emphasized, that is, the control system is more sensitive to beta & yaw rate values than roll & roll rate values.

49


Pole Placement for CCV fighter Pitch Pointing - 1 Pole-Zero Map 5 4 3 System: syscon Pole : -1 Damping: 1 Overshoot (%): 0 Frequency (rad/sec): 1

2

Imaginary Axis

states = {'alpha''q' 'gamma' 'elev''flap'} A = [-1.341 0.9933 0 -0.1689 -0.2518 43.223 -0.8693 0 -17.251 -1.5766 1.341 0.0067 0 0.1689 0.2518 0 0 0 -20 0 0 0 0 0 -20]; B = [0 0 0 20 0;0 0 0 0 20]'; C = [0 1 0 0 0 47.76 -0.268 0 -4.56 4.45 zeros(3,2) eye(3)]; D = zeros(5,2); JET_long = ss(A,B,C,D);%sys1 = sys;

1 0 -1

System: syscon Pole : -5.6 - 4.2i Damping: 0.8 Overshoot (%): 1.52 Frequency (rad/sec): 7

-2 -3 -4

% pole placement a = A;b = B;c = C;d = D; a1 = 5.6;b1 = 4.2; pc = [-1.0 -a1+b1*1i,... -a1-b1*1i,-19 -19.5]; po = -20 + pc; Lobs = place(a',c',po).'; Lcon = place(a,b,pc); sysobs = -ss(a-Lobs*c,Lobs,Lcon,0); syscon = ss(a-b*Lcon,b,c,d); •

•

The control law improves the pole locations. Note that the movement desired is small. This way the gain magnitudes are relatively small. Sysobs is the complete compensator & is used to check the observer pole locations. Syscon is used to check the pole locations.

-5 -20

-18

-16

-14

-12

-10

-8

-6

-4

-2

0

Real Axis

Lcon = -5.6052 -0.7355 -1.3926 0.4634 0.0864 -0.3858 -0.0219 0.3983 0.0063 -0.0389 Eigenvalue Damping Freq. (rad/s) Observer dynamics -2.10e+001 1.00e+000 2.10e+001 -2.56e+001 + 4.20e+000i 9.87e-001 2.59e+001 -2.56e+001 - 4.20e+000i 9.87e-001 2.59e+001 -3.90e+001 1.00e+000 3.90e+001 -3.95e+001 1.00e+000 3.95e+001 Controlled system (roll/yaw damper) -1.00e+000 1.00e+000 1.00e+000 -5.60e+000 + 4.20e+000i 8.00e-001 7.00e+000 -5.60e+000 - 4.20e+000i 8.00e-001 7.00e+000 -1.90e+001 1.00e+000 1.90e+001 -1.95e+001 1.00e+000 1.95e+001

50


subplot(321) rlocus(syscon(1,1)),%grid on subplot(322) rlocus(syscon(1,2)),%grid on subplot(323) rlocus(syscon(2,1)),%grid on subplot(324) rlocus(syscon(2,2)),%grid on subplot(325) rlocus(syscon(3,1)),%grid on subplot(326) rlocus(syscon(3,2)),%grid on

Imaginary Axis

Imaginary Axis

10 0 -10 -100

-50

0

50

10 0 -10 -100

Real Axis Root Locus 20 0 -20 -40

-20

0

20

0

Real Axis

0

50

0

20

0

10

0 -5 -40

-20 Real Axis Root Locus

200

-20

0

5

Real Axis Root Locus

-200 -40

-50 Real Axis Root Locus

Imaginary Axis

Root Locus

Imaginary Axis

Root Locus

Imaginary Axis

The root loci is organized so that the 1st column is due to elevator action. The 2nd column is due to flaperon action. The rows are: 1st – q (pitch rate), 2nd – nzp (normal acceleration), 3rd – gamma (flight path angle). The phugoid mode has been moved to a -1 pole location. The short-period dynamics are now at -5.6 +- 4.2i, which has a damping coefficient of 0.8. The matlab code follows:

Imaginary Axis

Pole Placement for CCV fighter Pitch Pointing - 2

20

50 0 -50 -20

-10 Real Axis

51


Pole Placement for CCV fighter Pitch Pointing - 3 Impulse Response

To: Out(1)

0 -5 -10 100

To: Out(2)

0

-100 0.5 0 -0.5 -1

impulse(syscon(1:3,:)),grid on

From: In(2)

5

To: Out(3)

The impulse responses are organized so that the 1st column is due to elevator action. The 2nd column is due to flaperon action. The rows are: 1st – q, 2nd – nzp, 3rd – gamma. The impulse show that the outputs are more sensitive to elevator disturbances than flaperon disturbances. Also, there are no biases due to impulse disturbances. The matlab code follows:

Amplitude

From: In(1)

0

2

4

6

0

2

4

6

Time (sec)

52


Pole Placement for CCV fighter Pitch Pointing - 4

step(syscon(1:3,:)),grid on

From: In(2)

To: Out(1)

0 -0.5 -1 -1.5

To: Out(2)

Step Response From: In(1)

0 -5 -10 0.5

To: Out(3)

The step responses are organized so that the 1st column is due to elevator action. The 2nd column is due to flaperon action. The rows are: 1st – q, 2nd – nzp, 3rd – gamma. The steps show that the outputs are more sensitive to elevator disturbances than flaperon disturbances. The only ‘normal’ step response is in the gamma channel. The matlab code follows:

Amplitude

0 -0.5 -1

0

2

4

6

0

2

4

6

Time (sec)

53


LQR state feedback for F16 - 1 Pole-Zero Map

15

10

5 Imaginary Axis

A = [-0.322 0.064 0.0364 -0.9917 0.0003 0.0008 0 0 0 1 0.0037 0 0 0 -30.6492 0 -3.6784 0.6646 -0.7333 0.1315 0 8.5396 0 -0.0254 -0.4764 -0.0319 -0.062 0 0 0 0 0 -20.2 0 0 0 0 0 0 0 -20.2 0 0 0 0 180/pi 0 0 -1]; B = [0 0 0 0 20.2 0 0;0 0 0 0 0 20.2 0]'; C = 180/pi*[0 0 0 1 0 0 -pi/180 0010000 1000000 0 1 0 0 0 0 0]; D = zeros(4,2); JET_long = ss(A,B,C,D);

0

-5

-10

-15 -25

Q = eye(size(A))*100;R = c*c'*1e-3;N = c'; Lobs = lqr(a',c',Q,R).'; qdr = 50;qp = 100; Q = diag([qdr qp qp qdr 0 0 1]);R = 0.1*eye(2);N = b; Lcon = lqr(a,b,Q,R); sysobs_state = ss(a-Lobs*c,Lobs,Lcon,0); syscon_state = ss(a-b*Lcon,b,c,d); • • •

The control law improves the pole locations. Note that the movement is small. This way the gain magnitudes are relatively small. Sysobs is the complete compensator & is used to check the observer pole locations. Syscon is used to check the pole locations. Most of the observer poles are larger in magnitude than the controlled system poles. All have high damping.

-20

-15

-10

-5

0

Real Axis

Eigenvalue Damping Freq. (rad/s) Observer dynamics -2.28e-002 1.00e+000 2.28e-002 -2.02e+001 1.00e+000 2.02e+001 -2.02e+001 1.00e+000 2.02e+001 -3.16e+002 + 1.49e-001i 1.00e+000 3.16e+002 -3.16e+002 - 1.49e-001i 1.00e+000 3.16e+002 -3.17e+002 + 1.61e+001i 9.99e-001 3.17e+002 -3.17e+002 - 1.61e+001i 9.99e-001 3.17e+002 Controlled system (F16 long. SAS) -7.72e-001 1.00e+000 7.72e-001 -9.12e-001 1.00e+000 9.12e-001 -1.93e+000 + 3.42e+000i 4.91e-001 3.92e+000 -1.93e+000 - 3.42e+000i 4.91e-001 3.92e+000 -2.02e+001 1.00e+000 2.02e+001 -1.86e+001 + 1.16e+001i 8.48e-001 2.19e+001 -1.86e+001 - 1.16e+001i 8.48e-001 2.19e+001

54


50

Imaginary Axis

50

Imaginary Axis

Root Locus 20 0 -20 -100

-50

0

RealLocus Axis Root 20

-20 -100

-50

0

RealLocus Axis Root 200 0 -200 -30

-20

-10

0

10

RealLocus Axis Root 50 0 -50 -40

-20

0 Real Axis

20

40

Imaginary Axis

0

Root Locus 20 0 -20 -100

-50

0

50

RealLocus Axis Root 50 0 -50 -30

-20

-10

0

10

RealLocus Axis Root 1000 0 -1000 -100 Imaginary Axis

Imaginary Axis Imaginary Axis Imaginary Axis

• The root loci is organized so that the 1st column is due to rudder action. The 2nd column is due to aileron action. • The rows are: 1st – r (yaw rate), 2nd – p (roll rate), 3rd - β (side slip angle), 4th – φ (roll angle). • The phugoid mode has been moved to a -0.77 pole location. • The short-period dynamics are now at -1.93 +- 3.42i, which has a damping coefficient of 0.491.

Imaginary Axis

LQR state feedback for F16 - 2

-50

0

50

0

20

RealLocus Axis Root 50 0 -50 -40

-20 Real Axis

55


From: In(2)

To: Out(1)

5 0

To: Out(2)

-5 20 0 -20 1 To: Out(3)

Impulse Response From: In(1)

0 -1 2

To: Out(4)

The impulse responses are organized so that the 1st column is due to rudder action. The 2nd column is due to aileron action. The rows are: 1st – r (yaw rate), 2nd – p (roll rate), 3rd β (side slip angle), 4th – φ (roll angle). The impulse show that the roll outputs are more sensitive to rudder disturbances than aileron disturbances. Also, r / β are more sensitive to aileron disturbances. A non-minimum phase response is shown from the yaw rate response to aileron action. The matlab code follows:

Amplitude

LQR state feedback for F16 - 3

0 -2

0

2

4

6

8

10 0

2

4

6

8

10

Time (sec)

impulse(syscon),grid on 56


LQR state feedback for F16 - 4

From: In(2)

To: Out(1)

0.5 0

To: Out(2)

-0.5 2 0 -2 0.4 To: Out(3)

Step Response From: In(1)

0.2 0 0

To: Out(4)

The step responses are organized so that the 1st column is due to rudder action. The 2nd column is due to aileron action. The rows are: 1st – r (yaw rate), 2nd – p (roll rate), 3rd β (side slip angle), 4th – φ (roll angle). The steps as well as impulses show that the roll outputs are more sensitive to rudder disturbances than aileron disturbances. Also, r / β are more sensitive to aileron disturbances. Only roll angle shows a true step response from rudder action. Only side slip angle shows a true step response from aileron action.

Amplitude

-1 -2

0

2

4

6

8

10 0

2

4

6

8

10

Time (sec)

57


LQR state feedback for F16 - 4

From: In(2)

To: Out(1)

0.5 0

To: Out(2)

-0.5 2 0 -2 0.4 To: Out(3)

Step Response From: In(1)

0.2 0 0

To: Out(4)

The step responses are organized so that the 1st column is due to rudder action. The 2nd column is due to aileron action. The rows are: 1st – r (yaw rate), 2nd – p (roll rate), 3rd β (side slip angle), 4th – φ (roll angle). The steps as well as impulses show that the roll outputs are more sensitive to rudder disturbances than aileron disturbances. Also, r / β are more sensitive to aileron disturbances. Only roll angle shows a true step response from rudder action. Only side slip angle shows a true step response from aileron action.

Amplitude

-1 -2

0

2

4

6

8

10 0

2

4

6

8

10

Time (sec)

58


LQR output feedback for F16 - 1

• • •

The control law improves the pole locations. Note that the movement is small. This way the gain magnitudes are relatively small. Sysobs_out is the complete compensator & is used to check the observer pole locations. Syscon_out is used to check the controlled system pole locations. Most of the observer poles are larger in magnitude than the controlled system poles. All have high damping.

Pole-Zero Map

150

100

50 Imaginary Axis

A = [-0.322 0.064 0.0364 -0.9917 0.0003 0.0008 0 0 0 1 0.0037 0 0 0 -30.6492 0 -3.6784 0.6646 -0.7333 0.1315 0 8.5396 0 -0.0254 -0.4764 -0.0319 -0.062 0 0 0 0 0 -20.2 0 0 0 0 0 0 0 -20.2 0 0 0 0 180/pi 0 0 -1]; B = [0 0 0 0 20.2 0 0;0 0 0 0 0 20.2 0]'; C = 180/pi*[0 0 0 1 0 0 -pi/180 0010000 1000000 0 1 0 0 0 0 0]; D = zeros(4,2); JET_long = ss(A,B,C,D); qdr = 50;qp = 100; Q = diag([qdr qp qp qdr]);R = 0.1*eye(2); Lcon = lqry(JET_long,Q,R); sysobs_out = ss(a-Lobs*c,Lobs,Lcon,0); syscon_out = ss(a-b*Lcon,b,c,d); damp(sysobs_out) damp(syscon_out)

0

-50

-100

-150 -120

-100

-80

-60

-40

-20

0

Real Axis

Eigenvalue Damping Freq. (rad/s) Observer dynamics -2.28e-002 1.00e+000 2.28e-002 -2.02e+001 1.00e+000 2.02e+001 -2.02e+001 1.00e+000 2.02e+001 -3.16e+002 + 1.49e-001i 1.00e+000 3.16e+002 -3.16e+002 - 1.49e-001i 1.00e+000 3.16e+002 -3.17e+002 + 1.61e+001i 9.99e-001 3.17e+002 -3.17e+002 - 1.61e+001i 9.99e-001 3.17e+002 Controlled system (F16 long. SAS) -7.06e-001 1.00e+000 7.06e-001 -1.11e+000 + 4.43e-001i 9.28e-001 1.19e+000 -1.11e+000 - 4.43e-001i 9.28e-001 1.19e+000 -3.10e+001 + 2.76e+001i 7.46e-001 4.15e+001 -3.10e+001 - 2.76e+001i 7.46e-001 4.15e+001 -1.17e+002 + 1.16e+002i 7.10e-001 1.65e+002 -1.17e+002 - 1.16e+002i 7.10e-001 1.65e+002

59


-100

0

100

200

RealLocus Axis Root 200 0 -200 -400

-200

0

200

RealLocus Axis Root 1000 0 -1000 -150

-100

-50

0

50

RealLocus Axis Root 500 0 -500 -400

-200

0 Real Axis

200

400

Imaginary Axis

-200 -200

Imaginary Axis

0

Imaginary Axis

Imaginary Axis

Root Locus 200

Imaginary Axis

Imaginary Axis

The root loci is organized so that the 1st column is due to rudder action. The 2nd column is due to aileron action. The rows are: 1st – r (yaw rate), 2nd – p (roll rate), 3rd - β (side slip angle), 4th – φ (roll angle). The phugoid mode has been moved to a -0.706 pole location. The short-period dynamics are now at -1.11 +- 0.443i, which has a damping coefficient of 0.928. This performance is superior to the LQR state feedback using identical weightings.

Imaginary Axis

Imaginary Axis

LQR output feedback for F16 - 2 Root Locus 200 0 -200 -200

-100

0

100

200

0

50

0

50

RealLocus Axis Root 500 0 -500 -150

-100

-50 RealLocus Axis Root

500 0 -500 -150

-100

-50 RealLocus Axis Root

1000 0 -1000 -1000

-500

0

500

Real Axis

60


From: In(2)

To: Out(1)

1 0

To: Out(2)

-1 0.2 0.1 0 0.05 To: Out(3)

Impulse Response From: In(1)

0 -0.05

To: Out(4)

The impulse responses are organized so that the 1st column is due to rudder action. The 2nd column is due to aileron action. The rows are: 1st – r (yaw rate), 2nd – p (roll rate), 3rd β (side slip angle), 4th – φ (roll angle). The impulse show that the roll outputs are more sensitive to rudder disturbances than aileron disturbances. Also, r - β are more sensitive to aileron disturbances. A non-minimum phase response is shown from the yaw rate response to aileron action. Responses are significantly reduced due to the improved shortperiod damping.

Amplitude

LQR output feedback for F16 - 3

0 -0.02 -0.04

0

2

4

6

8 0

2

4

6

8

Time (sec)

61


From: In(1)

From: In(2)

To: Out(1)

0.05 0

To: Out(2)

-0.05 0 -0.02 -0.04 0.04 To: Out(3)

Step Response

0.02 0

To: Out(4)

The step responses are organized so that the 1st column is due to rudder action. The 2nd column is due to aileron action. The rows are: 1st – r (yaw rate), 2nd – p (roll rate), 3rd β (side slip angle), 4th – φ (roll angle). The steps as well as impulses show that the roll outputs are more sensitive to rudder disturbances than aileron disturbances. Also, r / β are more sensitive to aileron disturbances. Only roll angle shows a true step response from rudder action. Only side slip angle shows a true step response from aileron action. Step responses are much reduced due to the improved short-period damping.

Amplitude

LQR output feedback for F16 - 4

0 -0.02 -0.04 0

2

4

6

8

0

2

4

6

8

Time (sec)

62


LQR Summary • For implementation on an aircraft, the control gains (Lcon) should be gain-scheduled. To do this the nonlinear aircraft equations are linearized at several equilibrium flight conditions over the desired flight envelope to obtain A & B matrices. The LQR design is repeated for those different systems. • Since the Q & R matrices can be the same throughout the flight conditions, the control gain matrices may be obtained in a few minutes for each flight conditions. 63


Tracking a Command • • •

The objective is to design a control system that will track a reference signal. An example is to shape the system response based on a desired reference model, which is called model reference control. This is also called servodesign and is important in CAS design. A pole placement & an LQG tracker design will be presented using matlab commands, as has been the demonstration approach all along. In this modern control approach all the gains are determined at the same time. All the loops are closed at once. A major disadvantage of LQG design is tuning the Q & R matrices. Although some intuition is involved usually there is no straight forward means to derive the Q&R matrices. Generally, when pole placement is used we try to minimally adjust the original poles. Model reference control is based on a feedback performance signal that is used to determine the control system quality. LQG may be used for model reference control design.

64


Command Tracker – 1 – F16 model (pole placement) A = [-1.01887 0.90506 -0.00215 0 0 0.82225 -1.07741 -0.17555 0 0 0 0 -20.2 0 0 10 0 0 -10 0 -16.26 -0.9788 0.04852 0 0]; B = [0 0 20.2 0 0]';G = [0 0 0 0 1]'; r2d = 180/pi; C = [0 0 0 r2d 0 0 r2d 0 0 0 -16.26 -0.9788 0.048522 0 0 0 0 0 0 1]; D = zeros(4,1);F = [0 0 1 0]'; H = [16.26 0.9788 -0.048522 0 0]; JET_long = ss(A,[B,G],C,[D,F]); Pole placement matlab design follows: % pole placement [a,b,c,d] = ssdata(JET_long); pc = -[3e-2 .18 2 10 20]; po = -15 + pc; Lobs = place(a',c',po).'; Lcon = place(a,b,pc); sysobs_PP = ss(a-Lobs*c,Lobs,Lcon,zeros(2,4));

The original plant characteristics are shown below. damp(JET_long) Eigenvalue

Damping

0.00e+000 -1.00e+000 -1.85e-001 1.00e+000 -1.91e+000 1.00e+000 -1.00e+001 1.00e+000 -2.02e+001 1.00e+000

Freq. (rad/s) 0.00e+000 1.85e-001 1.91e+000 1.00e+001 2.02e+001

Eigenvalue Damping Freq. (rad/s) Observer dynamics -1.50e+001 1.00e+000 1.50e+001 -1.52e+001 1.00e+000 1.52e+001 -1.70e+001 1.00e+000 1.70e+001 -2.50e+001 1.00e+000 2.50e+001 -3.50e+001 1.00e+000 3.50e+001 Controlled system (F16 long. SAS) -3.00e-002 1.00e+000 3.00e-002 -1.80e-001 1.00e+000 1.80e-001 -2.00e+000 1.00e+000 2.00e+000 -1.00e+001 1.00e+000 1.00e+001 -2.00e+001 1.00e+000 2.00e+001

65


Command Tracker – 2 – root locus (pole placement)

• •

0 -500 -200

0

200

400

Imaginary Axis

Imaginary Axis

Root Locus 1 0 -1 -1

-0.5

5 0 -5 -100

-50

0

50

0

20

Imaginary Axis

0

-1 -1

-0.5

0 0 Real Axis

0

1

0.5

1

0

0.05

1 0 -1 -1

-0.5

0.5

1

5

0 RealLocus Axis Root

-3

1

-0.5

0.5

0

RealLocus Axis Root

-1 -1

1

RealLocus Axis Root

10

-20

0.5

1

RealLocus Axis Root

-10 -40

0 RealLocus Axis Root

Imaginary Axis

Imaginary Axis

RealLocus Axis Root

Imaginary Axis

Root Locus 500

Imaginary Axis

The root loci is organized so that the 1st column is due to elevator action. The 2nd column is due to command signal. The rows are: 1st – α (angle of attack), 2nd – q (pitch rate), 3rd - δe (elevator actuator), 4th – α (α filter), 5th – ε (performance index). The phugoid mode has been moved from 0 to -0.03. This gives ~30 sec time constant. The short-period was moved slightly from -0.185 to -0.18. No root loci exists in some channels because they are based on the performance index.

Imaginary Axis

x 10

0 -5 -0.15

-0.1

-0.05 Real Axis

66


From: In(2)

To: Out(1)

0 -20 -40 To: Out(2)

0 -20 -40 10 To: Out(3)

Step Response From: In(1)

5 0 40

To: Out(4)

The step responses are organized so that the 1st column is due to elevator action. The 2nd column is due to command signal. The rows are: 1st – α (angle of attack), 2nd – q (pitch rate), 3rd - δe (elevator actuator), 4th – α (α filter), 5th – ε (performance index). The steps show that the lateral outputs have a rise time of ~ 12 sec. The performance index has a rise time of ~ 73 sec.

Amplitude

Command Tracker – step (pole placement) - 3

20 0 0

50

100

150

0

50

100

150

Time (sec)

67


Command Tracker – F16 model (LQG state feedback) – 1 Pole-Zero Map 0.4

0.3

0.2

0.1 Imaginary Axis

% LQR state feedback Q = H'*H + diag([100 100 100 0 2]);R = c*c'*1e-3; Lobs = lqr(a',c',Q,R).'; Q = H'*H;Q(end,end) = 0.5;R = 5*eye(2); Lcon = lqr(a,b,Q,R); sysobs_state = ss(a-Lobs*c,Lobs,Lcon,0); syscon_state = ss(a-b*Lcon,b,c,d); damp(sysobs_state) damp(syscon_state)

0

-0.1

-0.2

The control law improves the pole locations. The original pole near the origin is slightly unstable. This phugoid mode under the control has a good damping of 0.866 & has good distance from the origin. Sysobs_out is the complete compensator (controller plus observer) & is used to check the observer pole locations. Syscon_out is used to check the controlled system pole locations. Most of the observer poles (not shown) are larger in magnitude than the controlled system poles. All have high damping.

-0.3

-0.4 -25

-20

-15

-10

-5

0

Real Axis

Eigenvalue Damping Freq. (rad/s) Original dynamics 0.00e+000 -1.00e+000 0.00e+000 -1.85e-001 1.00e+000 1.85e-001 -1.91e+000 1.00e+000 1.91e+000 -1.00e+001 1.00e+000 1.00e+001 -2.02e+001 1.00e+000 2.02e+001 Controlled system (F16 long) -6.41e-001 + 3.71e-001i 8.66e-001 -6.41e-001 - 3.71e-001i 8.66e-001 -1.79e+000 1.00e+000 -1.00e+001 1.00e+000 -2.02e+001 1.00e+000

7.41e-001 7.41e-001 1.79e+000 1.00e+001 2.02e+001

68


Command Tracker – F16 model (LQG state feedback) – 2

400

RealLocus Axis Root 5 0 -5 -40

-20

0

20

RealLocus Axis Root 10 0 -10 -40

-20

0

20

RealLocus Axis Root 100 0 -100 -30

-20

-10 Real Axis

0

10

Imaginary Axis

200

-200 -200

Imaginary Axis

0

0

Imaginary Axis

Imaginary Axis

-500 -200

Root Locus 200

Imaginary Axis

0

Imaginary Axis

Root Locus 500

Imaginary Axis

The root loci is organized so that the 1st column is due to elevator action. The 2nd column is due to command signal. The rows are: 1st – α (angle of attack), 2nd – q (pitch rate), 3rd - δe (elevator actuator), 4th – α (α filter), 5th – ε (performance index). The phugoid mode has been moved to a -0.641 +- 0.371i pole location. The damping coefficient is 0.866. The short-period dynamics are now at -1.93. These dynamics must be viewed at the appropriate scales. This view gives an overall view of the system dynamics.

Imaginary Axis

-100

0

100

200

RealLocus Axis Root 50 0 -50 -100

-50

0

50

RealLocus Axis Root 2 0 -2 -30

-20

-10

0

10

RealLocus Axis Root 2 0 -2 -40

-20

0

20

Real Axis

69


Command Tracker – F16 model (LQG state feedback) – 3 From: In(1)

From: In(2)

To: Out(1)

5 0

To: Out(2)

-5 10 0 -10 1 To: Out(3)

Impulse Response

0 -1 1

To: Out(4)

The impulse responses are organized so that the 1st column is due to elevator action. The 2nd column is due to command signal. The rows are: 1st – α (angle of attack), 2nd – q (pitch rate), 3rd - δe (elevator actuator), 4th – α (α filter), 5th – ε (performance index). The impulse show that the longitudinal outputs are sensitive to elevator disturbances at these control gains. In order to reduce the disturbance sensitivity we must modify the Q & R matrices, or, at least the R(1,1) element.

Amplitude

0 -1

0

5

10

0

5

10

Time (sec)

70


Command Tracker – F16 model (LQG state feedback) – 4 From: In(2)

To: Out(2)

To: Out(1)

4 2 0 -2 -4 4 2 0 -2 -4 2 To: Out(3)

Step Response From: In(1)

1 0 4

To: Out(4)

The step responses are organized so that the 1st column is due to elevator action. The 2nd column is due to command signal. The rows are: 1st – α (angle of attack), 2nd – q (pitch rate), 3rd - δe (elevator actuator), 4th – α (α filter), 5th – ε (performance index). The steps show that the longitudinal outputs are sensitive to elevator disturbances at these control gains. There is significant overshoot the angle of attack and pitch rate. In order to reduce the overshoot we must modify the Q & R matrices, or, at least the R(1,1) element.

Amplitude

2 0

0

2

4

6

8

10

12 0

2

4

6

8

10

12

Time (sec)

71


Command Tracker – F16 model (LQG Output feedback) – 1 % LQR output feedback Step Response

Q = H'*H;Q(end,end) = 0.5;R = 3*eye(2); Lcon = lqr(a,b,Q,R); sysobs_out = ss(a-Lobs*c,Lobs,Lcon,0); syscon_out = ss(a-b*Lcon,b,c,d); damp(sysobs_out) damp(syscon_out)

• •

To: Out(1)

0 -2

To: Out(2)

Amplitude

-4 2 0 -2 -4 1 0.5 0 2 To: Out(4)

The control law improves the pole locations. The original pole near the origin is slightly unstable. This phugoid mode under the control has a good damping of 0.866 & has good distance from the origin. Sysobs_out is the complete compensator (controller plus observer) & is used to check the observer pole locations. Syscon_out is used to check the controlled system pole locations. Most of the observer poles (not shown) are larger in magnitude than the controlled system poles. All have high damping. This shows slightly higher damping than the equivalent state feedback LQG method.

From: In(2)

2

To: Out(3)

From: In(1)

1 0

0

2

4

6

8

10 0

2

4

6

8

10

Time (sec)

Eigenvalue Damping Freq. (rad/s) Original dynamics 0.00e+000 -1.00e+000 0.00e+000 -1.85e-001 1.00e+000 1.85e-001 -1.91e+000 1.00e+000 1.91e+000 -1.00e+001 1.00e+000 1.00e+001 -2.02e+001 1.00e+000 2.02e+001 Controlled system (F16 long) -7.97e-001 + 3.97e-001i 8.95e-001 -7.97e-001 - 3.97e-001i 8.95e-001 -1.68e+000 1.00e+000 -1.00e+001 1.00e+000 -2.02e+001 1.00e+000

8.91e-001 8.91e-001 1.68e+000 1.00e+001 2.02e+001

72


MIMO Wing Leveler Pole Placement - 1 •

This is a two-input two-output roll/yaw damper. Note in this case we will close the loops simultaneously. • Step 1 is to set up the augmented state space formulation. We’ll add integrators to generate performance indices for both roll & yaw. • The two performance indices are roll angle & yaw rate. • The matlab model set up follows. r2d = 180/pi; A = [-0.322 0.064 0.0364 -0.9917 0.0003 0.0008 0 0 0 0 1 0.0037 0 0 0 0 -30.6492 0 -3.6784 0.6646 -0.7333 0.1315 0 0 8.5395 0 -0.0254 -0.4764 -0.0319 -0.062 0 0 0 0 0 0 -20.2 0 0 0 0 0 0 0 0 -20.2 0 0 0 0 0 r2d 0 0 -1 0 0 -1 0 0 0 0 0 0]; B = [0 0 0 0 20.2 0 0 0;0 0 0 0 0 20.2 0 0]'; G = zeros(8,2);G(8,1) = 1; C = [0 0 0 0 0 0 0 1 0 0 0 -r2d 0 0 1 0 00100000 0 -1 0 0 0 0 0 0]; D = zeros(4,2);F = [0 0 0 1;0 1 0 0]'; H = [0 1 0 0 0 0 0 0;0 0 0 r2d 0 0 -1 0]; JET_long = ss(A,[B,G],C,[D,F]); 73


The control law improves the pole locations. The original pole near the origin is slightly unstable. This short-period mode under the controlled system has a good damping of 0.707 & has good distance from the origin. The original damping was 0.137, which is too low. Sysobs_PP is the complete compensator (controller plus observer) & is used to check the observer pole locations. Syscon_PP is used to check the controlled system pole locations. Most of the observer poles (not shown) are larger in magnitude than the controlled system poles. All have high damping.

-1 -1

-0.5

0

0.5

1

10

Imaginary Axis

RealLocus Axis Root

20

10 0 -10 -30

-20

-10

0

RealLocus Axis Root 5 0 -5 -60

-40

-20

0

RealLocus Axis Root 50 0 -50 -100

-50

0 Real Axis

Imaginary Axis

0

Imaginary Axis

Imaginary Axis Imaginary Axis

Root Locus

1

50

Imaginary Axis

Imaginary Axis

% pole placement [a,b,c,d] = ssdata(JET_long); a1 = sqrt(3);b1 = a1; pc = -[3e-2 .18 1 a1+b1*1i a1-b1*1i 3.6 20 20.5]; po = -10 + pc; Lobs = place(a',c',po).'; Lcon = place(a,b,pc); sysobs_PP = ss(a-Lobs*c,Lobs,Lcon,zeros(4,4)); syscon_PP = ss(a-b*Lcon,b,c,d);

Imaginary Axis

MIMO Wing Leveler– F16 model (Pole Placement) – 2 Root Locus

1 0 -1 -1

-0.5

0

0.5

1

0

10

0

10

RealLocus Axis Root 10 0 -10 -30

-20

-10 RealLocus Axis Root

50 0 -50 -30

-20

-10 RealLocus Axis Root

50 0 -50 -50

0

50

Real Axis

Eigenvalue Damping Freq. (rad/s) Original dynamics 0.00e+000 -1.00e+000 0.00e+000 -1.63e-002 1.00e+000 1.63e-002 -1.00e+000 1.00e+000 1.00e+000 -4.23e-001 + 3.06e+000i 1.37e-001 3.09e+000 -4.23e-001 - 3.06e+000i 1.37e-001 3.09e+000 -3.62e+000 1.00e+000 3.62e+000 -2.02e+001 1.00e+000 2.02e+001 -2.02e+001 1.00e+000 2.02e+001 Controlled system (F16 long) -3.00e-002 1.00e+000 3.00e-002 -1.80e-001 1.00e+000 1.80e-001 -1.00e+000 1.00e+000 1.00e+000 -1.73e+000 + 1.73e+000i 7.07e-001 2.45e+000 -1.73e+000 - 1.73e+000i 7.07e-001 2.45e+000 -3.60e+000 1.00e+000 3.60e+000 -2.00e+001 1.00e+000 2.00e+001 -2.05e+001 1.00e+000 2.05e+001

74


MIMO Wing Leveler– F16 model (Pole Placement) – 3 From: In(1)

From: In(4)

To: Out(1)

20 0

To: Out(2)

2 1 0 -1 1 To: Out(3)

Step Response From: In(2) From: In(3)

40

0 -1 2

To: Out(4)

The step responses are organized so that the 1st column is due to the aileron. The 2nd column is due to the rudder. The 3rd column is from the phi reference input. The 4th column is from the yaw rate reference input. The rows are: 1st – roll angle integral error, 2nd – washed out yaw rate, 3rd - p (roll rate), 4th – φ (roll angle). φ is sensitive to aileron & φ PI disturbances at these control gains. Φ integral error (performance index) is sensitive to φ reference. The washed out yaw rate is sensitive to the yaw rate reference input. The roll rate does not appear to be sensitive to any input.

Amplitude

1 0 -1

0

100

200

0

100

200

0

100

200

0

100

200

Time (sec)

75


Model-Following Design - 1 • The objective of model-following is to design controllers that force the aircraft to behave like a desired model. • A longitudinal model is based on phugoid and short-period specifications. • A lateral model is based on roll mode, spiral mode, & dutch roll mode specifications. • A typical longitudinal model is:

The subscripts p & sp in the equation represent the phugoid and the shortperiod modes. The transfer function units are rad/s/lb. Tθ1 & Tθ2 are the zeros associated with the phugoid and short-period modes respectively.

76


Model-Following Design - 2 • There are two general methods of modelfollowing design: explicit and implicit. They result in controllers of differing structures. They are both performed using modern control techniques. • The explicit approach involves a linear transfer function in a state space formulation that contains the desired characteristics. This model is incorporated into the overall design. • The implicit approach involves modification of the performance index.

77


Regulator Explicit Model-Following - 1 The objective of a regulator model-following design is to drive all the states to zero. If we have a linearized plant model such as:

A regulator model is prescribed with dynamics. This should have the desired behaviors, such as speed of response, overshoot, etc. Note that there is no input for the desired model, since the regulator model is under consideration here.

In order to derive a performance index we must try to minimize the model mismatch error: e = zm – z = Hmxm – Hx. The performance index is now written below. Q & R are both positive definite.

78


Regulator Explicit Model-Following - 2 We incorporate the model into the design process by defining an augmented state and an augmented system.

With the above we may define the model mismatch error and performance index. The model mismatch error is e = -z + zm = -Hz + Hmzm = Haxa . The PI is now written as

With the above formulation we may use the standard LQG design approaches for state feedback or output feedback as discussed previously. We merely must substitute the augmented parameters and states into the design process. In this fashion the performance output z will follow the model output z m.

79


Regulator Implicit Model-Following - 1 • In the explicit approach the model appeared in the controller as a feedforward compensator. • In the implicit approach, however, the model does not appear in the control structure. The implicit approach is more of a guide to selecting the weighting matrices in the performance index. • For a model given as below we may define an error.

or

The solution u=-Ky is to solve the Lyapunov equation & then the Riccati equation shown below.

80


• •

Dynamic Inversion Design

Dynamic Inversion is a control method that attempts to incorporate known nonlinearities of the aircraft dynamics in the controller to improve system performance. For a square system (same number of inputs & outputs) we can follow the inputoutput linearization approach: We then define the tracking error as e(t) = r(t) – y(t). The desired reference trajectory is r(t). In dynamic inversion the output y(t) is differentiated until the control u(t) appears in the expression for the derivative. Taking the 1 st derivative we get: If CB is non-singular, we are done. For aircraft CB is generally non-singular. We then define an auxiliary input v(t) as We can now solve for u (control input). With an equation for u we can now solve for the output derivative & then the error dynamics.

A simple choice for v is v = Ke, where K is a matrix containing the desired error dynamics given by: The overall dynamic inversion control input is given below. It requires full-state feedback.

81


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.