Main Content

TuningGoal.ControllerPoles

Constraint on controller dynamics for control system tuning

Description

Use TuningGoal.ControllerPoles to constrain the dynamics of a tunable component in a control system model. Use this tuning goal for constraining the dynamics of tuned blocks identified in a slTuner interface to a Simulink® model. If you are tuning a genss model of a control system, use it to constrain tunable elements such as tunableTF or tunableSS. The TuningGoal.ControllerPoles requirement lets you control the minimum decay rate, minimum damping, and maximum natural frequency of the poles of the tunable element, ensuring that the controller is free of fast or resonant dynamics. The tuning goal can also ensure stability of the tuned value of the tunable element.

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

Creation

Description

Req = TuningGoal.ControllerPoles(blockID,mindecay,mindamping,maxfreq) creates a tuning goal that constrains the dynamics of a tunable component of a control system. The minimum decay rate, minimum damping constant, and maximum natural frequency define a region of the complex plane in which poles of the component must lie. A nonnegative minimum decay ensures stability of the tuned poles. The tuning goal applies to all poles in the block except fixed integrators, such as the I term of a PID controller.

example

Input Arguments

expand all

Tunable component to constrain, specified as a character vector. blockID designates one of the tuned blocks in the control system you are tuning.

  • For tuning a Simulink model of a control system, blockID is a tuned block in the slTuner interface to the model. For example, suppose the slTuner interface has a tuned block called Controller. To constrain this block, use 'Controller' for the blockID input argument.

  • For tuning a genss model of a control system, blockid is one of the control design blocks of that model. For example, suppose the genss interface has a tunable block with name C1. To constrain this block, use 'C1' for the blockID input argument.

Minimum decay rate of poles of tunable component, specified as a scalar value in the frequency units of the control system model you are tuning.

Specify mindecay ≥ 0 to ensure that the block is stable. If you specify a negative value, the tuned block can include unstable poles.

When you tune the control system using this tuning goal, all poles of the tunable component are constrained to satisfy:

  • Re(s) < -mindecay, for continuous-time systems.

  • log(|z|) < -mindecay*Ts, for discrete-time systems with sample time Ts.

Desired minimum damping ratio of poles of the tunable block, specified as a scalar between 0 and 1.

Poles of the block that depend on the tunable parameters are constrained to satisfy Re(s) < -mindamping*|s|. In discrete time, the damping ratio is computed using s=log(z)/Ts.

Desired maximum natural frequency of poles of the tunable block, specified as a scalar value in the units of the control system model you are tuning.

Poles of the block are constrained to satisfy |s| < maxfreq for continuous-time blocks, or |log(z)| < maxfreq*Ts for discrete-time blocks with sample time Ts. This constraint prevents fast dynamics in the tunable block.

Properties

expand all

Name of tunable component to constrain, specified as a character vector. The blockID input argument sets the value of Block.

Minimum decay rate of poles of tunable component, specified as a scalar value in the frequency units of the control system you are tuning. The initial value of this property is set by the mindecay input argument.

MinDecay ≥ 0 to ensure that the block is stable. If you specify a negative value, the tuned block can include unstable poles.

When you tune the control system using this tuning goal, all poles of the tunable component are constrained to satisfy Re(s) < -MinDecay for continuous-time systems, or log(|z|) < -MinDecay*Ts for discrete-time systems with sample time Ts.

You can use dot notation to change the value of this property after you create the tuning goal. For example, suppose Req is a TuningGoal.ControllerPoles tuning goal. Change the minimum decay rate to 0.001:

Req.MinDecay = 0.001;

Desired minimum damping ratio of poles of the tunable block, specified as a value between 0 and 1. The initial value of this property is set by the mindamping input argument.

Poles of the block that depend on the tunable parameters are constrained to satisfy Re(s) < -MinDamping*|s|. In discrete time, the damping ratio is computed using s=log(z)/Ts.

Desired maximum natural frequency of poles of the tunable block, specified as a scalar value in the frequency units of the control system model you are tuning. The initial value of this property is set by the maxfreq input argument.

Poles of the block are constrained to satisfy |s| < maxfreq for continuous-time blocks, or |log(z)| < maxfreq*Ts for discrete-time blocks with sample time Ts. This constraint prevents fast dynamics in the tunable block.

You can use dot notation to change the value of this property after you create the tuning goal. For example, suppose Req is a TuningGoal.ControllerPoles tuning goal. Change the maximum frequency to 1000:

Req.MaxFrequency = 1000;

Name of the tuning goal, specified as a character vector.

For example, if Req is a tuning goal:

Req.Name = 'LoopReq';

Examples

collapse all

Create a tuning goal that constrains the dynamics of a tunable transfer function block in a tuned control system.

For this example, suppose that you are tuning a control system that includes a compensator block parametrized as a second-order transfer function. Create a tuning goal that restricts the poles of that transfer function to the region Re(s)<-0.1, |s|<30.

Create a tunable component that represents the compensator.

C = tunableTF('Compensator',2,2);

This command creates a Control Design Block named 'Compensator' with two poles and two zeroes. You can construct a tunable control system model, T, by interconnecting this Control Design Block with other tunable and numeric LTI models. If you tune T using systune, the values of these poles and zeroes are unconstrained by default.

Create a tuning requirement to constrain the dynamics of the compensator block. Set the minimum decay rate to 0.1 rad/s, and set the maximum frequency to 30 rad/s.

Req = TuningGoal.ControllerPoles('Compensator',0.1,0,30);

The mindamping input argument is 0, which imposes no constraint on the damping constant of the poles of the block.

If you tune T using systune and the tuning requirement Req, the poles of the compensator block are constrained satisfy these values. After you tune T, you can use viewGoal to validate the tuned control system against the tuning goal.

Tips

TuningGoal.ControllerPoles restricts the dynamics of a single tunable component of the control system. To ensure the stability or restrict the overall dynamics of the tuned control system, use TuningGoal.Poles.

Algorithms

When you use a TuningGoal object to specify a tuning goal, 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.ControllerPoles, f(x) reflects the relative satisfaction or violation of the goal. For example, if you attempt to constrain the pole of a tuned block to a minimum damping of ζ = 0.5, then:

  • f(x) = 1 means the damping of the pole is ζ = 0.5 exactly.

  • f(x) = 1.1 means the damping is ζ = 0.5/1.1 = 0.45, roughly 10% less than the target.

  • f(x) = 0.9 means the damping is ζ = 0.5/0.9 = 0.55, roughly 10% better than the target.

Version History

Introduced in R2016a

expand all