Main Content

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 ScenarioApproach
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 uncertaintyModel 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.
  • Ensure performance across different operating conditions, such as the response of aircraft flight controls at different altitudes.

  • Tune for reliable control over multiple system configurations, such as different failure modes of a system.

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 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 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

| | (Simulink Control Design) | (Simulink Control Design)

Related Topics