## Reference Tracking Goal

### Purpose

Make specified outputs track reference inputs with prescribed performance and fidelity, when using Control System Tuner. Limit cross-coupling in MIMO systems.

### Description

Reference Tracking Goal constrains tracking between the specified
signal locations. The constraint is satisfied when the maximum relative
tracking error falls below the value you specify at all frequencies.
The *relative error* is the gain from reference
input to tracking error as a function of frequency.

You can specify the maximum error profile directly as a function of frequency. Alternatively, you can specify the tracking goal a target DC error, peak error, and response time. These parameters are converted to the following transfer function that describes the maximum frequency-domain tracking error:

$$\text{MaxError}=\frac{\left(\text{PeakError}\right)s+{\omega}_{c}\left(\text{DCError}\right)}{s+{\omega}_{c}}.$$

Here, *ω _{c}* is
2/(response time). The following plot illustrates these relationships
for an example set of values.

When you create a tuning goal in Control System Tuner, a tuning-goal plot is generated. The dotted line shows the error profile you specify. The shaded area on the plot represents the region in the frequency domain where the tuning goal is not satisfied.

#### Creation

In the **Tuning** tab of Control System Tuner, select **New Goal** > **Reference Tracking** to create a Reference Tracking Goal.

#### Command-Line Equivalent

When tuning control systems at the command line, use `TuningGoal.Tracking`

to
specify a tracking goal.

### Response Selection

Use this section of the dialog box to specify input, output, and loop-opening locations for evaluating the tuning goal.

**Specify reference inputs**Select one or more signal locations in your model as reference signals. To constrain a SISO response, select a single-valued reference signal. For example, to constrain the response from a location named

`'u'`

to a location named`'y'`

, click**Add signal to list**and select`'u'`

. To constrain a MIMO response, select multiple signals or a vector-valued signal.**Specify reference-tracking outputs**Select one or more signal locations in your model as reference-tracking outputs. To constrain a SISO response, select a single-valued output signal. For example, to constrain the step response from a location named

`'u'`

to a location named`'y'`

, click**Add signal to list**and select`'y'`

. To constrain a MIMO response, select multiple signals or a vector-valued signal. For MIMO systems, the number of outputs must equal the number of inputs.**Evaluate tracking performance with the following loops open**Select one or more signal locations in your model at which to open a feedback loop for the purpose of evaluating this tuning goal. The tuning goal is evaluated against the open-loop configuration created by opening feedback loops at the locations you identify. For example, to evaluate the tuning goal with an opening at a location named

`'x'`

, click**Add signal to list**and select`'x'`

.

**Tip**

To highlight any selected signal in the Simulink^{®} model, click . To remove a signal from the input or output list, click . When you have selected multiple signals, you can reorder
them using and . For more information on how to specify signal locations
for a tuning goal, see
Specify Goals for Interactive Tuning.

### Tracking Performance

Use this section of the dialog box to specify frequency-domain constraints on the tracking error.

#### Response time, DC error, and peak error

Select this option to specify the tracking error in terms of response time, percent steady-state error, and peak error across all frequencies. These parameters are converted to the following transfer function that describes the maximum frequency-domain tracking error:

$$\text{MaxError}=\frac{\left(\text{PeakError}\right)s+{\omega}_{c}\left(\text{DCError}\right)}{s+{\omega}_{c}}.$$

When you select this option, enter the following parameters in the text boxes:

**Response Time**— Enter the target response time. The tracking bandwidth is given by*ω*= 2/Response Time. Express the target response time in the time units of your model._{c}**Steady-state error (%)**— Enter the maximum steady-state fractional tracking error, expressed in percent. For MIMO tracking goals, this steady-state error applies to all I/O pairs. The steady-state error is the DC error expressed as a percentage,`DCError`

/100.**Peak error across frequency (%)**— Enter the maximum fractional tracking error across all frequencies, expressed in percent.

#### Maximum error as a function of frequency

Select this option to specify the maximum tracking error profile as a function of frequency.

Enter a SISO numeric LTI model in the text box. For example, you can specify a smooth transfer
function (`tf`

, `zpk`

, or `ss`

model). Alternatively, you can sketch a
piecewise error profile using an `frd`

model. When you do so, the software automatically maps the error profile
to a smooth transfer function that approximates the desired error profile. For example, to
specify a maximum error of 0.01 below about 1 rad/s, gradually rising to a peak error of 1
at 100 rad/s, enter `frd([0.01 0.01 1],[0 1 100])`

.

