MultiBondLib.Examples

Basic examples for MultiBond Graphs

Information


This package contains various examples.

These examples demonstrate the usage of multi bond graphs.

For all these examples the following simulation setup is proposed.

Package Content

NameDescription
MultiBondLib.Examples.ElectricCircuit ElectricCircuit models of an electric circuit
MultiBondLib.Examples.PlanarPendulum PlanarPendulum multibond graph of a planar pendulum
MultiBondLib.Examples.CraneCrab1 CraneCrab1 multibond graph of a free crane crab
MultiBondLib.Examples.CraneCrab2 CraneCrab2 multibond graph of a free crane crab


MultiBondLib.Examples.ElectricCircuit MultiBondLib.Examples.ElectricCircuit

models of an electric circuit

MultiBondLib.Examples.ElectricCircuit

Information


This example presents two models of the same electric circuit.
The circuit is modeled by a single bond graph and by a multibond graph.


Modelica definition

model ElectricCircuit "models of an electric circuit" 
  extends Modelica.Icons.Example;
  import SI = Modelica.SIunits;
  
  SI.Voltage Vleft_Single "voltage on the left hand side of the C-field";
  SI.Voltage Vright_Single "voltage on the right hand side of the C-field";
  SI.Voltage Vleft_Multi "voltage on the left hand side of the C-field";
  SI.Voltage Vright_Multi "voltage on the right hand side of the C-field";
  
protected 
  Bonds.MultiBond MultiBond1;
  Passive.R R1(R={30,75});
  BondLib.Passive.R R_right(R=75);
  BondLib.Passive.C C_middle(C=0.025);
  BondLib.Bonds.Bond Bond2;
  BondLib.Bonds.Bond Bond3;
  BondLib.Bonds.Bond Bond4;
  BondLib.Bonds.Bond Bond1;
  inner Defaults MBG_defaults(n=2);
  BondLib.Junctions.J1p3 J1p3_1;
  BondLib.Passive.C C_left(C=0.02);
  BondLib.Junctions.J0p3 J0p3_2;
  BondLib.Bonds.Bond Bond5;
  BondLib.Bonds.Bond Bond6;
  BondLib.Passive.C C_right(C=0.05);
  BondLib.Bonds.Bond Bond7;
  Bonds.MultiBond MultiBond2;
  Bonds.MultiBond MultiBond5;
  Passive.CF CF1(C=[0.045,-0.025; -0.025,0.075]);
  BondLib.Bonds.Bond Bond8;
  BondLib.Junctions.J0p4 J0p4_1;
  BondLib.Passive.R R_left(R=30);
  BondLib.Sources.Sf Sf_left(f0=0.5);
  Junctions.J0 J0_1;
  Sources.Sf Sf1(f0={0.5,0});
equation 
  
   Vleft_Single = R_left.e;
   Vright_Single = R_right.e;
   Vleft_Multi = R1.e[1];
   Vright_Multi = R1.e[2];
  
  connect(MultiBond2.MultiBondCon2, CF1.MultiBondCon1);
  connect(C_left.BondCon1, Bond4.BondCon2);
  connect(J1p3_1.BondCon2, Bond5.BondCon1);
  connect(J1p3_1.BondCon3, Bond3.BondCon1);
  connect(J1p3_1.BondCon1, Bond2.BondCon2);
  connect(Bond3.BondCon2, C_middle.BondCon1);
  connect(J0p3_2.BondCon1, Bond5.BondCon2);
  connect(J0p3_2.BondCon3, Bond7.BondCon1);
  connect(J0p3_2.BondCon2, Bond6.BondCon1);
  connect(Bond6.BondCon2, R_right.BondCon1);
  connect(C_right.BondCon1, Bond7.BondCon2);
  connect(Bond8.BondCon1, J0p4_1.BondCon4);
  connect(J0p4_1.BondCon2, Bond2.BondCon1);
  connect(J0p4_1.BondCon3, Bond4.BondCon1);
  connect(J0p4_1.BondCon1, Bond1.BondCon2);
  connect(R_left.BondCon1, Bond8.BondCon2);
  connect(Sf_left.BondCon1, Bond1.BondCon1);
  connect(R1.MultiBondCon1, MultiBond5.MultiBondCon2);
  connect(J0_1.MultiBondCon1, MultiBond1.MultiBondCon2);
  connect(J0_1.MultiBondCon3, MultiBond5.MultiBondCon1);
  connect(J0_1.MultiBondCon2, MultiBond2.MultiBondCon1);
  connect(Sf1.MultiBondCon1, MultiBond1.MultiBondCon1);
