pendulum controller

This commit is contained in:
2026-03-10 14:36:24 +01:00
parent 75b690b19b
commit 67d40f2dcd
3 changed files with 255 additions and 108 deletions

27
Simple2DPendulum.mo Normal file
View File

@@ -0,0 +1,27 @@
model Simple2DPendulum
inner Modelica.Mechanics.MultiBody.World world annotation(
Placement(transformation(origin = {-40, 0}, extent = {{-10, -10}, {10, 10}})));
Modelica.Mechanics.MultiBody.Joints.Revolute revolute(phi(start = -1.5707963267948966, fixed = true, displayUnit = "deg"), useAxisFlange = true) annotation(
Placement(transformation(origin = {40, 0}, extent = {{-10, -10}, {10, 10}})));
Modelica.Mechanics.MultiBody.Parts.Body body(r_CM = {0, -0.5, 0}, m = 1, I_11 = 0.001, I_22 = 0.001, I_33 = 0.001) annotation(
Placement(transformation(origin = {70, 0}, extent = {{-10, -10}, {10, 10}})));
Modelica.Mechanics.Rotational.Components.Damper damper(d = 0.02) annotation(
Placement(transformation(origin = {40, 38}, extent = {{-10, -10}, {10, 10}})));
Modelica.Mechanics.MultiBody.Joints.Prismatic prismatic annotation(
Placement(transformation(extent = {{-10, -10}, {10, 10}})));
equation
connect(revolute.frame_b, body.frame_a) annotation(
Line(points = {{50, 0}, {60, 0}}, color = {95, 95, 95}));
connect(damper.flange_b, revolute.axis) annotation(
Line(points = {{50, 38}, {58, 38}, {58, 20}, {40, 20}, {40, 10}}));
connect(damper.flange_a, revolute.support) annotation(
Line(points = {{30, 38}, {22, 38}, {22, 20}, {34, 20}, {34, 10}}));
connect(prismatic.frame_b, revolute.frame_a) annotation(
Line(points = {{10, 0}, {30, 0}}, color = {95, 95, 95}));
connect(world.frame_b, prismatic.frame_a) annotation(
Line(points = {{-30, 0}, {-10, 0}}, color = {95, 95, 95}));
annotation(
uses(Modelica(version = "4.1.0")),
experiment(StartTime = 0, StopTime = 10, Tolerance = 1e-06, Interval = 0.02));
end Simple2DPendulum;