Package Modelica.​Blocks.​Nonlinear
Library of discontinuous or non-differentiable algebraic control blocks

Information

This package contains discontinuous and non-differentiable, algebraic input/output blocks.

Extends from Modelica.​Icons.​Package (Icon for standard packages).

Package Contents

NameDescription
DeadZoneProvide a region of zero output
FixedDelayDelay block with fixed DelayTime
LimiterLimit the range of a signal
PadeDelayPade approximation of delay block with fixed delayTime (use balance=true; this is not the default to be backwards compatible)
SlewRateLimiterLimits the slew rate of a signal
VariableDelayDelay block with variable DelayTime
VariableLimiterLimit the range of a signal with variable limits

Block Modelica.​Blocks.​Nonlinear.​Limiter
Limit the range of a signal

Information

The Limiter block passes its input signal as output signal as long as the input is within the specified upper and lower limits. If this is not the case, the corresponding limits are passed as output.

The parameter homotopyType in the Advanced tab specifies the simplified behaviour if homotopy-based initialization is used:

If it is known a priori in which region the input signal will be located, this option can help a lot by removing one strong nonlinearity from the initialization problem.

Extends from Modelica.​Blocks.​Interfaces.​SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
RealuMax Upper limits of input signals
RealuMin-uMaxLower limits of input signals
Booleanstrictfalse= true, if strict limits with noEvent(..)
LimiterHomotopyhomotopyTypeModelica.​Blocks.​Types.​LimiterHomotopy.​LinearSimplified model for homotopy-based initialization
BooleanlimitsAtInittrueHas no longer an effect and is only kept for backwards compatibility (the implementation uses now the homotopy operator)

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Block Modelica.​Blocks.​Nonlinear.​VariableLimiter
Limit the range of a signal with variable limits

Information

The Limiter block passes its input signal as output signal as long as the input is within the upper and lower limits specified by the two additional inputs limit1 and limit2. If this is not the case, the corresponding limit is passed as output.

The parameter homotopyType in the Advanced tab specifies the simplified behaviour if homotopy-based initialization is used:

If it is known a priori in which region the input signal will be located, this option can help a lot by removing one strong nonlinearity from the initialization problem.

Extends from Modelica.​Blocks.​Interfaces.​SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
Booleanstrictfalse= true, if strict limits with noEvent(..)
VariableLimiterHomotopyhomotopyTypeModelica.​Blocks.​Types.​VariableLimiterHomotopy.​LinearSimplified model for homotopy-based initialization
RealySimplified0Fixed value of output in simplified model
BooleanlimitsAtInittrueHas no longer an effect and is only kept for backwards compatibility (the implementation uses now the homotopy operator)

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal
input RealInputlimit1Connector of Real input signal used as maximum of input u
input RealInputlimit2Connector of Real input signal used as minimum of input u

Block Modelica.​Blocks.​Nonlinear.​SlewRateLimiter
Limits the slew rate of a signal

Information

The SlewRateLimiter block limits the slew rate of its input signal in the range of [Falling, Rising].

To ensure this for arbitrary inputs and in order to produce a differential output, the input is numerically differentiated with derivative time constant Td. Smaller time constant Td means nearer ideal derivative.

Note: The user has to choose the derivative time constant according to the nature of the input signal.

Extends from Modelica.​Blocks.​Interfaces.​SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
RealRising1Maximum rising slew rate [+small..+inf) [1/s]
RealFalling-RisingMaximum falling slew rate (-inf..-small] [1/s]
TimeTd0.001Derivative time constant
InitinitTypeModelica.​Blocks.​Types.​Init.​SteadyStateType of initialization (SteadyState implies y = u)
Realy_start0Initial or guess value of output (= state)
Booleanstrictfalse= true, if strict limits with noEvent(..)

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Block Modelica.​Blocks.​Nonlinear.​DeadZone
Provide a region of zero output

Information

The DeadZone block defines a region of zero output.

If the input is within uMin ... uMax, the output is zero. Outside of this zone, the output is a linear function of the input with a slope of 1.