end ElectricCircuit;

MultiBondLib.Examples.PlanarPendulum MultiBondLib.Examples.PlanarPendulum

multibond graph of a planar pendulum

MultiBondLib.Examples.PlanarPendulum

Information


This example presents the bondgraphic model of a planar pendulum

Modelica definition

model PlanarPendulum "multibond graph of a planar pendulum" 
  extends Modelica.Icons.Example;
  import SI = Modelica.SIunits;
  
  SI.Angle phi "angle of the pendulum";
  SI.Velocity vx "x-velocity of the point mass";
  SI.Velocity vy "y-velocity of the point mass";
  
protected 
  Junctions.J1 J1_2(n=3);
  Sources.Se gravity(n=3, e0={0,-9.81,0});
  Passive.I mass(n=3, I={1,1,0});
  Bonds.MultiBond MultiBond6;
  Bonds.MultiBond MultiBond7;
  Junctions.J1 J1_1(n=3);
  Sources.Sf Fixation(n=2, f0={0});
  Sources.Se NoTorque(e0={0}, n=1);
  Compositions.Composition Composition1(nA=2, nB=1);
  Bonds.MultiBond MultiBond1(n=2);
  Bonds.MultiBond MultiBond2(n=1);
  Bonds.MultiBond MultiBond3;
  Bonds.MultiBond MultiBond4;
  Bonds.MultiBond MultiBond5;
  PlanarMechanics.AdditionalMBG.translationalTF rod(d={1,-3});
  Sensors.Dq Angle(n=3, q_start={0,0,0});
  Bonds.MultiBond MultiBond8;
  inner Defaults MBG_defaults(n=3);
equation 
  
  phi = Angle.q[3];
  vx = mass.f[1];
  vy = mass.f[2];
  
  connect(MultiBond7.MultiBondCon2, J1_2.MultiBondCon1);
  connect(MultiBond7.MultiBondCon1, gravity.MultiBondCon1);
  connect(MultiBond6.MultiBondCon2, mass.MultiBondCon1);
  connect(MultiBond6.MultiBondCon1, J1_2.MultiBondCon2);
  connect(MultiBond1.MultiBondCon2, Composition1.MultiBondCon1);
  connect(MultiBond1.MultiBondCon1, Fixation.MultiBondCon1);
  connect(MultiBond2.MultiBondCon2, Composition1.MultiBondCon2);
  connect(MultiBond2.MultiBondCon1, NoTorque.MultiBondCon1);
  connect(MultiBond3.MultiBondCon2, J1_1.MultiBondCon1);
  connect(MultiBond3.MultiBondCon1, Composition1.MultiBondCon3);
  connect(MultiBond4.MultiBondCon1, J1_1.MultiBondCon3);
  connect(MultiBond5.MultiBondCon2, J1_2.MultiBondCon4);
  connect(MultiBond4.MultiBondCon2, rod.MultiBondCon1);
  connect(rod.MultiBondCon2, MultiBond5.MultiBondCon1);
  connect(Angle.q[3], rod.phi);
  connect(MultiBond8.MultiBondCon2, Angle.MultiBondCon1);
  connect(MultiBond8.MultiBondCon1, J1_1.MultiBondCon2);
end PlanarPendulum;

MultiBondLib.Examples.CraneCrab1 MultiBondLib.Examples.CraneCrab1

multibond graph of a free crane crab

MultiBondLib.Examples.CraneCrab1

Information


