MultiBondLib.PlanarMechanics.Examples

examples for planar mechanics

Information


This package contains various examples.

These examples demonstrate the usage of the PlanarMechanics library.

For all these examples the following simulation setup is proposed.

Don't forget to open an animation window.

Package Content

NameDescription
MultiBondLib.PlanarMechanics.Examples.DoublePendulum DoublePendulum double pendulum
MultiBondLib.PlanarMechanics.Examples.FreeBody FreeBody free body on spring
MultiBondLib.PlanarMechanics.Examples.KinematicLoop KinematicLoop kinematic loop with 4 revolute joints
MultiBondLib.PlanarMechanics.Examples.KinematicLoop2 KinematicLoop2 kinematic loop
MultiBondLib.PlanarMechanics.Examples.PlanarPendulum PlanarPendulum a simple pendulum
MultiBondLib.PlanarMechanics.Examples.CraneCrab3 CraneCrab3 model of a free crane crab


MultiBondLib.PlanarMechanics.Examples.DoublePendulum MultiBondLib.PlanarMechanics.Examples.DoublePendulum

double pendulum

MultiBondLib.PlanarMechanics.Examples.DoublePendulum

Information


This example presents a double pendulum.

The model is confronted with its equivalence of the Modelica.Mechanics.MultiBody library.


Modelica definition

model DoublePendulum "double pendulum" 
                     extends Modelica.Icons.Example;
  PlanarMechanics.Parts.Fixed Fixed1;
  PlanarMechanics.Joints.Revolute Revolute1(initType=Modelica.Mechanics.
        MultiBody.Types.Init.PositionVelocity);
  PlanarMechanics.Parts.FixedTranslation FixedTranslation1(r={2,2});
  inner Modelica.Mechanics.MultiBody.World world(nominalLength=5);
  Modelica.Mechanics.MultiBody.Parts.Fixed Fixed2(r={0,0,-1});
  Modelica.Mechanics.MultiBody.Parts.FixedTranslation FixedTranslation2(r={2,2,
        0});
  Modelica.Mechanics.MultiBody.Joints.Revolute Revolute2(initType=
        Modelica.Mechanics.MultiBody.Types.Init.PositionVelocity);
  PlanarMechanics.Joints.Revolute Revolute3(initType=Modelica.Mechanics.
        MultiBody.Types.Init.PositionVelocity);
  PlanarMechanics.Parts.FixedTranslation FixedTranslation3(r={0,-1.5});
  PlanarMechanics.Parts.Body Body3(m=1, J=0);
  Modelica.Mechanics.MultiBody.Parts.Body Body4(
    m=1,
    I_11=0,
    I_22=0,
    I_33=0);
  Modelica.Mechanics.MultiBody.Parts.FixedTranslation FixedTranslation4(r={0,-1.5,
        0});
  Modelica.Mechanics.MultiBody.Joints.Revolute Revolute4(initType=
        Modelica.Mechanics.MultiBody.Types.Init.PositionVelocity);
  PlanarMechanics.Parts.Body Body1(     J=0, m=2);
  Modelica.Mechanics.MultiBody.Parts.Body Body2(
    I_11=0,
    I_22=0,
    I_33=0,
    m=2);
  inner PlanarMechanics.PlanarWorld planarWorld(nominalLength=5);
equation 
  connect(Revolute1.frame_a, Fixed1.frame_b);
  connect(FixedTranslation1.frame_a, Revolute1.frame_b);
  connect(Revolute2.frame_a, Fixed2.frame_b);
  connect(Revolute2.frame_b, FixedTranslation2.frame_a);
  connect(FixedTranslation3.frame_b, Body3.frame_a);
  connect(FixedTranslation3.frame_a, Revolute3.frame_b);
  connect(Revolute3.frame_a, FixedTranslation1.frame_b);
  connect(Revolute4.frame_b, FixedTranslation4.frame_a);
  connect(FixedTranslation4.frame_b, Body4.frame_a);
  connect(Revolute4.frame_a, FixedTranslation2.frame_b);
  connect(Body1.frame_a, FixedTranslation1.frame_b);
  connect(Body2.frame_a, FixedTranslation2.frame_b);
