Constraint on controller stability and fast dynamics for control system tuning
Use the TuningGoal.StableController requirement object to specify a tuning requirement that constrains the dynamics of a tunable component in a control system model. Use this requirement for constraining ltiblock.tf or ltiblock.ss components for control system tuning with tuning commands such as systune or looptune. The TuningGoal.StableController requirement ensures that the tuned value of the tunable component is stable and free of fast dynamics.
After you create a requirement object, you can further configure the tuning requirement by setting Properties of the object.
Req = TuningGoal.StableController(blockID) creates a tuning requirement. The tuning requirement specifies that the tunable component identified by blockID is stable and free of fast dynamics.
By default, the TuningGoal.StableController requirement imposes a minimum decay rate of 10–6 rad/s for poles of the specified tunable component. The requirement also limits the maximum magnitude of such poles to 106 rad/s. To change these default values, set the MinDecay and MaxDecay properties, respectively. (See Properties.)
Tunable component to constrain, specified as a string.
The string blockID must correspond to the Name property of a Control Design Block in the control system you are tuning.
Name of tunable component to constrain, specified as a string. The blockID input argument sets the value of Block.
Minimum decay rate of poles of tunable component, specified as a positive scalar value in radians per second. When you tune the control system using this requirement, all poles of the tunable component are constrained to satisfy Re(s) < -MinDecay. This constraint helps ensure stable dynamics in the tunable component.
Change the value of this property to set a minimum decay rate other than the default 10–6. For example, suppose Req is a TuningGoal.StableContoller requirement. Change the minimum decay rate to 0.001:
Req.MinDecay = 0.001;
Maximum natural frequency of poles of tunable component, specified as a positive scalar value in radians per second. When you tune the control system using this requirement, all poles of the tunable component are constrained to satisfy |s| < MaxFrequency. This constraint prevents fast dynamics in the tunable component.
Change the value of this property to set maximum frequency other than the default 106. For example, suppose Req is a TuningGoal.StableContoller requirement. Change the maximum frequency to 1000:
Req.MaxFrequency = 1000;
Name of the requirement object, specified as a string.
For example, if Req is a requirement:
Req.Name = 'LoopReq';
Create a tuning requirement 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 requirement 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 = ltiblock.tf('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.
Req = TuningGoal.StableController('Compensator');
Set the minimum decay rate to 0.1 rad/s, and set the maximum frequency to 30 rad/s.
Req.MinDecay = 0.1; Req.MaxFrequency = 30;
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 viewSpec to validate the tuned control system against the requirement.
When you tune a control system using a TuningGoal object to specify a tuning requirement, the software converts the requirement into a normalized scalar value f(x). x is the vector of free (tunable) parameters in the control system. The software adjusts the parameter values to minimize f(x), or to drive f(x) below 1 if the tuning requirement is a hard constraint.
For the TuningGoal.StableController requirement, f(x) is given by:
E represents the locations of the poles of the specified tunable element.
β is a parameter that depends on MinDecay.
TuningGoal.StableController 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.