This example presents the multibond graph of a free crane crab.
A second implementation of this example is provided in 
MultiBondLib.Examples.CraneCrab2.


Modelica definition

model CraneCrab1 "multibond graph of a free crane crab" 
  extends Modelica.Icons.Example;
  import SI = Modelica.SIunits;
  
  SI.Position x1 "x-position of the crab";
  SI.Position x2 "x-position of the pendulum";
  SI.Position y2 "y-position of the pendulum";
  SI.Angle phi2 "angle of the pendulum";
  
protected 
  Junctions.J1 J1_2(n=3);
  Sources.Se gravity1(n=3, e0={0,-9.81,0});
  Passive.I mass1(n=3, I={1,1,1});
  Bonds.MultiBond MultiBond6(n=3);
  Bonds.MultiBond MultiBond7(n=3);
  Sources.Sf Wall(f0={0}, n=3);
  PlanarMechanics.AdditionalMBG.translationalTF translationalTF1(d={1,0});
  Sources.Se Prismatic(n=1, e0={0});
  Junctions.J1 J1_3(n=1);
  Bonds.MultiBond MultiBond2(n=1);
  Bonds.MultiBond MultiBond3(n=1);
  PlanarMechanics.AdditionalMBG.prismaticTF prismaticTF1(d={1,0});
  Junctions.J0Partial J0Partial1(
    n=3,
    nPartial=2,
    order={1,2,3});
  Bonds.MultiBond MultiBond4;
  Bonds.MultiBond MultiBond5;
  Bonds.MultiBond MultiBond8(n=2);
  Sensors.Dq JointLength(n=1, q_start={0},
    f(stateSelect=StateSelect.always));
  Bonds.MultiBond MultiBond9;
  Bonds.MultiBond MultiBond10;
  Junctions.J0Partial J0Partial2(
    n=3,
    nPartial=1,
    order={3,1,2});
  Sources.Se revolute(n=1, e0={0});
  Bonds.MultiBond MultiBond11(n=1);
  Bonds.MultiBond MultiBond12;
  PlanarMechanics.AdditionalMBG.translationalTF rod(d={1,-3});
  Bonds.MultiBond MultiBond14;
  Junctions.J1 J1_5(n=3);
  Passive.I mass2(n=3, I={1,1,0});
  Bonds.MultiBond MultiBond15;
  Sources.Se gravity2(n=3, e0={0,-9.81,0});
  Bonds.MultiBond MultiBond16;
  PlanarMechanics.AdditionalMBG.Translation Translation1(d={1,0});
  PlanarMechanics.AdditionalMBG.Translation Translation2(d={1,-3});
  Modelica.Blocks.Sources.Constant Constant1[3](k={0,0,0});
  Junctions.J1 J1_6(n=1);
  Bonds.MultiBond MultiBond17(n=1);
  Sensors.Dq revoluteAngle(n=1, q_start={0},
    q(stateSelect=StateSelect.always),
    f(stateSelect=StateSelect.always));
  Bonds.MultiBond MultiBond13(
                             n=1);
  Bonds.MultiBond MultiBond18(
                             n=1);
  inner Defaults MBG_defaults(n=3);
  PlanarMechanics.AdditionalMBG.Translation Translation3(d={1,0});
  Interfaces.RealSignal q1[3];