end DoublePendulum;

MultiBondLib.PlanarMechanics.Examples.FreeBody MultiBondLib.PlanarMechanics.Examples.FreeBody

free body on spring

MultiBondLib.PlanarMechanics.Examples.FreeBody

Information


This example presents a free body attached to a string via a massless rod.


Modelica definition

model FreeBody "free body on spring" 
               extends Modelica.Icons.Example;
  PlanarMechanics.Parts.FixedTranslation FixedTranslation1(r={1,0});
  PlanarMechanics.Parts.Fixed Fixed1;
  PlanarMechanics.Forces.Spring Spring1(     s0=1, c=10);
  inner PlanarMechanics.PlanarWorld planarWorld(nominalLength=5);
  Parts.Body Body1(
    initType=Modelica.Mechanics.MultiBody.Types.Init.PositionVelocity,
    m=1,
    x_start={1.2,-0.5},
    J=0.12);
equation 
  connect(Spring1.frame_a, Fixed1.frame_b);
  connect(Spring1.frame_b, FixedTranslation1.frame_a);
  connect(Body1.frame_a, FixedTranslation1.frame_b);
end FreeBody;

MultiBondLib.PlanarMechanics.Examples.KinematicLoop MultiBondLib.PlanarMechanics.Examples.KinematicLoop

kinematic loop with 4 revolute joints

MultiBondLib.PlanarMechanics.Examples.KinematicLoop

Information


This example presents a planar kinematic loop. 

The planar loop is formed out of four revolutes.

The loop is closed automatically. The loop leads to 2 non-linear equations.


Modelica definition

model KinematicLoop "kinematic loop with 4 revolute joints" 
                    extends Modelica.Icons.Example;
  PlanarMechanics.Parts.Fixed Fixed1;
  PlanarMechanics.Parts.FixedTranslation FixedTranslation1(r={0,1});
  PlanarMechanics.Joints.Revolute Revolute1(phi_start=
        0,
    enforceStates=true,
    initType=Modelica.Mechanics.MultiBody.Types.Init.PositionVelocity);
  PlanarMechanics.Joints.Revolute Revolute2;
  PlanarMechanics.Parts.FixedTranslation FixedTranslation2;
  PlanarMechanics.Parts.FixedTranslation FixedTranslation3;
  PlanarMechanics.Joints.Revolute Revolute3;
  PlanarMechanics.Parts.FixedTranslation FixedTranslation4(r={0,1});
  PlanarMechanics.Joints.Revolute Revolute4;
  PlanarMechanics.Parts.Body Body1(animation=false);
  PlanarMechanics.Parts.Body Body2(animation=false);
  PlanarMechanics.Parts.Body Body3(animation=false);
  PlanarMechanics.Parts.Body Body4(animation=false);
  inner PlanarMechanics.PlanarWorld planarWorld(nominalLength=5,
    animateWorld=false,
    animateGravity=false);
equation 
  connect(Revolute1.frame_a, Fixed1.frame_b);
  connect(FixedTranslation1.frame_b, Fixed1.frame_b);
  connect(Revolute2.frame_b, FixedTranslation1.frame_a);
  connect(Revolute1.frame_b, FixedTranslation3.frame_a);
  connect(Revolute2.frame_a, FixedTranslation2.frame_a);
  connect(FixedTranslation3.frame_b, Revolute3.frame_b);
  connect(Revolute3.frame_a, FixedTranslation4.frame_b);
  connect(Revolute4.frame_b, FixedTranslation4.frame_a);
  connect(Body1.frame_a, FixedTranslation3.frame_b);
  connect(Body3.frame_a, FixedTranslation4.frame_a);
  connect(Body2.frame_a, FixedTranslation2.frame_b);
  connect(Body4.frame_a, Revolute4.frame_a);
  connect(FixedTranslation2.frame_b, Revolute4.frame_a);
end KinematicLoop;

MultiBondLib.PlanarMechanics.Examples.KinematicLoop2 MultiBondLib.PlanarMechanics.Examples.KinematicLoop2

