xddSecondOrderSystem Icon

SecondOrderSystem

Usage

SecondOrderSystem(k1, k2, k3)

Parameters:

NameDescriptionUnitsDefault value
k1
k2
k3

Connectors

  • xdd - This connector represents a real signal as an input to a component (RealInput)

Behavior

\[ \begin{align} \mathtt{xdd\_internal\_var}\left( t \right) &= \mathtt{xdd}\left( t \right) \\ \mathtt{xdd}\left( t \right) &= \mathtt{integrator1.u}\left( t \right) \\ \mathtt{integrator1.u}\left( t \right) &= \mathtt{gain1.u}\left( t \right) \\ \mathtt{integrator1.y}\left( t \right) &= \mathtt{integrator2.u}\left( t \right) \\ \mathtt{integrator2.u}\left( t \right) &= \mathtt{gain2.u}\left( t \right) \\ \mathtt{integrator2.y}\left( t \right) &= \mathtt{gain3.u}\left( t \right) \\ \mathtt{gain1.y}\left( t \right) &= \mathtt{sum.u3}\left( t \right) \\ \mathtt{gain2.y}\left( t \right) &= \mathtt{sum.u2}\left( t \right) \\ \mathtt{gain3.y}\left( t \right) &= \mathtt{sum.u1}\left( t \right) \\ \frac{\mathrm{d} \mathtt{integrator1.x}\left( t \right)}{\mathrm{d}t} &= \mathtt{integrator1.k} \mathtt{integrator1.u}\left( t \right) \\ \mathtt{integrator1.y}\left( t \right) &= \mathtt{integrator1.x}\left( t \right) \\ \frac{\mathrm{d} \mathtt{integrator2.x}\left( t \right)}{\mathrm{d}t} &= \mathtt{integrator2.k} \mathtt{integrator2.u}\left( t \right) \\ \mathtt{integrator2.y}\left( t \right) &= \mathtt{integrator2.x}\left( t \right) \\ \mathtt{gain1.y}\left( t \right) &= \mathtt{gain1.k} \mathtt{gain1.u}\left( t \right) \\ \mathtt{gain2.y}\left( t \right) &= \mathtt{gain2.k} \mathtt{gain2.u}\left( t \right) \\ \mathtt{gain3.y}\left( t \right) &= \mathtt{gain3.k} \mathtt{gain3.u}\left( t \right) \\ \mathtt{sum.y}\left( t \right) &= \mathtt{sum.k1} \mathtt{sum.u1}\left( t \right) + \mathtt{sum.k2} \mathtt{sum.u2}\left( t \right) + \mathtt{sum.k3} \mathtt{sum.u3}\left( t \right) \end{align} \]

Source

component SecondOrderSystem
  xdd = RealInput() [{"Dyad": {"placement": {"icon": {"x1": -25, "y1": 475, "x2": 25, "y2": 525}}}}]
  integrator1 = BlockComponents.Integrator() [{"Dyad": {"placement": {"icon": {"x1": 100, "y1": 100, "x2": 250, "y2": 250}}}}]
  integrator2 = BlockComponents.Integrator() [{"Dyad": {"placement": {"icon": {"x1": 350, "y1": 100, "x2": 500, "y2": 250}}}}]
  gain1 = BlockComponents.Gain(k=k1) [{"Dyad": {"placement": {"icon": {"x1": 100, "y1": 700, "x2": 250, "y2": 850}}}}]
  gain2 = BlockComponents.Gain(k=k2) [{"Dyad": {"placement": {"icon": {"x1": 350, "y1": 400, "x2": 500, "y2": 550}}}}]
  gain3 = BlockComponents.Gain(k=k3) [{"Dyad": {"placement": {"icon": {"x1": 600, "y1": 100, "x2": 750, "y2": 250}}}}]
  sum = BlockComponents.Add3() [{"Dyad": {"placement": {"icon": {"x1": 850, "y1": 400, "x2": 1000, "y2": 550}}}}]
  parameter k1::Real
  parameter k2::Real
  parameter k3::Real