equation 
  x1 = JointLength.q[1];
  {x2,y2,phi2} = q1;
  
  connect(MultiBond7.MultiBondCon1, gravity1.MultiBondCon1);
  connect(MultiBond6.MultiBondCon2, mass1.MultiBondCon1);
  connect(MultiBond2.MultiBondCon1, Prismatic.MultiBondCon1);
  connect(prismaticTF1.MultiBondConA, MultiBond3.MultiBondCon2);
  connect(MultiBond4.MultiBondCon1, translationalTF1.MultiBondCon2);
  connect(MultiBond4.MultiBondCon2, J0Partial1.MultiBondCon1);
  connect(MultiBond5.MultiBondCon1, J0Partial1.MultiBondCon2);
  connect(MultiBond5.MultiBondCon2, J1_2.MultiBondCon1);
  connect(MultiBond8.MultiBondCon2, J0Partial1.MultiBondCon3);
  connect(prismaticTF1.MultiBondConB, MultiBond8.MultiBondCon1);
  connect(MultiBond7.MultiBondCon2, J1_2.MultiBondCon3);
  connect(MultiBond9.MultiBondCon2, translationalTF1.MultiBondCon1);
  connect(J1_3.MultiBondCon3, MultiBond3.MultiBondCon1);
  connect(MultiBond2.MultiBondCon2, J1_3.MultiBondCon4);
  connect(MultiBond6.MultiBondCon1, J1_2.MultiBondCon4);
  connect(MultiBond10.MultiBondCon1, J1_2.MultiBondCon2);
  connect(MultiBond10.MultiBondCon2, J0Partial2.MultiBondCon1);
  connect(MultiBond11.MultiBondCon2, J0Partial2.MultiBondCon3);
  connect(MultiBond12.MultiBondCon1, J0Partial2.MultiBondCon2);
  connect(MultiBond14.MultiBondCon1, rod.MultiBondCon2);
  connect(MultiBond14.MultiBondCon2, J1_5.MultiBondCon1);
  connect(MultiBond15.MultiBondCon1, J1_5.MultiBondCon4);
  connect(MultiBond15.MultiBondCon2, mass2.MultiBondCon1);
  connect(MultiBond16.MultiBondCon2, J1_5.MultiBondCon3);
  connect(gravity2.MultiBondCon1, MultiBond16.MultiBondCon1);
  connect(J1_6.MultiBondCon3, MultiBond11.MultiBondCon1);
  connect(MultiBond17.MultiBondCon2, J1_6.MultiBondCon4);
  connect(MultiBond17.MultiBondCon1, revolute.MultiBondCon1);
  connect(MultiBond12.MultiBondCon2, rod.MultiBondCon1);
  connect(MultiBond13.MultiBondCon2, JointLength.MultiBondCon1);
  connect(MultiBond13.MultiBondCon1, J1_3.MultiBondCon1);
  connect(MultiBond18.MultiBondCon1, J1_6.MultiBondCon2);
  connect(MultiBond18.MultiBondCon2, revoluteAngle.MultiBondCon1);
  connect(prismaticTF1.phi, Constant1[3].y);
  connect(Translation1.q1, Constant1.y);
  connect(JointLength.q[1], Translation1.ampl);
  connect(translationalTF1.phi, Constant1[3].y);
  connect(translationalTF1.ampl, JointLength.q[1]);
  connect(Translation1.q2, Translation3.q1);
  connect(revoluteAngle.q[1], Translation3.phi);
  connect(Translation3.q2, Translation2.q1);
  connect(rod.phi, Translation3.q2[3]);
  connect(Wall.MultiBondCon1, MultiBond9.MultiBondCon1);
  connect(Translation2.q2, q1);
end CraneCrab1;

MultiBondLib.Examples.CraneCrab2 MultiBondLib.Examples.CraneCrab2

multibond graph of a free crane crab

MultiBondLib.Examples.CraneCrab2

Information


This example presents the multibond graph of a free crane crab.
The mechanic system is separated into meaningful subparts that are marked by rectangular frames.
This example shows the first step of the wrapping process.
The resulting wrapped models are presented in 
PlanarMechanics.Examples.CraneCrab3.


Modelica definition

model CraneCrab2 "multibond graph of a free crane crab" 
   extends Modelica.Icons.Example;
  import SI = Modelica.SIunits;
  
  SI.Position x1 "x-position of the crab";
  SI.Position x2 "x-position of the pendulum";
  SI.Position y2 "y-position of the pendulum";
  SI.Angle phi2 "angle of the pendulum";
  