For MIMO tracking goals, this error profile applies to all I/O pairs.

If you are tuning in discrete time, you can specify the maximum error profile as a discrete-time model with the same sampling time as you use for tuning. If you specify the attenuation profile in continuous time, the tuning software discretizes it. Specifying the error profile in discrete time gives you more control over the profile near the Nyquist frequency.

### Options

Use this section of the dialog box to specify additional characteristics of the tracking goal.

**Enforce goal in frequency range**Limit the enforcement of the tuning goal to a particular frequency band. Specify the frequency band as a row vector of the form

`[min,max]`

, expressed in frequency units of your model. For example, to create a tuning goal that applies only between 1 and 100 rad/s, enter`[1,100]`

. By default, the tuning goal applies at all frequencies for continuous time, and up to the Nyquist frequency for discrete time.**Adjust for step amplitude**For a MIMO tuning goal, when the choice of units results in a mix of small and large signals in different channels of the response, this option allows you to specify the relative amplitude of each entry in the vector-valued step input. This information is used to scale the off-diagonal terms in the transfer function from reference to tracking error. This scaling ensures that cross-couplings are measured relative to the amplitude of each reference signal.

For example, suppose that tuning goal is that outputs

`'y1' and 'y2'`

track reference signals`'r1'and 'r2'`

. Suppose further that you require the outputs to track the references with less than 10% cross-coupling. If`r1`

and`r2`

have comparable amplitudes, then it is sufficient to keep the gains from`r1`

to`y2`

and`r2`

and`y1`

below 0.1. However, if`r1`

is 100 times larger than`r2`

, the gain from`r1`

to`y2`

must be less than 0.001 to ensure that`r1`

changes`y2`

by less than 10% of the`r2`

target. To ensure this result, set**Adjust for step amplitude**to`Yes`

. Then, enter`[100,1]`

in the**Amplitudes of step commands**text box. Doing so tells Control System Tuner to take into account that the first reference signal is 100 times greater than the second reference signal.The default value,

`No`

, means no scaling is applied.**Apply goal to**Use this option when tuning multiple models at once, such as an array of models obtained by linearizing a Simulink model at different operating points or block-parameter values. By default, active tuning goals are enforced for all models. To enforce a tuning requirement for a subset of models in an array, select

**Only Models**. Then, enter the array indices of the models for which the goal is enforced. For example, suppose you want to apply the tuning goal to the second, third, and fourth models in a model array. To restrict enforcement of the requirement, enter`2:4`

in the**Only Models**text box.For more information about tuning for multiple models, see Robust Tuning Approaches (Robust Control Toolbox).

### Algorithms

#### Evaluating Tuning Goals

When you tune a control system, the software converts each tuning
goal into a normalized scalar value *f*(*x*).
Here, *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 **Tracking Goal**, *f*(*x*)
is given by:

$$f\left(x\right)={\Vert {W}_{F}\left(s\right)\left(T\left(s,x\right)-I\right)\Vert}_{\infty},$$

or its discrete-time equivalent. Here, *T*(*s*,*x*)
is the closed-loop transfer function between the specified inputs
and outputs, and $${\Vert \text{\hspace{0.17em}}\cdot \text{\hspace{0.17em}}\Vert}_{\infty}$$ denotes
the *H*_{∞} norm (see `getPeakGain`

). *W _{F}* is
a frequency weighting function derived from the error profile you
specify in the tuning goal. The gain of

*W*roughly matches the inverse of the error profile for gain values between –20 dB and 60 dB. For numerical reasons, the weighting function levels off outside this range, unless you specify a reference model that changes slope outside this range. This adjustment is called

_{F}*regularization*. Because poles of

*W*close to

_{F}*s*= 0 or

*s*=

`Inf`

might
lead to poor numeric conditioning of the `systune`

optimization
problem, it is not recommended to specify error profiles with very
low-frequency or very high-frequency dynamics. For more information
about regularization and its effects, see Visualize Tuning Goals.#### Implicit Constraints

This
tuning goal also imposes an implicit stability constraint on the closed-loop
transfer function between the specified inputs to outputs, evaluated
with loops opened at the specified loop-opening locations. The dynamics
affected by this implicit constraint are the *stabilized
dynamics* for this tuning goal. The **Minimum decay
rate** and **Maximum natural frequency** tuning
options control the lower and upper bounds on these implicitly constrained
dynamics. If the optimization fails to meet the default bounds, or
if the default bounds conflict with other requirements, on the **Tuning** tab,
use **Tuning Options** to change the defaults.