Documentation Center

  • Trial Software
  • Product Updates

TuningGoal.Poles class

Package: TuningGoal

Constraint on control system dynamics

Description

Use the TuningGoal.Poles object to specify a tuning requirement for constraining the closed-loop dynamics of a control system, specific feedback loops within the control system, or specific open-loop configurations. You can use this requirement for control system tuning with tuning commands, such as systune or looptune. A TuningGoal.Poles requirement can ensure a minimum decay rate or minimum damping of the poles of the control system or loop. The requirement can also eliminate fast dynamics in the tuned system.

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

Construction

Req = TuningGoal.Poles() creates a default template for constraining the closed-loop pole locations. Modify the MinDecay, MinDamping, and MaxFrequency properties to shape the region where the closed-loop poles should lie. By default, the TuningGoal.Poles requirement imposes an implicit stability constraint on the specified loop. However, the default requirement does not impose a finite minimum decay rate or a finite maximum frequency for the poles. To change this behavior, set the MinDecay and MaxFrequency properties, respectively. (See e Properties.)

Req = TuningGoal.Poles(location) constrains the poles of the sensitivity function measured at a specified location in the control system. (See TuningGoal.Sensitivity for details.) Use this syntax to narrow the scope of the requirement to a particular feedback loop.

If you want to constrain the poles of the system with one or more feedback loops opened, set the Openings property. To limit the enforcement of this requirement to poles having natural frequency within a specified frequency range, set the Focus property.(See Properties.)

Input Arguments

location

Location identifying the feedback loop whose sensitivity function is constrained, specified as a string or cell array of strings that identify one or more loop-opening locations in the control system to tune. What loop-opening locations are available depends on what kind of system you are tuning:

  • If you are tuning a control system specified as a genss model in MATLAB®, a loop-opening location can be any feedback channel in a loopswitch block in the model. In this case, location contains the names of one or more feedback loops in the Location property of loopswitch blocks in the control system model. For example, the following code creates a PI loop with a loop switch marking the plant input 'u'.

    S = loopswitch('u');
    G = tf(1,[1 2]);
    C = ltiblock.pid('C','pi');
    T = feedback(G*S*C,1);
    

    You can use the string 'u' to refer to the sensitivity at the plant input.

  • If you are using looptune to tune a system that includes a plant model and controller model, a loop-opening location can be any control or measurement signal. In this case, location contains the names of one or more measurement or control signals.

    • A control signal is a signal that is an output of the controller model and an input of the plant model.

    • A measurement signal is a signal that is an output of the plant model and an input of the controller model.

  • If you are tuning a Simulink® model of a control system using an slTuner interface, a loop-opening location can be any analysis point added to the interface using addPoint. In this case, location contains the names of one or more of these analysis points.

If location is a cell array of loop-opening locations, then the sensitivity requirement applies to the MIMO loop.

Properties

Location

Location at which the sensitivity to disturbances is constrained, specified as a string or cell array of strings that identify one or more loop-opening locations in the control system to tune.

The value of the Location property is set by the location input argument when you create the TuningGoal.Poles requirement.

MinDecay

Minimum decay rate of closed-loop poles of tuned system, specified as a positive scalar value. When you tune the control system using this requirement, closed-loop system poles that depend on the tunable parameters are constrained to satisfy Re(s) < -MinDecay. This constraint helps ensure stable dynamics in the tuned system.

By default, MinDecay = 0. In that case, the requirement imposes an implicit constraint on stability of the system poles.

Change the value of this property to set a finite minimum decay rate. For example, suppose Req is a TuningGoal.Poles requirement. Change the minimum decay rate to 0.001:

Req.MinDecay = 0.001;

This constraint only applies to poles with natural frequencies in the range specified by the Focus property.

Default: 0

MinDamping

Minimum damping of closed-loop poles of tuned system, specified as a scalar value between 0 and 1. When you tune the control system using this requirement, closed-loop system poles that depend on the tunable parameters are constrained to satisfy Re(s) < -MinDamping*|s|.

Change the value of this property to set a finite minimum damping. For example, suppose Req is a TuningGoal.Poles requirement. Change the minimum damping to 0.5:

Req.MinDamping = 0.5;

This constraint only applies to poles with natural frequencies in the range specified by the Focus property.

Default: 0

MaxFrequency

Maximum natural frequency of poles of tuned system, specified as a positive scalar value in the units of the control system model you are tuning (rad/TimeUnit). When you tune the control system using this requirement, closed-loop system poles that depend on the tunable parameters are constrained to satisfy |s| < MaxFrequency. This constraint prevents fast dynamics in the control system.

Change the value of this property to a finite maximum frequency. For example, suppose Req is a TuningGoal.Poles requirement. Change the maximum frequency to 1000:

Req.MaxFrequency = 1000;

This constraint only applies to poles with natural frequencies in the range specified by the Focus property.

Default: Inf

Focus

