Skip to content
LIBRARY
Sources.Tests.AllComponents.md

Sources.Tests.AllComponents

Tests Position, SpeedSource, AccelerationSource, and Torque2 components, matching the source-related subsystems from MSL ModelicaTest.Rotational.AllComponents.

Three subsystems from AllComponents are replicated here:

  1. Position (Filtered default, f_crit=50 Hz): Sine(f=1) → Position → Inertia(J=3)

  2. Speed + Torque2 (Filtered default): Sine(f=1) → SpeedSource → Inertia(J=3) → Torque2(Sine f=1) → Inertia(J=3)

  3. Accelerate: Sine(f=1) → AccelerationSource → Inertia(J=3)

All supports are grounded to Fixed. Stop time = 0.9 s.

Usage

RotationalComponents.Sources.Tests.AllComponents()

Behavior

[connect(sinepos+y,position+phiref)connect(position+spline,inertiapos+spline_a)connect(position+support,fixed+spline)connect(sinespeed+y,speed+wref)connect(speed+spline,inertiaspeed+spline_a)connect(speed+support,fixed+spline)connect(inertiaspeed+spline_b,torque2+splinea)connect(torque2+splineb,inertia13+splinea)connect(sinetorque2+y,torque2+tau)connect(sineacc+y,accelerate+aref)connect(accelerate+spline,inertiaacc+spline_a)connect(accelerate+support,fixed+spline)fixed.spline.phi(t)=fixed.phi0sinepos.y(t)=sinepos.offset+sinepos.amplitudeifelse(tsinepos.start_time,sin(sinepos.phase+6.283185307179586sinepos.frequency(sinepos.start_time+t)),sin(sinepos.phase))position.support.phi(t)=position.phisupport(t)position.support.tau(t)=position.spline.tau(t)position.phi(t)=position.spline.phi(t)position.phisupport(t)position.w(t)=dposition.phi(t)dtposition.a(t)=dposition.w(t)dtposition.a(t)=314.1592653589793(position.afposition.w(t)+100.0(position.phi(t)+position.phiref(t))π)position.bfinertiapos.phi(t)=inertiapos.spline_a.phi(t)inertiapos.phi(t)=inertiapos.spline_b.phi(t)dinertiapos.phi(t)dt=inertiapos.w(t)dinertiapos.w(t)dt=inertiapos.a(t)inertiapos.Jinertiapos.a(t)=inertiapos.spline_b.tau(t)+inertiapos.spline_a.tau(t)sinespeed.y(t)=sinespeed.offset+sinespeed.amplitudeifelse(tsinespeed.start_time,sin(sinespeed.phase+6.283185307179586sinespeed.frequency(sinespeed.start_time+t)),sin(sinespeed.phase))speed.support.phi(t)=speed.phisupport(t)speed.support.tau(t)=speed.spline.tau(t)speed.phi(t)=speed.spline.phi(t)speed.phisupport(t)speed.w(t)=dspeed.phi(t)dtspeed.a(t)=dspeed.w(t)dtspeed.a(t)=100.0(speed.wref(t)speed.w(t))πinertiaspeed.phi(t)=inertiaspeed.spline_a.phi(t)inertiaspeed.phi(t)=inertiaspeed.spline_b.phi(t)dinertiaspeed.phi(t)dt=inertiaspeed.w(t)dinertiaspeed.w(t)dt=inertiaspeed.a(t)inertiaspeed.Jinertiaspeed.a(t)=inertiaspeed.spline_a.tau(t)+inertiaspeed.spline_b.tau(t)sinetorque2.y(t)=sinetorque2.offset+sinetorque2.amplitudeifelse(tsinetorque2.start_time,sin(sinetorque2.phase+6.283185307179586sinetorque2.frequency(sinetorque2.start_time+t)),sin(sinetorque2.phase))torque2.splinea.tau(t)=torque2.tau(t)torque2.splineb.tau(t)=torque2.tau(t)inertia13.phi(t)=inertia13.splinea.phi(t)inertia13.phi(t)=inertia13.splineb.phi(t)dinertia13.phi(t)dt=inertia13.w(t)dinertia13.w(t)dt=inertia13.a(t)inertia13.Jinertia13.a(t)=inertia13.splinea.tau(t)+inertia13.splineb.tau(t)sineacc.y(t)=sineacc.offset+sineacc.amplitudeifelse(tsineacc.start_time,sin(sineacc.phase+6.283185307179586sineacc.frequency(sineacc.start_time+t)),sin(sineacc.phase))accelerate.support.phi(t)=accelerate.phisupport(t)accelerate.support.tau(t)=accelerate.spline.tau(t)accelerate.phi(t)=accelerate.spline.phi(t)accelerate.phisupport(t)accelerate.w(t)=daccelerate.phi(t)dtaccelerate.a(t)=daccelerate.w(t)dtaccelerate.a(t)=accelerate.aref(t)inertiaacc.phi(t)=inertiaacc.spline_a.phi(t)inertiaacc.phi(t)=inertiaacc.spline_b.phi(t)dinertiaacc.phi(t)dt=inertiaacc.w(t)dinertiaacc.w(t)dt=inertiaacc.a(t)inertiaacc.Jinertiaacc.a(t)=inertiaacc.spline_b.tau(t)+inertiaacc.spline_a.tau(t)]

