TuningGoal.Passivity class
Package: TuningGoal
Passivity constraint for control system tuning
Description
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$$
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
).
Construction
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

Input signals for the tuning goal, specified as a character vector or, for multipleinput tuning goals, a cell array of character vectors.
For more information about analysis points in control system models, see Mark Signals of Interest for Control System Analysis and Design. 

Output signals for the tuning goal, specified as a character vector or, for multipleoutput tuning goals, a cell array of character vectors.
For more information about analysis points in control system models, see Mark Signals of Interest for Control System Analysis and Design. 

Target passivity at the inputs listed in $${\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},$$ for all T > 0.
Equivalently, $$G\left(j\omega \right)+G{\left(j\omega \right)}^{H}>2\nu I$$ When you set a target
Default: 0 

Target passivity at the outputs listed in $${\int}_{0}^{T}y{\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. When you set a target
Default: 0 
Properties

Target passivity at the inputs, stored as a scalar value. This
value specifies the required amount of passivity at the inputs listed
in Default: 0 

Target passivity at the outputs, stored as a scalar value. This
value specifies the required amount of passivity at the outputs listed
in Default: 0 

Frequency band in which tuning goal is enforced, specified as
a row vector of the form Set the Req.Focus = [1,100]; Default: 

Input signal names, specified as a cell array of character vectors.
The input signal names specify the input locations for determining
passivity, initially populated by the 

Output signal names, specified as a cell array of character
vectors. The output signal names specify the output locations for
determining passivity, initially populated by the 

Models to which the tuning goal applies, specified as a vector of indices. Use the Req.Models = 2:4; When Default: 

Feedback loops to open when evaluating the tuning goal, specified as a cell array of character vectors that identify loopopening locations. The tuning goal is evaluated against the openloop configuration created by opening feedback loops at the locations you identify. If you are using the tuning goal to tune a Simulink model
of a control system, then If you are using the tuning goal to tune a generalized statespace
( For example, if Default: 

Name of the tuning goal, specified as a character vector. For example, if Req.Name = 'LoopReq'; Default: 
Examples
Tips
Use
viewGoal
to visualize this tuning goal. For enforcing passivity withnu = 0
andrho = 0
,viewGoal
plots the relative passivity indices as a function of frequency (seepassiveplot
). These are the singular values of $$\left(IG\left(j\omega \right)\right){\left(IG\left(j\omega \right)\right)}^{1}$$. The transfer function G frominputname
tooutputname
(evaluated with loops open as specified inOpenings
) is passive when the largest singular value is less than 1 at all frequencies.For nonzero
nu
orrho
,viewGoal
plots the relative index as described in Algorithms.This tuning goal imposes an implicit minimumphase constraint on the transfer function G + I. The transmission zeros of G + I are the stabilized dynamics for this tuning goal. The
MinDecay
andMaxRadius
options ofsystuneOptions
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, usesystuneOptions
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 closedloop
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.
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