protected 
  Junctions.J1 J1_2(n=3);
  Sources.Se gravity1(n=3, e0={0,-9.81,0});
  Passive.I mass1(n=3, I={1,1,1});
  Bonds.MultiBond MultiBond6;
  Bonds.MultiBond MultiBond7;
  Junctions.J1 J1_1(n=3);
  Sources.Sf Wall(f0={0}, n=3);
  Bonds.MultiBond MultiBond1;
  PlanarMechanics.AdditionalMBG.translationalTF translationalTF1( d={1,0});
  Sources.Se Prismatic(n=1, e0={0});
  Junctions.J1 J1_3(n=1);
  Bonds.MultiBond MultiBond2(n=1);
  Bonds.MultiBond MultiBond3(n=1);
  PlanarMechanics.AdditionalMBG.prismaticTF prismaticTF1(d={1,0});
  Junctions.J0Partial J0Partial1(
    n=3,
    nPartial=2,
    order={1,2,3});
  Bonds.MultiBond MultiBond4;
  Bonds.MultiBond MultiBond5;
  Bonds.MultiBond MultiBond8(n=2);
  Sensors.Dq JointLength(n=1, q_start={0},
    f(stateSelect=StateSelect.always));
  Bonds.MultiBond MultiBond9;
  Bonds.MultiBond MultiBond10;
  Junctions.J0Partial J0Partial2(
    n=3,
    nPartial=1,
    order={3,1,2});
  Sources.Se Revolute(n=1, e0={0});
  Bonds.MultiBond MultiBond11(n=1);
  Bonds.MultiBond MultiBond12;
  PlanarMechanics.AdditionalMBG.translationalTF translationalTF2(d={1,-3});
  Bonds.MultiBond MultiBond14;
  Junctions.J1 J1_5(n=3);
  Passive.I mass2(n=3, I={1,1,0});
  Bonds.MultiBond MultiBond15;
  Sources.Se gravity2(n=3, e0={0,-9.81,0});
  Bonds.MultiBond MultiBond16;
  PlanarMechanics.AdditionalMBG.Translation Translation1(d={1,0});
  PlanarMechanics.AdditionalMBG.Translation Translation2(d={1,-3});
  Modelica.Blocks.Sources.Constant Constant1[3](k={0,0,0});
  Junctions.J1 J1_6(n=1);
  Bonds.MultiBond MultiBond17(n=1);
  Sensors.Dq RevoluteAngle(n=1, q_start={0},
    f(stateSelect=StateSelect.always));
  Junctions.J1 J1_4(n=3);
  Bonds.MultiBond MultiBond13;
  Junctions.J1 J1_7(n=3);
  Bonds.MultiBond MultiBond18;
  Junctions.J1 J1_8(n=3);
  Bonds.MultiBond MultiBond19;
  Junctions.J1 J1_9(n=3);
  Bonds.MultiBond MultiBond20;
  Junctions.J1 J1_10(n=3);
  Bonds.MultiBond MultiBond21;
  Bonds.MultiBond MultiBond22(
                             n=1);
  Bonds.MultiBond MultiBond23(
                             n=1);
  inner Defaults MBG_defaults(n=3);
  PlanarMechanics.AdditionalMBG.Translation Translation3(d={1,-3});
protected 
  Interfaces.RealSignal q1[3];
