Package: TuningGoal
Target loop shape for control system tuning
Use TuningGoal.LoopShape
to specify a target gain
profile (gain as a function of frequency) of an openloop
response. TuningGoal.LoopShape
constrains the openloop,
pointtopoint response (L) at a specified location
in your control system. Use this tuning goal for control system tuning
with tuning commands, such as systune
or looptune
.
When you tune a control system, the target openloop gain profile is converted into constraints on the inverse sensitivity function inv(S) = (I + L) and the complementary sensitivity function T = 1–S. These constraints are illustrated for a representative tuned system in the following figure.
Where L is much greater than 1, a minimum
gain constraint on inv(S) (green shaded region)
is equivalent to a minimum gain constraint on L.
Similarly, where L is much smaller than 1, a maximum
gain constraint on T (red shaded region) is equivalent
to a maximum gain constraint on L. The gap between
these two constraints is twice the CrossTol
parameter,
which specifies the frequency band where the loop gain can cross 0
dB.
For multiinput, multioutput (MIMO) control systems, values
in the gain profile greater than 1 are interpreted as minimum performance
requirements. Such values are lower bounds on the smallest singular
value of the openloop response. Gain profile values less than one
are interpreted as minimum rolloff requirements, which are upper
bounds on the largest singular value of the openloop response. For
more information about singular values, see sigma
.
Use TuningGoal.LoopShape
when the loop shape
near crossover is simple or well understood (such as integral action).
To specify only high gain or low gain constraints in certain frequency
bands, use TuningGoal.MinLoopGain
and TuningGoal.MaxLoopGain
. When you do so,
the software determines the best loop shape near crossover.
creates
a tuning goal for shaping the openloop response measured at the specified
location. The magnitude of the singleinput, singleoutput (SISO)
transfer function Req
=
TuningGoal.LoopShape(location
,loopgain
)loopgain
specifies the target
openloop gain profile. You can specify the target gain profile (maximum
gain across the I/O pair) as a smooth transfer function or sketch
a piecewise error profile using an frd
model.
specifies
a tolerance on the location of the crossover frequency. Req
= TuningGoal.LoopShape(location
,loopgain
,crosstol
)crosstol
expresses
the tolerance in decades. For example, crosstol
=
0.5 allows gain crossovers within half a decade on either side of
the target crossover frequency specified by loopgain
.
When you omit crosstol
, the tuning goal uses
a default value of 0.1 decades. You can increase crosstol
when
tuning MIMO control systems. Doing so allows more widely varying crossover
frequencies for different loops in the system.
Req = TuningGoal.LoopShape(
specifies
just the target gain crossover frequency. This syntax is equivalent
to specifying a pure integrator loop shape, location
,wc
)loopgain = wc/s
.
Req = TuningGoal.LoopShape(
specifies
a range for the target gain crossover frequency. The range is a vector
of the form location
,wcrange
)wcrange
= [wc1,wc2]
.
This syntax is equivalent to using the geometric mean sqrt(wc1*wc2)
as wc
and
setting crosstol
to the halfwidth of wcrange
in
decades. Using a range instead of a single wc
value
increases the ability of the tuning algorithm to enforce the target
loop shape for all loops in a MIMO control system.

Location where the openloop response shape to be constrained is measured, specified as a character vector or cell array of character vectors that identify one or more locations in the control system to tune. What locations are available depends on what kind of system you are tuning:
The loop shape requirement applies to the pointtopoint openloop transfer function at the specified location. That transfer function is the openloop response obtained by injecting signals at the location and measuring the return signals at the same point. If 

Target openloop gain profile as a function of frequency. You can specify For multiinput, multioutput (MIMO) control systems, values
in the gain profile greater than 1 are interpreted as minimum performance
requirements. These values are lower bounds on the smallest singular
value of If you are tuning in discrete time (that is, using a 

Tolerance in the location of crossover frequency, in decades.
specified as a scalar value. For example, Default: 0.1 

Target crossover frequency, specified as a positive scalar value.
Express 

Range for target crossover frequency, specified as a vector
of the form 

Target loop shape as a function of
frequency, specified as a SISO The software automatically maps the input argument 

Tolerance on gain crossover frequency, in decades. The initial value of Default: 

Frequency band in which tuning goal is enforced, specified as
a row vector of the form Set the Req.Focus = [1,100]; Default: 

Stability requirement on closedloop dynamics, specified as
1 ( When Default: 1 ( 

Toggle for automatically scaling loop signals, specified as In multiloop or MIMO control systems, the feedback channels
are automatically rescaled to equalize the offdiagonal terms in the
openloop transfer function (loop interaction terms). Set Default: 

Location at which the openloop response shape to be constrained
is measured, specified as a cell array of character vectors that identify
one or more analysis points in the control system to tune. For example,
if The initial value of the 

Models to which the tuning goal applies, specified as a vector of indices. Use the Req.Models = 2:4; When Default: 

Feedback loops to open when evaluating the tuning goal, specified as a cell array of character vectors that identify loopopening locations. The tuning goal is evaluated against the openloop configuration created by opening feedback loops at the locations you identify. If you are using the tuning goal to tune a Simulink model
of a control system, then If you are using the tuning goal to tune a generalized statespace
( For example, if Default: 

Name of the tuning goal, specified as a character vector. For example, if Req.Name = 'LoopReq'; Default: 
This tuning goal imposes an implicit stability constraint on
the closedloop sensitivity function measured at Location
,
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.
When you tune a control system using a TuningGoal
,
the software converts the tuning goal into a normalized scalar value f(x),
where 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.LoopShape
, f(x)
is given by:
$$f\left(x\right)={\Vert \begin{array}{c}{W}_{S}S\\ {W}_{T}T\end{array}\Vert}_{\infty}.$$
Here, S = D^{–1}[I – L(s,x)]^{–1}D is
the scaled sensitivity function at the specified location, where L(s,x)
is the openloop response being shaped. D is an
automaticallycomputed loop scaling factor. (If the LoopScaling
property
is set to 'off'
, then D = I.) T = S – I is
the complementary sensitivity function.
W_{S} and W_{T} are
frequency weighting functions derived from the specified loop shape.
The gains of these functions roughly match LoopGain
and 1/LoopGain
,
for values ranging from –20 dB to 60 dB. For numerical reasons,
the weighting functions level off outside this range, unless the specified
loop gain profile changes slope for gains above 60 dB or below –60
dB. Because poles of W_{S} or W_{T} close
to s = 0 or s = Inf
might
lead to poor numeric conditioning of the systune
optimization
problem, it is not recommended to specify loop shapes with very lowfrequency
or very highfrequency dynamics.
To obtain W_{S} and W_{T}, use:
[WS,WT] = getWeights(Req,Ts)
where Req
is the tuning goal, and Ts
is
the sample time at which you are tuning (Ts = 0
for
continuous time). For more information about the effects of the weighting
functions on numeric stability, see Visualize Tuning Goals.
TuningGoal.Gain
 TuningGoal.MaxLoopGain
 TuningGoal.MinLoopGain
 TuningGoal.Tracking
 frd
 looptune
 looptune
(for slTuner)
 slTuner
 systune
 systune (for slTuner)
 viewGoal