# 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

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 `Req`

= TuningGoal.ControllerPoles(`blockID`

,`mindecay`

,`mindamping`

,`maxfreq`

)*I* term of a
PID controller.

### Input Arguments

## Properties

## Examples

## 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**

## See Also

`looptune`

| `systune`

| `systune (for slTuner)`

(Simulink Control Design) | `looptune (for slTuner)`

(Simulink Control Design) | `viewGoal`

| `evalGoal`

| `tunableTF`

| `tunableSS`

| `TuningGoal.Poles`