kinematic loop

MultiBondLib.PlanarMechanics.Examples.KinematicLoop2

Information


This example presents another planar kinematic loop. 

The planar loop is formed out of three revolute and one prismatic joint. Attached to this loop is a pendulum that is dissipating its energy through the damper.

The loop is closed automatically. The loop leads to 2 non-linear equations.


Modelica definition

model KinematicLoop2 "kinematic loop" 
                     extends Modelica.Icons.Example;
  PlanarMechanics.Parts.Fixed Fixed1;
  PlanarMechanics.Parts.FixedTranslation FixedTranslation1(r={0,-3});
  PlanarMechanics.Parts.FixedTranslation FixedTranslation2(r={0,-3});
  PlanarMechanics.Joints.Revolute Revolute1(enforceStates=true);
  PlanarMechanics.Joints.Revolute Revolute2;
  PlanarMechanics.Joints.Revolute Revolute3;
  PlanarMechanics.Joints.Prismatic Prismatic1(
    initType=Modelica.Mechanics.MultiBody.Types.Init.PositionVelocity,
    v_start=0,
    s_start=2,
    enforceStates=false,
    boxWidth=0.5*planarWorld.defaultJointWidth);
  PlanarMechanics.Forces.Spring Spring1(
    c=50,
    s0=1.6);
  PlanarMechanics.Joints.Revolute Revolute4(initType=Modelica.Mechanics.
        MultiBody.Types.Init.PositionVelocity, enforceStates=true);
  PlanarMechanics.Parts.Body Body2(m=2, J=0.05);
  PlanarMechanics.Parts.FixedTranslation FixedTranslation3(r={2,0});
  PlanarMechanics.Forces.Damping Damping1(d=2);
  inner PlanarMechanics.PlanarWorld planarWorld(nominalLength=5,
    enableAnimation=true,
    animateWorld=false,
    animateGravity=false);
equation 
  connect(Prismatic1.frame_a, Fixed1.frame_b);
  connect(Revolute2.frame_a, Prismatic1.frame_b);
  connect(FixedTranslation2.frame_a, Revolute2.frame_b);
  connect(Revolute1.frame_b, Fixed1.frame_b);
  connect(FixedTranslation1.frame_a, Revolute1.frame_a);
  connect(Revolute3.frame_b, FixedTranslation2.frame_b);
  connect(Revolute4.frame_a, FixedTranslation2.frame_b);
  connect(Revolute4.frame_b, FixedTranslation3.frame_a);
  connect(Body2.frame_a, FixedTranslation3.frame_b);
  connect(Spring1.frame_a, Revolute1.frame_b);
  connect(Spring1.frame_b, Revolute2.frame_a);
  connect(Damping1.frame_a, Revolute1.frame_b);
  connect(Damping1.frame_b, Revolute2.frame_a);
  connect(FixedTranslation1.frame_b, Revolute3.frame_a);
end KinematicLoop2;

MultiBondLib.PlanarMechanics.Examples.PlanarPendulum MultiBondLib.PlanarMechanics.Examples.PlanarPendulum

a simple pendulum

MultiBondLib.PlanarMechanics.Examples.PlanarPendulum

Information


This example presents a planar pendulum.

The model is confronted with its equivalence of the Modelica.Mechanics.MultiBody library.


Modelica definition

model PlanarPendulum "a simple pendulum" 
                      extends Modelica.Icons.Example;
  PlanarMechanics.Parts.Fixed Fixed1;
  PlanarMechanics.Joints.Revolute Revolute1(initType=Modelica.Mechanics.
        MultiBody.Types.Init.PositionVelocity);
  PlanarMechanics.Parts.FixedTranslation FixedTranslation1(r={1,3});
  PlanarMechanics.Parts.Body Body1(m=1, J=0);
  inner Modelica.Mechanics.MultiBody.World world(nominalLength=5,
    animateWorld=false,
    animateGravity=false);
  Modelica.Mechanics.MultiBody.Parts.Fixed Fixed2(r={0,0,-1});
  Modelica.Mechanics.MultiBody.Parts.Body Body2(
    m=1,
    I_11=0,
    I_22=0,
    I_33=0);
  Modelica.Mechanics.MultiBody.Parts.FixedTranslation FixedTranslation2(r={1,3,
        0});
  Modelica.Mechanics.MultiBody.Joints.Revolute Revolute2(initType=
        Modelica.Mechanics.MultiBody.Types.Init.PositionVelocity);
  inner PlanarMechanics.PlanarWorld planarWorld(nominalLength=5,
    animateWorld=false,
    animateGravity=false);
