# TuningGoal.WeightedGain class

Package: TuningGoal

Frequency-weighted gain constraint for control system tuning

## Description

Use TuningGoal.WeightedGain to limit the weighted gain from specified inputs to outputs. The weighted gain is the maximum across frequency of the gain from input to output, multiplied by weighting functions that you specify. You can use the TuningGoal.WeightedGain tuning goal for control system tuning with tuning commands such as systune or looptune.

After you create a tuning goal, you can configure it further by setting Properties of the object.

## Construction

Req = TuningGoal.WeightedGain(inputname,outputname,WL,WR) creates a tuning goal that specifies that the closed-loop transfer function, H(s), from the specified input to output meets the requirement:

||WL(s)H(s)WR(s)|| < 1.

The notation ||•|| denotes the maximum gain across frequency (the H norm).

## Examples

collapse all

Create a tuning goal requirement that constrains the gain of a closed-loop SISO system from its input, r, to its output, y. Weight the gain at its input by a factor of 10 and at its output by the frequency-dependent weight $1/\left(s+0.01\right)$.

WL = tf(1,[1 0.01]);
WR = 10;
Req = TuningGoal.WeightedGain('r','y',WL,WR);

You can use the requirement Req with systune to tune the free parameters of any control system model that has an input signal named 'r' and an output signal named 'y'.

You can then use viewGoal to validate the tuned control system against the requirement.

Create a requirement that constrains the gain of the outer loop of the following control system, evaluated with the inner loop open.

Create a model of the system. To do so, specify and connect the numeric plant models, G1 and G2, the tunable controllers C1 and C2. Also, create and connect the AnalysisPoint blocks that mark points of interest for analysis or tuning, AP1 and AP2.

G1 = tf(10,[1 10]);
G2 = tf([1 2],[1 0.2 10]);
C1 = tunablePID('C','pi');
C2 = tunableGain('G',1);
AP1 = AnalysisPoint('AP1');
AP2 = AnalysisPoint('AP2');
T = feedback(G1*feedback(G2*C2,AP2)*C1,AP1);
T.InputName = 'r';
T.OutputName = 'y';

Create a tuning requirement that constrains the gain of this system from r to y. Weight the gain at the output by $s/\left(s+0.5\right)$.

WL = tf([1 0],[1 0.5]);
Req = TuningGoal.WeightedGain('r','y',WL,[]);

This requirement is equivalent to Req = TuningGoal.Gain('r','y',1/WL). However, for MIMO systems, you can use TuningGoal.WeightedGain to create channel-specific weightings that cannot be expressed as TuningGoal.Gain requirements.

Specify that the transfer function from r to y be evaluated with the outer loop open for the purpose of tuning to this constraint.

Req.Openings = 'AP1';

By default, tuning using TuningGoal.WeightedGain imposes a stability requirement as well as the gain requirement. Practically, in some control systems it is not possible to achieve a stable inner loop. When this occurs, remove the stability requirement for the inner loop by setting the Stabilize property to false.

Req.Stabilize = false;

The tuning algorithm still imposes a stability requirement on the overall tuned control system, but not on the inner loop alone.

Use systune to tune the free parameters of T to meet the tuning requirement specified by Req. You can then validate the tuned control system against the requirement using the command viewGoal(Req,T).

## Tips

• This tuning goal imposes an implicit stability constraint on the weighted closed-loop transfer function from Input to Output, evaluated with loops opened at the points identified in Openings. The dynamics affected by this implicit constraint are the stabilized dynamics for this tuning goal. The MinDecay and MaxRadius options of systuneOptions control the bounds on these implicitly constrained dynamics. If the optimization fails to meet the default bounds, or if the default bounds conflict with other requirements, use systuneOptions to change these defaults.

## Algorithms

When you tune a control system using a TuningGoal, the software converts the tuning goal into a normalized scalar value f(x). x is the vector of free (tunable) parameters in the control system. The software then adjusts the parameter values to minimize f(x) or to drive f(x) below 1 if the tuning goal is a hard constraint.

For TuningGoal.WeightedGain, f(x) is given by:

$f\left(x\right)={‖{W}_{L}T\left(s,x\right){W}_{R}‖}_{\infty }.$

T(s,x) is the closed-loop transfer function from Input to Output. ${‖\text{\hspace{0.17em}}\cdot \text{\hspace{0.17em}}‖}_{\infty }$ denotes the H norm (see getPeakGain).

## Version History

Introduced in R2016a

expand all

Behavior changed in R2016a