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
â&#x20AC;˘ â&#x20AC;˘ â&#x20AC;˘
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)
â&#x20AC;˘
â&#x20AC;˘
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 â&#x20AC;&#x201C; 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
â&#x20AC;˘ The pole-zero map at right indicates all loops have been stabilized. â&#x20AC;˘ 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)
â&#x20AC;˘ The gain & phase margin of the two parallel loops are shown at right along with the bode plots. â&#x20AC;˘ 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); â&#x20AC;˘
â&#x20AC;˘
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 â&#x20AC;˘ 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. â&#x20AC;˘ 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 â&#x20AC;&#x201C; 1 â&#x20AC;&#x201C; 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 â&#x20AC;˘ 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. â&#x20AC;˘ 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. â&#x20AC;˘ 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 â&#x20AC;&#x201C; z = Hmxm â&#x20AC;&#x201C; 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
â&#x20AC;˘ â&#x20AC;˘
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) â&#x20AC;&#x201C; 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