equation 
  connect(Revolute1.frame_a, Fixed1.frame_b);
  connect(FixedTranslation1.frame_b, Body1.frame_a);
  connect(FixedTranslation1.frame_a, Revolute1.frame_b);
  connect(Revolute2.frame_a, Fixed2.frame_b);
  connect(Revolute2.frame_b, FixedTranslation2.frame_a);
  connect(FixedTranslation2.frame_b, Body2.frame_a);
end PlanarPendulum;

MultiBondLib.PlanarMechanics.Examples.CraneCrab3 MultiBondLib.PlanarMechanics.Examples.CraneCrab3

model of a free crane crab

MultiBondLib.PlanarMechanics.Examples.CraneCrab3

Information


This example presents a free crane crab.
The model concludes the wrapping process that started in 
MultiBondLib.Examples.CraneCrab2

The model is confronted with its equivalence of the Modelica.Mechanics.MultiBody library.


Modelica definition

model CraneCrab3 "model of a free crane crab" 
                         extends Modelica.Icons.Example;
  PlanarMechanics.Parts.Fixed Fixed1;
  PlanarMechanics.Joints.Revolute Revolute1(animation=false, enforceStates=
        false,
    initType=Modelica.Mechanics.MultiBody.Types.Init.PositionVelocity);
  PlanarMechanics.Parts.FixedTranslation FixedTranslation1(r={1,3});
  PlanarMechanics.Parts.Body Body1(m=1, J=0);
  PlanarMechanics.Parts.Body Body2(m=2, J=0);
  PlanarMechanics.Joints.Prismatic Prismatic1(enforceStates=false, initType=
       Modelica.Mechanics.MultiBody.Types.Init.PositionVelocity);
  inner Modelica.Mechanics.MultiBody.World world(nominalLength=5);
  Modelica.Mechanics.MultiBody.Parts.Fixed Fixed2(r={0,0,-1}, animation=
        false);
  Modelica.Mechanics.MultiBody.Parts.Body Body3(
    m=2,
    I_11=0,
    I_22=0,
    I_33=0);
  Modelica.Mechanics.MultiBody.Parts.Body Body4(
    m=1,
    I_11=0,
    I_22=0,
    I_33=0);
  Modelica.Mechanics.MultiBody.Joints.Prismatic Prismatic2(initType=
        Modelica.Mechanics.MultiBody.Types.Init.PositionVelocity);
  Modelica.Mechanics.MultiBody.Joints.Revolute Revolute2(initType=
        Modelica.Mechanics.MultiBody.Types.Init.PositionVelocity);
  Modelica.Mechanics.MultiBody.Parts.FixedTranslation FixedTranslation2(r={1,3,
        0});
  inner PlanarMechanics.PlanarWorld planarWorld(nominalLength=5);
equation 
  connect(FixedTranslation1.frame_b, Body1.frame_a);
  connect(FixedTranslation1.frame_a, Revolute1.frame_b);
  connect(Fixed1.frame_b, Prismatic1.frame_a);
  connect(Prismatic1.frame_b, Body2.frame_a);
  connect(Prismatic1.frame_b, Revolute1.frame_a);
  connect(FixedTranslation2.frame_b, Body4.frame_a);
  connect(FixedTranslation2.frame_a, Revolute2.frame_b);
  connect(Prismatic2.frame_a, Fixed2.frame_b);
  connect(Prismatic2.frame_b, Body3.frame_a);
  connect(Revolute2.frame_a, Prismatic2.frame_b);
end CraneCrab3;

HTML-documentation generated by Dymola Thu Aug 31 09:47:39 2006.