This example shows how to use LQG synthesis to design a feedback controller for a disk drive read/write head using the SISO Design Tool.
For details about the system and model, see Chapter 14 of "Digital Control of Dynamic Systems," by Franklin, Powell, and Workman.
|On this page…|
Below is a picture of the system to be modeled.
The model input is the current ic driving the voice coil motor, and the output is the position error signal (PES, in % of track width). To learn more about the 10th order model, see "Digital Servo Control of a Hard-Disk Drive". Because the model contains a small time delay and SISOTOOL does not yet support models with a time delay, we remove the time delay in the input to design a feedback controller.
load diskdemo Gr = tf(1e6,[1 12.5 0]); Gf1 = tf(w1*[a1 b1*w1],[1 2*z1*w1 w1^2]); % first resonance Gf2 = tf(w2*[a2 b2*w2],[1 2*z2*w2 w2^2]); % second resonance Gf3 = tf(w3*[a3 b3*w3],[1 2*z3*w3 w3^2]); % third resonance Gf4 = tf(w4*[a4 b4*w4],[1 2*z4*w4 w4^2]); % fourth resonance G = (ss(Gf1) + Gf2 + Gf3 + Gf4) * Gr; % convert to state space for accuracy
We want to get a rough design of a full-ordered LQG tracker, which places the read/write head at the correct position. We also want to tune the LQG tracker to achieve specific performance requirements and reduce the controller order as much as possible. For example, turn the LQG tracker into a PI controller format.
Open SISOTOOL by typing the following command at the MATLAB® prompt:
A SISO Design Task is added to the Control and Estimation Tools Manager. You also see a SISO Design Tool dialog that contains graphical tuning tools. Go to the 'Analysis Plot' tab in SISOTOOL and select to plot the step response of the closed loop system. Details about how to use SISO Design Tool are described in "Getting Started with the SISO Design Tool".
Select the SISO Design Task node in the tree, and then select the 'Automated Tuning' tab. There are four compensator design methods available in the 'Design Method' list. In this example, we use the LQG synthesis design method.
Step 1 Select 'LQG Synthesis' in the 'Design Method' list.
In the 'Compensator' area, the initial controller is set to 1. This results in a stable closed-loop system with large oscillations. See the closed-loop step response plot.
Step 2 Determine LQG Design Specifications.
In the 'Specifications' area, use sliders to qualitatively set requirements on the controller performance:
1. Controller Response: Drag the slider to the left (Aggressive) results a more aggressive controller that reduces the overshoot and settling time in the closed-loop response. However, if you model is not sufficiently accurate, an aggressive controller reduces the stability margin (robustness).
2. Measurement Noise: Drag the slider to the left (Small) indicates that you consider your measurement noise to be small. Therefore, the controller has more confidence in the states estimated by the Kalman filter and responds more aggressively. However, if you consider your measurements to be noisy, drag the slider to the right to cause the controller to react more slowly to changes.
3. Desired LQG Controller Order: Drag the slider to set the desired order of the LQG tracker. The LQG tracker automatically contains an integrator. Try reducing the controller order until you begin to lose closed-loop stability.
As a first iteration in the design, use default slider settings.
Step 3 Click the 'Update Compensator' button.
The new compensator is displayed in the 'Compensator' area, and the step response plot is updated.
Step 4 Tune Closed-Loop Performance of the LQG Tracker.
To design a more aggressive controller, move the Controller Response slider to the far left. This reduces the overshoot by 50% and reduces the settling time by 70%.
Set Desired LQG Controller Order to 1 and click the 'Update Compensator' button. The new compensator is essentially a PI controller: 0.57(1+s)/s. This produces a heavily oscillating closed-loop system.
To make the controller less aggressive, move the Controller Response slider to the right. The new compensator is essentially a PI controller: 0.001(1+s)/s.
The response plot shows that the PI controller design provides a good starting point for optimization-based design. For information, see "Getting Started with the SISO Design Tool".