Robust Loop Shaping of Nanopositioning Control System
This example shows how to use the Glover-McFarlane technique to obtain loop-shaping compensators with good stability margins. The example applies the technique to a nanopositioning stage. These devices can achieve very high precision positioning which is important in applications such as atomic force microscopes (AFMs). For more details on this application, see .
The following illustration shows a feedback diagram of a nanopositioning device. The system consists of piezo-electric actuation, a flexure stage, and a detection system. The flexure stage interacts with the head of the AFM.
Load the plant model for the nanopositioning stage. This model is a seventh-order state-space model fitted to frequency response data obtained from the device.
load npfit A B C D G = ss(A,B,C,D); bode(G), grid
Typical design requirements for the control law include high bandwidth, high resolution, and good robustness. For this example, use:
Bandwidth of approximately 50 Hz
Roll-off of -40 dB/decade past 250 Hz
Gain margin in excess of 1.5 (3.5 dB) and phase margin in excess of 60 degrees
Additionally, when the nanopositioning stage is used for scanning, the reference signal is triangular, and it is important that the stage tracks this signal with minimal error in the midsection of the triangular wave. One way of enforcing this is to add the following design requirement:
A double integrator in the control loop
First try a PI design. To accommodate the double integrator requirement, multiply the plant by . Set the desired bandwidth to 50 Hz. Use
pidtune to automatically tune the PI controller.
Integ = tf(1,[1 0]); bw = 50*2*pi; % 50 Hz in rad/s PI = pidtune(G*Integ,'pi',50*2*pi); C = PI*Integ; bopt = bodeoptions; bopt.FreqUnits = 'Hz'; bopt.XLim = [1e0 1e4]; bodeplot(G*C,bopt), grid
This compensator meets the bandwidth requirement and almost meets the roll-off requirement. Use
allmargin to calculate the stability margins.
ans = struct with fields: GainMargin: [0 1.1531 13.7832 7.4195 Inf] GMFrequency: [0 2.4405e+03 3.3423e+03 3.7099e+03 Inf] PhaseMargin: 60.0024 PMFrequency: 314.1959 DelayMargin: 0.0033 DMFrequency: 314.1959 Stable: 1
The phase margin is satisfactory, but the smallest gain margin is only 1.15, far below the target of 1.5. You could try adding a lowpass filter to roll off faster beyond the gain crossover frequency, but this would most likely reduce the phase margin.
Glover-McFarlane Loop Shaping
The Glover-McFarlane technique provides an easy way to tweak the candidate compensator
C to improve its stability margins. This technique seeks to maximize robustness (as measured by
ncfmargin) while roughly preserving the loop shape of
ncfsyn to apply this technique to this application. Note that
ncfsyn assumes positive feedback so you need to flip the sign of the plant
[K,~,gam] = ncfsyn(-G,C);
Check the stability margins with the refined compensator
[Gm,Pm] = margin(G*K)
Gm = 3.7267
Pm = 70.7109
ncfsyn compensator increases the gain margin to 3.7 and the phase margin to 70 degrees. Compare the loop shape for this compensator with the loop shape for the PI design.
bodeplot(G*C,G*K,bopt), grid legend('PI design','Glover-McFarlane')
The Glover-McFarlane compensator attenuates the first resonance responsible for the weak gain margin while boosting the lead effect to preserve and even improve the phase margin. This refined design meets all requirements. Compare the two compensators.
bodeplot(C,K,bopt), grid legend('PI design','Glover-McFarlane')
The refined compensator has roughly the same gain profile.
ncfsyn automatically added zeros in the right places to accommodate the plant resonances.
ncfsyn algorithm produces a compensator of relatively high order compared to the original second-order design.
ans = 11
You can use
reducespec to reduce this down to something close to the original order. For example, try order 4.
ord = 4; R = reducespec(K,"ncf")
R = NCFBalancedTruncation with properties: Sigma:  Energy:  Error:  LNCF:  TL:  TR:  Lr:  Lo:  Options: 
Kr = getrom(R,Order=ord)
Kr = A = x1 x2 x3 x4 x1 -70.49 -355.6 519.4 -183.5 x2 117.6 2724 -5566 1169 x3 254.9 2773 -3364 821.9 x4 16.96 12.35 -186.6 71.78 B = u1 x1 -30.47 x2 9.339 x3 14.7 x4 0.7391 C = x1 x2 x3 x4 y1 -23.94 12.66 -9.017 -118.9 D = u1 y1 0 Continuous-time state-space model.
[Gm,Pm] = margin(G*Kr)
Gm = 3.8139
Pm = 70.6770
bodeplot(G*K,G*Kr,bopt), grid legend('11th order','4th order')
The reduced-order compensator
Kr has very similar loop shape and stability margins and is a reasonable candidate for implementation.
Salapaka, S., A. Sebastian, J. P. Cleveland, and M. V. Salapaka. “High Bandwidth Nano-Positioner: A Robust Control Approach.” Review of Scientific Instruments 73, no. 9 (September 2002): 3232–41.