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.
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
|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 |
||Simultaneously tune multiple models obtained at different operating points or representing different system configurations. Tune Against Multiple Plant Models.|
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
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.
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
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.
To represent real parameter uncertainty in the plant, build a generalized
genss) model of the control system using
ureal blocks. Use control design blocks such as
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 to
systune. 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
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.
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
In Control System Tuner, specify block-parameter variations on the
Control System tab. In the Parameter
Variations drop-down list, select
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 Linear Analysis Tool is similar to the procedure in Control System Tuner.
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
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
systune. The software tunes the system to
meet your tuning goals for all parameter values simultaneously.
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 (Control System Toolbox)). Rather, vary
parameters that specify attributes of the plant in your control system. For
example, in the model
parameters specified as variables include a spring constant,
Ks, and a damping constant,
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
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 (Control System Toolbox). 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.
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.
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 (Control System Toolbox) 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
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
systune finds values of tunable controller parameters
that optimize the design goals over all failure modes.
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
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
[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
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
1000, regardless of the
Ks value, enter
[1,3] in the Only models field of the
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,
Req2. You want
Req2 to apply to the nominal system only. To do so, use
Models property to restrict
the first entry in the array.
Req2.Models = ;
You can now use
Req2 as with
as either a hard goal or a soft goal.
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
property of the copy.
Req3 = Req2; Req3.Models = ; hard = [Req1,Req2]; soft = Req3; [CLt,fSoft,gHard] = systune(CL,soft,hard);