equation 
  
  x1 = JointLength.q[1];
  {x2,y2,phi2} = q1;
  
  connect(MultiBond7.MultiBondCon1, gravity1.MultiBondCon1);
  connect(MultiBond6.MultiBondCon2, mass1.MultiBondCon1);
  connect(MultiBond1.MultiBondCon1, Wall.MultiBondCon1);
  connect(MultiBond1.MultiBondCon2, J1_1.MultiBondCon1);
  connect(MultiBond2.MultiBondCon1, Prismatic.MultiBondCon1);
  connect(prismaticTF1.MultiBondConA, MultiBond3.MultiBondCon2);
  connect(MultiBond4.MultiBondCon1, translationalTF1.MultiBondCon2);
  connect(MultiBond4.MultiBondCon2, J0Partial1.MultiBondCon1);
  connect(MultiBond5.MultiBondCon1, J0Partial1.MultiBondCon2);
  connect(MultiBond8.MultiBondCon2, J0Partial1.MultiBondCon3);
  connect(prismaticTF1.MultiBondConB, MultiBond8.MultiBondCon1);
  connect(MultiBond7.MultiBondCon2, J1_2.MultiBondCon3);
  connect(MultiBond9.MultiBondCon2, translationalTF1.MultiBondCon1);
  connect(J1_3.MultiBondCon3, MultiBond3.MultiBondCon1);
  connect(MultiBond2.MultiBondCon2, J1_3.MultiBondCon4);
  connect(MultiBond6.MultiBondCon1, J1_2.MultiBondCon4);
  connect(MultiBond10.MultiBondCon1, J1_2.MultiBondCon2);
  connect(MultiBond11.MultiBondCon2, J0Partial2.MultiBondCon3);
  connect(MultiBond12.MultiBondCon1, J0Partial2.MultiBondCon2);
  connect(MultiBond14.MultiBondCon1, translationalTF2.MultiBondCon2);
  connect(MultiBond15.MultiBondCon1, J1_5.MultiBondCon4);
  connect(MultiBond15.MultiBondCon2, mass2.MultiBondCon1);
  connect(MultiBond16.MultiBondCon2, J1_5.MultiBondCon3);
  connect(gravity2.MultiBondCon1, MultiBond16.MultiBondCon1);
  connect(J1_6.MultiBondCon3, MultiBond11.MultiBondCon1);
  connect(MultiBond17.MultiBondCon2, J1_6.MultiBondCon4);
  connect(MultiBond17.MultiBondCon1, Revolute.MultiBondCon1);
  connect(J1_4.MultiBondCon2, MultiBond9.MultiBondCon1);
  connect(MultiBond13.MultiBondCon2, J1_4.MultiBondCon1);
  connect(MultiBond13.MultiBondCon1, J1_1.MultiBondCon2);
  connect(J1_7.MultiBondCon1, MultiBond5.MultiBondCon2);
  connect(MultiBond18.MultiBondCon1, J1_7.MultiBondCon2);
  connect(MultiBond18.MultiBondCon2, J1_2.MultiBondCon1);
  connect(MultiBond19.MultiBondCon1, J1_8.MultiBondCon2);
  connect(MultiBond19.MultiBondCon2, J0Partial2.MultiBondCon1);
  connect(J1_8.MultiBondCon1, MultiBond10.MultiBondCon2);
  connect(MultiBond20.MultiBondCon1, J1_9.MultiBondCon2);
  connect(MultiBond20.MultiBondCon2, J1_5.MultiBondCon1);
  connect(J1_9.MultiBondCon1, MultiBond14.MultiBondCon2);
  connect(MultiBond21.MultiBondCon1, J1_10.MultiBondCon2);
  connect(J1_10.MultiBondCon1, MultiBond12.MultiBondCon2);
  connect(MultiBond21.MultiBondCon2, translationalTF2.MultiBondCon1);
  connect(MultiBond22.MultiBondCon1, J1_3.MultiBondCon1);
  connect(MultiBond22.MultiBondCon2, JointLength.MultiBondCon1);
  connect(MultiBond23.MultiBondCon1, J1_6.MultiBondCon1);
  connect(MultiBond23.MultiBondCon2, RevoluteAngle.MultiBondCon1);
  connect(RevoluteAngle.q[1], Translation3.phi);
  connect(Translation3.q2, Translation2.q1);
  connect(Translation2.q2, q1);
  connect(Translation2.q1[3], translationalTF2.phi);
  connect(Translation1.q2, Translation3.q1);
  connect(Translation1.q1, Constant1.y);
  connect(prismaticTF1.phi, Constant1[3].y);
  connect(translationalTF1.phi, Constant1[3].y);
  connect(JointLength.q[1], Translation1.ampl);
  connect(JointLength.q[1], translationalTF1.ampl);
end CraneCrab2;

HTML-documentation generated by Dymola Thu Aug 31 09:48:11 2006.