uy$(instance)Limiter Icon

Limiter

Within the specified upper and lower limits, input signal is passed as output signal. Outside these limits, corresponding limits are passed as output.

This component extends from SISO

Usage

Limiter(u_max, u_min=-u_max, assertion=assert(u_max, u_min, Base.isgreater))

Parameters:

NameDescriptionUnitsDefault value
u_maxMaximum allowed input
u_minMinimum allowed input-u_max
assertionInternal parameter to assert that u_max is greater than u_minassert(umax, umin, Base.isgreater)

Connectors

  • u - This connector represents a real signal as an input to a component (RealInput)
  • y - This connector represents a real signal as an output from a component (RealOutput)

Behavior

\[ \begin{align} y\left( t \right) &= max\left( min\left( u\left( t \right), \mathtt{u\_max} \right), \mathtt{u\_min} \right) \end{align} \]

Source

# Within the specified upper and lower limits, input signal is passed as output
# signal. Outside these limits, corresponding limits are passed as output.
component Limiter
  extends SISO
  # Maximum allowed input
  parameter u_max::Real
  # Minimum allowed input
  parameter u_min::Real = -u_max
  # Internal parameter to assert that `u_max` is greater than `u_min`
  parameter assertion::Boolean = assert(u_max, u_min, Base.isgreater)
relations
  y = max(min(u, u_max), u_min)
end
Flattened Source
# Within the specified upper and lower limits, input signal is passed as output
# signal. Outside these limits, corresponding limits are passed as output.
component Limiter
  u = RealInput() [{
    "JuliaSim": {
      "placement": {"icon": {"iconName": "input", "x1": -50, "y1": 450, "x2": 50, "y2": 550}}
    }
  }]
  y = RealOutput() [{
    "JuliaSim": {
      "placement": {"icon": {"iconName": "output", "x1": 950, "y1": 450, "x2": 1050, "y2": 550}}
    }
  }]
  # Maximum allowed input
  parameter u_max::Real
  # Minimum allowed input
  parameter u_min::Real = -u_max
  # Internal parameter to assert that `u_max` is greater than `u_min`
  parameter assertion::Boolean = assert(u_max, u_min, Base.isgreater)
relations
  y = max(min(u, u_max), u_min)
metadata {}
end

Test Cases

  • Examples
  • Experiments
  • Analyses