uy$(instance)SecondOrder Icon

SecondOrder

A second-order filter with gain k, a bandwidth of w rad/s and relative damping d. The transfer function is given by Y(s)/U(s) =

k*w^2
─────────────────
s² + 2d*w*s + w^2

Critical damping corresponds to d=1, which yields the fastest step response without overshoot, d < 1 results in an underdamped filter while d > 1 results in an overdamped filter. d = 1/√2 corresponds to a Butterworth filter of order 2 (maximally flat frequency response).

This component extends from SISO

Usage

SecondOrder(k=1.0, w=1.0, d=1.0)

Parameters:

NameDescriptionUnitsDefault value
kGain1
wBandwidth (angular frequency)1
dRelative damping1

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)

Variables

NameDescriptionUnits
xState of SecondOrder filter
xdDerivative state of SecondOrder filter

Behavior

\[ \begin{align} \frac{\mathrm{d} x\left( t \right)}{\mathrm{d}t} &= \mathtt{xd}\left( t \right) \\ \frac{\mathrm{d} \mathtt{xd}\left( t \right)}{\mathrm{d}t} &= \left( - 2 d \mathtt{xd}\left( t \right) + \left( - x\left( t \right) + k u\left( t \right) \right) w \right) w \\ y\left( t \right) &= x\left( t \right) \end{align} \]

Source

# A second-order filter with gain `k`, a bandwidth of `w` rad/s and relative damping `d`. The transfer function
# is given by `Y(s)/U(s) = `
#
# ```
# k*w^2
# ─────────────────
# s² + 2d*w*s + w^2
# ```
#
# Critical damping corresponds to `d=1`, which yields the fastest step response without overshoot, `d < 1` results in an underdamped filter while `d > 1` results in an overdamped filter.
# `d = 1/√2` corresponds to a Butterworth filter of order 2 (maximally flat frequency response).
component SecondOrder
  extends SISO
  # State of SecondOrder filter
  variable x::Real
  # Derivative state of SecondOrder filter
  variable xd::Real
  # Gain
  parameter k::Real = 1.0
  # Bandwidth (angular frequency)
  parameter w::Real = 1.0
  # Relative damping
  parameter d::Real = 1.0
relations
  der(x) = xd
  der(xd) = w*(w*(k*u-x)-2*d*xd)
  y = x
metadata {"JuliaSim": {"icons": {"default": "jsml://BlockComponents/SecondOrder.svg"}}}
end
Flattened Source
# A second-order filter with gain `k`, a bandwidth of `w` rad/s and relative damping `d`. The transfer function
# is given by `Y(s)/U(s) = `
#
# ```
# k*w^2
# ─────────────────
# s² + 2d*w*s + w^2
# ```
#
# Critical damping corresponds to `d=1`, which yields the fastest step response without overshoot, `d < 1` results in an underdamped filter while `d > 1` results in an overdamped filter.
# `d = 1/√2` corresponds to a Butterworth filter of order 2 (maximally flat frequency response).
component SecondOrder
  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}}
    }
  }]
  # State of SecondOrder filter
  variable x::Real
  # Derivative state of SecondOrder filter
  variable xd::Real
  # Gain
  parameter k::Real = 1.0
  # Bandwidth (angular frequency)
  parameter w::Real = 1.0
  # Relative damping
  parameter d::Real = 1.0
relations
  der(x) = xd
  der(xd) = w*(w*(k*u-x)-2*d*xd)
  y = x
metadata {"JuliaSim": {"icons": {"default": "jsml://BlockComponents/SecondOrder.svg"}}}
end

Test Cases

  • Examples
  • Experiments
  • Analyses