Block Diagram Algebra

control.feedback(sys1, sys2=1, sign=-1)

Feedback interconnection between two I/O systems.

Parameters:

sys1: scalar, StateSpace, or TransferFunction

The primary plant.

sys2: scalar, StateSpace, or TransferFunction

The feedback plant (often a feedback controller).

sign: scalar

The sign of feedback. sign = -1 indicates negative feedback, and sign = 1 indicates positive feedback. sign is an optional argument; it assumes a value of -1 if not specified.

Returns:

out: StateSpace or TransferFunction

Raises:

ValueError

if sys1 does not have as many inputs as sys2 has outputs, or if sys2 does not have as many inputs as sys1 has outputs

NotImplementedError

if an attempt is made to perform a feedback on a MIMO TransferFunction object

See also

series, parallel

Notes

This function is a wrapper for the feedback function in the StateSpace and TransferFunction classes. It calls TransferFunction.feedback if sys1 is a TransferFunction object, and StateSpace.feedback if sys1 is a StateSpace object. If sys1 is a scalar, then it is converted to sys2‘s type, and the corresponding feedback function is used. If sys1 and sys2 are both scalars, then TransferFunction.feedback is used.

control.negate(sys)

Return the negative of a system.

Parameters:sys: StateSpace or TransferFunction
Returns:out: StateSpace or TransferFunction

Notes

This function is a wrapper for the __neg__ function in the StateSpace and TransferFunction classes. The output type is the same as the input type.

If both systems have a defined timebase (dt = 0 for continuous time, dt > 0 for discrete time), then the timebase for both systems must match. If only one of the system has a timebase, the return timebase will be set to match it.

Examples

>>> sys2 = negate(sys1) # Same as sys2 = -sys1.
control.parallel(sys1, sys2)

Return the parallel connection sys1 + sys2.

Parameters:

sys1: scalar, StateSpace, or TransferFunction

sys2: scalar, StateSpace, or TransferFunction

Returns:

out: scalar, StateSpace, or TransferFunction

Raises:

ValueError

if sys1 and sys2 do not have the same numbers of inputs and outputs

See also

series, feedback

Notes

This function is a wrapper for the __add__ function in the StateSpace and TransferFunction classes. The output type is usually the type of sys1. If sys1 is a scalar, then the output type is the type of sys2.

If both systems have a defined timebase (dt = 0 for continuous time, dt > 0 for discrete time), then the timebase for both systems must match. If only one of the system has a timebase, the return timebase will be set to match it.

Examples

>>> sys3 = parallel(sys1, sys2) # Same as sys3 = sys1 + sys2.
control.series(sys1, sys2)

Return the series connection sys2 * sys1 for –> sys1 –> sys2 –>.

Parameters:

sys1: scalar, StateSpace, or TransferFunction

sys2: scalar, StateSpace, or TransferFunction

Returns:

out: scalar, StateSpace, or TransferFunction

Raises:

ValueError

if sys2.inputs does not equal sys1.outputs if sys1.dt is not compatible with sys2.dt

See also

parallel, feedback

Notes

This function is a wrapper for the __mul__ function in the StateSpace and TransferFunction classes. The output type is usually the type of sys2. If sys2 is a scalar, then the output type is the type of sys1.

If both systems have a defined timebase (dt = 0 for continuous time, dt > 0 for discrete time), then the timebase for both systems must match. If only one of the system has a timebase, the return timebase will be set to match it.

Examples

>>> sys3 = series(sys1, sys2) # Same as sys3 = sys2 * sys1.

Previous topic

Creating System Models

Next topic

Control System Analysis

This Page