Source

dyad
"""
Tests Position, SpeedSource, AccelerationSource, and Torque2 components,
matching the source-related subsystems from MSL ModelicaTest.Rotational.AllComponents.

Three subsystems from AllComponents are replicated here:

1. Position (Filtered default, f_crit=50 Hz): Sine(f=1) → Position → Inertia(J=3)
2. Speed + Torque2 (Filtered default): Sine(f=1) → SpeedSource → Inertia(J=3) → Torque2(Sine f=1) → Inertia(J=3)
3. Accelerate: Sine(f=1) → AccelerationSource → Inertia(J=3)

All supports are grounded to Fixed. Stop time = 0.9 s.
"""
test component AllComponents
  "Fixed ground for all supports"
  fixed = RotationalComponents.Components.Fixed()
  "Sine reference for position source (f=1 Hz)"
  sine_pos = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1)
  "Position source — default Filtered mode (f_crit=50 Hz)"
  position = RotationalComponents.Sources.Position()
  "Inertia driven by position source (MSL inertia9, J=3)"
  inertia_pos = RotationalComponents.Components.Inertia(J = 3)
  "Sine reference for speed source (f=1 Hz)"
  sine_speed = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1)
  "SpeedSource — default Filtered mode (f_crit=50 Hz)"
  speed = RotationalComponents.Sources.SpeedSource()
  "Inertia driven by speed source (MSL inertia10, J=3)"
  inertia_speed = RotationalComponents.Components.Inertia(J = 3)
  "Sine input for Torque2 (f=1 Hz)"
  sine_torque2 = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1)
  "Torque2 — acts between speed inertia and output inertia"
  torque2 = RotationalComponents.Sources.Torque2()
  "Inertia driven by Torque2 (MSL inertia13, J=3)"
  inertia13 = RotationalComponents.Components.Inertia(J = 3)
  "Sine reference for accelerate source (f=1 Hz)"
  sine_acc = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1)
  "AccelerationSource"
  accelerate = RotationalComponents.Sources.AccelerationSource()
  "Inertia driven by accelerate source (MSL inertia11, J=3)"
  inertia_acc = RotationalComponents.Components.Inertia(J = 3)
relations
  # Position subsystem
  initial position.w = 0
  initial inertia_speed.phi = 0
  connect(sine_pos.y, position.phi_ref)
  connect(position.spline, inertia_pos.spline_a)
  connect(position.support, fixed.spline)
  # Speed + Torque2 subsystem
  initial inertia13.phi = 0
  initial inertia13.w = 0
  connect(sine_speed.y, speed.w_ref)
  connect(speed.spline, inertia_speed.spline_a)
  connect(speed.support, fixed.spline)
  connect(inertia_speed.spline_b, torque2.spline_a)
  connect(torque2.spline_b, inertia13.spline_a)
  connect(sine_torque2.y, torque2.tau)
  # Accelerate subsystem
  initial accelerate.phi = 0
  initial accelerate.w = 0
  connect(sine_acc.y, accelerate.a_ref)
  connect(accelerate.spline, inertia_acc.spline_a)
  connect(accelerate.support, fixed.spline)
