-u_max +u_max y u Deadzone Deadzone Icon

Discontinuous.Deadzone

Signal deadzone block that outputs zero within a specified input range:

  • If u > umax: y = u - umax
  • If -umax <= u <= umax: y = 0
  • If u < -umax: y = u + umax

Commonly used in control systems to eliminate small noise or drift signals.

Arguments: u_max Upper limit of the deadzone (positive value).

Usage

PrimitiveComponents.Discontinuous.Deadzone(u_max=1.0)

Parameters:

NameDescriptionUnitsDefault value
u_maxUpper limit of deadzone (positive value)1

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) &= ifelse\left( u\left( t \right) > \mathtt{u\_max}, - \mathtt{u\_max} + u\left( t \right), ifelse\left( u\left( t \right) < - \mathtt{u\_max}, \mathtt{u\_max} + u\left( t \right), 0 \right) \right) \end{align} \]

Source

"""
Signal deadzone block that outputs zero within a specified input range:
  - If u > u_max: y = u - u_max
  - If -u_max <= u <= u_max: y = 0
  - If u < -u_max: y = u + u_max
Commonly used in control systems to eliminate small noise or drift signals.

Arguments:
`u_max` Upper limit of the deadzone (positive value).
"""
component Deadzone
  "Input signal port"
  u = RealInput() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 0, "y1": 450, "x2": 100, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  "Output signal port"
  y = RealOutput() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 900, "y1": 450, "x2": 1000, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  "Upper limit of deadzone (positive value)"
  parameter u_max::Real = 1.0
relations
  y = ifelse(u > u_max, u - u_max, ifelse(u < -u_max, u + u_max, 0.0))
metadata {"Dyad": {"icons": {"default": "dyad://PrimitiveComponents/Deadzone.svg"}}}
end
Flattened Source
"""
Signal deadzone block that outputs zero within a specified input range:
  - If u > u_max: y = u - u_max
  - If -u_max <= u <= u_max: y = 0
  - If u < -u_max: y = u + u_max
Commonly used in control systems to eliminate small noise or drift signals.

Arguments:
`u_max` Upper limit of the deadzone (positive value).
"""
component Deadzone
  "Input signal port"
  u = RealInput() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 0, "y1": 450, "x2": 100, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  "Output signal port"
  y = RealOutput() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 900, "y1": 450, "x2": 1000, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  "Upper limit of deadzone (positive value)"
  parameter u_max::Real = 1.0
relations
  y = ifelse(u > u_max, u - u_max, ifelse(u < -u_max, u + u_max, 0.0))
metadata {"Dyad": {"icons": {"default": "dyad://PrimitiveComponents/Deadzone.svg"}}}
end


Test Cases

No test cases defined.