Robust Tuning Approaches
Robust Tuning and Multimodel Tuning
The Robust Control Toolbox™ tuning tools, systune
and Control System Tuner,
allow you to tune control systems for robustness against plant variation. You can
tune controllers to accommodate uncertainty in physical parameters.
You can also tune control systems to ensure performance across a range of operating conditions. You can use multimodel tuning to ensure reliable control over multiple system configurations, such as different failure modes of a system. When you tune for multiple models, the software seeks values of controller parameters that best satisfy the specified tuning objectives for all plant models.
Choosing a Robust Tuning Approach
Which approach to take to robust tuning depends on the system variations in your application. The following table summarizes these approaches.
Robust Tuning Scenario | Approach |
---|---|
Tune control system for robustness against parameter uncertainty, such as a mass-spring-damper system in which the spring constant and damping coefficient are uncertain. | Model the uncertain parameter values with
ureal blocks. See Tuning for Parameter Uncertainty. |
Tune fixed-structure control system for robustness against real and complex parameter uncertainty and dynamic uncertainty | Model the uncertain parameters with ureal ,
ucomplex , and ultidyn blocks.
Model tunable control system components with control design blocks
such as tunableGain and tunablePID
blocks. Use musyn to tune the control system to optimize robust
H∞
performance. |
Tune control system for a few critical values of the plant parameters. | Simultaneously tune multiple models corresponding to the
parameter values. This approach is useful when you cannot model the
plant variations as ureal blocks. See Tuning for Parameter Variations. |
| Simultaneously tune multiple models obtained at different operating points or representing different system configurations. Tune Against Multiple Plant Models. |
Tuning for Parameter Uncertainty
The physical parameters of a system are often uncertain for various reasons,
including imprecise measurements, manufacturing tolerances, or wear and tear. You
can use Control System Tuner or the systune
command to tune
control systems for robustness against real parameter uncertainty in the plant. You
represent parameter uncertainty in your control system model using uncertain real
parameters ureal
. The software automatically finds the worst
combinations of parameter values and tunes the controller to maximize performance
over the parameter uncertainty range.
Robust tuning against parameter uncertainty is also useful to avoid “over-tuning” the control system. When you tune against a single plant, the software might optimize performance at the expense of robustness. It is possible to obtain a design that maximizes performance but is not very robust against variations in the plant. Specifying some amount of plant variability lets the tuning software avoid such fragile designs and achieve robust performance, often with only modest degradation of nominal performance.
Control System Modeled in Simulink
To set up a Simulink® model of a control system for robust tuning, use linearization
with block substitution. (Requires Simulink
Control Design™ software.) Use Gain blocks to model the plant
parameters and use block substitution to replace them with uncertain values
represented by ureal
objects. Or, replace an entire
subsystem with an uncertain state-space model (uss
) of the
subsystem. For more information, see Model Uncertainty in Simulink for Robust Tuning.
As with control systems modeled in MATLAB®, the software automatically tunes the model for the worst combination of parameter values within the uncertainty range.
Control Systems Modeled in MATLAB
To represent real parameter uncertainty in the plant, build a generalized
state-space (genss
) model of the control system using
ureal
blocks. Use control design blocks such as
tunablePID
or tunableTF
to
represent tunable controller elements in the model. (See Build Tunable Control System Model with Uncertain Parameters.) Tune
the model with systune
or in Control System Tuner exactly
as you would for a tunable control system model without uncertainty.
Command line: Use the
genss
model as the first input argument tosystune
. For a detailed example, see Robust Tuning of Positioning System.Control System Tuner: Import the model into the app by selecting Edit Architecture > Generalized feedback configuration and entering the name of the
genss
model into the text box. Then, use the app exactly as you would for a control system model without uncertainty.
In both cases, when you tune the model, the software automatically adjusts the tunable components to optimize performance throughout the uncertainty range. Analysis plots automatically display random samples of the uncertain system to give you a visual sense of the performance variation.
Tuning for Parameter Variations
The block-substitution approach to modeling uncertainty, requires replacing an
entire block of your model with a ureal
parameter or
uss
uncertain system. In some cases, you might not be able
to make such a substitution. As an alternative, you can vary system parameters over
a specified range, grid, or nonuniform set of values. When you use
systune
or Control System Tuner to tune a system with
parameter variation, you can obtain a controller that robustly meets performance
goals over a range of model-coefficient values or over multiple plant
configurations.
Specifying Parameter Variations in Control System Tuner
In Control System Tuner, specify block-parameter variations on the
Control System tab. In the Parameter
Variations drop-down list, select Select parameters
to vary
. This action opens the Parameter
Variations tab, in which you can specify the block parameters to
vary and the values they take. Control System Tuner linearizes your Simulink model at each combination of block-parameter values that you
provide. The app then finds a set of controller gains that best meets your
tuning goals for all the linearized models simultaneously.
For a detailed example that shows how to use Control System Tuner to tune a control system for multiple values of block parameters, see Tuning for Multiple Values of Plant Parameters.
For more information about using the Parameter Variations tab to generate linear models at multiple values of block parameters, see Specify Parameter Samples for Batch Linearization (Simulink Control Design). The procedure for applying parameter variation in Model Linearizer is similar to the procedure in Control System Tuner.
Specifying Parameter Variations With slTuner
For command-line tuning of a control system modeled in Simulink, use the parameter-variation feature of
slTuner
. To so, you construct a structure that contains
the parameter-value grid over which you want to tune the model. For an example
illustrating parameter variation with slLinearizer
, see
Vary Parameter Values and Obtain Multiple Transfer Functions (Simulink Control Design). The procedure for configuring an slTuner
interface for
parameter variations is the same. After you configure the
slTuner
interface, create tuning goals and tune the
interface with systune
. The software tunes the system to
meet your tuning goals for all parameter values simultaneously.
Varying Block Parameters vs. Tuning Controller Parameters
The block parameters that you vary to generate multiple plant models are different from the controller parameters that you tune to meet your tuning goals.
Block parameters are the values that specify attributes of the blocks in your Simulink model. Block parameters can specify numeric values such as the gain of a gain block, a spring constant, or other physical parameters of a system. Block parameters can also specify structural attributes of a block, such as the dimensions of a lookup table.
You can vary any block parameter whose value is stored as a variable in the
model workspace or MATLAB workspace. However, do not vary the controller-block parameters
that you designate for tuning (see Specify Blocks to Tune in Control System Tuner). Rather, vary
parameters that specify attributes of the plant in your control system. For
example, in the model ActiveSuspensionQuarterCar
, block
parameters specified as variables include a spring constant,
Ks
, and a damping constant, Bs
.
The example Tuning for Multiple Values of Plant Parameters shows how to tune the control system of the
ActiveSuspensionQuarterCar
model for a range of values of
these parameters.
Controller parameters are the coefficients that the tuning software adjusts to yield control system performance that meets your tuning goals. When you select blocks to tune, the software assigns a parameterization to each block, as described in View and Change Block Parameterization in Control System Tuner. The coefficients of these parameterizations are the controller parameters that the software tunes. For example, if you select a PID Controller block to tune, the tuning software assigns a parameterization whose tunable coefficients are the PID gains and filter constant.
Thus, you specify controller parameters by selecting blocks to tune, and optionally customizing the parameterization of those blocks. You specify other system parameters to vary to obtain multiple plant models for tuning. In the example Tuning for Multiple Values of Plant Parameters, the block selected for tuning is a State-Space block. In that example, the controller parameters are the entries in the state-space matrices.
Tune Against Multiple Plant Models
When you tune controller gains against multiple models, the software seeks values of controller parameters that best satisfy the specified tuning objectives for all plant models. This is useful to ensure robust performance across a range of operating conditions, or for multiple system configurations.
Tuning for Multiple Operating Points
Control System Tuner can tune controller parameters for a linearization of your Simulink model obtained at any simulation snapshot time or steady-state operating point. In the Control System tab, use the Operating Point menu to compute and select operating points at which to linearize and tune.
See Specify Operating Points for Tuning in Control System Tuner for more information.
If you specify multiple operating points, Control System Tuner attempts to tune controller parameters to satisfy your tuning goals at all the specified operating points. You can restrict which tuning goals Control System Tuner enforces at each operating point. See Selective Application of Tuning Goals.
At the command line, you can tune for multiple operating points by passing an
array of operating-point objects to slTuner
.
Tuning for Multiple System Configurations
You can tune a controller that is robust against multiple system
configurations by building an array of models representing those conditions. For
example, you can create an array of genss
models that
represent different failure modes of the system. In Simulink, use slTuner
to linearize your model under an
array of operating conditions that represent different failure modes. For an
example, see the model in Fault-Tolerant Control of a Passenger Jet.
That model uses a gain block that, when set to zero, breaks a feedback loop to
simulate the loss of control of a system actuator. The example then uses
slTuner
to sample the model with different channels of
this gain block set to zero. Tuning that slTuner
with
systune
finds values of tunable controller parameters
that optimize the design goals over all failure modes.
Selective Application of Tuning Goals
Sometimes you want to restrict application of your tuning goals to a subset of the
models for which you are simultaneously tuning. For example, suppose that you
linearize your model at four snapshot times, t = [0,5,10,20]
. You
want to tune the model to meet your design goals at all these times. However,
suppose further that you have one tuning goal that you do not want to enforce at
t = 0
because it should only apply after the model has
reached steady state operation. To limit the application of this tuning goal:
At the command line, set the
Models
property of the tuning goal to the array indices of the models to which you want to apply the goal.In Control System Tuner, use the Apply goal to field of the tuning goal.
Select Only models and enter the array indices of the models
for which the goal is enforced. In this example, linearizing at t =
[0,5,10,20]
yields an array of four models, and you want to exclude
the first model in that array (t = 0
) from the tuning goal.
Therefore, enter array indices 2:4
.
For multiple models obtained using the Parameter Variations tab, array indices are assigned in the order that parameter combinations appear in the Parameter Variations table. For example, if you apply the parameter variations of the following illustration, array indices are assigned as shown.
Thus, for example, to apply a tuning goal only to those models with Bs =
1000
, regardless of the Ks
value, enter
[1,3]
in the Only models field of the
tuning goal.
Application to Nominal System
When performing robust tuning of a system with parameter uncertainty, you
sometimes want to apply certain tuning goals to the nominal system only. Or, you
might want to treat a tuning goal as a hard constraint for the nominal system,
but as a soft constraint over the rest of the uncertainty range. When tuning a
control system modeled in MATLAB, you can do this by putting the nominal system in an model array
with the uncertain system. For example, suppose CL0
is a
genss
model having both uncertain and tunable blocks.
Create a model array of the nominal and full uncertain systems.
CL = [getNominal(CL0),CL0];
Suppose that you have created two tuning goals for this system,
Req1
and Req2
. You want
Req2
to apply to the nominal system only. To do so, use
the Models
property to restrict Req2
to
the first entry in the array.
Req2.Models = [1];
You can now use Req2
as with systune
as either a hard goal or a soft goal.
To treat Req2
as a hard constraint for the nominal system
and a soft constraint otherwise, make a copy of the tuning goal. To restrict the
copy to the second entry in the array, set the Models
property of the copy.
Req3 = Req2; Req3.Models = [2]; hard = [Req1,Req2]; soft = Req3; [CLt,fSoft,gHard] = systune(CL,soft,hard);
See Also
slTuner
(Simulink Control Design) | systune (for slTuner)
(Simulink Control Design) | systune (for genss)
| replaceBlock