relations
  connect(xdd, integrator1.u, gain1.u) [{
    "Dyad": {
      "edges": [
        {"S": -1, "M": [{"x": 80, "y": 175}], "E": 2},
        {"S": -1, "M": [{"x": 80, "y": 775}], "E": 3},
        {"S": -1, "E": 1}
      ],
      "junctions": [{"x": 80, "y": 500}]
    }
  }]
  connect(integrator1.y, integrator2.u, gain2.u) [{
    "Dyad": {
      "edges": [
        {"S": -1, "E": 1},
        {"S": -1, "E": 2},
        {"S": -1, "M": [{"x": 320, "y": 475}], "E": 3}
      ],
      "junctions": [{"x": 320, "y": 175}]
    }
  }]
  connect(integrator2.y, gain3.u) [{"Dyad": {"edges": [{"S": 2, "E": 1}]}}]
  connect(gain1.y, sum.u3) [{
    "Dyad": {"edges": [{"S": 2, "M": [{"x": 820, "y": 520}, {"x": 820, "y": 775}], "E": 1}]}
  }]
  connect(gain2.y, sum.u2) [{"Dyad": {"edges": [{"S": 2, "E": 1}]}}]
  connect(gain3.y, sum.u1) [{
    "Dyad": {"edges": [{"S": 2, "M": [{"x": 820, "y": 430}, {"x": 820, "y": 175}], "E": 1}]}
  }]
metadata {
  "Dyad": {
    "labels": [
      {
        "label": "Second Order System",
        "x": 500,
        "y": 50,
        "layer": "diagram",
        "attrs": {"font-size": "50"}
      }
    ]
  }
}
end
Flattened Source
component SecondOrderSystem
  xdd = RealInput() [{"Dyad": {"placement": {"icon": {"x1": -25, "y1": 475, "x2": 25, "y2": 525}}}}]
  integrator1 = BlockComponents.Integrator() [{"Dyad": {"placement": {"icon": {"x1": 100, "y1": 100, "x2": 250, "y2": 250}}}}]
  integrator2 = BlockComponents.Integrator() [{"Dyad": {"placement": {"icon": {"x1": 350, "y1": 100, "x2": 500, "y2": 250}}}}]
  gain1 = BlockComponents.Gain(k=k1) [{"Dyad": {"placement": {"icon": {"x1": 100, "y1": 700, "x2": 250, "y2": 850}}}}]
  gain2 = BlockComponents.Gain(k=k2) [{"Dyad": {"placement": {"icon": {"x1": 350, "y1": 400, "x2": 500, "y2": 550}}}}]
  gain3 = BlockComponents.Gain(k=k3) [{"Dyad": {"placement": {"icon": {"x1": 600, "y1": 100, "x2": 750, "y2": 250}}}}]
  sum = BlockComponents.Add3() [{"Dyad": {"placement": {"icon": {"x1": 850, "y1": 400, "x2": 1000, "y2": 550}}}}]
  parameter k1::Real
  parameter k2::Real
  parameter k3::Real
relations
  connect(xdd, integrator1.u, gain1.u) [{
    "Dyad": {
      "edges": [
        {"S": -1, "M": [{"x": 80, "y": 175}], "E": 2},
        {"S": -1, "M": [{"x": 80, "y": 775}], "E": 3},
        {"S": -1, "E": 1}
      ],
      "junctions": [{"x": 80, "y": 500}]
    }
  }]
  connect(integrator1.y, integrator2.u, gain2.u) [{
    "Dyad": {
      "edges": [
        {"S": -1, "E": 1},
        {"S": -1, "E": 2},
        {"S": -1, "M": [{"x": 320, "y": 475}], "E": 3}
      ],
      "junctions": [{"x": 320, "y": 175}]
    }
  }]
  connect(integrator2.y, gain3.u) [{"Dyad": {"edges": [{"S": 2, "E": 1}]}}]
  connect(gain1.y, sum.u3) [{
    "Dyad": {"edges": [{"S": 2, "M": [{"x": 820, "y": 520}, {"x": 820, "y": 775}], "E": 1}]}
  }]
  connect(gain2.y, sum.u2) [{"Dyad": {"edges": [{"S": 2, "E": 1}]}}]
  connect(gain3.y, sum.u1) [{
    "Dyad": {"edges": [{"S": 2, "M": [{"x": 820, "y": 430}, {"x": 820, "y": 175}], "E": 1}]}
  }]
metadata {
  "Dyad": {
    "labels": [
      {
        "label": "Second Order System",
        "x": 500,
        "y": 50,
        "layer": "diagram",
        "attrs": {"font-size": "50"}
      }
    ]
  }
}
end

Test Cases

  • Examples
  • Experiments
  • Analyses