metadata {
  "Dyad": {
    "icons": {"default": "dyad://RotationalComponents/Example.svg"},
    "tests": {
      "case1": {
        "stop": 0.9,
        "expect": {
          "signals": [
            "position.phi",
            "position.w",
            "speed.phi",
            "speed.w",
            "accelerate.phi",
            "accelerate.w",
            "inertia13.phi",
            "inertia13.w"
          ]
        }
      }
    }
  }
}
end
Flattened Source
dyad
"""
Tests Position, SpeedSource, AccelerationSource, and Torque2 components,
matching the source-related subsystems from MSL ModelicaTest.Rotational.AllComponents.

Three subsystems from AllComponents are replicated here:

1. Position (Filtered default, f_crit=50 Hz): Sine(f=1) → Position → Inertia(J=3)
2. Speed + Torque2 (Filtered default): Sine(f=1) → SpeedSource → Inertia(J=3) → Torque2(Sine f=1) → Inertia(J=3)
3. Accelerate: Sine(f=1) → AccelerationSource → Inertia(J=3)

All supports are grounded to Fixed. Stop time = 0.9 s.
"""
test component AllComponents
  "Fixed ground for all supports"
  fixed = RotationalComponents.Components.Fixed()
  "Sine reference for position source (f=1 Hz)"
  sine_pos = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1)
  "Position source — default Filtered mode (f_crit=50 Hz)"
  position = RotationalComponents.Sources.Position()
  "Inertia driven by position source (MSL inertia9, J=3)"
  inertia_pos = RotationalComponents.Components.Inertia(J = 3)
  "Sine reference for speed source (f=1 Hz)"
  sine_speed = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1)
  "SpeedSource — default Filtered mode (f_crit=50 Hz)"
  speed = RotationalComponents.Sources.SpeedSource()
  "Inertia driven by speed source (MSL inertia10, J=3)"
  inertia_speed = RotationalComponents.Components.Inertia(J = 3)
  "Sine input for Torque2 (f=1 Hz)"
  sine_torque2 = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1)
  "Torque2 — acts between speed inertia and output inertia"
  torque2 = RotationalComponents.Sources.Torque2()
  "Inertia driven by Torque2 (MSL inertia13, J=3)"
  inertia13 = RotationalComponents.Components.Inertia(J = 3)
  "Sine reference for accelerate source (f=1 Hz)"
  sine_acc = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1)
  "AccelerationSource"
  accelerate = RotationalComponents.Sources.AccelerationSource()
  "Inertia driven by accelerate source (MSL inertia11, J=3)"
  inertia_acc = RotationalComponents.Components.Inertia(J = 3)
relations
  # Position subsystem
  initial position.w = 0
  initial inertia_speed.phi = 0
  connect(sine_pos.y, position.phi_ref)
  connect(position.spline, inertia_pos.spline_a)
  connect(position.support, fixed.spline)
  # Speed + Torque2 subsystem
  initial inertia13.phi = 0
  initial inertia13.w = 0
  connect(sine_speed.y, speed.w_ref)
  connect(speed.spline, inertia_speed.spline_a)
  connect(speed.support, fixed.spline)
  connect(inertia_speed.spline_b, torque2.spline_a)
  connect(torque2.spline_b, inertia13.spline_a)
  connect(sine_torque2.y, torque2.tau)
  # Accelerate subsystem
  initial accelerate.phi = 0
  initial accelerate.w = 0
  connect(sine_acc.y, accelerate.a_ref)
  connect(accelerate.spline, inertia_acc.spline_a)
  connect(accelerate.support, fixed.spline)
metadata {
  "Dyad": {
    "icons": {"default": "dyad://RotationalComponents/Example.svg"},
    "tests": {
      "case1": {
        "stop": 0.9,
        "expect": {
          "signals": [
            "position.phi",
            "position.w",
            "speed.phi",
            "speed.w",
            "accelerate.phi",
            "accelerate.w",
            "inertia13.phi",
            "inertia13.w"
          ]
        }
      }
    }
  }
}
end


Test Cases

Test Case case1

julia
plt

julia
plt

julia
plt

julia
plt

julia
plt

julia
plt

julia
plt

julia
plt