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

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: 
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(IG\left(j\omega \right)\right){\left(IG\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 minimumphase 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.
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.