Extends from Modelica.​Blocks.​Interfaces.​SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
RealuMax Upper limits of dead zones
RealuMin-uMaxLower limits of dead zones
BooleandeadZoneAtInittrueHas no longer an effect and is only kept for backwards compatibility (the implementation uses now the homotopy operator)

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Block Modelica.​Blocks.​Nonlinear.​FixedDelay
Delay block with fixed DelayTime

Information

The Input signal is delayed by a given time instant, or more precisely:

   y = u(time - delayTime) for time > time.start + delayTime
     = u(time.start)       for time ≤ time.start + delayTime

Extends from Modelica.​Blocks.​Interfaces.​SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
TimedelayTime Delay time of output with respect to input signal

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Block Modelica.​Blocks.​Nonlinear.​PadeDelay
Pade approximation of delay block with fixed delayTime (use balance=true; this is not the default to be backwards compatible)

Information

The Input signal is delayed by a given time instant, or more precisely:

   y = u(time - delayTime) for time > time.start + delayTime
     = u(time.start)       for time ≤ time.start + delayTime

The delay is approximated by a Pade approximation, i.e., by a transfer function

           b[1]*s^m + b[2]*s^[m-1] + ... + b[m+1]
   y(s) = --------------------------------------------- * u(s)
           a[1]*s^n + a[2]*s^[n-1] + ... + a[n+1]

where the coefficients b[:] and a[:] are calculated such that the coefficients of the Taylor expansion of the delay exp(-T*s) around s=0 are identical up to order n+m.

The main advantage of this approach is that the delay is approximated by a linear differential equation system, which is continuous and continuously differentiable. For example, it is uncritical to linearize a system containing a Pade-approximated delay.

The standard text book version uses order "m=n", which is also the default setting of this block. The setting "m=n-1" may yield a better approximation in certain cases.

It is strongly recommended to always set parameter balance = true, in order to arrive at a much better reliable numerical computation. This is not the default, in order to be backwards compatible, so you have to explicitly set it. Besides better numerics, also all states are initialized with balance = true (in steady-state, so der(x)=0). Longer explanation:

By default the transfer function of the Pade approximation is implemented in controller canonical form. This results in coefficients of the A-matrix in the order of 1 up to the order of O(1/delayTime)^n. For already modest values of delayTime and n, this gives largely varying coefficients (for example delayTime=0.001 and n=4 results in coefficients between 1 and 1e12). In turn, this results in a large norm of the system matrix [A,B;C,D] and therefore in unreliable numerical computations. When setting parameter balance = true, a state transformation is performed that considerably reduces the norm of the system matrix. This is performed without introducing round-off errors. For details see function balanceABC. As a result, both the simulation of the PadeDelay block, and especially its linearization becomes more reliable.

Literature:

Otto Foellinger: Regelungstechnik, 8. Auflage, chapter 11.9, page 412-414, Huethig Verlag Heidelberg, 1994

Extends from Modelica.​Blocks.​Interfaces.​SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
TimedelayTime Delay time of output with respect to input signal
Integern1Order of Pade delay
IntegermnOrder of numerator (usually m=n, or m=n-1)
Booleanbalancefalse= true, if state space system is balanced (highly recommended), otherwise textbook version

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal

Block Modelica.​Blocks.​Nonlinear.​VariableDelay
Delay block with variable DelayTime

Information

The Input signal is delayed by a given time instant, or more precisely:

   y = u(time - delayTime) for time > time.start + delayTime
     = u(time.start)       for time ≤ time.start + delayTime

where delayTime is an additional input signal which must follow the following relationship:

  0 ≤ delayTime ≤ delayMax

Extends from Modelica.​Blocks.​Interfaces.​SISO (Single Input Single Output continuous control block).

Parameters

TypeNameDefaultDescription
DurationdelayMax Maximum delay time

Connectors

TypeNameDescription
input RealInputuConnector of Real input signal
output RealOutputyConnector of Real output signal
input RealInputdelayTime