# TuningGoal.Passivity

Passivity constraint for control system tuning

## Description

Use `TuningGoal.Passivity`

to enforce
passivity of the response between specified inputs and outputs, when using a control
system tuning command such as `systune`

. You can also use `TuningGoal.Passivity`

to ensure a particular excess or
shortage of passivity (see `getPassiveIndex`

).

A system is *passive* if all its I/O trajectories (*u*(*t*),*y*(*t*)) satisfy:

$${\int}_{0}^{T}y{\left(t\right)}^{T}u\left(t\right)dt}>0,$$

for all *T* > 0. Equivalently, a system is passive if its frequency response is
positive real, which means that for all *ω* > 0,

$$G\left(j\omega \right)+G{\left(j\omega \right)}^{H}>0$$

## Creation

### Syntax

### Description

creates a tuning goal for enforcing passivity of the response from the
specified inputs to the specified outputs. `Req`

= TuningGoal.Passivity(`inputname`

,`outputname`

)

creates a tuning goal for enforcing:`Req`

= TuningGoal.Passivity(`inputname`

,`outputname`

,`nu`

,`rho`

)

$${\int}_{0}^{T}y{\left(t\right)}^{T}u\left(t\right)dt}>\nu {\displaystyle {\int}_{0}^{T}u{\left(t\right)}^{T}u\left(t\right)dt}+\rho {\displaystyle {\int}_{0}^{T}y{\left(t\right)}^{T}y\left(t\right)dt},$$

for all *T* > 0. This tuning goal enforces an excess of passivity at the
inputs or outputs when `nu > 0`

or ```
rho >
0
```

, respectively. The tuning goal allows for a shortage of
input passivity when `nu < 0`

. See `getPassiveIndex`

for more
information about these indices.

### Input Arguments

## Properties

## Examples

## Tips

Use

`viewGoal`

to visualize this tuning goal. For enforcing passivity with`nu = 0`

and`rho = 0`

,`viewGoal`

plots the relative passivity indices as a function of frequency (see`passiveplot`

). These are the singular values of $$\left(I-G\left(j\omega \right)\right){\left(I-G\left(j\omega \right)\right)}^{-1}$$. The transfer function*G*from`inputname`

to`outputname`

(evaluated with loops open as specified in`Openings`

) is passive when the largest singular value is less than 1 at all frequencies.For nonzero

`nu`

or`rho`

,`viewGoal`

plots the relative index as described in Algorithms.This tuning goal imposes an implicit minimum-phase constraint on the transfer function

*G*+*I*. The transmission zeros of*G*+*I*are the*stabilized dynamics*for this tuning goal. The`MinDecay`

and`MaxRadius`

options of`systuneOptions`

control the bounds on these implicitly constrained dynamics. If the optimization fails to meet the default bounds, or if the default bounds conflict with other requirements, use`systuneOptions`

to change these defaults.

## Algorithms

When you tune a control system using a `TuningGoal`

, the software
converts the tuning goal into a normalized scalar value
*f*(*x*), where *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 the `TuningGoal.Passivity`

goal, for a closed-loop
transfer function `G(s,x)`

from `inputname`

to
`outputname`

, *f*(*x*) is given
by:

$$f\left(x\right)=\frac{R}{1+R/{R}_{\mathrm{max}}},\text{\hspace{1em}}{R}_{\mathrm{max}}={10}^{6}.$$

*R* is the relative sector index (see `getSectorIndex`

) of `[G(s,x);I]`

, for the sector
represented by:

$$Q=\left(\begin{array}{cc}2\rho & -I\\ -I& 2\nu \end{array}\right),$$

using the values of the `OPX`

and `IPX`

properties
for *ρ* and *ν*, respectively.

## Version History

**Introduced in R2016a**

## See Also

`looptune`

| `systune`

| `systune (for slTuner)`

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

(Simulink Control Design) | `viewGoal`

| `evalGoal`

| `TuningGoal.WeightedPassivity`

| `slTuner`

(Simulink Control Design) | `getPassiveIndex`

| `passiveplot`