Frequency band in which tuning requirement is enforced, specified as a row vector of the form [min,max].

Set the Focus property to limit enforcement of the requirement to a particular frequency band. Express this value in the frequency units of the control system model you are tuning (rad/TimeUnit). For example, suppose Req is a requirement that you want to apply only between 1 and 100 rad/s. To restrict the requirement to this band, use the following command:

Req.Focus = [1,100];

Default: [0,Inf] for continuous time; [0,pi/Ts] for discrete time, where Ts is the model sampling time.

Models

Models to which the tuning requirement applies, specified as a vector of indices.

Use the Models property when tuning an array of control system models with systune, to enforce a tuning requirement for a subset of models in the array. For example, suppose you want to apply the tuning requirement, Req, to the second, third, and fourth models in a model array passed to systune. To restrict enforcement of the requirement, use the following command:

Req.Models = 2:4;

When Models = NaN, the tuning requirement applies to all models.

Default: NaN

Openings

Feedback loops to open when evaluating the requirement, specified as a cell array of strings that identify loop-opening locations. The available loop-opening locations depend on what kind of system you are tuning:

  • If you are tuning a control system specified as a genss model in MATLAB, a loop-opening location can be any feedback channel in a loopswitch block in the model. In this case, set Openings to a cell array containing the names of one or more loop-opening locations listed in the Location property of a loopswitch block in the control system model.

  • If you are using looptune to tune a system that includes a plant model and controller model, a loop-opening location can be any control or measurement signal. In this case, set Openings to a cell array containing the names of one or more measurement or control signals.

    • A control signal is a signal that is an output of the controller model and an input of the plant model.

    • A measurement signal is a signal that is an output of the plant model and an input of the controller model.

  • If you are tuning a Simulink model of a control system using an slTuner interface, a loop-opening location can be any analysis point added to the interface using addPoint. In this case, set Openings to a cell array containing the names of one or more of these analysis points.

All feedback loops are closed by default, except where there is a permanent loop-opening defined in an slTuner interface.

Default: {}

Name

Name of the requirement object, specified as a string.

For example, if Req is a requirement:

Req.Name = 'LoopReq';

Default: []

Examples

expand all

Constrain Closed-Loop Dynamics of Specified Loop of System to Tune

Create a requirement that constrains the inner loop of the following control system to be stable and free of fast dynamics. Specify that the constraint is evaluated with the outer loop open.

Create a model of the system. To do so, specify and connect the numeric plant models, G1 and G2, and the tunable controllers C1 and C2. Also, create and connect the loopswitch blocks, X1 and X2, which mark potential loop-opening sites.

G1 = tf(10,[1 10]);
G2 = tf([1 2],[1 0.2 10]);
C1 = ltiblock.pid('C','pi');
C2 = ltiblock.gain('G',1);
X1 = loopswitch('X1');
X2 = loopswitch('X2');
T = feedback(G1*feedback(G2*C2,X2)*C1,X1);

Create a tuning requirement that constrains the dynamics of the closed-loop poles.

Req = TuningGoal.Poles();

Specify that the constraint on the tuned system poles is applied with the outer loop open. Further restrict the poles of the inner loop to the region Re(s) < –0.1, |s| < 30.

Req.Openings = 'X1';
Req.MinDecay = 0.1;
Req.MaxFrequency = 30;

When you tune T using this requirement, the constraint applies only to the poles of the inner loop, evaluated with the outer loop open.

After you tune T, you can use viewSpec to validate the tuned control system against the requirement.

Constrain Dynamics of Specified Feedback Loop

Create a requirement that constrains the inner loop of the system of the previous example to be stable and free of fast dynamics. Specify that the constraint is evaluated with the outer loop open.

Create a tuning requirement that constrains the dynamics of the inner feedback loop, the loop identified by X2.

Req = TuningGoal.Poles('X2');

Specify that the constraint on the tuned system poles is applied with the outer loop open. Further restrict the poles of the inner loop to the region Re(s) < –0.1, |s| < 30.

Req.Openings = 'X1';
Req.MinDecay = 0.1;
Req.MaxFrequency = 30;

When you tune T using this requirement, the constraint applies only to the poles of the inner loop, evaluated with the outer loop open.

After you tune T, you can use viewSpec to validate the tuned control system against the requirement.

Tips

  • TuningGoal.Poles restricts the closed-loop dynamics of the tuned control system. To constrain the dynamics or ensure the stability of a single tunable component, use TuningGoal.StableController.

  • The requirement only constrains dynamics that are in a feedback loop with the tuned elements of the control system. TuningGoal.Poles does not constrain dynamics that are independent of the tuned elements (such as weighting functions or open-loop dynamics). For example, consider the following control system, in which C is a tunable component.

    Tuning this control system with a TuningGoal.Poles requirement constrains the dynamics of the feedback loop containing G and C. However, the requirement does not constrain the dynamics of F or the weighting function, W.

See Also

| | | | | | | |

How To

Was this topic helpful?