4.8
0
False
C:\users\wouter\My Documents\studie\ma\mahd\implementation\SCARA\07_marker_height\arm_model.emx
2020-7-27 16:14:10
True
';
type 'Mainmodel-v2'
end;
implementation bg
submodels
Body1 472 336
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type 'Submodel-Equation'
ports
signal in input [4,4];
end;
implementation eq
parameters
real dimension[3] = [0.0048;0.009;0.065] {m};
variables
real position[3];
real rotation[3];
real R[3,3];
equations
position = input[1:3,4];
rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input);
//[input[3,2];input[1,3];input[2,1]];
R = input[1:3,1:3];implementation_end;
Body2 360 512
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type 'Submodel-Equation'
ports
signal in input [4,4];
end;
implementation eq
parameters
real dimension[3] = [0.005;0.025;0.01] {m};
variables
real position[3];
real rotation[3];
real R[3,3];
equations
position = input[1:3,4];
rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input);
//[input[3,2];input[1,3];input[2,1]];
R = input[1:3,1:3];implementation_end;
Body3 104 312
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type 'Submodel-Equation'
ports
signal in input [4,4];
end;
implementation eq
parameters
real dimension[3] = [0.0045;0.01;0.065] {m};
variables
real position[3];
real rotation[3];
real R[3,3];
equations
position = input[1:3,4];
rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input);
//[input[3,2];input[1,3];input[2,1]];
R = input[1:3,1:3];implementation_end;
Body4 480 64
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type 'Submodel-Equation'
ports
signal in input [4,4];
end;
implementation eq
parameters
real dimension[3] = [0.005;0.05;0.01] {m};
variables
real position[3];
real rotation[3];
real R[3,3];
equations
position = input[1:3,4];
rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input);
//[input[3,2];input[1,3];input[2,1]];
R = input[1:3,1:3];implementation_end;
Body5 992 48
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type 'Submodel-Equation'
ports
signal in input [4,4];
end;
implementation eq
parameters
real dimension[3] = [0.005;0.025;0.01] {m};
variables
real position[3];
real rotation[3];
real R[3,3];
equations
position = input[1:3,4];
rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input);
//[input[3,2];input[1,3];input[2,1]];
R = input[1:3,1:3];implementation_end;
Body6 1416 184
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type 'Submodel-Equation'
ports
signal in input [4,4];
end;
implementation eq
parameters
real dimension[3] = [0.005;0.025;0.01] {m};
variables
real position[3];
real rotation[3];
real R[3,3];
equations
position = input[1:3,4];
rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input);
//[input[3,2];input[1,3];input[2,1]];
R = input[1:3,1:3];implementation_end;
COM_body1 624 352
description '4.81Bond Graph\MR\center_of_mass_v2.emx2020-7-21 12:24:38parameters
real I [3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6] {N.m.s};
real m = 0.00455 {kg};';
type Submodel
ports
signal in Hin [4,4];
signal out Hout [4,4];
power out p [6,1];
end;
icon bg bottom
figures
rectangle 608 320 640 384 color 0 fill 139;
text 'COM' 624 352 color 0 'Clear Sans' 16;
terminals
Hin 608 336 fixed;
p 608 368 fixed;
end;
implementation bg
submodels
AdHi0 544 400
description '4.01False2007-9-25 12:3:3True';
type MTF
ports
power in p1 [6,1];
power out p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg left
figures
text 'MTF' 544 400 color 0 18 bold;
end;
implementation eq
variables
real onlyRotH[4,4];
code
//Only rotations with respect to the inertial system matter!
onlyRotH = H;
onlyRotH[1,4] = 0;
onlyRotH[2,4] = 0;
onlyRotH[3,4] = 0;
p2.e = transpose(Adjoint(onlyRotH)) * p1.e;
p1.f = Adjoint(onlyRotH) * p2.f;
implementation_end;
EJS 616 336
description '4.01False2007-10-31 11:43:6True';
type MGY
ports
power in p1 [6,1];
end;
icon bg top
figures
text 'MGY' 616 336 color 0 18 bold;
end;
implementation eq
//EJS / Gyroscopic effects
parameters
real global I[3];
real global m;
variables
real II[6,6]; //Inertial tensor
real Q[6,6];
real QI[6,6];
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
Q = transpose(adjoint(p1.f));
QI = Q*II;
p1.e = QI*p1.f;implementation_end;
Gravity 624 400
description '4.01False2007-9-25 12:3:26True';
type Se
ports
power out p [6,1];
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'Se' 624 400 color 0 18 bold;
end;
implementation eq
parameters
real global m;
variables
real effort[6];
equations
effort = [0;0;0;0;0;-g_n*m];
p.e = effort;
implementation_end;
InertialTensor 544 272
description '4.01False
Bond Graph\3D\I-3.emx
2007-9-25 12:12:14
';
type 'I-3'
ports
power in p [6,1];
signal out state [6,1];
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 544 272 color 0 18 bold;
end;
implementation eq
parameters
real global I[3];
real global m;
variables
real II[6,6]; //Inertial tensor
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
state = int(p.e); //state = generalized momentum
p.f = inverse(II)*state;
implementation_end;
plug Hin 433.4 496;
plug Hout 691.2 496;
plug p 439.4 336;
Splitter1 544 496
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 540.8 492.8 547.2 499.2 color -1 fill 0;
ellipse 539.7 491.7 548.3 500.3 color -1;
terminals
input 544 496 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Ta0j 544 336
description '
4.0
1
False
Bond Graph\OneJunction.emx
2007-9-27 9:51:18
True
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg bottom
figures
text '1' 544 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
ZeroJunction1 504 336
description '
4.2
1
False
Bond Graph\ZeroJunction.emx
2011-11-29 16:45:16
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg
figures
text '0' 504 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
AdHi0\p2 => Ta0j\p;
Gravity\p => AdHi0\p1;
Hin -> Splitter1\input;
Splitter1\output -> AdHi0\H;
Splitter1\output -> Hout;
Ta0j\p => EJS\p1;
Ta0j\p => InertialTensor\p;
ZeroJunction1\p => p;
ZeroJunction1\p => Ta0j\p;
end;
implementation_end;
COM_body2 344 672
description '4.81Bond Graph\MR\center_of_mass_v2.emx2020-7-21 12:24:38parameters
real density = 1400 {kg/m3};
real dimension[3] = [0.005;0.025;0.01] {m};
variables
real I[3,1] {N.m.s};
real m {kg};
initialequations
m = dimension[1] * dimension[2] * dimension[3] * density;
I[1] = m/12 * ( dimension[2]^2 + dimension[3]^2);
I[2] = m/12 * ( dimension[1]^2 + dimension[3]^2);
I[3] = m/12 * ( dimension[1]^2 + dimension[2]^2);';
type Submodel
ports
signal in Hin [4,4];
signal out Hout [4,4];
power out p [6,1];
end;
icon bg bottom
figures
rectangle 312 656 376 688 color 0 fill 139;
text 'COM' 344 672 color 0 'Clear Sans' 16;
terminals
Hin 360 656 fixed;
p 328 656 fixed;
end;
implementation bg
submodels
AdHi0 544 400
description '4.01False2007-9-25 12:3:3True';
type MTF
ports
power in p1 [6,1];
power out p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg left
figures
text 'MTF' 544 400 color 0 18 bold;
end;
implementation eq
variables
real onlyRotH[4,4];
code
//Only rotations with respect to the inertial system matter!
onlyRotH = H;
onlyRotH[1,4] = 0;
onlyRotH[2,4] = 0;
onlyRotH[3,4] = 0;
p2.e = transpose(Adjoint(onlyRotH)) * p1.e;
p1.f = Adjoint(onlyRotH) * p2.f;
implementation_end;
EJS 624 336
description '4.01False2007-10-31 11:43:6True';
type MGY
ports
power in p1 [6,1];
end;
icon bg top
figures
text 'MGY' 624 336 color 0 18 bold;
end;
implementation eq
//EJS / Gyroscopic effects
variables
real global I[3];
real global m;
real II[6,6]; //Inertial tensor
real Q[6,6];
real QI[6,6];
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
Q = transpose(adjoint(p1.f));
QI = Q*II;
p1.e = QI*p1.f;implementation_end;
Gravity 624 400
description '4.01False2007-9-25 12:3:26True';
type Se
ports
power out p [6,1];
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'Se' 624 400 color 0 18 bold;
end;
implementation eq
variables
real global m;
real effort[6];
equations
effort = [0;0;0;0;0;-g_n*m];
p.e = effort;
implementation_end;
InertialTensor 544 256
description '4.01False
Bond Graph\3D\I-3.emx
2007-9-25 12:12:14
';
type 'I-3'
ports
power in p [6,1];
signal out state [6,1];
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 544 256 color 0 18 bold;
end;
implementation eq
variables
real global I[3];
real global m;
real II[6,6]; //Inertial tensor
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
state = int(p.e); //state = generalized momentum
p.f = inverse(II)*state;
implementation_end;
plug Hin 433.4 496;
plug Hout 691.2 496;
plug p 439.4 336;
Splitter1 544 496
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 540.8 492.8 547.2 499.2 color -1 fill 0;
ellipse 539.7 491.7 548.3 500.3 color -1;
terminals
input 544 496 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Ta0j 544 336
description '
4.0
1
False
Bond Graph\OneJunction.emx
2007-9-27 9:51:18
True
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg bottom
figures
text '1' 544 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
ZeroJunction1 504 336
description '
4.2
1
False
Bond Graph\ZeroJunction.emx
2011-11-29 16:45:16
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg
figures
text '0' 504 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
AdHi0\p2 => Ta0j\p;
Gravity\p => AdHi0\p1;
Hin -> Splitter1\input;
Splitter1\output -> AdHi0\H;
Splitter1\output -> Hout;
Ta0j\p => EJS\p1;
Ta0j\p => InertialTensor\p;
ZeroJunction1\p => p;
ZeroJunction1\p => Ta0j\p;
end;
implementation_end;
COM_body3 272 328
description '4.81Bond Graph\MR\center_of_mass_v2.emx2020-7-21 12:24:38parameters
real I [3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6] {N.m.s};
real m = 0.00455 {kg};';
type Submodel
ports
signal in Hin [4,4];
signal out Hout [4,4];
power out p [6,1];
end;
icon bg bottom
figures
rectangle 256 296 288 360 color 0 fill 139;
text 'COM' 272 328 color 0 'Clear Sans' 16;
terminals
Hin 256 312 fixed;
p 256 344 fixed;
end;
implementation bg
submodels
AdHi0 544 400
description '4.01False2007-9-25 12:3:3True';
type MTF
ports
power in p1 [6,1];
power out p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg left
figures
text 'MTF' 544 400 color 0 18 bold;
end;
implementation eq
variables
real onlyRotH[4,4];
code
//Only rotations with respect to the inertial system matter!
onlyRotH = H;
onlyRotH[1,4] = 0;
onlyRotH[2,4] = 0;
onlyRotH[3,4] = 0;
p2.e = transpose(Adjoint(onlyRotH)) * p1.e;
p1.f = Adjoint(onlyRotH) * p2.f;
implementation_end;
EJS 616 336
description '4.01False2007-10-31 11:43:6True';
type MGY
ports
power in p1 [6,1];
end;
icon bg top
figures
text 'MGY' 616 336 color 0 18 bold;
end;
implementation eq
//EJS / Gyroscopic effects
parameters
real global I[3];
real global m;
variables
real II[6,6]; //Inertial tensor
real Q[6,6];
real QI[6,6];
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
Q = transpose(adjoint(p1.f));
QI = Q*II;
p1.e = QI*p1.f;implementation_end;
Gravity 624 400
description '4.01False2007-9-25 12:3:26True';
type Se
ports
power out p [6,1];
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'Se' 624 400 color 0 18 bold;
end;
implementation eq
parameters
real global m;
variables
real effort[6];
equations
effort = [0;0;0;0;0;-g_n*m];
p.e = effort;
implementation_end;
InertialTensor 544 272
description '4.01False
Bond Graph\3D\I-3.emx
2007-9-25 12:12:14
';
type 'I-3'
ports
power in p [6,1];
signal out state [6,1];
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 544 272 color 0 18 bold;
end;
implementation eq
parameters
real global I[3];
real global m;
variables
real II[6,6]; //Inertial tensor
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
state = int(p.e); //state = generalized momentum
p.f = inverse(II)*state;
implementation_end;
plug Hin 433.4 496;
plug Hout 691.2 496;
plug p 439.4 336;
Splitter1 544 496
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 540.8 492.8 547.2 499.2 color -1 fill 0;
ellipse 539.7 491.7 548.3 500.3 color -1;
terminals
input 544 496 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Ta0j 544 336
description '
4.0
1
False
Bond Graph\OneJunction.emx
2007-9-27 9:51:18
True
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg bottom
figures
text '1' 544 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
ZeroJunction1 504 336
description '
4.2
1
False
Bond Graph\ZeroJunction.emx
2011-11-29 16:45:16
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg
figures
text '0' 504 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
AdHi0\p2 => Ta0j\p;
Gravity\p => AdHi0\p1;
Hin -> Splitter1\input;
Splitter1\output -> AdHi0\H;
Splitter1\output -> Hout;
Ta0j\p => EJS\p1;
Ta0j\p => InertialTensor\p;
ZeroJunction1\p => p;
ZeroJunction1\p => Ta0j\p;
end;
implementation_end;
COM_body4 712 48
description '4.81Bond Graph\MR\center_of_mass_v2.emx2020-7-21 12:24:38parameters
real density = 1400 {kg/m3};
real dimension[3] = [0.005;0.075;0.01] {m};
real servoweight = 5 {g};
variables
real I[3,1] {N.m.s};
real m {kg};
real mass;
initialequations
mass = dimension[1] * dimension[2] * dimension[3] * density;
I[1] = mass/12 * ( dimension[2]^2 + dimension[3]^2);
I[2] = mass/12 * ( dimension[1]^2 + dimension[3]^2);
I[3] = mass/12 * ( dimension[1]^2 + dimension[2]^2);
m = mass + servoweight;';
type Submodel
ports
signal in Hin [4,4];
signal out Hout [4,4];
power out p [6,1];
end;
icon bg bottom
figures
rectangle 680 32 744 64 color 0 fill 139;
text 'COM' 712 48 color 0 'Clear Sans' 16;
terminals
Hin 728 64 fixed;
p 696 64 fixed;
end;
implementation bg
submodels
AdHi0 544 400
description '4.01False2007-9-25 12:3:3True';
type MTF
ports
power in p1 [6,1];
power out p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg left
figures
text 'MTF' 544 400 color 0 18 bold;
end;
implementation eq
variables
real onlyRotH[4,4];
code
//Only rotations with respect to the inertial system matter!
onlyRotH = H;
onlyRotH[1,4] = 0;
onlyRotH[2,4] = 0;
onlyRotH[3,4] = 0;
p2.e = transpose(Adjoint(onlyRotH)) * p1.e;
p1.f = Adjoint(onlyRotH) * p2.f;
implementation_end;
EJS 624 336
description '4.01False2007-10-31 11:43:6True';
type MGY
ports
power in p1 [6,1];
end;
icon bg top
figures
text 'MGY' 624 336 color 0 18 bold;
end;
implementation eq
//EJS / Gyroscopic effects
variables
real global I[3];
real global m;
real II[6,6]; //Inertial tensor
real Q[6,6];
real QI[6,6];
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
Q = transpose(adjoint(p1.f));
QI = Q*II;
p1.e = QI*p1.f;implementation_end;
Gravity 624 400
description '4.01False2007-9-25 12:3:26True';
type Se
ports
power out p [6,1];
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'Se' 624 400 color 0 18 bold;
end;
implementation eq
variables
real global m;
real effort[6];
equations
effort = [0;0;0;0;0;-g_n*m];
p.e = effort;
implementation_end;
InertialTensor 544 256
description '4.01False
Bond Graph\3D\I-3.emx
2007-9-25 12:12:14
';
type 'I-3'
ports
power in p [6,1];
signal out state [6,1];
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 544 256 color 0 18 bold;
end;
implementation eq
variables
real global I[3];
real global m;
real II[6,6]; //Inertial tensor
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
state = int(p.e); //state = generalized momentum
p.f = inverse(II)*state;
implementation_end;
plug Hin 433.4 496;
plug Hout 691.2 496;
plug p 439.4 336;
Splitter1 544 496
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 540.8 492.8 547.2 499.2 color -1 fill 0;
ellipse 539.7 491.7 548.3 500.3 color -1;
terminals
input 544 496 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Ta0j 544 336
description '
4.0
1
False
Bond Graph\OneJunction.emx
2007-9-27 9:51:18
True
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg bottom
figures
text '1' 544 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
ZeroJunction1 504 336
description '
4.2
1
False
Bond Graph\ZeroJunction.emx
2011-11-29 16:45:16
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg
figures
text '0' 504 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
AdHi0\p2 => Ta0j\p;
Gravity\p => AdHi0\p1;
Hin -> Splitter1\input;
Splitter1\output -> AdHi0\H;
Splitter1\output -> Hout;
Ta0j\p => EJS\p1;
Ta0j\p => InertialTensor\p;
ZeroJunction1\p => p;
ZeroJunction1\p => Ta0j\p;
end;
implementation_end;
COM_body5 1472 128
description '4.81Bond Graph\MR\center_of_mass_v2.emx2020-7-21 12:24:38parameters
real I [3,1] = [0.018;0.159;0.159] {mN.m.s};
real m = 0.015 {kg};';
type Submodel
ports
signal in Hin [4,4];
signal out Hout [4,4];
power out p [6,1];
end;
icon bg bottom
figures
rectangle 1456 96 1488 160 color 0 fill 139;
text 'COM' 1472 128 color 0 'Clear Sans' 16;
terminals
Hin 1456 144 fixed;
p 1456 112 fixed;
end;
implementation bg
submodels
AdHi0 544 400
description '4.01False2007-9-25 12:3:3True';
type MTF
ports
power in p1 [6,1];
power out p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg left
figures
text 'MTF' 544 400 color 0 18 bold;
end;
implementation eq
variables
real onlyRotH[4,4];
code
//Only rotations with respect to the inertial system matter!
onlyRotH = H;
onlyRotH[1,4] = 0;
onlyRotH[2,4] = 0;
onlyRotH[3,4] = 0;
p2.e = transpose(Adjoint(onlyRotH)) * p1.e;
p1.f = Adjoint(onlyRotH) * p2.f;
implementation_end;
EJS 616 336
description '4.01False2007-10-31 11:43:6True';
type MGY
ports
power in p1 [6,1];
end;
icon bg top
figures
text 'MGY' 616 336 color 0 18 bold;
end;
implementation eq
//EJS / Gyroscopic effects
parameters
real global I[3];
real global m;
variables
real II[6,6]; //Inertial tensor
real Q[6,6];
real QI[6,6];
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
Q = transpose(adjoint(p1.f));
QI = Q*II;
p1.e = QI*p1.f;implementation_end;
Gravity 624 400
description '4.01False2007-9-25 12:3:26True';
type Se
ports
power out p [6,1];
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'Se' 624 400 color 0 18 bold;
end;
implementation eq
parameters
real global m;
variables
real effort[6];
equations
effort = [0;0;0;0;0;-g_n*m];
p.e = effort;
implementation_end;
InertialTensor 544 272
description '4.01False
Bond Graph\3D\I-3.emx
2007-9-25 12:12:14
';
type 'I-3'
ports
power in p [6,1];
signal out state [6,1];
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 544 272 color 0 18 bold;
end;
implementation eq
parameters
real global I[3];
real global m;
variables
real II[6,6]; //Inertial tensor
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
state = int(p.e); //state = generalized momentum
p.f = inverse(II)*state;
implementation_end;
plug Hin 433.4 496;
plug Hout 691.2 496;
plug p 439.4 336;
Splitter1 544 496
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 540.8 492.8 547.2 499.2 color -1 fill 0;
ellipse 539.7 491.7 548.3 500.3 color -1;
terminals
input 544 496 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Ta0j 544 336
description '
4.0
1
False
Bond Graph\OneJunction.emx
2007-9-27 9:51:18
True
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg bottom
figures
text '1' 544 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
ZeroJunction1 504 336
description '
4.2
1
False
Bond Graph\ZeroJunction.emx
2011-11-29 16:45:16
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg
figures
text '0' 504 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
AdHi0\p2 => Ta0j\p;
Gravity\p => AdHi0\p1;
Hin -> Splitter1\input;
Splitter1\output -> AdHi0\H;
Splitter1\output -> Hout;
Ta0j\p => EJS\p1;
Ta0j\p => InertialTensor\p;
ZeroJunction1\p => p;
ZeroJunction1\p => Ta0j\p;
end;
implementation_end;
Ground1 564 647.5
description '
4.8
1
Bond Graph\MR\Ground.emx
2020-7-23 09:30:51
';
type Submodel
ports
power in p [6,1];
signal out output [4,4];
end;
icon bg bottom
figures
line 528 640 544 656 color 0 fill 15132390;
line 536 640 552 656 color 0 fill 15132390;
line 520 640 536 656 color 0 fill 15132390;
line 560 656 544 640 color 0 fill 15132390;
line 568 656 552 640 color 0 fill 15132390;
line 576 656 560 640 color 0 fill 15132390;
line 592 656 576 640 color 0 fill 15132390;
line 584 656 568 640 color 0 fill 15132390;
line 600 656 584 640 color 0 fill 15132390;
line 608 656 592 640 color 0 fill 15132390;
line 520 640 608 640 color 0 fill 15132390 width 2;
line 600 640 608 648 color 0 fill 15132390;
line 520 648 528 656 color 0 fill 15132390;
terminals
p 544 640 fixed;
output 576 640 fixed;
end;
implementation bg
submodels
plug p 240 88;
plug output 240 120;
OneJunction2 192 88
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 192 88 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
Sf2 136 88
description '4.01False
Bond Graph\2D\Sf-2.emx
2007-9-25 12:7:5
';
type 'Sf-2'
ports
power out p [6,1];
restrictions
causality fixed in p;
end;
icon bg bottom
figures
text 'Sf' 136 88 color 0 18 bold;
end;
implementation eq
parameters
real flow[6,1] = 0;
variables
real effort [6];
equations
p.f = flow;
effort = p.e;
implementation_end;
Zero 144 120
description '4.01False
Signal\Sources\Zero.emx
2007-9-27 15:54:36
';
type Zero
ports
signal out output [4,4];
end;
icon bg bottom
figures
rectangle 128.1 104 159.9 136 color 0 fill 15132390;
text '0' 144 120 color 16711680 18 bold;
end;
implementation eq
equations
output = eye(4);implementation_end;
end;
connections
p => OneJunction2\p;
Sf2\p => OneJunction2\p;
Zero\output -> output;
end;
implementation_end;
inverse_kinematics 712 752
description '
4.8
SCARA\inverse_kinematics_v1.emx
1
False
2020-7-10 12:26:18
False
';
type 'Submodel-Equation'
ports
signal in input [2,1] {m} ;
signal out angle1 {rad} ;
signal out angle2 {rad} ;
signal out a {rad} ;
signal out b {rad} ;
signal out c {rad} ;
signal out phi {rad} ;
end;
implementation eq
parameters
real A_length = 0.065 {m}; // length of first arm
real B_length = 0.05 {m}; // length of second arm
real to_rad = 1 {rad};
variables
real x {m}, y {m};
real C_length {m}; // length to x and y.
equations
x = input[1];
y = input[2];
phi = atan2(y, x);
C_length = sqrt(x^2 + y^2);
a = arccos ((B_length^2 + C_length^2 - A_length^2) / (2 * B_length * C_length));
b = arccos ((A_length^2 + C_length^2 - B_length^2) / (2 * A_length * C_length));
c = arccos ((A_length^2 + B_length^2 - C_length^2) / (2 * A_length * B_length));
angle1 = b + phi;
angle2 = angle1 - pi * to_rad + c;
implementation_end;
JointA 560 512
description '
4.8
1
Bond Graph\MR\joint-v3.emx
2020-7-21 12:08:53
';
type 'Submodel-v3'
ports
power in Pin [6,1];
power in Pdiff [6,1];
signal in Hin [4,4];
signal out Hout [4,4];
signal out Hdiff [4,4];
power out Pout [6,1];
end;
icon bg bottom
figures
rectangle 528 488 592 536 color 0 fill 14745599;
text 'Joint' 560 512 color 0 'Clear Sans' 16;
terminals
Pin 544 536 fixed;
Hin 576 488 fixed;
Hout 576 536 fixed;
Pout 544 488 fixed;
end;
implementation bg
submodels
AdHji 424 424
description '
4.0
1
False
Bond Graph\MTF.emx
2007-9-25 12:3:3
True
';
type MTF
ports
power out p1 [6,1];
power in p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg bottom
figures
text 'MTF' 424 424 color 0 18 bold;
end;
implementation eq
equations
p2.e = transpose(Adjoint(H)) * p1.e;
p1.f = Adjoint(H) * p2.f;implementation_end;
FlowSensor2 184 311.9
description '
4.2
1
False
Bond Graph\FlowSensor.emx
2011-11-29 15:50:53
';
knot FlowSensor
ports
power knot in p1 [6,1];
power knot out p2 [6,1];
signal knot out flow [6,1];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg ellipse
figures
ellipse 177.1 304.8 190.9 319.1 color 0 fill 16777215;
text 'f' 184 311.2 color 0;
end;
implementation eq
equations
p2.f = p1.f;
p1.e = p2.e;
flow = p1.f;
implementation_end;
Hmatrix 256 312
description '4.0Template\Submodel-Equation.emx1False2007-11-1 22:32:1False';
type 'Submodel-Equation'
ports
signal in flow [6,1];
signal out H [4,4];
end;
icon bg
figures
rectangle 224 296 288 328 color 0 fill 15132390;
text 'name' 256 312 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real init[4] = [1;0;0;0];
variables
real q[4]; //quaternions
real W[3,4]; //Quaternion Rates Matrix
real R[3,3]; //Rotation Matrix
real p[3]; //Position Vector
real dq[4];
real Wb[3,4];
equations
dq = transpose(Wb) * flow[1:3] ./ 2;
q = int(dq,init);
p = int(flow[4:6]);
W = [-q[2], q[1], -q[4], q[3];
-q[3], q[4], q[1], -q[2];
-q[4], -q[3], q[2], q[1]];
Wb = [ -q[2], q[1], q[4], -q[3];
-q[3], -q[4], q[1], q[2];
-q[4], q[3], -q[2], q[1]];
R = [q[1]^2+q[2]^2-q[3]^2-q[4]^2, 2*(q[2]*q[3]+q[1]*q[4]), 2*(q[2]*q[4]-q[1]*q[3]);
2*(q[2]*q[3]-q[1]*q[4]), q[1]^2-q[2]^2+q[3]^2-q[4]^2, 2*(q[3]*q[4]+q[1]*q[2]);
2*(q[2]*q[4]+q[1]*q[3]), 2*(q[3]*q[4]-q[1]*q[2]), q[1]^2-q[2]^2-q[3]^2+q[4]^2];
H = homogeneous(R,p);
implementation_end;
MatrixMul 320 576
description '
4.0
1
False
Signal\Block Diagram\Gain.emx
2007-9-26 12:15:12
True
';
type Gain
ports
signal in input1 [4,4];
signal out output [4,4];
signal in input2 [4,4];
end;
icon bg bottom
figures
rectangle 304.1 560 335.9 592 color 0 fill 15132390;
text 'X' 320 576 color 16711680 16 bold;
end;
implementation eq
equations
output = input2*input1; implementation_end;
plug Pin 492.1 424;
plug Pdiff 184 225;
plug Hin 130.8 576;
plug Hout 478.4 576;
plug Hdiff 320 222;
plug Pout 134.7 424;
Splitter2 320 312
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 316.8 308.8 323.2 315.2 color -1 fill 0;
ellipse 315.7 307.7 324.3 316.3 color -1;
terminals
input 320 312 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Wbai 184 424
description '
4.0
1
False
Bond Graph\ZeroJunction.emx
2007-9-27 9:51:43
True
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg bottom
figures
text '0' 184 424 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
FlowSensor2\flow -> Hmatrix\flow;
FlowSensor2\p2 => Wbai\p;
Hin -> MatrixMul\input2;
Hmatrix\H -> Splitter2\input;
MatrixMul\output -> Hout;
Pdiff => FlowSensor2\p1;
Pin => AdHji\p2;
Splitter2\output -> AdHji\H 424 312;
Splitter2\output -> Hdiff;
Splitter2\output -> MatrixMul\input1;
Wbai\p <= AdHji\p1;
Wbai\p => Pout;
end;
implementation_end;
JointB 560 192
description '
4.8
1
Bond Graph\MR\joint-v3.emx
2020-7-21 12:08:53
';
type 'Submodel-v3'
ports
power in Pin [6,1];
power in Pdiff [6,1];
signal in Hin [4,4];
signal out Hout [4,4];
signal out Hdiff [4,4];
power out Pout [6,1];
end;
icon bg bottom
figures
rectangle 528 168 592 216 color 0 fill 14745599;
text 'Joint' 560 192 color 0 'Clear Sans' 16;
terminals
Pin 544 216 fixed;
Hin 576 168 fixed;
Hout 576 216 fixed;
Pout 544 168 fixed;
end;
implementation bg
submodels
AdHji 424 424
description '
4.0
1
False
Bond Graph\MTF.emx
2007-9-25 12:3:3
True
';
type MTF
ports
power out p1 [6,1];
power in p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg bottom
figures
text 'MTF' 424 424 color 0 18 bold;
end;
implementation eq
equations
p2.e = transpose(Adjoint(H)) * p1.e;
p1.f = Adjoint(H) * p2.f;implementation_end;
FlowSensor2 184 311.9
description '
4.2
1
False
Bond Graph\FlowSensor.emx
2011-11-29 15:50:53
';
knot FlowSensor
ports
power knot in p1 [6,1];
power knot out p2 [6,1];
signal knot out flow [6,1];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg ellipse
figures
ellipse 177.1 304.8 190.9 319.1 color 0 fill 16777215;
text 'f' 184 311.2 color 0;
end;
implementation eq
equations
p2.f = p1.f;
p1.e = p2.e;
flow = p1.f;
implementation_end;
Hmatrix 256 312
description '4.0Template\Submodel-Equation.emx1False2007-11-1 22:32:1False';
type 'Submodel-Equation'
ports
signal in flow [6,1];
signal out H [4,4];
end;
icon bg
figures
rectangle 224 296 288 328 color 0 fill 15132390;
text 'name' 256 312 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real init[4] = [1;0;0;0];
variables
real q[4]; //quaternions
real W[3,4]; //Quaternion Rates Matrix
real R[3,3]; //Rotation Matrix
real p[3]; //Position Vector
real dq[4];
real Wb[3,4];
equations
dq = transpose(Wb) * flow[1:3] ./ 2;
q = int(dq,init);
p = int(flow[4:6]);
W = [-q[2], q[1], -q[4], q[3];
-q[3], q[4], q[1], -q[2];
-q[4], -q[3], q[2], q[1]];
Wb = [ -q[2], q[1], q[4], -q[3];
-q[3], -q[4], q[1], q[2];
-q[4], q[3], -q[2], q[1]];
R = [q[1]^2+q[2]^2-q[3]^2-q[4]^2, 2*(q[2]*q[3]+q[1]*q[4]), 2*(q[2]*q[4]-q[1]*q[3]);
2*(q[2]*q[3]-q[1]*q[4]), q[1]^2-q[2]^2+q[3]^2-q[4]^2, 2*(q[3]*q[4]+q[1]*q[2]);
2*(q[2]*q[4]+q[1]*q[3]), 2*(q[3]*q[4]-q[1]*q[2]), q[1]^2-q[2]^2-q[3]^2+q[4]^2];
H = homogeneous(R,p);
implementation_end;
MatrixMul 320 576
description '
4.0
1
False
Signal\Block Diagram\Gain.emx
2007-9-26 12:15:12
True
';
type Gain
ports
signal in input1 [4,4];
signal out output [4,4];
signal in input2 [4,4];
end;
icon bg bottom
figures
rectangle 304.1 560 335.9 592 color 0 fill 15132390;
text 'X' 320 576 color 16711680 16 bold;
end;
implementation eq
equations
output = input2*input1; implementation_end;
plug Pin 492.1 424;
plug Pdiff 184 225;
plug Hin 130.8 576;
plug Hout 478.4 576;
plug Hdiff 320 222;
plug Pout 134.7 424;
Splitter2 320 312
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 316.8 308.8 323.2 315.2 color -1 fill 0;
ellipse 315.7 307.7 324.3 316.3 color -1;
terminals
input 320 312 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Wbai 184 424
description '
4.0
1
False
Bond Graph\ZeroJunction.emx
2007-9-27 9:51:43
True
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg bottom
figures
text '0' 184 424 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
FlowSensor2\flow -> Hmatrix\flow;
FlowSensor2\p2 => Wbai\p;
Hin -> MatrixMul\input2;
Hmatrix\H -> Splitter2\input;
MatrixMul\output -> Hout;
Pdiff => FlowSensor2\p1;
Pin => AdHji\p2;
Splitter2\output -> AdHji\H 424 312;
Splitter2\output -> Hdiff;
Splitter2\output -> MatrixMul\input1;
Wbai\p <= AdHji\p1;
Wbai\p => Pout;
end;
implementation_end;
JointC 480 584
description '
4.8
1
Bond Graph\MR\joint-v3.emx
2020-7-21 12:08:53
';
type 'Submodel-v3'
ports
power in Pin [6,1];
power in Pdiff [6,1];
signal in Hin [4,4];
signal out Hout [4,4];
signal out Hdiff [4,4];
power out Pout [6,1];
end;
icon bg bottom
figures
rectangle 456 552 504 616 color 0 fill 14745599;
text 'Joint' 480 584 color 0 'Clear Sans' 16;
terminals
Pin 456 600 fixed;
Hin 504 568 fixed;
Hout 456 568 fixed;
Pout 504 600 fixed;
end;
implementation bg
submodels
AdHji 424 424
description '
4.0
1
False
Bond Graph\MTF.emx
2007-9-25 12:3:3
True
';
type MTF
ports
power out p1 [6,1];
power in p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg bottom
figures
text 'MTF' 424 424 color 0 18 bold;
end;
implementation eq
equations
p2.e = transpose(Adjoint(H)) * p1.e;
p1.f = Adjoint(H) * p2.f;implementation_end;
FlowSensor2 184 311.9
description '
4.2
1
False
Bond Graph\FlowSensor.emx
2011-11-29 15:50:53
';
knot FlowSensor
ports
power knot in p1 [6,1];
power knot out p2 [6,1];
signal knot out flow [6,1];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg ellipse
figures
ellipse 177.1 304.8 190.9 319.1 color 0 fill 16777215;
text 'f' 184 311.2 color 0;
end;
implementation eq
equations
p2.f = p1.f;
p1.e = p2.e;
flow = p1.f;
implementation_end;
Hmatrix 256 312
description '4.0Template\Submodel-Equation.emx1False2007-11-1 22:32:1False';
type 'Submodel-Equation'
ports
signal in flow [6,1];
signal out H [4,4];
end;
icon bg
figures
rectangle 224 296 288 328 color 0 fill 15132390;
text 'name' 256 312 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real init[4] = [1;0;0;0];
variables
real q[4]; //quaternions
real W[3,4]; //Quaternion Rates Matrix
real R[3,3]; //Rotation Matrix
real p[3]; //Position Vector
real dq[4];
real Wb[3,4];
equations
dq = transpose(Wb) * flow[1:3] ./ 2;
q = int(dq,init);
p = int(flow[4:6]);
W = [-q[2], q[1], -q[4], q[3];
-q[3], q[4], q[1], -q[2];
-q[4], -q[3], q[2], q[1]];
Wb = [ -q[2], q[1], q[4], -q[3];
-q[3], -q[4], q[1], q[2];
-q[4], q[3], -q[2], q[1]];
R = [q[1]^2+q[2]^2-q[3]^2-q[4]^2, 2*(q[2]*q[3]+q[1]*q[4]), 2*(q[2]*q[4]-q[1]*q[3]);
2*(q[2]*q[3]-q[1]*q[4]), q[1]^2-q[2]^2+q[3]^2-q[4]^2, 2*(q[3]*q[4]+q[1]*q[2]);
2*(q[2]*q[4]+q[1]*q[3]), 2*(q[3]*q[4]-q[1]*q[2]), q[1]^2-q[2]^2-q[3]^2+q[4]^2];
H = homogeneous(R,p);
implementation_end;
MatrixMul 320 576
description '
4.0
1
False
Signal\Block Diagram\Gain.emx
2007-9-26 12:15:12
True
';
type Gain
ports
signal in input1 [4,4];
signal out output [4,4];
signal in input2 [4,4];
end;
icon bg bottom
figures
rectangle 304.1 560 335.9 592 color 0 fill 15132390;
text 'X' 320 576 color 16711680 16 bold;
end;
implementation eq
equations
output = input2*input1; implementation_end;
plug Pin 492.1 424;
plug Pdiff 184 225;
plug Hin 130.8 576;
plug Hout 478.4 576;
plug Hdiff 320 222;
plug Pout 134.7 424;
Splitter2 320 312
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 316.8 308.8 323.2 315.2 color -1 fill 0;
ellipse 315.7 307.7 324.3 316.3 color -1;
terminals
input 320 312 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Wbai 184 424
description '
4.0
1
False
Bond Graph\ZeroJunction.emx
2007-9-27 9:51:43
True
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg bottom
figures
text '0' 184 424 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
FlowSensor2\flow -> Hmatrix\flow;
FlowSensor2\p2 => Wbai\p;
Hin -> MatrixMul\input2;
Hmatrix\H -> Splitter2\input;
MatrixMul\output -> Hout;
Pdiff => FlowSensor2\p1;
Pin => AdHji\p2;
Splitter2\output -> AdHji\H 424 312;
Splitter2\output -> Hdiff;
Splitter2\output -> MatrixMul\input1;
Wbai\p <= AdHji\p1;
Wbai\p => Pout;
end;
implementation_end;
JointD 200 488
description '
4.8
1
Bond Graph\MR\joint-v3.emx
2020-7-21 12:08:53
';
type 'Submodel-v3'
ports
power in Pin [6,1];
power in Pdiff [6,1];
signal in Hin [4,4];
signal out Hout [4,4];
signal out Hdiff [4,4];
power out Pout [6,1];
end;
icon bg bottom
figures
rectangle 168 464 232 512 color 0 fill 14745599;
text 'Joint' 200 488 color 0 'Clear Sans' 16;
terminals
Pin 184 464 fixed;
Hin 216 512 fixed;
Hout 216 464 fixed;
Pout 184 512 fixed;
end;
implementation bg
submodels
AdHji 424 424
description '
4.0
1
False
Bond Graph\MTF.emx
2007-9-25 12:3:3
True
';
type MTF
ports
power out p1 [6,1];
power in p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg bottom
figures
text 'MTF' 424 424 color 0 18 bold;
end;
implementation eq
equations
p2.e = transpose(Adjoint(H)) * p1.e;
p1.f = Adjoint(H) * p2.f;implementation_end;
FlowSensor2 184 311.9
description '
4.2
1
False
Bond Graph\FlowSensor.emx
2011-11-29 15:50:53
';
knot FlowSensor
ports
power knot in p1 [6,1];
power knot out p2 [6,1];
signal knot out flow [6,1];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg ellipse
figures
ellipse 177.1 304.8 190.9 319.1 color 0 fill 16777215;
text 'f' 184 311.2 color 0;
end;
implementation eq
equations
p2.f = p1.f;
p1.e = p2.e;
flow = p1.f;
implementation_end;
Hmatrix 256 312
description '4.0Template\Submodel-Equation.emx1False2007-11-1 22:32:1False';
type 'Submodel-Equation'
ports
signal in flow [6,1];
signal out H [4,4];
end;
icon bg
figures
rectangle 224 296 288 328 color 0 fill 15132390;
text 'name' 256 312 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real init[4] = [1;0;0;0];
variables
real q[4]; //quaternions
real W[3,4]; //Quaternion Rates Matrix
real R[3,3]; //Rotation Matrix
real p[3]; //Position Vector
real dq[4];
real Wb[3,4];
equations
dq = transpose(Wb) * flow[1:3] ./ 2;
q = int(dq,init);
p = int(flow[4:6]);
W = [-q[2], q[1], -q[4], q[3];
-q[3], q[4], q[1], -q[2];
-q[4], -q[3], q[2], q[1]];
Wb = [ -q[2], q[1], q[4], -q[3];
-q[3], -q[4], q[1], q[2];
-q[4], q[3], -q[2], q[1]];
R = [q[1]^2+q[2]^2-q[3]^2-q[4]^2, 2*(q[2]*q[3]+q[1]*q[4]), 2*(q[2]*q[4]-q[1]*q[3]);
2*(q[2]*q[3]-q[1]*q[4]), q[1]^2-q[2]^2+q[3]^2-q[4]^2, 2*(q[3]*q[4]+q[1]*q[2]);
2*(q[2]*q[4]+q[1]*q[3]), 2*(q[3]*q[4]-q[1]*q[2]), q[1]^2-q[2]^2-q[3]^2+q[4]^2];
H = homogeneous(R,p);
implementation_end;
MatrixMul 320 576
description '
4.0
1
False
Signal\Block Diagram\Gain.emx
2007-9-26 12:15:12
True
';
type Gain
ports
signal in input1 [4,4];
signal out output [4,4];
signal in input2 [4,4];
end;
icon bg bottom
figures
rectangle 304.1 560 335.9 592 color 0 fill 15132390;
text 'X' 320 576 color 16711680 16 bold;
end;
implementation eq
equations
output = input2*input1; implementation_end;
plug Pin 492.1 424;
plug Pdiff 184 225;
plug Hin 130.8 576;
plug Hout 478.4 576;
plug Hdiff 320 222;
plug Pout 134.7 424;
Splitter2 320 312
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 316.8 308.8 323.2 315.2 color -1 fill 0;
ellipse 315.7 307.7 324.3 316.3 color -1;
terminals
input 320 312 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Wbai 184 424
description '
4.0
1
False
Bond Graph\ZeroJunction.emx
2007-9-27 9:51:43
True
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg bottom
figures
text '0' 184 424 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
FlowSensor2\flow -> Hmatrix\flow;
FlowSensor2\p2 => Wbai\p;
Hin -> MatrixMul\input2;
Hmatrix\H -> Splitter2\input;
MatrixMul\output -> Hout;
Pdiff => FlowSensor2\p1;
Pin => AdHji\p2;
Splitter2\output -> AdHji\H 424 312;
Splitter2\output -> Hdiff;
Splitter2\output -> MatrixMul\input1;
Wbai\p <= AdHji\p1;
Wbai\p => Pout;
end;
implementation_end;
JointE 200 168
description '
4.8
1
Bond Graph\MR\joint-v3.emx
2020-7-21 12:08:53
';
type 'Submodel-v3'
ports
power in Pin [6,1];
power in Pdiff [6,1];
signal in Hin [4,4];
signal out Hout [4,4];
signal out Hdiff [4,4];
power out Pout [6,1];
end;
icon bg bottom
figures
rectangle 168 144 232 192 color 0 fill 14745599;
text 'Joint' 200 168 color 0 'Clear Sans' 16;
terminals
Pin 184 144 fixed;
Hin 216 192 fixed;
Hout 216 144 fixed;
Pout 184 192 fixed;
end;
implementation bg
submodels
AdHji 424 424
description '
4.0
1
False
Bond Graph\MTF.emx
2007-9-25 12:3:3
True
';
type MTF
ports
power out p1 [6,1];
power in p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg bottom
figures
text 'MTF' 424 424 color 0 18 bold;
end;
implementation eq
equations
p2.e = transpose(Adjoint(H)) * p1.e;
p1.f = Adjoint(H) * p2.f;implementation_end;
FlowSensor2 184 311.9
description '
4.2
1
False
Bond Graph\FlowSensor.emx
2011-11-29 15:50:53
';
knot FlowSensor
ports
power knot in p1 [6,1];
power knot out p2 [6,1];
signal knot out flow [6,1];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg ellipse
figures
ellipse 177.1 304.8 190.9 319.1 color 0 fill 16777215;
text 'f' 184 311.2 color 0;
end;
implementation eq
equations
p2.f = p1.f;
p1.e = p2.e;
flow = p1.f;
implementation_end;
Hmatrix 256 312
description '4.0Template\Submodel-Equation.emx1False2007-11-1 22:32:1False';
type 'Submodel-Equation'
ports
signal in flow [6,1];
signal out H [4,4];
end;
icon bg
figures
rectangle 224 296 288 328 color 0 fill 15132390;
text 'name' 256 312 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real init[4] = [1;0;0;0];
variables
real q[4]; //quaternions
real W[3,4]; //Quaternion Rates Matrix
real R[3,3]; //Rotation Matrix
real p[3]; //Position Vector
real dq[4];
real Wb[3,4];
equations
dq = transpose(Wb) * flow[1:3] ./ 2;
q = int(dq,init);
p = int(flow[4:6]);
W = [-q[2], q[1], -q[4], q[3];
-q[3], q[4], q[1], -q[2];
-q[4], -q[3], q[2], q[1]];
Wb = [ -q[2], q[1], q[4], -q[3];
-q[3], -q[4], q[1], q[2];
-q[4], q[3], -q[2], q[1]];
R = [q[1]^2+q[2]^2-q[3]^2-q[4]^2, 2*(q[2]*q[3]+q[1]*q[4]), 2*(q[2]*q[4]-q[1]*q[3]);
2*(q[2]*q[3]-q[1]*q[4]), q[1]^2-q[2]^2+q[3]^2-q[4]^2, 2*(q[3]*q[4]+q[1]*q[2]);
2*(q[2]*q[4]+q[1]*q[3]), 2*(q[3]*q[4]-q[1]*q[2]), q[1]^2-q[2]^2-q[3]^2+q[4]^2];
H = homogeneous(R,p);
implementation_end;
MatrixMul 320 576
description '
4.0
1
False
Signal\Block Diagram\Gain.emx
2007-9-26 12:15:12
True
';
type Gain
ports
signal in input1 [4,4];
signal out output [4,4];
signal in input2 [4,4];
end;
icon bg bottom
figures
rectangle 304.1 560 335.9 592 color 0 fill 15132390;
text 'X' 320 576 color 16711680 16 bold;
end;
implementation eq
equations
output = input2*input1; implementation_end;
plug Pin 492.1 424;
plug Pdiff 184 225;
plug Hin 130.8 576;
plug Hout 478.4 576;
plug Hdiff 320 222;
plug Pout 134.7 424;
Splitter2 320 312
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 316.8 308.8 323.2 315.2 color -1 fill 0;
ellipse 315.7 307.7 324.3 316.3 color -1;
terminals
input 320 312 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Wbai 184 424
description '
4.0
1
False
Bond Graph\ZeroJunction.emx
2007-9-27 9:51:43
True
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg bottom
figures
text '0' 184 424 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
FlowSensor2\flow -> Hmatrix\flow;
FlowSensor2\p2 => Wbai\p;
Hin -> MatrixMul\input2;
Hmatrix\H -> Splitter2\input;
MatrixMul\output -> Hout;
Pdiff => FlowSensor2\p1;
Pin => AdHji\p2;
Splitter2\output -> AdHji\H 424 312;
Splitter2\output -> Hdiff;
Splitter2\output -> MatrixMul\input1;
Wbai\p <= AdHji\p1;
Wbai\p => Pout;
end;
implementation_end;
JointF 864 128
description '
4.8
1
Bond Graph\MR\joint-v3.emx
2020-7-21 12:08:53
';
type 'Submodel-v3'
ports
power in Pin [6,1];
power in Pdiff [6,1];
signal in Hin [4,4];
signal out Hout [4,4];
signal out Hdiff [4,4];
power out Pout [6,1];
end;
icon bg bottom
figures
rectangle 840 96 888 160 color 0 fill 14745599;
text 'Joint' 864 128 color 0 'Clear Sans' 16;
terminals
Pin 888 112 fixed;
Hin 840 144 fixed;
Hout 888 144 fixed;
Pout 840 112 fixed;
end;
implementation bg
submodels
AdHji 424 424
description '
4.0
1
False
Bond Graph\MTF.emx
2007-9-25 12:3:3
True
';
type MTF
ports
power out p1 [6,1];
power in p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg bottom
figures
text 'MTF' 424 424 color 0 18 bold;
end;
implementation eq
equations
p2.e = transpose(Adjoint(H)) * p1.e;
p1.f = Adjoint(H) * p2.f;implementation_end;
FlowSensor2 184 311.9
description '
4.2
1
False
Bond Graph\FlowSensor.emx
2011-11-29 15:50:53
';
knot FlowSensor
ports
power knot in p1 [6,1];
power knot out p2 [6,1];
signal knot out flow [6,1];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg ellipse
figures
ellipse 177.1 304.8 190.9 319.1 color 0 fill 16777215;
text 'f' 184 311.2 color 0;
end;
implementation eq
equations
p2.f = p1.f;
p1.e = p2.e;
flow = p1.f;
implementation_end;
Hmatrix 256 312
description '4.0Template\Submodel-Equation.emx1False2007-11-1 22:32:1False';
type 'Submodel-Equation'
ports
signal in flow [6,1];
signal out H [4,4];
end;
icon bg
figures
rectangle 224 296 288 328 color 0 fill 15132390;
text 'name' 256 312 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real init[4] = [1;0;0;0];
variables
real q[4]; //quaternions
real W[3,4]; //Quaternion Rates Matrix
real R[3,3]; //Rotation Matrix
real p[3]; //Position Vector
real dq[4];
real Wb[3,4];
equations
dq = transpose(Wb) * flow[1:3] ./ 2;
q = int(dq,init);
p = int(flow[4:6]);
W = [-q[2], q[1], -q[4], q[3];
-q[3], q[4], q[1], -q[2];
-q[4], -q[3], q[2], q[1]];
Wb = [ -q[2], q[1], q[4], -q[3];
-q[3], -q[4], q[1], q[2];
-q[4], q[3], -q[2], q[1]];
R = [q[1]^2+q[2]^2-q[3]^2-q[4]^2, 2*(q[2]*q[3]+q[1]*q[4]), 2*(q[2]*q[4]-q[1]*q[3]);
2*(q[2]*q[3]-q[1]*q[4]), q[1]^2-q[2]^2+q[3]^2-q[4]^2, 2*(q[3]*q[4]+q[1]*q[2]);
2*(q[2]*q[4]+q[1]*q[3]), 2*(q[3]*q[4]-q[1]*q[2]), q[1]^2-q[2]^2-q[3]^2+q[4]^2];
H = homogeneous(R,p);
implementation_end;
MatrixMul 320 576
description '
4.0
1
False
Signal\Block Diagram\Gain.emx
2007-9-26 12:15:12
True
';
type Gain
ports
signal in input1 [4,4];
signal out output [4,4];
signal in input2 [4,4];
end;
icon bg bottom
figures
rectangle 304.1 560 335.9 592 color 0 fill 15132390;
text 'X' 320 576 color 16711680 16 bold;
end;
implementation eq
equations
output = input2*input1; implementation_end;
plug Pin 492.1 424;
plug Pdiff 184 225;
plug Hin 130.8 576;
plug Hout 478.4 576;
plug Hdiff 320 222;
plug Pout 134.7 424;
Splitter2 320 312
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 316.8 308.8 323.2 315.2 color -1 fill 0;
ellipse 315.7 307.7 324.3 316.3 color -1;
terminals
input 320 312 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Wbai 184 424
description '
4.0
1
False
Bond Graph\ZeroJunction.emx
2007-9-27 9:51:43
True
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg bottom
figures
text '0' 184 424 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
FlowSensor2\flow -> Hmatrix\flow;
FlowSensor2\p2 => Wbai\p;
Hin -> MatrixMul\input2;
Hmatrix\H -> Splitter2\input;
MatrixMul\output -> Hout;
Pdiff => FlowSensor2\p1;
Pin => AdHji\p2;
Splitter2\output -> AdHji\H 424 312;
Splitter2\output -> Hdiff;
Splitter2\output -> MatrixMul\input1;
Wbai\p <= AdHji\p1;
Wbai\p => Pout;
end;
implementation_end;
Joint_dynA 712 512
description '
4.8
1
';
type Submodel
ports
power out output [6,1];
signal in angle {rad} ;
end;
implementation bg
submodels
C 264 200
description '
4.2
1
False
Bond Graph\C.emx
2011-11-29 15:58:35
';
type C
ports
power in p;
signal out state;
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 264 200 color 0 18 bold;
end;
implementation eq
parameters
real c = 0.001;
equations
state = int(p.f);
p.e = state / c;
implementation_end;
C1 191.8 216.2
description '4.01False
Bond Graph\3D\C-3.emx
2007-9-25 12:12:8
';
type 'C-3'
ports
power in p [3,1];
signal out state [3,1];
restrictions
causality preferred out p;
end;
icon bg top
figures
text 'C' 191.8 216.2 color 0 18 bold;
end;
implementation eq
parameters
real c[3,3] = [0.1, 0.0, 0.0; 0.0, 0.1, 0.0; 0.0, 0.0, 0.1] {mN/m};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
C4 191.8 232.2
description '4.01False
Bond Graph\2D\C-2.emx
2007-9-25 12:7:27
';
type 'C-2'
ports
power in p [2,1];
signal out state [2,1];
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 191.8 232.2 color 0 18 bold;
end;
implementation eq
parameters
real c[2,2] = [0.1, 0.0; 0.0, 0.1] {mN.m/rad};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
plug output 468 216;
plug angle 224 80;
OneJunction5 239.8 232.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [2,1];
signal knot out flow [2,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 232.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction7 239.8 216.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [3,1];
signal knot out flow [3,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 216.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction8 312 200
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
rotation knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 312 200 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
PowerMux 402 216
specifications active 'rot_x'
specification 'rot_x'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-20 14:35:23
1
False
True
';
type 'PowerMux-Rotation'
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 400 192 400 240 color 0 width 2;
rectangle 396 192 408 240 color -1;
text '1' 405 210 color 8421504 8;
terminals
input 400 200 fixed;
output 400 216 fixed;
input_rot2 400 232 fixed;
input_pos3 400 216 fixed;
end;
implementation eq
equations
output.e[1] = input.e;
output.e[2:3] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[1] = input.f;
output.f[2:3] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_y'
description '
4.1
Bond Graph\PowerMux.emx
2011-3-4 15:12:50
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[1] = input_rot2.e[1];
output.e[2] = input.e;
output.e[3] = input_rot2.e[2];
output.e[4:6] = input_pos3.e;
output.f[1] = input_rot2.f[1];
output.f[2] = input.f;
output.f[3] = input_rot2.f[2];
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_z'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-21 12:05:13
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[3] = input.e;
output.e[1:2] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[3] = input.f;
output.f[1:2] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
end;
R 312 152
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg bottom
figures
text 'R' 312 152 color 0 18 bold;
end;
implementation eq
parameters
real r = 100;
equations
p.e = r * p.f;
implementation_end;
R4 239.8 288.2
description '4.01False
Bond Graph\2D\R-2.emx
2007-9-25 12:6:54
';
type 'R-2'
ports
power in p [2,1];
end;
icon bg bottom
figures
text 'R' 239.8 288.2 color 0 18 bold;
end;
implementation eq
parameters
real r[2,2] = [1.0, 0.0; 0.0, 1.0] {kN.m.s/rad};
equations
p.e = r * p.f;
implementation_end;
R5 239.8 168.2
description '4.01False
Bond Graph\3D\R-3.emx
2007-9-25 12:11:54
';
type 'R-3'
ports
power in p [3,1];
end;
icon bg top
figures
text 'R' 239.8 168.2 color 0 18 bold;
end;
implementation eq
parameters
real r[3,3] = [1.0, 0.0, 0.0; 0.0, 1.0, 0.0; 0.0, 0.0, 1.0] {kN.s/m};
equations
p.e = r * p.f;
implementation_end;
stepper_model 360 80
description '4.81Motor\stepper_model.emx2020-7-23 10:54:47parameters
real I_phase = 3.4 {mH};
real R_phase = 2.9 {ohm};
real u_max = 3.4 {V};
real RotorInertia = 5.6e-6 {kg.m2};
real StepperMass = 0.29 {kg};
real angle_step = 1.8 {deg};
real n_phase = 2 {none};
real fluxLinkage = 0.0022 {Wb};
real detentTorque = 0.01 {N.m};
variables
real omega;
real p; // rotor division
initialequations
p = 2 * pi / (2 * n_phase * angle_step);
omega = 200;';
type Submodel
ports
signal in angle;
rotation out p;
end;
implementation bg
submodels
I 560 104
description '
4.2
1
False
Bond Graph\I.emx
2011-11-29 15:55:55
';
type I
ports
power in p;
signal out state;
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 560 104 color 0 18 bold;
end;
implementation eq
parameters
real global I_phase;
equations
state = int(p.e);
p.f = state / I_phase;
implementation_end;
I1 608 328
description '
4.2
1
False
Bond Graph\I.emx
2011-11-29 15:55:55
';
type I
ports
power in p;
signal out state;
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 608 328 color 0 18 bold;
end;
implementation eq
parameters
real global I_phase;
equations
state = int(p.e);
p.f = state / I_phase;
implementation_end;
I2 752 160
description '
4.2
1
False
Bond Graph\I.emx
2011-11-29 15:55:55
';
type I
ports
power in p;
signal out state;
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 752 160 color 0 18 bold;
end;
implementation eq
parameters
real global RotorInertia;
equations
state = int(p.e);
p.f = state / (RotorInertia);
implementation_end;
MGY_a 656 160
description '
4.2
1
False
Bond Graph\MGY.emx
2011-11-29 16:03:53
';
type MGY
ports
power in p1;
power out p2;
signal in r;
restrictions
causality constraint equal p1 p2;
end;
icon bg bottom
figures
text 'MGY' 656 160 color 0 18 bold;
end;
implementation eq
equations
p1.e = r * p2.f;
p2.e = r * p1.f;
implementation_end;
MGY_b 656 272
description '
4.2
1
False
Bond Graph\MGY.emx
2011-11-29 16:03:53
';
type MGY
ports
power in p1;
power out p2;
signal in r;
restrictions
causality constraint equal p1 p2;
end;
icon bg bottom
figures
text 'MGY' 656 272 color 0 18 bold;
end;
implementation eq
equations
p1.e = r * p2.f;
p2.e = r * p1.f;
implementation_end;
MSe_a 512 160
description '
4.2
1
False
Bond Graph\MSe.emx
2011-11-29 16:12:33
';
type MSe
ports
electric out p;
signal in effort;
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'MSe' 512 160 color 0 18 bold;
end;
implementation eq
variables
real flow;
equations
p.e = effort;
flow = p.f;
implementation_end;
MSe_b 512 272
description '
4.2
1
False
Bond Graph\MSe.emx
2011-11-29 16:12:33
';
type MSe
ports
electric out p;
signal in effort;
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'MSe' 512 272 color 0 18 bold;
end;
implementation eq
variables
real flow;
equations
p.e = effort;
flow = p.f;
implementation_end;
plug angle 200 216;
plug p 1472 216;
OneJunction1 840 216
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
rotation knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 840 216 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction2 584 160
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
electric knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 584 160 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction3 584 272
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
electric knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 584 272 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction4 752 216
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
rotation knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 752 216 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
phase_control 512 216
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type Submodel
ports
signal in angle;
signal out a;
signal out b;
end;
icon bg
figures
rectangle 472 200 552 232 color 0 fill 15132390;
text 'name' 512 216 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real global u_max {V};
variables
real global p;
boolean hidden eventa, eventb;
equations
a = u_max * (cos (p*angle));
eventa = event(a);
b = u_max * -(sin (p*angle));
eventb = event(b);
implementation_end;
R 608 104
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg bottom
figures
text 'R' 608 104 color 0 18 bold;
end;
implementation eq
parameters
real global R_phase;
equations
p.e = R_phase * p.f;
implementation_end;
R1 560 328
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg bottom
figures
text 'R' 560 328 color 0 18 bold;
end;
implementation eq
parameters
real global R_phase;
equations
p.e = R_phase * p.f;
implementation_end;
R2 824 264
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg bottom
figures
text 'R' 824 264 color 0 18 bold;
end;
implementation eq
parameters
real r = 1.0e-3;
equations
p.e = r * p.f;
implementation_end;
RotorAngle 656 216
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type Submodel
ports
signal out output_b;
signal out output_a;
signal in omega {rad/s} ;
signal out output_d;
end;
icon bg
figures
rectangle 616 200 696 232 color 0 fill 15132390;
text 'name' 656 216 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real global fluxLinkage;
real global detentTorque;
variables
real global p;
real angle {rad};
equations
angle = int(omega,1.570796);
output_a = -p * fluxLinkage * sin(p * angle);
output_b = p * fluxLinkage * sin(p * angle - pi / 2);
output_d = detentTorque * sin(2 * p * angle);
implementation_end;
Se 752 272
description '
4.2
1
False
Bond Graph\MSe.emx
2011-11-29 16:12:33
';
type MSe
ports
power out p;
signal in effort;
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'MSe' 752 272 color 0 18 bold;
end;
implementation eq
variables
real flow;
equations
p.e = effort;
flow = p.f;
implementation_end;
end;
connections
angle -> phase_control\angle;
I2\p <= OneJunction4\p;
MGY_a\p2 => OneJunction4\p;
MGY_b\p2 => OneJunction4\p;
MSe_b\p => OneJunction3\p;
OneJunction1\p => p;
OneJunction2\p <= MSe_a\p;
OneJunction2\p => I\p;
OneJunction2\p => MGY_a\p1;
OneJunction2\p => R\p;
OneJunction3\p => I1\p;
OneJunction3\p => MGY_b\p1;
OneJunction3\p => R1\p;
OneJunction4\flow -> RotorAngle\omega;
OneJunction4\p => OneJunction1\p;
OneJunction4\p => R2\p;
phase_control\a -> MSe_a\effort;
phase_control\b -> MSe_b\effort;
RotorAngle\output_a -> MGY_a\r;
RotorAngle\output_b -> MGY_b\r;
RotorAngle\output_d -> Se\effort;
Se\p => OneJunction4\p;
end;
implementation_end;
ZeroJunction1 360 200
description '
4.2
1
False
Bond Graph\ZeroJunction.emx
2011-11-29 16:45:16
';
knot ZeroJunction
ports
rotation knot duplicatable none p [1];
signal knot out effort [1];
restrictions
causality constraint one_in p;
end;
icon bg
figures
text '0' 360 200 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
angle -> stepper_model\angle;
C\p <= OneJunction8\p;
C1\p <= OneJunction7\p;
OneJunction5\p => C4\p;
OneJunction5\p => PowerMux\input_rot2;
OneJunction5\p => R4\p;
OneJunction7\p => PowerMux\input_pos3;
OneJunction7\p => R5\p;
OneJunction8\p => R\p;
OneJunction8\p => ZeroJunction1\p;
PowerMux\input <= ZeroJunction1\p;
PowerMux\output => output;
ZeroJunction1\p <= stepper_model\p;
end;
implementation_end;
Joint_dynB 456 192
description '
4.8
1
';
type Submodel
ports
power out output [6,1];
end;
icon bg
figures
rectangle 416 176 496 208 color 0 fill 55295;
text 'name' 456 192 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
C1 191.8 216.2
description '4.01False
Bond Graph\3D\C-3.emx
2007-9-25 12:12:8
';
type 'C-3'
ports
power in p [3,1];
signal out state [3,1];
restrictions
causality preferred out p;
end;
icon bg top
figures
text 'C' 191.8 216.2 color 0 18 bold;
end;
implementation eq
parameters
real c[3,3] = [0.1, 0.0, 0.0; 0.0, 0.1, 0.0; 0.0, 0.0, 0.1] {mN/m};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
C4 191.8 232.2
description '4.01False
Bond Graph\2D\C-2.emx
2007-9-25 12:7:27
';
type 'C-2'
ports
power in p [2,1];
signal out state [2,1];
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 191.8 232.2 color 0 18 bold;
end;
implementation eq
parameters
real c[2,2] = [0.1, 0.0; 0.0, 0.1] {mN.m/rad};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
plug output 396 216;
OneJunction5 239.8 232.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [2,1];
signal knot out flow [2,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 232.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction7 239.8 216.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [3,1];
signal knot out flow [3,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 216.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction8 288 200
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 288 200 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
PowerMux 330 216
specifications active 'rot_x'
specification 'rot_x'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-20 14:35:23
1
False
True
';
type 'PowerMux-Rotation'
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 328 192 328 240 color 0 width 2;
rectangle 324 192 336 240 color -1;
text '1' 333 210 color 8421504 8;
terminals
input 328 200 fixed;
output 328 216 fixed;
input_rot2 328 232 fixed;
input_pos3 328 216 fixed;
end;
implementation eq
equations
output.e[1] = input.e;
output.e[2:3] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[1] = input.f;
output.f[2:3] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_y'
description '
4.1
Bond Graph\PowerMux.emx
2011-3-4 15:12:50
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[1] = input_rot2.e[1];
output.e[2] = input.e;
output.e[3] = input_rot2.e[2];
output.e[4:6] = input_pos3.e;
output.f[1] = input_rot2.f[1];
output.f[2] = input.f;
output.f[3] = input_rot2.f[2];
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_z'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-21 12:05:13
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[3] = input.e;
output.e[1:2] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[3] = input.f;
output.f[1:2] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
end;
R 288 152
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg top
figures
text 'R' 288 152 color 0 18 bold;
end;
implementation eq
parameters
real r = 0.0001;
equations
p.e = r * p.f;
implementation_end;
R4 239.8 288.2
description '4.01False
Bond Graph\2D\R-2.emx
2007-9-25 12:6:54
';
type 'R-2'
ports
power in p [2,1];
end;
icon bg bottom
figures
text 'R' 239.8 288.2 color 0 18 bold;
end;
implementation eq
parameters
real r[2,2] = [1.0, 0.0; 0.0, 1.0] {kN.m.s/rad};
equations
p.e = r * p.f;
implementation_end;
R5 239.8 168.2
description '4.01False
Bond Graph\3D\R-3.emx
2007-9-25 12:11:54
';
type 'R-3'
ports
power in p [3,1];
end;
icon bg top
figures
text 'R' 239.8 168.2 color 0 18 bold;
end;
implementation eq
parameters
real r[3,3] = [1.0, 0.0, 0.0; 0.0, 1.0, 0.0; 0.0, 0.0, 1.0] {kN.s/m};
equations
p.e = r * p.f;
implementation_end;
end;
connections
C1\p <= OneJunction7\p;
OneJunction5\p => C4\p;
OneJunction5\p => PowerMux\input_rot2;
OneJunction5\p => R4\p;
OneJunction7\p => PowerMux\input_pos3;
OneJunction7\p => R5\p;
OneJunction8\p => PowerMux\input;
PowerMux\output => output;
R\p <= OneJunction8\p;
end;
implementation_end;
Joint_dynC 480 696
description '
4.8
1
';
type Submodel
ports
power out output [6,1];
signal in angle {rad} ;
end;
icon bg
figures
rectangle 440 680 520 712 color 0 fill 15132390;
text 'name' 480 696 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
C 264 200
description '
4.2
1
False
Bond Graph\C.emx
2011-11-29 15:58:35
';
type C
ports
power in p;
signal out state;
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 264 200 color 0 18 bold;
end;
implementation eq
parameters
real c = 0.001;
equations
state = int(p.f);
p.e = state / c;
implementation_end;
C1 191.8 216.2
description '4.01False
Bond Graph\3D\C-3.emx
2007-9-25 12:12:8
';
type 'C-3'
ports
power in p [3,1];
signal out state [3,1];
restrictions
causality preferred out p;
end;
icon bg top
figures
text 'C' 191.8 216.2 color 0 18 bold;
end;
implementation eq
parameters
real c[3,3] = [0.1, 0.0, 0.0; 0.0, 0.1, 0.0; 0.0, 0.0, 0.1] {mN/m};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
C4 191.8 232.2
description '4.01False
Bond Graph\2D\C-2.emx
2007-9-25 12:7:27
';
type 'C-2'
ports
power in p [2,1];
signal out state [2,1];
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 191.8 232.2 color 0 18 bold;
end;
implementation eq
parameters
real c[2,2] = [0.1, 0.0; 0.0, 0.1] {mN.m/rad};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
plug output 468 216;
plug angle 224 80;
OneJunction5 239.8 232.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [2,1];
signal knot out flow [2,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 232.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction7 239.8 216.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [3,1];
signal knot out flow [3,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 216.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction8 312 200
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
rotation knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 312 200 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
PowerMux 402 216
specifications active 'rot_x'
specification 'rot_x'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-20 14:35:23
1
False
True
';
type 'PowerMux-Rotation'
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 400 192 400 240 color 0 width 2;
rectangle 396 192 408 240 color -1;
text '1' 405 210 color 8421504 8;
terminals
input 400 200 fixed;
output 400 216 fixed;
input_rot2 400 232 fixed;
input_pos3 400 216 fixed;
end;
implementation eq
equations
output.e[1] = input.e;
output.e[2:3] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[1] = input.f;
output.f[2:3] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_y'
description '
4.1
Bond Graph\PowerMux.emx
2011-3-4 15:12:50
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[1] = input_rot2.e[1];
output.e[2] = input.e;
output.e[3] = input_rot2.e[2];
output.e[4:6] = input_pos3.e;
output.f[1] = input_rot2.f[1];
output.f[2] = input.f;
output.f[3] = input_rot2.f[2];
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_z'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-21 12:05:13
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[3] = input.e;
output.e[1:2] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[3] = input.f;
output.f[1:2] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
end;
R 312 152
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg bottom
figures
text 'R' 312 152 color 0 18 bold;
end;
implementation eq
parameters
real r = 100;
equations
p.e = r * p.f;
implementation_end;
R4 239.8 288.2
description '4.01False
Bond Graph\2D\R-2.emx
2007-9-25 12:6:54
';
type 'R-2'
ports
power in p [2,1];
end;
icon bg bottom
figures
text 'R' 239.8 288.2 color 0 18 bold;
end;
implementation eq
parameters
real r[2,2] = [1.0, 0.0; 0.0, 1.0] {kN.m.s/rad};
equations
p.e = r * p.f;
implementation_end;
R5 239.8 168.2
description '4.01False
Bond Graph\3D\R-3.emx
2007-9-25 12:11:54
';
type 'R-3'
ports
power in p [3,1];
end;
icon bg top
figures
text 'R' 239.8 168.2 color 0 18 bold;
end;
implementation eq
parameters
real r[3,3] = [1.0, 0.0, 0.0; 0.0, 1.0, 0.0; 0.0, 0.0, 1.0] {kN.s/m};
equations
p.e = r * p.f;
implementation_end;
stepper_model 360 80
description '4.81Motor\stepper_model.emx2020-7-23 10:54:47parameters
real I_phase = 3.4 {mH};
real R_phase = 2.9 {ohm};
real u_max = 3.4 {V};
real RotorInertia = 5.6e-6 {kg.m2};
real StepperMass = 0.29 {kg};
real angle_step = 1.8 {deg};
real n_phase = 2 {none};
real fluxLinkage = 0.0022 {Wb};
real detentTorque = 0.01 {N.m};
variables
real omega;
real p; // rotor division
initialequations
p = 2 * pi / (2 * n_phase * angle_step);
omega = 200;';
type Submodel
ports
signal in angle;
rotation out p;
end;
implementation bg
submodels
I 560 104
description '
4.2
1
False
Bond Graph\I.emx
2011-11-29 15:55:55
';
type I
ports
power in p;
signal out state;
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 560 104 color 0 18 bold;
end;
implementation eq
parameters
real global I_phase;
equations
state = int(p.e);
p.f = state / I_phase;
implementation_end;
I1 608 328
description '
4.2
1
False
Bond Graph\I.emx
2011-11-29 15:55:55
';
type I
ports
power in p;
signal out state;
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 608 328 color 0 18 bold;
end;
implementation eq
parameters
real global I_phase;
equations
state = int(p.e);
p.f = state / I_phase;
implementation_end;
I2 752 160
description '
4.2
1
False
Bond Graph\I.emx
2011-11-29 15:55:55
';
type I
ports
power in p;
signal out state;
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 752 160 color 0 18 bold;
end;
implementation eq
parameters
real global RotorInertia;
equations
state = int(p.e);
p.f = state / (RotorInertia);
implementation_end;
MGY_a 656 160
description '
4.2
1
False
Bond Graph\MGY.emx
2011-11-29 16:03:53
';
type MGY
ports
power in p1;
power out p2;
signal in r;
restrictions
causality constraint equal p1 p2;
end;
icon bg bottom
figures
text 'MGY' 656 160 color 0 18 bold;
end;
implementation eq
equations
p1.e = r * p2.f;
p2.e = r * p1.f;
implementation_end;
MGY_b 656 272
description '
4.2
1
False
Bond Graph\MGY.emx
2011-11-29 16:03:53
';
type MGY
ports
power in p1;
power out p2;
signal in r;
restrictions
causality constraint equal p1 p2;
end;
icon bg bottom
figures
text 'MGY' 656 272 color 0 18 bold;
end;
implementation eq
equations
p1.e = r * p2.f;
p2.e = r * p1.f;
implementation_end;
MSe_a 512 160
description '
4.2
1
False
Bond Graph\MSe.emx
2011-11-29 16:12:33
';
type MSe
ports
electric out p;
signal in effort;
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'MSe' 512 160 color 0 18 bold;
end;
implementation eq
variables
real flow;
equations
p.e = effort;
flow = p.f;
implementation_end;
MSe_b 512 272
description '
4.2
1
False
Bond Graph\MSe.emx
2011-11-29 16:12:33
';
type MSe
ports
electric out p;
signal in effort;
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'MSe' 512 272 color 0 18 bold;
end;
implementation eq
variables
real flow;
equations
p.e = effort;
flow = p.f;
implementation_end;
plug angle 200 216;
plug p 1472 216;
OneJunction1 840 216
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
rotation knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 840 216 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction2 584 160
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
electric knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 584 160 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction3 584 272
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
electric knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 584 272 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction4 752 216
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
rotation knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 752 216 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
phase_control 512 216
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type Submodel
ports
signal in angle;
signal out a;
signal out b;
end;
icon bg
figures
rectangle 472 200 552 232 color 0 fill 15132390;
text 'name' 512 216 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real global u_max {V};
variables
real global p;
boolean hidden eventa, eventb;
equations
a = u_max * (cos (p*angle));
eventa = event(a);
b = u_max * -(sin (p*angle));
eventb = event(b);
implementation_end;
R 608 104
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg bottom
figures
text 'R' 608 104 color 0 18 bold;
end;
implementation eq
parameters
real global R_phase;
equations
p.e = R_phase * p.f;
implementation_end;
R1 560 328
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg bottom
figures
text 'R' 560 328 color 0 18 bold;
end;
implementation eq
parameters
real global R_phase;
equations
p.e = R_phase * p.f;
implementation_end;
R2 824 264
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg bottom
figures
text 'R' 824 264 color 0 18 bold;
end;
implementation eq
parameters
real r = 1.0e-3;
equations
p.e = r * p.f;
implementation_end;
RotorAngle 656 216
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type Submodel
ports
signal out output_b;
signal out output_a;
signal in omega {rad/s} ;
signal out output_d;
end;
icon bg
figures
rectangle 616 200 696 232 color 0 fill 15132390;
text 'name' 656 216 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real global fluxLinkage;
real global detentTorque;
variables
real global p;
real angle {rad};
equations
angle = int(omega);
output_a = -p * fluxLinkage * sin(p * angle);
output_b = p * fluxLinkage * sin(p * angle - pi / 2);
output_d = detentTorque * sin(2 * p * angle);
implementation_end;
Se 752 272
description '
4.2
1
False
Bond Graph\MSe.emx
2011-11-29 16:12:33
';
type MSe
ports
power out p;
signal in effort;
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'MSe' 752 272 color 0 18 bold;
end;
implementation eq
variables
real flow;
equations
p.e = effort;
flow = p.f;
implementation_end;
end;
connections
angle -> phase_control\angle;
I2\p <= OneJunction4\p;
MGY_a\p2 => OneJunction4\p;
MGY_b\p2 => OneJunction4\p;
MSe_b\p => OneJunction3\p;
OneJunction1\p => p;
OneJunction2\p <= MSe_a\p;
OneJunction2\p => I\p;
OneJunction2\p => MGY_a\p1;
OneJunction2\p => R\p;
OneJunction3\p => I1\p;
OneJunction3\p => MGY_b\p1;
OneJunction3\p => R1\p;
OneJunction4\flow -> RotorAngle\omega;
OneJunction4\p => OneJunction1\p;
OneJunction4\p => R2\p;
phase_control\a -> MSe_a\effort;
phase_control\b -> MSe_b\effort;
RotorAngle\output_a -> MGY_a\r;
RotorAngle\output_b -> MGY_b\r;
RotorAngle\output_d -> Se\effort;
Se\p => OneJunction4\p;
end;
implementation_end;
ZeroJunction1 360 200
description '
4.2
1
False
Bond Graph\ZeroJunction.emx
2011-11-29 16:45:16
';
knot ZeroJunction
ports
rotation knot duplicatable none p [1];
signal knot out effort [1];
restrictions
causality constraint one_in p;
end;
icon bg
figures
text '0' 360 200 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
angle -> stepper_model\angle;
C\p <= OneJunction8\p;
C1\p <= OneJunction7\p;
OneJunction5\p => C4\p;
OneJunction5\p => PowerMux\input_rot2;
OneJunction5\p => R4\p;
OneJunction7\p => PowerMux\input_pos3;
OneJunction7\p => R5\p;
OneJunction8\p => R\p;
OneJunction8\p => ZeroJunction1\p;
PowerMux\output => output;
stepper_model\p => ZeroJunction1\p;
ZeroJunction1\p => PowerMux\input;
end;
implementation_end;
Joint_dynD 88 488
description '
4.8
1
';
type Submodel
ports
power out output [6,1];
end;
icon bg
figures
rectangle 48 472 128 504 color 0 fill 55295;
text 'name' 88 488 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
C1 191.8 216.2
description '4.01False
Bond Graph\3D\C-3.emx
2007-9-25 12:12:8
';
type 'C-3'
ports
power in p [3,1];
signal out state [3,1];
restrictions
causality preferred out p;
end;
icon bg top
figures
text 'C' 191.8 216.2 color 0 18 bold;
end;
implementation eq
parameters
real c[3,3] = [0.1, 0.0, 0.0; 0.0, 0.1, 0.0; 0.0, 0.0, 0.1] {mN/m};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
C4 191.8 232.2
description '4.01False
Bond Graph\2D\C-2.emx
2007-9-25 12:7:27
';
type 'C-2'
ports
power in p [2,1];
signal out state [2,1];
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 191.8 232.2 color 0 18 bold;
end;
implementation eq
parameters
real c[2,2] = [0.1, 0.0; 0.0, 0.1] {mN.m/rad};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
plug output 396 216;
OneJunction5 239.8 232.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [2,1];
signal knot out flow [2,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 232.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction7 239.8 216.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [3,1];
signal knot out flow [3,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 216.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction8 288 200
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 288 200 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
PowerMux 330 216
specifications active 'rot_x'
specification 'rot_x'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-20 14:35:23
1
False
True
';
type 'PowerMux-Rotation'
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 328 192 328 240 color 0 width 2;
rectangle 324 192 336 240 color -1;
text '1' 333 210 color 8421504 8;
terminals
input 328 200 fixed;
output 328 216 fixed;
input_rot2 328 232 fixed;
input_pos3 328 216 fixed;
end;
implementation eq
equations
output.e[1] = input.e;
output.e[2:3] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[1] = input.f;
output.f[2:3] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_y'
description '
4.1
Bond Graph\PowerMux.emx
2011-3-4 15:12:50
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[1] = input_rot2.e[1];
output.e[2] = input.e;
output.e[3] = input_rot2.e[2];
output.e[4:6] = input_pos3.e;
output.f[1] = input_rot2.f[1];
output.f[2] = input.f;
output.f[3] = input_rot2.f[2];
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_z'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-21 12:05:13
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[3] = input.e;
output.e[1:2] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[3] = input.f;
output.f[1:2] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
end;
R 288 152
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg top
figures
text 'R' 288 152 color 0 18 bold;
end;
implementation eq
parameters
real r = 0.0001;
equations
p.e = r * p.f;
implementation_end;
R4 239.8 288.2
description '4.01False
Bond Graph\2D\R-2.emx
2007-9-25 12:6:54
';
type 'R-2'
ports
power in p [2,1];
end;
icon bg bottom
figures
text 'R' 239.8 288.2 color 0 18 bold;
end;
implementation eq
parameters
real r[2,2] = [1.0, 0.0; 0.0, 1.0] {kN.m.s/rad};
equations
p.e = r * p.f;
implementation_end;
R5 239.8 168.2
description '4.01False
Bond Graph\3D\R-3.emx
2007-9-25 12:11:54
';
type 'R-3'
ports
power in p [3,1];
end;
icon bg top
figures
text 'R' 239.8 168.2 color 0 18 bold;
end;
implementation eq
parameters
real r[3,3] = [1.0, 0.0, 0.0; 0.0, 1.0, 0.0; 0.0, 0.0, 1.0] {kN.s/m};
equations
p.e = r * p.f;
implementation_end;
end;
connections
C1\p <= OneJunction7\p;
OneJunction5\p => C4\p;
OneJunction5\p => PowerMux\input_rot2;
OneJunction5\p => R4\p;
OneJunction7\p => PowerMux\input_pos3;
OneJunction7\p => R5\p;
OneJunction8\p => PowerMux\input;
PowerMux\output => output;
R\p <= OneJunction8\p;
end;
implementation_end;
Joint_dynE 88 168
description '
4.8
1
';
type Submodel
ports
power out output [6,1];
end;
icon bg
figures
rectangle 48 152 128 184 color 0 fill 55295;
text 'name' 88 168 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
C1 191.8 216.2
description '4.01False
Bond Graph\3D\C-3.emx
2007-9-25 12:12:8
';
type 'C-3'
ports
power in p [3,1];
signal out state [3,1];
restrictions
causality preferred out p;
end;
icon bg top
figures
text 'C' 191.8 216.2 color 0 18 bold;
end;
implementation eq
parameters
real c[3,3] = [0.1, 0.0, 0.0; 0.0, 0.1, 0.0; 0.0, 0.0, 0.1] {mN/m};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
C4 191.8 232.2
description '4.01False
Bond Graph\2D\C-2.emx
2007-9-25 12:7:27
';
type 'C-2'
ports
power in p [2,1];
signal out state [2,1];
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 191.8 232.2 color 0 18 bold;
end;
implementation eq
parameters
real c[2,2] = [0.1, 0.0; 0.0, 0.1] {mN.m/rad};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
plug output 396 216;
OneJunction5 239.8 232.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [2,1];
signal knot out flow [2,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 232.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction7 239.8 216.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [3,1];
signal knot out flow [3,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 216.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction8 288 200
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 288 200 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
PowerMux 330 216
specifications active 'rot_x'
specification 'rot_x'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-20 14:35:23
1
False
True
';
type 'PowerMux-Rotation'
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 328 192 328 240 color 0 width 2;
rectangle 324 192 336 240 color -1;
text '1' 333 210 color 8421504 8;
terminals
input 328 200 fixed;
output 328 216 fixed;
input_rot2 328 232 fixed;
input_pos3 328 216 fixed;
end;
implementation eq
equations
output.e[1] = input.e;
output.e[2:3] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[1] = input.f;
output.f[2:3] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_y'
description '
4.1
Bond Graph\PowerMux.emx
2011-3-4 15:12:50
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[1] = input_rot2.e[1];
output.e[2] = input.e;
output.e[3] = input_rot2.e[2];
output.e[4:6] = input_pos3.e;
output.f[1] = input_rot2.f[1];
output.f[2] = input.f;
output.f[3] = input_rot2.f[2];
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_z'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-21 12:05:13
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[3] = input.e;
output.e[1:2] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[3] = input.f;
output.f[1:2] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
end;
R 288 152
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg top
figures
text 'R' 288 152 color 0 18 bold;
end;
implementation eq
parameters
real r = 0.0001;
equations
p.e = r * p.f;
implementation_end;
R4 239.8 288.2
description '4.01False
Bond Graph\2D\R-2.emx
2007-9-25 12:6:54
';
type 'R-2'
ports
power in p [2,1];
end;
icon bg bottom
figures
text 'R' 239.8 288.2 color 0 18 bold;
end;
implementation eq
parameters
real r[2,2] = [1.0, 0.0; 0.0, 1.0] {kN.m.s/rad};
equations
p.e = r * p.f;
implementation_end;
R5 239.8 168.2
description '4.01False
Bond Graph\3D\R-3.emx
2007-9-25 12:11:54
';
type 'R-3'
ports
power in p [3,1];
end;
icon bg top
figures
text 'R' 239.8 168.2 color 0 18 bold;
end;
implementation eq
parameters
real r[3,3] = [1.0, 0.0, 0.0; 0.0, 1.0, 0.0; 0.0, 0.0, 1.0] {kN.s/m};
equations
p.e = r * p.f;
implementation_end;
end;
connections
C1\p <= OneJunction7\p;
OneJunction5\p => C4\p;
OneJunction5\p => PowerMux\input_rot2;
OneJunction5\p => R4\p;
OneJunction7\p => PowerMux\input_pos3;
OneJunction7\p => R5\p;
OneJunction8\p => PowerMux\input;
PowerMux\output => output;
R\p <= OneJunction8\p;
end;
implementation_end;
Joint_dynF 864 48
description '
4.8
1
';
type Submodel
ports
power out output [6,1];
end;
icon bg
figures
rectangle 824 32 904 64 color 0 fill 55295;
text 'name' 864 48 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
C1 191.8 216.2
description '4.01False
Bond Graph\3D\C-3.emx
2007-9-25 12:12:8
';
type 'C-3'
ports
power in p [3,1];
signal out state [3,1];
restrictions
causality preferred out p;
end;
icon bg top
figures
text 'C' 191.8 216.2 color 0 18 bold;
end;
implementation eq
parameters
real c[3,3] = [0.1, 0.0, 0.0; 0.0, 0.1, 0.0; 0.0, 0.0, 0.1] {mN/m};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
C4 191.8 232.2
description '4.01False
Bond Graph\2D\C-2.emx
2007-9-25 12:7:27
';
type 'C-2'
ports
power in p [2,1];
signal out state [2,1];
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 191.8 232.2 color 0 18 bold;
end;
implementation eq
parameters
real c[2,2] = [1, 0.0; 0.0, 1] {uN.m/rad};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
plug output 396 216;
OneJunction5 239.8 232.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [2,1];
signal knot out flow [2,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 232.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction7 239.8 216.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [3,1];
signal knot out flow [3,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 216.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction8 304 200
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 304 200 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
PowerMux 330 216
specifications active 'rot_z'
specification 'rot_x'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-20 14:35:23
1
False
True
';
type 'PowerMux-Rotation'
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 328 192 328 240 color 0 width 2;
rectangle 324 192 336 240 color -1;
text '1' 333 210 color 8421504 8;
terminals
input 328 200 fixed;
output 328 216 fixed;
input_rot2 328 232 fixed;
input_pos3 328 216 fixed;
end;
implementation eq
equations
output.e[1] = input.e;
output.e[2:3] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[1] = input.f;
output.f[2:3] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_y'
description '
4.1
Bond Graph\PowerMux.emx
2011-3-4 15:12:50
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[1] = input_rot2.e[1];
output.e[2] = input.e;
output.e[3] = input_rot2.e[2];
output.e[4:6] = input_pos3.e;
output.f[1] = input_rot2.f[1];
output.f[2] = input.f;
output.f[3] = input_rot2.f[2];
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_z'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-21 12:05:13
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 328 192 328 240 color 0 width 2;
rectangle 324 192 336 240 color -1;
text '1' 333 210 color 8421504 8;
terminals
input 328 200 fixed;
output 328 216 fixed;
input_rot2 328 232 fixed;
input_pos3 328 216 fixed;
end;
implementation eq
equations
output.e[3] = input.e;
output.e[1:2] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[3] = input.f;
output.f[1:2] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
end;
R 304 152
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg top
figures
text 'R' 304 152 color 0 18 bold;
end;
implementation eq
parameters
real r = 0.001;
equations
p.e = r * p.f;
implementation_end;
R4 239.8 288.2
description '4.01False
Bond Graph\2D\R-2.emx
2007-9-25 12:6:54
';
type 'R-2'
ports
power in p [2,1];
end;
icon bg bottom
figures
text 'R' 239.8 288.2 color 0 18 bold;
end;
implementation eq
parameters
real r[2,2] = [1.0, 0.0; 0.0, 1.0] {kN.m.s/rad};
equations
p.e = r * p.f;
implementation_end;
R5 239.8 168.2
description '4.01False
Bond Graph\3D\R-3.emx
2007-9-25 12:11:54
';
type 'R-3'
ports
power in p [3,1];
end;
icon bg top
figures
text 'R' 239.8 168.2 color 0 18 bold;
end;
implementation eq
parameters
real r[3,3] = [1.0, 0.0, 0.0; 0.0, 1.0, 0.0; 0.0, 0.0, 1.0] {kN.s/m};
equations
p.e = r * p.f;
implementation_end;
end;
connections
C1\p <= OneJunction7\p;
OneJunction5\p => C4\p;
OneJunction5\p => PowerMux\input_rot2;
OneJunction5\p => R4\p;
OneJunction7\p => PowerMux\input_pos3;
OneJunction7\p => R5\p;
OneJunction8\p => PowerMux\input;
PowerMux\output => output;
R\p <= OneJunction8\p;
end;
implementation_end;
LiftingArm 912 240
description '
4.8
1
';
type Submodel
ports
signal in Hin [4,4];
power in Pin [6,1];
power out Pout [6,1];
end;
icon bg bottom
figures
rectangle 840 208 984 272 color 0 fill 6008319;
text 'name' 880 232 color 0 'Clear Sans' 16;
terminals
Hin 840 256 fixed;
Pin 984 224 fixed;
Pout 840 224 fixed;
end;
implementation bg
submodels
Body_Lift1 208 272
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type 'Submodel-Equation'
ports
signal in input [4,4];
end;
implementation eq
parameters
real dimension[3] = [0.02;0.02;0.02] {m};
variables
real position[3];
real rotation[3];
real R[3,3];
equations
position = input[1:3,4];
rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input);
//[input[3,2];input[1,3];input[2,1]];
R = input[1:3,1:3];implementation_end;
Body_Lift2 488 272
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type 'Submodel-Equation'
ports
signal in input [4,4];
end;
implementation eq
parameters
real dimension[3] = [0.01;0.003;0.002] {m};
variables
real position[3];
real rotation[3];
real R[3,3];
equations
position = input[1:3,4];
rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input);
//[input[3,2];input[1,3];input[2,1]];
R = input[1:3,1:3];implementation_end;
Body_Lift3 872 272
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type 'Submodel-Equation'
ports
signal in input [4,4];
end;
implementation eq
parameters
real dimension[3] = [0.003;0.025;0.001] {m};
variables
real position[3];
real rotation[3];
real R[3,3];
equations
position = input[1:3,4];
rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input);
//[input[3,2];input[1,3];input[2,1]];
R = input[1:3,1:3];implementation_end;
Body_Lift4 1232 272
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type 'Submodel-Equation'
ports
signal in input [4,4];
end;
implementation eq
parameters
real dimension[3] = [0.0159;0.003;0.002] {m};
variables
real position[3];
real rotation[3];
real R[3,3];
equations
position = input[1:3,4];
rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input);
//[input[3,2];input[1,3];input[2,1]];
R = input[1:3,1:3];implementation_end;
COM 504 112
description '4.81Bond Graph\MR\center_of_mass_v2.emx2020-7-21 12:24:38parameters
real density = 1400 {kg/m3};
real dimension[3] = [0.01;0.003;0.002] {m};
variables
real I[3,1] {N.m.s};
real m {kg};
initialequations
m = dimension[1] * dimension[2] * dimension[3] * density;
I[1] = m/12 * ( dimension[2]^2 + dimension[3]^2);
I[2] = m/12 * ( dimension[1]^2 + dimension[3]^2);
I[3] = m/12 * ( dimension[1]^2 + dimension[2]^2);';
type Submodel
ports
signal in Hin [4,4];
signal out Hout [4,4];
power out p [6,1];
end;
icon bg bottom
figures
rectangle 472 96 536 128 color 0 fill 139;
text 'COM' 504 112 color 0 'Clear Sans' 16;
terminals
Hin 488 128 fixed;
p 520 128 fixed;
end;
implementation bg
submodels
AdHi0 544 400
description '4.01False2007-9-25 12:3:3True';
type MTF
ports
power in p1 [6,1];
power out p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg left
figures
text 'MTF' 544 400 color 0 18 bold;
end;
implementation eq
variables
real onlyRotH[4,4];
code
//Only rotations with respect to the inertial system matter!
onlyRotH = H;
onlyRotH[1,4] = 0;
onlyRotH[2,4] = 0;
onlyRotH[3,4] = 0;
p2.e = transpose(Adjoint(onlyRotH)) * p1.e;
p1.f = Adjoint(onlyRotH) * p2.f;
implementation_end;
EJS 624 336
description '4.01False2007-10-31 11:43:6True';
type MGY
ports
power in p1 [6,1];
end;
icon bg top
figures
text 'MGY' 624 336 color 0 18 bold;
end;
implementation eq
//EJS / Gyroscopic effects
variables
real global I[3];
real global m;
real II[6,6]; //Inertial tensor
real Q[6,6];
real QI[6,6];
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
Q = transpose(adjoint(p1.f));
QI = Q*II;
p1.e = QI*p1.f;implementation_end;
Gravity 624 400
description '4.01False2007-9-25 12:3:26True';
type Se
ports
power out p [6,1];
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'Se' 624 400 color 0 18 bold;
end;
implementation eq
variables
real global m;
real effort[6];
equations
effort = [0;0;0;0;0;-g_n*m];
p.e = effort;
implementation_end;
InertialTensor 544 256
description '4.01False
Bond Graph\3D\I-3.emx
2007-9-25 12:12:14
';
type 'I-3'
ports
power in p [6,1];
signal out state [6,1];
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 544 256 color 0 18 bold;
end;
implementation eq
variables
real global I[3];
real global m;
real II[6,6]; //Inertial tensor
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
state = int(p.e); //state = generalized momentum
p.f = inverse(II)*state;
implementation_end;
plug Hin 433.4 496;
plug Hout 691.2 496;
plug p 439.4 336;
Splitter1 544 496
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 540.8 492.8 547.2 499.2 color -1 fill 0;
ellipse 539.7 491.7 548.3 500.3 color -1;
terminals
input 544 496 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Ta0j 544 336
description '
4.0
1
False
Bond Graph\OneJunction.emx
2007-9-27 9:51:18
True
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg bottom
figures
text '1' 544 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
ZeroJunction1 504 336
description '
4.2
1
False
Bond Graph\ZeroJunction.emx
2011-11-29 16:45:16
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg
figures
text '0' 504 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
AdHi0\p2 => Ta0j\p;
Gravity\p => AdHi0\p1;
Hin -> Splitter1\input;
Splitter1\output -> AdHi0\H;
Splitter1\output -> Hout;
Ta0j\p => EJS\p1;
Ta0j\p => InertialTensor\p;
ZeroJunction1\p => p;
ZeroJunction1\p => Ta0j\p;
end;
implementation_end;
COM1 888 112
description '4.81Bond Graph\MR\center_of_mass_v2.emx2020-7-21 12:24:38parameters
real density = 1400 {kg/m3};
real dimension[3] = [0.003;0.025;0.001] {m};
variables
real I[3,1] {N.m.s};
real m {kg};
initialequations
m = dimension[1] * dimension[2] * dimension[3] * density;
I[1] = m/12 * ( dimension[2]^2 + dimension[3]^2);
I[2] = m/12 * ( dimension[1]^2 + dimension[3]^2);
I[3] = m/12 * ( dimension[1]^2 + dimension[2]^2);';
type Submodel
ports
signal in Hin [4,4];
signal out Hout [4,4];
power out p [6,1];
end;
icon bg bottom
figures
rectangle 856 96 920 128 color 0 fill 139;
text 'COM' 888 112 color 0 'Clear Sans' 16;
terminals
Hin 872 128 fixed;
p 904 128 fixed;
end;
implementation bg
submodels
AdHi0 544 400
description '4.01False2007-9-25 12:3:3True';
type MTF
ports
power in p1 [6,1];
power out p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg left
figures
text 'MTF' 544 400 color 0 18 bold;
end;
implementation eq
variables
real onlyRotH[4,4];
code
//Only rotations with respect to the inertial system matter!
onlyRotH = H;
onlyRotH[1,4] = 0;
onlyRotH[2,4] = 0;
onlyRotH[3,4] = 0;
p2.e = transpose(Adjoint(onlyRotH)) * p1.e;
p1.f = Adjoint(onlyRotH) * p2.f;
implementation_end;
EJS 624 336
description '4.01False2007-10-31 11:43:6True';
type MGY
ports
power in p1 [6,1];
end;
icon bg top
figures
text 'MGY' 624 336 color 0 18 bold;
end;
implementation eq
//EJS / Gyroscopic effects
variables
real global I[3];
real global m;
real II[6,6]; //Inertial tensor
real Q[6,6];
real QI[6,6];
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
Q = transpose(adjoint(p1.f));
QI = Q*II;
p1.e = QI*p1.f;implementation_end;
Gravity 624 400
description '4.01False2007-9-25 12:3:26True';
type Se
ports
power out p [6,1];
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'Se' 624 400 color 0 18 bold;
end;
implementation eq
variables
real global m;
real effort[6];
equations
effort = [0;0;0;0;0;-g_n*m];
p.e = effort;
implementation_end;
InertialTensor 544 256
description '4.01False
Bond Graph\3D\I-3.emx
2007-9-25 12:12:14
';
type 'I-3'
ports
power in p [6,1];
signal out state [6,1];
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 544 256 color 0 18 bold;
end;
implementation eq
variables
real global I[3];
real global m;
real II[6,6]; //Inertial tensor
real Ia[6];
initialequations
Ia[1:3] = I;
Ia[4:6] = m;
II = diag(Ia);
equations
state = int(p.e); //state = generalized momentum
p.f = inverse(II)*state;
implementation_end;
plug Hin 433.4 496;
plug Hout 691.2 496;
plug p 439.4 336;
Splitter1 544 496
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 540.8 492.8 547.2 499.2 color -1 fill 0;
ellipse 539.7 491.7 548.3 500.3 color -1;
terminals
input 544 496 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Ta0j 544 336
description '
4.0
1
False
Bond Graph\OneJunction.emx
2007-9-27 9:51:18
True
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg bottom
figures
text '1' 544 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
ZeroJunction1 504 336
description '
4.2
1
False
Bond Graph\ZeroJunction.emx
2011-11-29 16:45:16
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg
figures
text '0' 504 336 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
AdHi0\p2 => Ta0j\p;
Gravity\p => AdHi0\p1;
Hin -> Splitter1\input;
Splitter1\output -> AdHi0\H;
Splitter1\output -> Hout;
Ta0j\p => EJS\p1;
Ta0j\p => InertialTensor\p;
ZeroJunction1\p => p;
ZeroJunction1\p => Ta0j\p;
end;
implementation_end;
Joint 296 184
description '
4.8
1
Bond Graph\MR\joint-v3.emx
2020-7-21 12:08:53
';
type 'Submodel-v3'
ports
power in Pin [6,1];
power in Pdiff [6,1];
signal in Hin [4,4];
signal out Hout [4,4];
signal out Hdiff [4,4];
power out Pout [6,1];
end;
icon bg bottom
figures
rectangle 272 152 320 216 color 0 fill 14745599;
text 'Joint' 296 184 color 0 'Clear Sans' 16;
terminals
Pin 320 168 fixed;
Hin 272 200 fixed;
Hout 320 200 fixed;
Pout 272 168 fixed;
end;
implementation bg
submodels
AdHji 424 424
description '
4.0
1
False
Bond Graph\MTF.emx
2007-9-25 12:3:3
True
';
type MTF
ports
power out p1 [6,1];
power in p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg bottom
figures
text 'MTF' 424 424 color 0 18 bold;
end;
implementation eq
equations
p2.e = transpose(Adjoint(H)) * p1.e;
p1.f = Adjoint(H) * p2.f;implementation_end;
FlowSensor2 184 311.9
description '
4.2
1
False
Bond Graph\FlowSensor.emx
2011-11-29 15:50:53
';
knot FlowSensor
ports
power knot in p1 [6,1];
power knot out p2 [6,1];
signal knot out flow [6,1];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg ellipse
figures
ellipse 177.1 304.8 190.9 319.1 color 0 fill 16777215;
text 'f' 184 311.2 color 0;
end;
implementation eq
equations
p2.f = p1.f;
p1.e = p2.e;
flow = p1.f;
implementation_end;
Hmatrix 256 312
description '4.0Template\Submodel-Equation.emx1False2007-11-1 22:32:1False';
type 'Submodel-Equation'
ports
signal in flow [6,1];
signal out H [4,4];
end;
icon bg
figures
rectangle 224 296 288 328 color 0 fill 15132390;
text 'name' 256 312 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real init[4] = [1;0;0;0];
variables
real q[4]; //quaternions
real W[3,4]; //Quaternion Rates Matrix
real R[3,3]; //Rotation Matrix
real p[3]; //Position Vector
real dq[4];
real Wb[3,4];
equations
dq = transpose(Wb) * flow[1:3] ./ 2;
q = int(dq,init);
p = int(flow[4:6]);
W = [-q[2], q[1], -q[4], q[3];
-q[3], q[4], q[1], -q[2];
-q[4], -q[3], q[2], q[1]];
Wb = [ -q[2], q[1], q[4], -q[3];
-q[3], -q[4], q[1], q[2];
-q[4], q[3], -q[2], q[1]];
R = [q[1]^2+q[2]^2-q[3]^2-q[4]^2, 2*(q[2]*q[3]+q[1]*q[4]), 2*(q[2]*q[4]-q[1]*q[3]);
2*(q[2]*q[3]-q[1]*q[4]), q[1]^2-q[2]^2+q[3]^2-q[4]^2, 2*(q[3]*q[4]+q[1]*q[2]);
2*(q[2]*q[4]+q[1]*q[3]), 2*(q[3]*q[4]-q[1]*q[2]), q[1]^2-q[2]^2-q[3]^2+q[4]^2];
H = homogeneous(R,p);
implementation_end;
MatrixMul 320 576
description '
4.0
1
False
Signal\Block Diagram\Gain.emx
2007-9-26 12:15:12
True
';
type Gain
ports
signal in input1 [4,4];
signal out output [4,4];
signal in input2 [4,4];
end;
icon bg bottom
figures
rectangle 304.1 560 335.9 592 color 0 fill 15132390;
text 'X' 320 576 color 16711680 16 bold;
end;
implementation eq
equations
output = input2*input1; implementation_end;
plug Pin 492.1 424;
plug Pdiff 184 225;
plug Hin 130.8 576;
plug Hout 478.4 576;
plug Hdiff 320 222;
plug Pout 134.7 424;
Splitter2 320 312
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 316.8 308.8 323.2 315.2 color -1 fill 0;
ellipse 315.7 307.7 324.3 316.3 color -1;
terminals
input 320 312 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Wbai 184 424
description '
4.0
1
False
Bond Graph\ZeroJunction.emx
2007-9-27 9:51:43
True
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg bottom
figures
text '0' 184 424 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
FlowSensor2\flow -> Hmatrix\flow;
FlowSensor2\p2 => Wbai\p;
Hin -> MatrixMul\input2;
Hmatrix\H -> Splitter2\input;
MatrixMul\output -> Hout;
Pdiff => FlowSensor2\p1;
Pin => AdHji\p2;
Splitter2\output -> AdHji\H 424 312;
Splitter2\output -> Hdiff;
Splitter2\output -> MatrixMul\input1;
Wbai\p <= AdHji\p1;
Wbai\p => Pout;
end;
implementation_end;
Joint1 712 184
description '
4.8
1
Bond Graph\MR\joint-v3.emx
2020-7-21 12:08:53
';
type 'Submodel-v3'
ports
power in Pin [6,1];
power in Pdiff [6,1];
signal in Hin [4,4];
signal out Hout [4,4];
signal out Hdiff [4,4];
power out Pout [6,1];
end;
icon bg bottom
figures
rectangle 688 152 736 216 color 0 fill 14745599;
text 'Joint' 712 184 color 0 'Clear Sans' 16;
terminals
Pin 736 168 fixed;
Hin 688 200 fixed;
Hout 736 200 fixed;
Pout 688 168 fixed;
end;
implementation bg
submodels
AdHji 424 424
description '
4.0
1
False
Bond Graph\MTF.emx
2007-9-25 12:3:3
True
';
type MTF
ports
power out p1 [6,1];
power in p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg bottom
figures
text 'MTF' 424 424 color 0 18 bold;
end;
implementation eq
equations
p2.e = transpose(Adjoint(H)) * p1.e;
p1.f = Adjoint(H) * p2.f;implementation_end;
FlowSensor2 184 311.9
description '
4.2
1
False
Bond Graph\FlowSensor.emx
2011-11-29 15:50:53
';
knot FlowSensor
ports
power knot in p1 [6,1];
power knot out p2 [6,1];
signal knot out flow [6,1];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg ellipse
figures
ellipse 177.1 304.8 190.9 319.1 color 0 fill 16777215;
text 'f' 184 311.2 color 0;
end;
implementation eq
equations
p2.f = p1.f;
p1.e = p2.e;
flow = p1.f;
implementation_end;
Hmatrix 256 312
description '4.0Template\Submodel-Equation.emx1False2007-11-1 22:32:1False';
type 'Submodel-Equation'
ports
signal in flow [6,1];
signal out H [4,4];
end;
icon bg
figures
rectangle 224 296 288 328 color 0 fill 15132390;
text 'name' 256 312 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real init[4] = [1;0;0;0];
variables
real q[4]; //quaternions
real W[3,4]; //Quaternion Rates Matrix
real R[3,3]; //Rotation Matrix
real p[3]; //Position Vector
real dq[4];
real Wb[3,4];
equations
dq = transpose(Wb) * flow[1:3] ./ 2;
q = int(dq,init);
p = int(flow[4:6]);
W = [-q[2], q[1], -q[4], q[3];
-q[3], q[4], q[1], -q[2];
-q[4], -q[3], q[2], q[1]];
Wb = [ -q[2], q[1], q[4], -q[3];
-q[3], -q[4], q[1], q[2];
-q[4], q[3], -q[2], q[1]];
R = [q[1]^2+q[2]^2-q[3]^2-q[4]^2, 2*(q[2]*q[3]+q[1]*q[4]), 2*(q[2]*q[4]-q[1]*q[3]);
2*(q[2]*q[3]-q[1]*q[4]), q[1]^2-q[2]^2+q[3]^2-q[4]^2, 2*(q[3]*q[4]+q[1]*q[2]);
2*(q[2]*q[4]+q[1]*q[3]), 2*(q[3]*q[4]-q[1]*q[2]), q[1]^2-q[2]^2-q[3]^2+q[4]^2];
H = homogeneous(R,p);
implementation_end;
MatrixMul 320 576
description '
4.0
1
False
Signal\Block Diagram\Gain.emx
2007-9-26 12:15:12
True
';
type Gain
ports
signal in input1 [4,4];
signal out output [4,4];
signal in input2 [4,4];
end;
icon bg bottom
figures
rectangle 304.1 560 335.9 592 color 0 fill 15132390;
text 'X' 320 576 color 16711680 16 bold;
end;
implementation eq
equations
output = input2*input1; implementation_end;
plug Pin 492.1 424;
plug Pdiff 184 225;
plug Hin 130.8 576;
plug Hout 478.4 576;
plug Hdiff 320 222;
plug Pout 134.7 424;
Splitter2 320 312
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 316.8 308.8 323.2 315.2 color -1 fill 0;
ellipse 315.7 307.7 324.3 316.3 color -1;
terminals
input 320 312 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Wbai 184 424
description '
4.0
1
False
Bond Graph\ZeroJunction.emx
2007-9-27 9:51:43
True
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg bottom
figures
text '0' 184 424 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
FlowSensor2\flow -> Hmatrix\flow;
FlowSensor2\p2 => Wbai\p;
Hin -> MatrixMul\input2;
Hmatrix\H -> Splitter2\input;
MatrixMul\output -> Hout;
Pdiff => FlowSensor2\p1;
Pin => AdHji\p2;
Splitter2\output -> AdHji\H 424 312;
Splitter2\output -> Hdiff;
Splitter2\output -> MatrixMul\input1;
Wbai\p <= AdHji\p1;
Wbai\p => Pout;
end;
implementation_end;
Joint2 1064 184
description '
4.8
1
Bond Graph\MR\joint-v3.emx
2020-7-21 12:08:53
';
type 'Submodel-v3'
ports
power in Pin [6,1];
power in Pdiff [6,1];
signal in Hin [4,4];
signal out Hout [4,4];
signal out Hdiff [4,4];
power out Pout [6,1];
end;
icon bg bottom
figures
rectangle 1040 152 1088 216 color 0 fill 14745599;
text 'Joint' 1064 184 color 0 'Clear Sans' 16;
terminals
Pin 1088 168 fixed;
Hin 1040 200 fixed;
Hout 1088 200 fixed;
Pout 1040 168 fixed;
end;
implementation bg
submodels
AdHji 424 424
description '
4.0
1
False
Bond Graph\MTF.emx
2007-9-25 12:3:3
True
';
type MTF
ports
power out p1 [6,1];
power in p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg bottom
figures
text 'MTF' 424 424 color 0 18 bold;
end;
implementation eq
equations
p2.e = transpose(Adjoint(H)) * p1.e;
p1.f = Adjoint(H) * p2.f;implementation_end;
FlowSensor2 184 311.9
description '
4.2
1
False
Bond Graph\FlowSensor.emx
2011-11-29 15:50:53
';
knot FlowSensor
ports
power knot in p1 [6,1];
power knot out p2 [6,1];
signal knot out flow [6,1];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg ellipse
figures
ellipse 177.1 304.8 190.9 319.1 color 0 fill 16777215;
text 'f' 184 311.2 color 0;
end;
implementation eq
equations
p2.f = p1.f;
p1.e = p2.e;
flow = p1.f;
implementation_end;
Hmatrix 256 312
description '4.0Template\Submodel-Equation.emx1False2007-11-1 22:32:1False';
type 'Submodel-Equation'
ports
signal in flow [6,1];
signal out H [4,4];
end;
icon bg
figures
rectangle 224 296 288 328 color 0 fill 15132390;
text 'name' 256 312 color 0 'Clear Sans' 16;
end;
implementation eq
parameters
real init[4] = [1;0;0;0];
variables
real q[4]; //quaternions
real W[3,4]; //Quaternion Rates Matrix
real R[3,3]; //Rotation Matrix
real p[3]; //Position Vector
real dq[4];
real Wb[3,4];
equations
dq = transpose(Wb) * flow[1:3] ./ 2;
q = int(dq,init);
p = int(flow[4:6]);
W = [-q[2], q[1], -q[4], q[3];
-q[3], q[4], q[1], -q[2];
-q[4], -q[3], q[2], q[1]];
Wb = [ -q[2], q[1], q[4], -q[3];
-q[3], -q[4], q[1], q[2];
-q[4], q[3], -q[2], q[1]];
R = [q[1]^2+q[2]^2-q[3]^2-q[4]^2, 2*(q[2]*q[3]+q[1]*q[4]), 2*(q[2]*q[4]-q[1]*q[3]);
2*(q[2]*q[3]-q[1]*q[4]), q[1]^2-q[2]^2+q[3]^2-q[4]^2, 2*(q[3]*q[4]+q[1]*q[2]);
2*(q[2]*q[4]+q[1]*q[3]), 2*(q[3]*q[4]-q[1]*q[2]), q[1]^2-q[2]^2-q[3]^2+q[4]^2];
H = homogeneous(R,p);
implementation_end;
MatrixMul 320 576
description '
4.0
1
False
Signal\Block Diagram\Gain.emx
2007-9-26 12:15:12
True
';
type Gain
ports
signal in input1 [4,4];
signal out output [4,4];
signal in input2 [4,4];
end;
icon bg bottom
figures
rectangle 304.1 560 335.9 592 color 0 fill 15132390;
text 'X' 320 576 color 16711680 16 bold;
end;
implementation eq
equations
output = input2*input1; implementation_end;
plug Pin 492.1 424;
plug Pdiff 184 225;
plug Hin 130.8 576;
plug Hout 478.4 576;
plug Hdiff 320 222;
plug Pout 134.7 424;
Splitter2 320 312
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 316.8 308.8 323.2 315.2 color -1 fill 0;
ellipse 315.7 307.7 324.3 316.3 color -1;
terminals
input 320 312 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Wbai 184 424
description '
4.0
1
False
Bond Graph\ZeroJunction.emx
2007-9-27 9:51:43
True
';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg bottom
figures
text '0' 184 424 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
FlowSensor2\flow -> Hmatrix\flow;
FlowSensor2\p2 => Wbai\p;
Hin -> MatrixMul\input2;
Hmatrix\H -> Splitter2\input;
MatrixMul\output -> Hout;
Pdiff => FlowSensor2\p1;
Pin => AdHji\p2;
Splitter2\output -> AdHji\H 424 312;
Splitter2\output -> Hdiff;
Splitter2\output -> MatrixMul\input1;
Wbai\p <= AdHji\p1;
Wbai\p => Pout;
end;
implementation_end;
Joint_dynF1 296 80
description '
4.8
1
';
type Submodel
ports
power out output [6,1];
end;
icon bg
figures
rectangle 256 64 336 96 color 0 fill 15132390;
text 'name' 296 80 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
C 344 160
description '
4.2
1
False
Bond Graph\C.emx
2011-11-29 15:58:35
';
type C
ports
power in p;
signal out state;
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 344 160 color 0 18 bold;
end;
implementation eq
parameters
real c = 0.001;
equations
state = int(p.f);
p.e = state / c;
implementation_end;
C1 191.8 216.2
description '4.01False
Bond Graph\3D\C-3.emx
2007-9-25 12:12:8
';
type 'C-3'
ports
power in p [3,1];
signal out state [3,1];
restrictions
causality preferred out p;
end;
icon bg top
figures
text 'C' 191.8 216.2 color 0 18 bold;
end;
implementation eq
parameters
real c[3,3] = [1, 0.0, 0.0; 0.0, 1, 0.0; 0.0, 0.0, 1] {mN/m};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
C4 191.8 232.2
description '4.01False
Bond Graph\2D\C-2.emx
2007-9-25 12:7:27
';
type 'C-2'
ports
power in p [2,1];
signal out state [2,1];
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 191.8 232.2 color 0 18 bold;
end;
implementation eq
parameters
real c[2,2] = [1, 0.0; 0.0, 1] {mN.m/rad};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
plug output 444 216;
OneJunction3 288 160
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 288 160 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction5 239.8 232.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [2,1];
signal knot out flow [2,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 232.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction7 239.8 216.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [3,1];
signal knot out flow [3,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 216.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction8 288 200
description '
4.2
1
False
Bond Graph\ZeroJunction.emx
2011-11-29 16:45:16
';
knot ZeroJunction
ports
power knot duplicatable none p [1];
signal knot out effort [1];
restrictions
causality constraint one_in p;
end;
icon bg
figures
text '0' 288 200 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
PowerMux 378 216
specifications active 'rot_z'
specification 'rot_x'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-20 14:35:23
1
False
True
';
type 'PowerMux-Rotation'
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 328 192 328 240 color 0 width 2;
rectangle 324 192 336 240 color -1;
text '1' 333 210 color 8421504 8;
terminals
input 328 200 fixed;
output 328 216 fixed;
input_rot2 328 232 fixed;
input_pos3 328 216 fixed;
end;
implementation eq
equations
output.e[1] = input.e;
output.e[2:3] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[1] = input.f;
output.f[2:3] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_y'
description '
4.1
Bond Graph\PowerMux.emx
2011-3-4 15:12:50
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 328 192 328 240 color 0 width 2;
rectangle 324 192 336 240 color -1;
text '1' 333 210 color 8421504 8;
terminals
input 328 200 fixed;
output 328 216 fixed;
input_rot2 328 232 fixed;
input_pos3 328 216 fixed;
end;
implementation eq
equations
output.e[1] = input_rot2.e[1];
output.e[2] = input.e;
output.e[3] = input_rot2.e[2];
output.e[4:6] = input_pos3.e;
output.f[1] = input_rot2.f[1];
output.f[2] = input.f;
output.f[3] = input_rot2.f[2];
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_z'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-21 12:05:13
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 376 192 376 240 color 0 width 2;
rectangle 372 192 384 240 color -1;
text '1' 381 210 color 8421504 8;
terminals
input 376 200 fixed;
output 376 216 fixed;
input_rot2 376 232 fixed;
input_pos3 376 216 fixed;
end;
implementation eq
equations
output.e[3] = input.e;
output.e[1:2] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[3] = input.f;
output.f[1:2] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
end;
R 288 112
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg top
figures
text 'R' 288 112 color 0 18 bold;
end;
implementation eq
parameters
real r = 10;
equations
p.e = r * p.f;
implementation_end;
R4 239.8 288.2
description '4.01False
Bond Graph\2D\R-2.emx
2007-9-25 12:6:54
';
type 'R-2'
ports
power in p [2,1];
end;
icon bg bottom
figures
text 'R' 239.8 288.2 color 0 18 bold;
end;
implementation eq
parameters
real r[2,2] = [1.0, 0.0; 0.0, 1.0] {kN.m.s/rad};
equations
p.e = r * p.f;
implementation_end;
R5 239.8 168.2
description '4.01False
Bond Graph\3D\R-3.emx
2007-9-25 12:11:54
';
type 'R-3'
ports
power in p [3,1];
end;
icon bg top
figures
text 'R' 239.8 168.2 color 0 18 bold;
end;
implementation eq
parameters
real r[3,3] = [1.0, 0.0, 0.0; 0.0, 1.0, 0.0; 0.0, 0.0, 1.0] {kN.s/m};
equations
p.e = r * p.f;
implementation_end;
SG90 288 368
description '
4.8
1
Motor\SG90.emx
2020-7-27 10:46:51
';
type Submodel
ports
signal in effort;
power out p;
end;
implementation bg
submodels
C 784 96
description '
4.2
1
False
Bond Graph\C.emx
2011-11-29 15:58:35
';
type C
ports
power in p;
signal out state;
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 784 96 color 0 18 bold;
end;
implementation eq
parameters
real c = 0.001;
equations
state = int(p.f);
p.e = state / c;
implementation_end;
Gain1 456 448
description '4.01False
Signal\Block Diagram\Gain.emx
2007-9-26 12:15:12
';
type Gain
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
rectangle 440.1 432 471.9 464 color 0 fill 15132390;
text 'K' 456 448 color 16711680 16 bold;
end;
implementation eq
parameters
real K = 5; // gain
equations
output = K * input;
implementation_end;
GY1 592 296
description '
4.2
1
False
Bond Graph\GY.emx
2011-11-29 15:53:45
';
type GY
ports
power in p1;
power out p2;
restrictions
causality constraint equal p1 p2;
end;
icon bg bottom
figures
text 'GY' 592 296 color 0 18 bold;
end;
implementation eq
parameters
real r = 0.4;
equations
p1.e = r * p2.f;
p2.e = r * p1.f;
implementation_end;
I 536 352
description '
4.2
1
False
Bond Graph\I.emx
2011-11-29 15:55:55
';
type I
ports
power in p;
signal out state;
restrictions
causality preferred in p;
end;
icon bg bottom
figures
text 'I' 536 352 color 0 18 bold;
end;
implementation eq
parameters
real i = 0.1 {mH};
equations
state = int(p.e);
p.f = state / i;
implementation_end;
Integrate 728 448
description '
4.3
1
False
Signal\Block Diagram\Integrate.emx
2013-3-8 14:47:42
';
type Integrate
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
rectangle 712 432 744 464 color 0 fill 15132390;
text '∫' 728 448.3 color 16711680 'Lucida Sans' 21 italic;
end;
implementation eq
parameters
real initial = 0; // initial value
equations
output = int (input, initial);
implementation_end;
MSe 456 296
description '
4.2
1
False
Bond Graph\MSe.emx
2011-11-29 16:12:33
';
type MSe
ports
power out p;
signal in effort;
restrictions
causality fixed out p;
end;
icon bg bottom
figures
text 'MSe' 456 296 color 0 18 bold;
end;
implementation eq
variables
real flow;
equations
p.e = effort;
flow = p.f;
implementation_end;
plug effort 656 536;
plug p 768 296;
OneJunction 728 96
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 728 96 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction1 536 296
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 536 296 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction2 728 296
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 728 296 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction4 680 160
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 680 160 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
PD 608 448
description '
4.0
1
False
Signal\Control\PID Control\Continuous\PD.emx
2008-1-17 10:49:7
';
type PD
ports
signal in error;
signal out output;
end;
icon bg bottom
figures
rectangle 592 432 624 464 color 0 fill 15132390;
text 'PD' 608.5 448.1 color 16711680 18 bold;
end;
implementation eq
parameters
real kp = 2.0 {}; // Proportional gain
real tauD = 1.0 {s}; // Derivative time constant: tauD > 0
real beta = 0.1 {}; // Tameness constant: 0 < beta << 1
variables
real state, rate;
equations
rate = (kp * error - output) / (beta * tauD);
state = int (rate);
output = state + kp * error / beta;
implementation_end;
PlusMinus1 656 448
description '4.01False
Signal\Block Diagram\PlusMinus.emx
2007-9-27 10:15:13
';
knot PlusMinus
ports
signal knot duplicatable in plus [1];
signal knot duplicatable in minus [1];
signal knot out output [1];
end;
icon bg ellipse
figures
ellipse 648 440 664 456 color 0 fill 16777215;
end;
implementation eq
equations
output = sum (collect (plus)) - sum (collect (minus));
implementation_end;
R 536 240
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg bottom
figures
text 'R' 536 240 color 0 18 bold;
end;
implementation eq
parameters
real r = 7.84 {ohm};
equations
p.e = r * p.f;
implementation_end;
R1 728 40
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg bottom
figures
text 'R' 728 40 color 0 18 bold;
end;
implementation eq
parameters
real r = 10;
equations
p.e = r * p.f;
implementation_end;
Sf 632 160
description '
4.2
1
False
Bond Graph\Sf.emx
2011-11-29 16:38:03
';
type Sf
ports
power out p;
restrictions
causality fixed in p;
end;
icon bg bottom
figures
text 'Sf' 632 160 color 0 18 bold;
end;
implementation eq
parameters
real flow = 1;
variables
real effort;
equations
p.f = flow;
effort = p.e;
implementation_end;
SignalLimiter1 536 448
description '4.01False
Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx
2007-9-26 12:47:40
';
type 'SignalLimiter-Limit'
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
group
rectangle 520 432 552 464 color 0 fill 15132390;
line 535.9 436.5 535.9 461 color 0 fill 15132390;
line 523 448.2 548.7 448.2 color 0 fill 15132390;
spline 529.9 455.1 541.9 441.4 color 16711680 fill 15132390 width 2;
spline 541.3 442.2 549.9 441.8 color 16711680 fill 15132390 width 2;
spline 523 455.6 529.9 455.1 color 16711680 fill 15132390 width 2;
end;
end;
implementation eq
parameters
real maximum = 1;
real minimum = -1;
equations
output = limit (input, minimum, maximum);
implementation_end;
Splitter2 680 448
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [1];
signal knot in input [1];
end;
icon bg ellipse
figures
ellipse 676.8 444.8 683.2 451.2 color -1 fill 0;
ellipse 675.7 443.7 684.3 452.3 color -1;
terminals
input 680 448 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Submodel1 680 248
description '4.0
Template\Submodel-Equation.emx
1
False
2007-11-1 22:32:1
False
';
type 'Submodel-Equation'
ports
signal in input;
signal out output;
end;
implementation eq
parameters
real angle = 90 {deg};
equations
// start typing here
output = abs(input) > angle;
implementation_end;
TF1 648 296
description '
4.2
1
False
Bond Graph\TF.emx
2011-11-29 16:43:47
';
type TF
ports
power in p1;
power out p2;
restrictions
causality constraint not_equal p1 p2;
end;
icon bg bottom
figures
text 'TF' 648 296 color 0 18 bold;
end;
implementation eq
parameters
real r = 0.008333;
equations
p1.e = r * p2.e;
p2.f = r * p1.f;
implementation_end;
X0 728 160
description '
1
False
Bond Graph\SwitchingZeroJunction.emx
2012-12-21 14:27:32
4.3
';
type X0
ports
power in p1;
power out p2;
power out p12;
signal boolean in condition;
restrictions
causality fixed out p1;
causality fixed out p2;
causality fixed in p12;
end;
icon bg bottom
figures
text 'X0' 728 160 color 8388608 18 bold;
end;
implementation eq
equations
p1.e = if condition then p12.e else 0 end;
p2.e = p1.e;
p12.f = if condition then p1.f-p2.f else 0 end;
implementation_end;
end;
connections
effort -> PlusMinus1\plus;
Gain1\output -> MSe\effort;
GY1\p2 => TF1\p1;
Integrate\output -> Splitter2\input;
MSe\p => OneJunction1\p;
OneJunction\p => C\p;
OneJunction\p => R1\p;
OneJunction1\p => GY1\p1;
OneJunction1\p => I\p;
OneJunction1\p => R\p;
OneJunction2\flow -> Integrate\input;
OneJunction2\p => p;
OneJunction4\p <= Sf\p;
PD\output -> SignalLimiter1\input;
PlusMinus1\output -> PD\error;
SignalLimiter1\output -> Gain1\input;
Splitter2\output -> PlusMinus1\minus;
Splitter2\output -> Submodel1\input;
Submodel1\output -> X0\condition 680 200;
TF1\p2 => OneJunction2\p;
X0\p1 <= OneJunction2\p;
X0\p12 => OneJunction\p;
X0\p2 => OneJunction4\p;
end;
implementation_end;
Square 288 544
description '
4.0
1
False
Signal\Sources\WaveGenerator-Square.emx
2009-3-5 16:05:33
';
type 'WaveGenerator-Square'
ports
signal out output;
end;
icon bg bottom
figures
rectangle 272.1 528 303.9 560 color 0 fill 15132390;
line 276.1 531.9 275.9 558.2 color 0 fill 0;
line 273.9 556.1 299.9 556.1 color 0 fill 0;
line 276.1 556.1 280 556.1 280 544 color 16711680 fill 0;
line 288 544 280 544 288 544 color 16711680 fill 0;
line 288 556.1 288 544 288 556.1 color 16711680 fill 0;
line 296 544 296 556.1 296 544 color 16711680 fill 0;
line 299.9 544.1 295.7 544.1 color 16711680 fill 0;
line 288 556.1 296 556.1 color 16711680 fill 0;
end;
implementation eq
parameters
real amplitude = 45 {deg}; // amplitude of the wave
real omega = 0.31415926535898 {rad/s}; // angular frequency of the wave
variables
real hidden s, half;
boolean hidden change;
equations
"calculate at least 2 points per period
(just after the change in sign)"
half = pi / omega;
change = frequencyevent (half, 1e-14);
"calculate the square wave"
s = sign (sin (omega * time));
output = if( s == 0 ) then
amplitude
else
(amplitude / 2) * (s + 1)
end;
implementation_end;
end;
connections
C\p <= OneJunction3\p;
C1\p <= OneJunction7\p;
OneJunction3\p <= OneJunction8\p;
OneJunction5\p => C4\p;
OneJunction5\p => PowerMux\input_rot2;
OneJunction5\p => R4\p;
OneJunction7\p => PowerMux\input_pos3;
OneJunction7\p => R5\p;
OneJunction8\p <= SG90\p;
OneJunction8\p => PowerMux\input;
PowerMux\output => output;
R\p <= OneJunction3\p;
Square\output -> SG90\effort;
end;
implementation_end;
Joint_dynF2 712 80
description '
4.8
1
';
type Submodel
ports
power out output [6,1];
end;
icon bg
figures
rectangle 672 64 752 96 color 0 fill 15132390;
text 'name' 712 80 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
C1 191.8 216.2
description '4.01False
Bond Graph\3D\C-3.emx
2007-9-25 12:12:8
';
type 'C-3'
ports
power in p [3,1];
signal out state [3,1];
restrictions
causality preferred out p;
end;
icon bg top
figures
text 'C' 191.8 216.2 color 0 18 bold;
end;
implementation eq
parameters
real c[3,3] = [1, 0.0, 0.0; 0.0, 1, 0.0; 0.0, 0.0, 1] {mN/m};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
C4 191.8 232.2
description '4.01False
Bond Graph\2D\C-2.emx
2007-9-25 12:7:27
';
type 'C-2'
ports
power in p [2,1];
signal out state [2,1];
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 191.8 232.2 color 0 18 bold;
end;
implementation eq
parameters
real c[2,2] = [1, 0.0; 0.0, 1] {mN.m/rad};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
plug output 396 216;
OneJunction5 239.8 232.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [2,1];
signal knot out flow [2,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 232.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction7 239.8 216.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [3,1];
signal knot out flow [3,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 216.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction8 288 200
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 288 200 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
PowerMux 330 216
specifications active 'rot_z'
specification 'rot_x'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-20 14:35:23
1
False
True
';
type 'PowerMux-Rotation'
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 328 192 328 240 color 0 width 2;
rectangle 324 192 336 240 color -1;
text '1' 333 210 color 8421504 8;
terminals
input 328 200 fixed;
output 328 216 fixed;
input_rot2 328 232 fixed;
input_pos3 328 216 fixed;
end;
implementation eq
equations
output.e[1] = input.e;
output.e[2:3] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[1] = input.f;
output.f[2:3] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_y'
description '
4.1
Bond Graph\PowerMux.emx
2011-3-4 15:12:50
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[1] = input_rot2.e[1];
output.e[2] = input.e;
output.e[3] = input_rot2.e[2];
output.e[4:6] = input_pos3.e;
output.f[1] = input_rot2.f[1];
output.f[2] = input.f;
output.f[3] = input_rot2.f[2];
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_z'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-21 12:05:13
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 328 192 328 240 color 0 width 2;
rectangle 324 192 336 240 color -1;
text '1' 333 210 color 8421504 8;
terminals
input 328 200 fixed;
output 328 216 fixed;
input_rot2 328 232 fixed;
input_pos3 328 216 fixed;
end;
implementation eq
equations
output.e[3] = input.e;
output.e[1:2] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[3] = input.f;
output.f[1:2] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
end;
R 288 152
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg top
figures
text 'R' 288 152 color 0 18 bold;
end;
implementation eq
parameters
real r = 0.0001;
equations
p.e = r * p.f;
implementation_end;
R4 239.8 288.2
description '4.01False
Bond Graph\2D\R-2.emx
2007-9-25 12:6:54
';
type 'R-2'
ports
power in p [2,1];
end;
icon bg bottom
figures
text 'R' 239.8 288.2 color 0 18 bold;
end;
implementation eq
parameters
real r[2,2] = [1.0, 0.0; 0.0, 1.0] {kN.m.s/rad};
equations
p.e = r * p.f;
implementation_end;
R5 239.8 168.2
description '4.01False
Bond Graph\3D\R-3.emx
2007-9-25 12:11:54
';
type 'R-3'
ports
power in p [3,1];
end;
icon bg top
figures
text 'R' 239.8 168.2 color 0 18 bold;
end;
implementation eq
parameters
real r[3,3] = [1.0, 0.0, 0.0; 0.0, 1.0, 0.0; 0.0, 0.0, 1.0] {kN.s/m};
equations
p.e = r * p.f;
implementation_end;
end;
connections
C1\p <= OneJunction7\p;
OneJunction5\p => C4\p;
OneJunction5\p => PowerMux\input_rot2;
OneJunction5\p => R4\p;
OneJunction7\p => PowerMux\input_pos3;
OneJunction7\p => R5\p;
OneJunction8\p => PowerMux\input;
PowerMux\output => output;
R\p <= OneJunction8\p;
end;
implementation_end;
Joint_dynF3 1064 80
description '
4.8
1
';
type Submodel
ports
power out output [6,1];
end;
icon bg
figures
rectangle 1024 64 1104 96 color 0 fill 15132390;
text 'name' 1064 80 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
C1 191.8 216.2
description '4.01False
Bond Graph\3D\C-3.emx
2007-9-25 12:12:8
';
type 'C-3'
ports
power in p [3,1];
signal out state [3,1];
restrictions
causality preferred out p;
end;
icon bg top
figures
text 'C' 191.8 216.2 color 0 18 bold;
end;
implementation eq
parameters
real c[3,3] = [1, 0.0, 0.0; 0.0, 1, 0.0; 0.0, 0.0, 1] {mN/m};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
C4 191.8 232.2
description '4.01False
Bond Graph\2D\C-2.emx
2007-9-25 12:7:27
';
type 'C-2'
ports
power in p [2,1];
signal out state [2,1];
restrictions
causality preferred out p;
end;
icon bg bottom
figures
text 'C' 191.8 232.2 color 0 18 bold;
end;
implementation eq
parameters
real c[2,2] = [1, 0.0; 0.0, 1] {mN.m/rad};
equations
state = int(p.f);
p.e = inverse(c) *state;
implementation_end;
plug output 396 216;
OneJunction5 239.8 232.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [2,1];
signal knot out flow [2,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 232.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction7 239.8 216.2
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [3,1];
signal knot out flow [3,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 239.8 216.2 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction8 288 200
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [1];
signal knot out flow [1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 288 200 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
PowerMux 330 216
specifications active 'rot_z'
specification 'rot_x'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-20 14:35:23
1
False
True
';
type 'PowerMux-Rotation'
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 328 192 328 240 color 0 width 2;
rectangle 324 192 336 240 color -1;
text '1' 333 210 color 8421504 8;
terminals
input 328 200 fixed;
output 328 216 fixed;
input_rot2 328 232 fixed;
input_pos3 328 216 fixed;
end;
implementation eq
equations
output.e[1] = input.e;
output.e[2:3] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[1] = input.f;
output.f[2:3] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_y'
description '
4.1
Bond Graph\PowerMux.emx
2011-3-4 15:12:50
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 242 274 290 274 color 0 width 2;
rectangle 242 266 290 278 color -1;
text '1' 260 269 color 8421504 8;
terminals
input 250 274 fixed;
output 266 274 fixed;
input_rot2 282 274 fixed;
input_pos3 266 274 fixed;
end;
implementation eq
equations
output.e[1] = input_rot2.e[1];
output.e[2] = input.e;
output.e[3] = input_rot2.e[2];
output.e[4:6] = input_pos3.e;
output.f[1] = input_rot2.f[1];
output.f[2] = input.f;
output.f[3] = input_rot2.f[2];
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
specification 'rot_z'
description '
4.8
Bond Graph\MR\PowerMux-Rotation.emx
2020-7-21 12:05:13
1
False
True
';
type PowerMux
ports
power in input;
power out output [6,1];
power in input_rot2 [2,1];
power in input_pos3 [3,1];
restrictions
causality constraint not_equal input output;
causality constraint not_equal input_rot2 output;
causality constraint not_equal input_pos3 output;
end;
icon bg bottom
figures
line 328 192 328 240 color 0 width 2;
rectangle 324 192 336 240 color -1;
text '1' 333 210 color 8421504 8;
terminals
input 328 200 fixed;
output 328 216 fixed;
input_rot2 328 232 fixed;
input_pos3 328 216 fixed;
end;
implementation eq
equations
output.e[3] = input.e;
output.e[1:2] = input_rot2.e;
output.e[4:6] = input_pos3.e;
output.f[3] = input.f;
output.f[1:2] = input_rot2.f;
output.f[4:6] = input_pos3.f;implementation_end;
specification_end;
end;
R 288 152
description '
4.2
1
False
Bond Graph\R.emx
2011-11-29 16:35:37
';
type R
ports
power in p;
end;
icon bg top
figures
text 'R' 288 152 color 0 18 bold;
end;
implementation eq
parameters
real r = 0.0001;
equations
p.e = r * p.f;
implementation_end;
R4 239.8 288.2
description '4.01False
Bond Graph\2D\R-2.emx
2007-9-25 12:6:54
';
type 'R-2'
ports
power in p [2,1];
end;
icon bg bottom
figures
text 'R' 239.8 288.2 color 0 18 bold;
end;
implementation eq
parameters
real r[2,2] = [1.0, 0.0; 0.0, 1.0] {kN.m.s/rad};
equations
p.e = r * p.f;
implementation_end;
R5 239.8 168.2
description '4.01False
Bond Graph\3D\R-3.emx
2007-9-25 12:11:54
';
type 'R-3'
ports
power in p [3,1];
end;
icon bg top
figures
text 'R' 239.8 168.2 color 0 18 bold;
end;
implementation eq
parameters
real r[3,3] = [1.0, 0.0, 0.0; 0.0, 1.0, 0.0; 0.0, 0.0, 1.0] {kN.s/m};
equations
p.e = r * p.f;
implementation_end;
end;
connections
C1\p <= OneJunction7\p;
OneJunction5\p => C4\p;
OneJunction5\p => PowerMux\input_rot2;
OneJunction5\p => R4\p;
OneJunction7\p => PowerMux\input_pos3;
OneJunction7\p => R5\p;
OneJunction8\p => PowerMux\input;
PowerMux\output => output;
R\p <= OneJunction8\p;
end;
implementation_end;
Link1 608 184
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 576 160 640 208 color 0 fill 8454041;
text 'Link' 608 184 color 0 'Clear Sans' 16;
terminals
Hin 576 200 fixed;
Hout 640 200 fixed;
Pin 640 168 fixed;
Pout 576 168 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0.005;0;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link12 152 184
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 120 160 184 208 color 0 fill 8454041;
text 'Link' 152 184 color 0 'Clear Sans' 16;
terminals
Hin 120 200 fixed;
Hout 184 200 fixed;
Pin 184 168 fixed;
Pout 120 168 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0.0059;0;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;implementation_end;
Link13 400 184
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 368 160 432 208 color 0 fill 8454041;
text 'Link' 400 184 color 0 'Clear Sans' 16;
terminals
Hin 368 200 fixed;
Hout 432 200 fixed;
Pin 432 168 fixed;
Pout 368 168 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0.005;0;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link14 816 184
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 784 160 848 208 color 0 fill 8454041;
text 'Link' 816 184 color 0 'Clear Sans' 16;
terminals
Hin 784 200 fixed;
Hout 848 200 fixed;
Pin 848 168 fixed;
Pout 784 168 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;0.0125;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link15 1168 184
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 1136 160 1200 208 color 0 fill 8454041;
text 'Link' 1168 184 color 0 'Clear Sans' 16;
terminals
Hin 1136 200 fixed;
Hout 1200 200 fixed;
Pin 1200 168 fixed;
Pout 1136 168 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;-0.00795;0;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link2 976 184
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 944 160 1008 208 color 0 fill 8454041;
text 'Link' 976 184 color 0 'Clear Sans' 16;
terminals
Hin 944 200 fixed;
Hout 1008 200 fixed;
Pin 1008 168 fixed;
Pout 944 168 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;0.0125;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link3 1304 184
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 1272 160 1336 208 color 0 fill 8454041;
text 'Link' 1304 184 color 0 'Clear Sans' 16;
terminals
Hin 1272 200 fixed;
Hout 1336 200 fixed;
Pin 1336 168 fixed;
Pout 1272 168 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;-0.00795;0;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
plug Hin 72 200;
plug Pin 1392 168;
plug Pout 72 168;
OneJunction1 520 168
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 520 168 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction2 904 168
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 904 168 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
Splitter1 488 200
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 484.8 196.8 491.2 203.2 color -1 fill 0;
ellipse 483.7 195.7 492.3 204.3 color -1;
terminals
input 488 200 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter2 208 200
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 204.8 196.8 211.2 203.2 color -1 fill 0;
ellipse 203.7 195.7 212.3 204.3 color -1;
terminals
input 208 200 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter3 872 200
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 868.8 196.8 875.2 203.2 color -1 fill 0;
ellipse 867.7 195.7 876.3 204.3 color -1;
terminals
input 872 200 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter4 1232 200
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 1228.8 196.8 1235.2 203.2 color -1 fill 0;
ellipse 1227.7 195.7 1236.3 204.3 color -1;
terminals
input 1232 200 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
end;
connections
COM1\Hin <- Splitter3\output;
COM1\p => OneJunction2\p;
Hin -> Link12\Hin;
Joint_dynF1\output => Joint\Pdiff;
Joint_dynF2\output => Joint1\Pdiff;
Joint_dynF3\output => Joint2\Pdiff;
Joint\Hout -> Link13\Hin;
Joint\Pin <= Link13\Pout;
Joint1\Hout -> Link14\Hin;
Joint1\Pin <= Link14\Pout;
Joint2\Hout -> Link15\Hin;
Joint2\Pin <= Link15\Pout;
Link1\Hout -> Joint1\Hin;
Link1\Pin <= Joint1\Pout;
Link12\Hout -> Splitter2\input;
Link12\Pin <= Joint\Pout;
Link12\Pout => Pout;
Link13\Hout -> Splitter1\input;
Link13\Pin <= OneJunction1\p;
Link14\Hout -> Splitter3\input;
Link14\Pin <= OneJunction2\p;
Link15\Hout -> Splitter4\input;
Link15\Pin <= Link3\Pout;
Link2\Hout -> Joint2\Hin;
Link2\Pin <= Joint2\Pout;
Link3\Pin <= Pin;
OneJunction1\p <= COM\p;
OneJunction1\p <= Link1\Pout;
OneJunction2\p <= Link2\Pout;
Splitter1\output -> Body_Lift2\input;
Splitter1\output -> COM\Hin;
Splitter1\output -> Link1\Hin;
Splitter2\output -> Body_Lift1\input;
Splitter2\output -> Joint\Hin;
Splitter3\output -> Body_Lift3\input;
Splitter3\output -> Link2\Hin;
Splitter4\output -> Body_Lift4\input;
Splitter4\output -> Link3\Hin;
end;
implementation_end;
Link1 632 128
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 600 104 664 152 color 0 fill 8454041;
text 'Link' 632 128 color 0 'Clear Sans' 16;
terminals
Hin 600 144 fixed;
Hout 664 144 fixed;
Pin 664 112 fixed;
Pout 600 112 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;0.0125;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link10 944 128
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 912 104 976 152 color 0 fill 8454041;
text 'Link' 944 128 color 0 'Clear Sans' 16;
terminals
Hin 912 144 fixed;
Hout 976 144 fixed;
Pin 976 112 fixed;
Pout 912 112 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;0.0125;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link11 784 128
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 752 104 816 152 color 0 fill 8454041;
text 'Link' 784 128 color 0 'Clear Sans' 16;
terminals
Hin 752 144 fixed;
Hout 816 144 fixed;
Pin 816 112 fixed;
Pout 752 112 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;0.0125;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link2 384 128
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 352 104 416 152 color 0 fill 8454041;
text 'Link' 384 128 color 0 'Clear Sans' 16;
terminals
Hin 352 144 fixed;
Hout 416 144 fixed;
Pin 416 112 fixed;
Pout 352 112 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;0.025;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link3 560 424
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 536 392 584 456 color 0 fill 8454041;
text 'Link' 560 424 color 0 'Clear Sans' 16;
terminals
Hin 576 392 fixed;
Hout 576 456 fixed;
Pin 544 456 fixed;
Pout 544 392 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;0;-0.0325]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link4 200 256
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 176 224 224 288 color 0 fill 8454041;
text 'Link' 200 256 color 0 'Clear Sans' 16;
terminals
Hin 216 288 fixed;
Hout 216 224 fixed;
Pin 184 224 fixed;
Pout 184 288 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;0;0.0325]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link5 408 584
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 376 560 440 608 color 0 fill 8454041;
text 'Link' 408 584 color 0 'Clear Sans' 16;
terminals
Hin 440 568 fixed;
Hout 376 568 fixed;
Pin 376 600 fixed;
Pout 440 600 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;-0.0125;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link6 560 280
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 536 248 584 312 color 0 fill 8454041;
text 'Link' 560 280 color 0 'Clear Sans' 16;
terminals
Hin 576 248 fixed;
Hout 576 312 fixed;
Pin 544 312 fixed;
Pout 544 248 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;0;-0.0325]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link7 272 584
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 240 560 304 608 color 0 fill 8454041;
text 'Link' 272 584 color 0 'Clear Sans' 16;
terminals
Hin 304 568 fixed;
Hout 240 568 fixed;
Pin 240 600 fixed;
Pout 304 600 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;-0.0125;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link8 1360 128
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 1328 104 1392 152 color 0 fill 8454041;
text 'Link' 1360 128 color 0 'Clear Sans' 16;
terminals
Hin 1328 144 fixed;
Hout 1392 144 fixed;
Pin 1392 112 fixed;
Pout 1328 112 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;0.0125;0]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Link9 200 400
description '
4.8
Bond Graph\MR\link-v3.emx
1
False
2020-7-21 11:14:41
False
';
type 'Submodel-Equation'
ports
signal in Hin [4,4];
signal out Hout [4,4];
power in Pin [6,1];
power out Pout [6,1];
restrictions
causality constraint not_equal Pin Pout;
end;
icon bg bottom
figures
rectangle 176 368 224 432 color 0 fill 8454041;
text 'Link' 200 400 color 0 'Clear Sans' 16;
terminals
Hin 216 432 fixed;
Hout 216 368 fixed;
Pin 184 368 fixed;
Pout 184 432 fixed;
end;
implementation eq
parameters
real offset[6]= [0;0;0;0;0;0.0325]; //coordinates of joint_1
variables
real Hab[4,4];
real AdHab[6,6];
real R[3,3];
real omega[3];
initialequations
omega = offset[1:3];
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega);
Hab = homogeneous(R,offset[4:6]);
AdHab = Adjoint(Hab);
equations
Hout = Hin * Hab;
Pout.e = transpose(AdHab) * Pin.e;
Pin.f = AdHab * Pout.f;
implementation_end;
Negate2 608 752
description '4.01False
Signal\Block Diagram\Negate.emx
2007-9-26 12:14:11
';
type Negate
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
rectangle 592 736 624 768 color 0 fill 15132390;
text '-1' 608 752 color 16711680 16 bold;
end;
implementation eq
equations
output = - input;
implementation_end;
OneJunction1 328 600
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 328 600 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction2 544 368
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 544 368 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction3 544 112
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 544 112 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction4 184 344
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 184 344 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction5 544 600
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 544 600 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction6 696 112
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 696 112 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
OneJunction7 1264 112
description '
4.2
1
False
Bond Graph\OneJunction.emx
2011-11-29 16:17:51
';
knot OneJunction
ports
power knot duplicatable none p [6,1];
signal knot out flow [6,1];
restrictions
causality constraint one_out p;
end;
icon bg
figures
text '1' 1264 112 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.e)) = 0;
equal (collect (p.f));
flow = first (p.f);
implementation_end;
rectanglepath 864 752
description '
4.8
setpoint\rectanglepath.emx
1
False
2020-7-10 12:30:38
False
';
type 'Submodel-Equation'
ports
signal out output [2,1];
end;
icon bg
figures
rectangle 808 736 920 768 color 0 fill 15132390;
text 'name' 864 752 color 0 'Clear Sans' 16;
end;
implementation eq
/*
This will generate coordinates for the box that has to be drawn
*/
parameters
real w = 0.07 {m} ;
real h = 0.05 {m};
real t = 1 {s};
real origin[2] = [0.01;0.03] {m};
variables
real v {m/s};
real t_w {s};
real t_h {s};
real period {s};
boolean y;
initialequations
v = (2*w + 2*h)/t;
t_w = w / v;
t_h = h / v;
code
y = frequencyevent (t,0);
period = (time - floor(time / t) * t);
if period < t_w or time < t then
output = origin;
else
if period < t_w + t_h then
output = origin + [w;0];
else
if period < 2 * t_w + t_h then
output = origin + [w;h];
else
output = origin + [0;h];
end;
end;
end;
//output[1] = v*(ramp(period+t_h) - ramp(period + t_w+t_h) - ramp(period + t_w + t_h + t_h)) + origin[1];
//output[2] = v*(ramp(period) - ramp(period + t_h) - ramp(period + t_h + t_w) + ramp(period + 2 * t_h + t_w))+ origin[2];
implementation_end;
Splitter1 360 568
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 356.8 564.8 363.2 571.2 color -1 fill 0;
ellipse 355.7 563.7 364.3 572.3 color -1;
terminals
input 360 568 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter10 1416 144
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 1412.8 140.8 1419.2 147.2 color -1 fill 0;
ellipse 1411.7 139.7 1420.3 148.3 color -1;
terminals
input 1416 144 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter11 480 144
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 476.8 140.8 483.2 147.2 color -1 fill 0;
ellipse 475.7 139.7 484.3 148.3 color -1;
terminals
input 480 144 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter2 576 336
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 572.8 332.8 579.2 339.2 color -1 fill 0;
ellipse 571.7 331.7 580.3 340.3 color -1;
terminals
input 576 336 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter3 216 312
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 212.8 308.8 219.2 315.2 color -1 fill 0;
ellipse 211.7 307.7 220.3 316.3 color -1;
terminals
input 216 312 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter4 576 144
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 572.8 140.8 579.2 147.2 color -1 fill 0;
ellipse 571.7 139.7 580.3 148.3 color -1;
terminals
input 576 144 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter6 728 144
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 724.8 140.8 731.2 147.2 color -1 fill 0;
ellipse 723.7 139.7 732.3 148.3 color -1;
terminals
input 728 144 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter9 992 144
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 988.8 140.8 995.2 147.2 color -1 fill 0;
ellipse 987.7 139.7 996.3 148.3 color -1;
terminals
input 992 144 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
stepper_control 712 592
specifications active 'P_only'
specification 'default'
description '4.81Z:\home\wouter\Documents\studie\ma\mahd\implementation\library\Motor\stepper_control.emx2020-7-23 13:09:57parameters
real max_acceleration = 250 {rad/s2};
real max_velocity = 25 {rad/s};
real initial_velocity = 0 {rad/s};
real initial_angle = -1.570796 {rad};';
type Submodel
ports
signal in setpoint {rad} ;
signal out output {rad} ;
end;
icon bg bottom
figures
rectangle 648 576 760 608 color 0 fill 15132390;
text 'name' 704 592 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
Acceleration_int 648 336
description '
4.3
1
False
Signal\Block Diagram\Integrate.emx
2013-3-8 14:47:42
';
type Integrate
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
rectangle 632 320 664 352 color 0 fill 15132390;
text '∫' 648 336.3 color 16711680 'Lucida Sans' 21 italic;
end;
implementation eq
parameters
real global initial_velocity; // initial value
equations
output = int (input, initial_velocity);
implementation_end;
Acceleration_limit 568 336
description '4.01False
Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx
2007-9-26 12:47:40
';
type 'SignalLimiter-Limit'
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
group
rectangle 552 320 584 352 color 0 fill 15132390;
line 567.9 324.5 567.9 349 color 0 fill 15132390;
line 555 336.2 580.7 336.2 color 0 fill 15132390;
spline 561.9 343.1 573.9 329.4 color 16711680 fill 15132390 width 2;
spline 573.3 330.2 581.9 329.8 color 16711680 fill 15132390 width 2;
spline 555 343.6 561.9 343.1 color 16711680 fill 15132390 width 2;
end;
end;
implementation eq
parameters
real global max_acceleration {rad/s2};
equations
output = limit (input, -max_acceleration, max_acceleration);
implementation_end;
plug setpoint 136 336;
plug output 791 336;
PlusMinus1 240 336
description '4.01False
Signal\Block Diagram\PlusMinus.emx
2007-9-27 10:15:13
';
knot PlusMinus
ports
signal knot duplicatable in plus [1];
signal knot duplicatable in minus [1];
signal knot out output [1];
end;
icon bg ellipse
figures
ellipse 232 328 248 344 color 0 fill 16777215;
end;
implementation eq
equations
output = sum (collect (plus)) - sum (collect (minus));
implementation_end;
PlusMinus2 432 336
description '4.01False
Signal\Block Diagram\PlusMinus.emx
2007-9-27 10:15:13
';
knot PlusMinus
ports
signal knot duplicatable in plus [1];
signal knot duplicatable in minus [1];
signal knot out output [1];
end;
icon bg ellipse
figures
ellipse 424 328 440 344 color 0 fill 16777215;
end;
implementation eq
equations
output = sum (collect (plus)) - sum (collect (minus));
implementation_end;
Position_control 296 336
description '
4.0
1
False
Signal\Control\PID Control\Continuous\PD.emx
2008-1-17 10:49:7
';
type PD
ports
signal in error;
signal out output;
end;
icon bg bottom
figures
rectangle 280 320 312 352 color 0 fill 15132390;
text 'PD' 296.5 336.1 color 16711680 18 bold;
end;
implementation eq
parameters
real kp = 4 {}; // Proportional gain
real tauD = 100 {s}; // Derivative time constant: tauD > 0
real beta = 0.4 {}; // Tameness constant: 0 < beta << 1
variables
real state, rate;
equations
rate = (kp * error - output) / (beta * tauD);
state = int (rate);
output = state + kp * error / beta;
implementation_end;
Splitter3 688 336
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [1];
signal knot in input [1];
end;
icon bg ellipse
figures
ellipse 684.8 332.8 691.2 339.2 color -1 fill 0;
ellipse 683.7 331.7 692.3 340.3 color -1;
terminals
input 688 336 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter4 752 336
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [1];
signal knot in input [1];
end;
icon bg ellipse
figures
ellipse 748.8 332.8 755.2 339.2 color -1 fill 0;
ellipse 747.7 331.7 756.3 340.3 color -1;
terminals
input 752 336 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Velocity_control 480 336
description '
4.0
1
False
Signal\Control\PID Control\Continuous\PD.emx
2008-1-17 10:49:7
';
type PD
ports
signal in error;
signal out output;
end;
icon bg bottom
figures
rectangle 464 320 496 352 color 0 fill 15132390;
text 'PD' 480.5 336.1 color 16711680 18 bold;
end;
implementation eq
parameters
real kp = 12 {}; // Proportional gain
real tauD = 10 {s}; // Derivative time constant: tauD > 0
real beta = 0.4 {}; // Tameness constant: 0 < beta << 1
variables
real state, rate;
equations
rate = (kp * error - output) / (beta * tauD);
state = int (rate);
output = state + kp * error / beta;
implementation_end;
Velocity_int 720 336
description '
4.3
1
False
Signal\Block Diagram\Integrate.emx
2013-3-8 14:47:42
';
type Integrate
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
rectangle 704 320 736 352 color 0 fill 15132390;
text '∫' 720 336.3 color 16711680 'Lucida Sans' 21 italic;
end;
implementation eq
parameters
real global initial_angle; // initial value
equations
output = int (input, initial_angle);
implementation_end;
Velocity_limit 376 336
description '4.01False
Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx
2007-9-26 12:47:40
';
type 'SignalLimiter-Limit'
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
group
rectangle 360 320 392 352 color 0 fill 15132390;
line 375.9 324.5 375.9 349 color 0 fill 15132390;
line 363 336.2 388.7 336.2 color 0 fill 15132390;
spline 369.9 343.1 381.9 329.4 color 16711680 fill 15132390 width 2;
spline 381.3 330.2 389.9 329.8 color 16711680 fill 15132390 width 2;
spline 363 343.6 369.9 343.1 color 16711680 fill 15132390 width 2;
end;
end;
implementation eq
parameters
real global max_velocity {rad/s};
equations
output = limit (input, -max_velocity, max_velocity);
implementation_end;
end;
connections
Acceleration_int\output -> Splitter3\input;
Acceleration_limit\output -> Acceleration_int\input;
PlusMinus1\output -> Position_control\error;
PlusMinus2\output -> Velocity_control\error;
Position_control\output -> Velocity_limit\input;
setpoint -> PlusMinus1\plus;
Splitter3\output -> PlusMinus2\minus 688 288 432 288;
Splitter3\output -> Velocity_int\input;
Splitter4\output -> output;
Splitter4\output -> PlusMinus1\minus 752 400 240 400;
Velocity_control\output -> Acceleration_limit\input;
Velocity_int\output -> Splitter4\input;
Velocity_limit\output -> PlusMinus2\plus;
end;
implementation_end;
specification_end;
specification 'P_only'
description '4.81Z:\home\wouter\Documents\studie\ma\mahd\implementation\library\Motor\stepper_control.emx2020-7-23 13:09:57parameters
real max_acceleration = 200 {rad/s2};
real max_velocity = 25 {rad/s};
real initial_velocity = 0 {rad/s};
real initial_angle = 1.570796 {rad};';
type Submodel
ports
signal in setpoint {rad} ;
signal out output {rad} ;
end;
icon bg bottom
figures
rectangle 656 576 768 608 color 0 fill 15132390;
text 'name' 712 592 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
Acceleration_int 648 336
description '
4.3
1
False
Signal\Block Diagram\Integrate.emx
2013-3-8 14:47:42
';
type Integrate
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
rectangle 632 320 664 352 color 0 fill 15132390;
text '∫' 648 336.3 color 16711680 'Lucida Sans' 21 italic;
end;
implementation eq
parameters
real global initial_velocity; // initial value
equations
output = int (input, initial_velocity);
implementation_end;
Acceleration_limit 568 336
description '4.01False
Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx
2007-9-26 12:47:40
';
type 'SignalLimiter-Limit'
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
group
rectangle 552 320 584 352 color 0 fill 15132390;
line 567.9 324.5 567.9 349 color 0 fill 15132390;
line 555 336.2 580.7 336.2 color 0 fill 15132390;
spline 561.9 343.1 573.9 329.4 color 16711680 fill 15132390 width 2;
spline 573.3 330.2 581.9 329.8 color 16711680 fill 15132390 width 2;
spline 555 343.6 561.9 343.1 color 16711680 fill 15132390 width 2;
end;
end;
implementation eq
parameters
real global max_acceleration {rad/s2};
equations
output = limit (input, -max_acceleration, max_acceleration);
implementation_end;
plug setpoint 136 336;
plug output 791 336;
PlusMinus1 240 336
description '4.01False
Signal\Block Diagram\PlusMinus.emx
2007-9-27 10:15:13
';
knot PlusMinus
ports
signal knot duplicatable in plus [1];
signal knot duplicatable in minus [1];
signal knot out output [1];
end;
icon bg ellipse
figures
ellipse 232 328 248 344 color 0 fill 16777215;
end;
implementation eq
equations
output = sum (collect (plus)) - sum (collect (minus));
implementation_end;
PlusMinus2 432 336
description '4.01False
Signal\Block Diagram\PlusMinus.emx
2007-9-27 10:15:13
';
knot PlusMinus
ports
signal knot duplicatable in plus [1];
signal knot duplicatable in minus [1];
signal knot out output [1];
end;
icon bg ellipse
figures
ellipse 424 328 440 344 color 0 fill 16777215;
end;
implementation eq
equations
output = sum (collect (plus)) - sum (collect (minus));
implementation_end;
Position_control 296 336
description '
4.0
1
False
Signal\Control\PID Control\Continuous\P.emx
2008-1-17 10:48:8
';
type P
ports
signal in error;
signal out output;
end;
icon bg bottom
figures
rectangle 280 320 312 352 color 0 fill 15132390;
text 'P' 296.5 336.1 color 16711680 18 bold;
end;
implementation eq
parameters
real kp = 26.0 {}; // Proportional gain
equations
output = kp * error;
implementation_end;
Splitter3 688 336
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [1];
signal knot in input [1];
end;
icon bg ellipse
figures
ellipse 684.8 332.8 691.2 339.2 color -1 fill 0;
ellipse 683.7 331.7 692.3 340.3 color -1;
terminals
input 688 336 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter4 752 336
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [1];
signal knot in input [1];
end;
icon bg ellipse
figures
ellipse 748.8 332.8 755.2 339.2 color -1 fill 0;
ellipse 747.7 331.7 756.3 340.3 color -1;
terminals
input 752 336 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Velocity_control 480 336
description '
4.0
1
False
Signal\Control\PID Control\Continuous\P.emx
2008-1-17 10:48:8
';
type P
ports
signal in error;
signal out output;
end;
icon bg bottom
figures
rectangle 464 320 496 352 color 0 fill 15132390;
text 'P' 480.5 336.1 color 16711680 18 bold;
end;
implementation eq
parameters
real kp = 66.0 {}; // Proportional gain
equations
output = kp * error;
implementation_end;
Velocity_int 720 336
description '
4.3
1
False
Signal\Block Diagram\Integrate.emx
2013-3-8 14:47:42
';
type Integrate
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
rectangle 704 320 736 352 color 0 fill 15132390;
text '∫' 720 336.3 color 16711680 'Lucida Sans' 21 italic;
end;
implementation eq
parameters
real global initial_angle; // initial value
equations
output = int (input, initial_angle);
implementation_end;
Velocity_limit 376 336
description '4.01False
Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx
2007-9-26 12:47:40
';
type 'SignalLimiter-Limit'
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
group
rectangle 360 320 392 352 color 0 fill 15132390;
line 375.9 324.5 375.9 349 color 0 fill 15132390;
line 363 336.2 388.7 336.2 color 0 fill 15132390;
spline 369.9 343.1 381.9 329.4 color 16711680 fill 15132390 width 2;
spline 381.3 330.2 389.9 329.8 color 16711680 fill 15132390 width 2;
spline 363 343.6 369.9 343.1 color 16711680 fill 15132390 width 2;
end;
end;
implementation eq
parameters
real global max_velocity {rad/s};
equations
output = limit (input, -max_velocity, max_velocity);
implementation_end;
end;
connections
Acceleration_int\output -> Splitter3\input;
Acceleration_limit\output -> Acceleration_int\input;
PlusMinus1\output -> Position_control\error;
PlusMinus2\output -> Velocity_control\error;
Position_control\output -> Velocity_limit\input;
setpoint -> PlusMinus1\plus;
Splitter3\output -> PlusMinus2\minus 688 288 432 288;
Splitter3\output -> Velocity_int\input;
Splitter4\output -> output;
Splitter4\output -> PlusMinus1\minus 752 400 240 400;
Velocity_control\output -> Acceleration_limit\input;
Velocity_int\output -> Splitter4\input;
Velocity_limit\output -> PlusMinus2\plus;
end;
implementation_end;
specification_end;
end;
stepper_control1 480 752
specifications active 'P_only'
specification 'default'
description '4.81Z:\home\wouter\Documents\studie\ma\mahd\implementation\library\Motor\stepper_control.emx2020-7-23 13:09:57parameters
real max_acceleration = 250 {rad/s2};
real max_velocity = 25 {rad/s};
real initial_velocity = 0 {rad/s};
real initial_angle = -1.570796 {rad};';
type Submodel
ports
signal in setpoint {rad} ;
signal out output {rad} ;
end;
icon bg bottom
figures
rectangle 648 576 760 608 color 0 fill 15132390;
text 'name' 704 592 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
Acceleration_int 648 336
description '
4.3
1
False
Signal\Block Diagram\Integrate.emx
2013-3-8 14:47:42
';
type Integrate
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
rectangle 632 320 664 352 color 0 fill 15132390;
text '∫' 648 336.3 color 16711680 'Lucida Sans' 21 italic;
end;
implementation eq
parameters
real global initial_velocity; // initial value
equations
output = int (input, initial_velocity);
implementation_end;
Acceleration_limit 568 336
description '4.01False
Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx
2007-9-26 12:47:40
';
type 'SignalLimiter-Limit'
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
group
rectangle 552 320 584 352 color 0 fill 15132390;
line 567.9 324.5 567.9 349 color 0 fill 15132390;
line 555 336.2 580.7 336.2 color 0 fill 15132390;
spline 561.9 343.1 573.9 329.4 color 16711680 fill 15132390 width 2;
spline 573.3 330.2 581.9 329.8 color 16711680 fill 15132390 width 2;
spline 555 343.6 561.9 343.1 color 16711680 fill 15132390 width 2;
end;
end;
implementation eq
parameters
real global max_acceleration {rad/s2};
equations
output = limit (input, -max_acceleration, max_acceleration);
implementation_end;
plug setpoint 136 336;
plug output 791 336;
PlusMinus1 240 336
description '4.01False
Signal\Block Diagram\PlusMinus.emx
2007-9-27 10:15:13
';
knot PlusMinus
ports
signal knot duplicatable in plus [1];
signal knot duplicatable in minus [1];
signal knot out output [1];
end;
icon bg ellipse
figures
ellipse 232 328 248 344 color 0 fill 16777215;
end;
implementation eq
equations
output = sum (collect (plus)) - sum (collect (minus));
implementation_end;
PlusMinus2 432 336
description '4.01False
Signal\Block Diagram\PlusMinus.emx
2007-9-27 10:15:13
';
knot PlusMinus
ports
signal knot duplicatable in plus [1];
signal knot duplicatable in minus [1];
signal knot out output [1];
end;
icon bg ellipse
figures
ellipse 424 328 440 344 color 0 fill 16777215;
end;
implementation eq
equations
output = sum (collect (plus)) - sum (collect (minus));
implementation_end;
Position_control 296 336
description '
4.0
1
False
Signal\Control\PID Control\Continuous\PD.emx
2008-1-17 10:49:7
';
type PD
ports
signal in error;
signal out output;
end;
icon bg bottom
figures
rectangle 280 320 312 352 color 0 fill 15132390;
text 'PD' 296.5 336.1 color 16711680 18 bold;
end;
implementation eq
parameters
real kp = 4 {}; // Proportional gain
real tauD = 100 {s}; // Derivative time constant: tauD > 0
real beta = 0.4 {}; // Tameness constant: 0 < beta << 1
variables
real state, rate;
equations
rate = (kp * error - output) / (beta * tauD);
state = int (rate);
output = state + kp * error / beta;
implementation_end;
Splitter3 688 336
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [1];
signal knot in input [1];
end;
icon bg ellipse
figures
ellipse 684.8 332.8 691.2 339.2 color -1 fill 0;
ellipse 683.7 331.7 692.3 340.3 color -1;
terminals
input 688 336 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter4 752 336
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [1];
signal knot in input [1];
end;
icon bg ellipse
figures
ellipse 748.8 332.8 755.2 339.2 color -1 fill 0;
ellipse 747.7 331.7 756.3 340.3 color -1;
terminals
input 752 336 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Velocity_control 480 336
description '
4.0
1
False
Signal\Control\PID Control\Continuous\PD.emx
2008-1-17 10:49:7
';
type PD
ports
signal in error;
signal out output;
end;
icon bg bottom
figures
rectangle 464 320 496 352 color 0 fill 15132390;
text 'PD' 480.5 336.1 color 16711680 18 bold;
end;
implementation eq
parameters
real kp = 12 {}; // Proportional gain
real tauD = 10 {s}; // Derivative time constant: tauD > 0
real beta = 0.4 {}; // Tameness constant: 0 < beta << 1
variables
real state, rate;
equations
rate = (kp * error - output) / (beta * tauD);
state = int (rate);
output = state + kp * error / beta;
implementation_end;
Velocity_int 720 336
description '
4.3
1
False
Signal\Block Diagram\Integrate.emx
2013-3-8 14:47:42
';
type Integrate
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
rectangle 704 320 736 352 color 0 fill 15132390;
text '∫' 720 336.3 color 16711680 'Lucida Sans' 21 italic;
end;
implementation eq
parameters
real global initial_angle; // initial value
equations
output = int (input, initial_angle);
implementation_end;
Velocity_limit 376 336
description '4.01False
Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx
2007-9-26 12:47:40
';
type 'SignalLimiter-Limit'
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
group
rectangle 360 320 392 352 color 0 fill 15132390;
line 375.9 324.5 375.9 349 color 0 fill 15132390;
line 363 336.2 388.7 336.2 color 0 fill 15132390;
spline 369.9 343.1 381.9 329.4 color 16711680 fill 15132390 width 2;
spline 381.3 330.2 389.9 329.8 color 16711680 fill 15132390 width 2;
spline 363 343.6 369.9 343.1 color 16711680 fill 15132390 width 2;
end;
end;
implementation eq
parameters
real global max_velocity {rad/s};
equations
output = limit (input, -max_velocity, max_velocity);
implementation_end;
end;
connections
Acceleration_int\output -> Splitter3\input;
Acceleration_limit\output -> Acceleration_int\input;
PlusMinus1\output -> Position_control\error;
PlusMinus2\output -> Velocity_control\error;
Position_control\output -> Velocity_limit\input;
setpoint -> PlusMinus1\plus;
Splitter3\output -> PlusMinus2\minus 688 288 432 288;
Splitter3\output -> Velocity_int\input;
Splitter4\output -> output;
Splitter4\output -> PlusMinus1\minus 752 400 240 400;
Velocity_control\output -> Acceleration_limit\input;
Velocity_int\output -> Splitter4\input;
Velocity_limit\output -> PlusMinus2\plus;
end;
implementation_end;
specification_end;
specification 'P_only'
description '4.81Z:\home\wouter\Documents\studie\ma\mahd\implementation\library\Motor\stepper_control.emx2020-7-23 13:09:57parameters
real max_acceleration = 200 {rad/s2};
real max_velocity = 25 {rad/s};
real initial_velocity = 0 {rad/s};
real initial_angle = 0 {rad};';
type Submodel
ports
signal in setpoint {rad} ;
signal out output {rad} ;
end;
icon bg
figures
rectangle 424 736 536 768 color 0 fill 15132390;
text 'name' 480 752 color 0 'Clear Sans' 16;
end;
implementation bg
submodels
Acceleration_int 648 336
description '
4.3
1
False
Signal\Block Diagram\Integrate.emx
2013-3-8 14:47:42
';
type Integrate
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
rectangle 632 320 664 352 color 0 fill 15132390;
text '∫' 648 336.3 color 16711680 'Lucida Sans' 21 italic;
end;
implementation eq
parameters
real global initial_velocity; // initial value
equations
output = int (input, initial_velocity);
implementation_end;
Acceleration_limit 568 336
description '4.01False
Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx
2007-9-26 12:47:40
';
type 'SignalLimiter-Limit'
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
group
rectangle 552 320 584 352 color 0 fill 15132390;
line 567.9 324.5 567.9 349 color 0 fill 15132390;
line 555 336.2 580.7 336.2 color 0 fill 15132390;
spline 561.9 343.1 573.9 329.4 color 16711680 fill 15132390 width 2;
spline 573.3 330.2 581.9 329.8 color 16711680 fill 15132390 width 2;
spline 555 343.6 561.9 343.1 color 16711680 fill 15132390 width 2;
end;
end;
implementation eq
parameters
real global max_acceleration {rad/s2};
equations
output = limit (input, -max_acceleration, max_acceleration);
implementation_end;
plug setpoint 136 336;
plug output 791 336;
PlusMinus1 240 336
description '4.01False
Signal\Block Diagram\PlusMinus.emx
2007-9-27 10:15:13
';
knot PlusMinus
ports
signal knot duplicatable in plus [1];
signal knot duplicatable in minus [1];
signal knot out output [1];
end;
icon bg ellipse
figures
ellipse 232 328 248 344 color 0 fill 16777215;
end;
implementation eq
equations
output = sum (collect (plus)) - sum (collect (minus));
implementation_end;
PlusMinus2 432 336
description '4.01False
Signal\Block Diagram\PlusMinus.emx
2007-9-27 10:15:13
';
knot PlusMinus
ports
signal knot duplicatable in plus [1];
signal knot duplicatable in minus [1];
signal knot out output [1];
end;
icon bg ellipse
figures
ellipse 424 328 440 344 color 0 fill 16777215;
end;
implementation eq
equations
output = sum (collect (plus)) - sum (collect (minus));
implementation_end;
Position_control 296 336
description '
4.0
1
False
Signal\Control\PID Control\Continuous\P.emx
2008-1-17 10:48:8
';
type P
ports
signal in error;
signal out output;
end;
icon bg bottom
figures
rectangle 280 320 312 352 color 0 fill 15132390;
text 'P' 296.5 336.1 color 16711680 18 bold;
end;
implementation eq
parameters
real kp = 31.0 {}; // Proportional gain
equations
output = kp * error;
implementation_end;
Splitter3 688 336
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [1];
signal knot in input [1];
end;
icon bg ellipse
figures
ellipse 684.8 332.8 691.2 339.2 color -1 fill 0;
ellipse 683.7 331.7 692.3 340.3 color -1;
terminals
input 688 336 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Splitter4 752 336
description '4.0
Signal\Block Diagram\Splitter.emx
2008-01-17 11:28:29
1
False
';
knot Splitter
ports
signal knot duplicatable out output [1];
signal knot in input [1];
end;
icon bg ellipse
figures
ellipse 748.8 332.8 755.2 339.2 color -1 fill 0;
ellipse 747.7 331.7 756.3 340.3 color -1;
terminals
input 752 336 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Velocity_control 480 336
description '
4.0
1
False
Signal\Control\PID Control\Continuous\P.emx
2008-1-17 10:48:8
';
type P
ports
signal in error;
signal out output;
end;
icon bg bottom
figures
rectangle 464 320 496 352 color 0 fill 15132390;
text 'P' 480.5 336.1 color 16711680 18 bold;
end;
implementation eq
parameters
real kp = 69.0 {}; // Proportional gain
equations
output = kp * error;
implementation_end;
Velocity_int 720 336
description '
4.3
1
False
Signal\Block Diagram\Integrate.emx
2013-3-8 14:47:42
';
type Integrate
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
rectangle 704 320 736 352 color 0 fill 15132390;
text '∫' 720 336.3 color 16711680 'Lucida Sans' 21 italic;
end;
implementation eq
parameters
real global initial_angle; // initial value
equations
output = int (input, initial_angle);
implementation_end;
Velocity_limit 376 336
description '4.01False
Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx
2007-9-26 12:47:40
';
type 'SignalLimiter-Limit'
ports
signal in input;
signal out output;
end;
icon bg bottom
figures
group
rectangle 360 320 392 352 color 0 fill 15132390;
line 375.9 324.5 375.9 349 color 0 fill 15132390;
line 363 336.2 388.7 336.2 color 0 fill 15132390;
spline 369.9 343.1 381.9 329.4 color 16711680 fill 15132390 width 2;
spline 381.3 330.2 389.9 329.8 color 16711680 fill 15132390 width 2;
spline 363 343.6 369.9 343.1 color 16711680 fill 15132390 width 2;
end;
end;
implementation eq
parameters
real global max_velocity {rad/s};
equations
output = limit (input, -max_velocity, max_velocity);
implementation_end;
end;
connections
Acceleration_int\output -> Splitter3\input;
Acceleration_limit\output -> Acceleration_int\input;
PlusMinus1\output -> Position_control\error;
PlusMinus2\output -> Velocity_control\error;
Position_control\output -> Velocity_limit\input;
setpoint -> PlusMinus1\plus;
Splitter3\output -> PlusMinus2\minus 688 288 432 288;
Splitter3\output -> Velocity_int\input;
Splitter4\output -> output;
Splitter4\output -> PlusMinus1\minus 752 400 240 400;
Velocity_control\output -> Acceleration_limit\input;
Velocity_int\output -> Splitter4\input;
Velocity_limit\output -> PlusMinus2\plus;
end;
implementation_end;
specification_end;
end;
end;
connections
Body1\input <- Splitter2\output;
Body3\input <- Splitter3\output;
COM_body3\p => OneJunction4\p;
COM_body4\p => OneJunction6\p;
COM_body5\p => Link8\Pin;
Ground1\output -> JointC\Hin 576 568;
Ground1\p <= OneJunction5\p;
inverse_kinematics\angle1 -> stepper_control\setpoint;
inverse_kinematics\angle2 -> Negate2\input;
inverse_kinematics\input <- rectanglepath\output;
Joint_dynB\output => JointB\Pdiff;
Joint_dynC\output => JointC\Pdiff;
Joint_dynD\output => JointD\Pdiff;
Joint_dynE\output => JointE\Pdiff;
Joint_dynF\output => JointF\Pdiff;
JointA\Pdiff <= Joint_dynA\output;
JointA\Pout => Link3\Pin;
JointB\Hin <- Splitter4\output;
JointB\Hout -> Link6\Hin;
JointB\Pin <= Link6\Pout;
JointB\Pout => OneJunction3\p;
JointC\Hout -> Link5\Hin;
JointC\Pin <= Link5\Pout;
JointD\Hin <- Link7\Hout 216 568;
JointD\Hout -> Link9\Hin;
JointD\Pin <= Link9\Pout;
JointD\Pout => Link7\Pin 184 600;
JointE\Pout => Link4\Pin;
JointF\Hout -> Link10\Hin;
JointF\Pout => Link11\Pin;
LiftingArm\Hin <- Splitter6\output 728 256;
LiftingArm\Pin <= OneJunction7\p 1264 224;
LiftingArm\Pout => OneJunction6\p 696 224;
Link1\Hout -> Splitter6\input;
Link10\Hout -> Splitter9\input;
Link10\Pout => JointF\Pin;
Link11\Hout -> JointF\Hin;
Link11\Pout => OneJunction6\p;
Link2\Hin <- JointE\Hout;
Link2\Hout -> Splitter11\input;
Link2\Pin <= OneJunction3\p;
Link2\Pout => JointE\Pin 184 112;
Link3\Hout -> JointA\Hin;
Link4\Hout -> JointE\Hin;
Link5\Hout -> Splitter1\input;
Link5\Pin <= OneJunction1\p;
Link6\Hout -> Splitter2\input;
Link6\Pin <= OneJunction2\p;
Link8\Hout -> Splitter10\input;
Link8\Pout => OneJunction7\p;
Link9\Hout -> Splitter3\input;
Link9\Pin <= OneJunction4\p;
Negate2\output -> stepper_control1\setpoint;
OneJunction1\p <= COM_body2\p;
OneJunction1\p <= Link7\Pout;
OneJunction2\p <= COM_body1\p;
OneJunction2\p <= Link3\Pout;
OneJunction3\p <= Link1\Pout;
OneJunction4\p <= Link4\Pout;
OneJunction5\p <= JointC\Pout;
OneJunction5\p => JointA\Pin;
OneJunction6\p => Link1\Pin;
OneJunction7\p => Link10\Pin;
Splitter1\output -> Body2\input;
Splitter1\output -> COM_body2\Hin;
Splitter1\output -> Link7\Hin;
Splitter10\output -> Body6\input;
Splitter10\output -> COM_body5\Hin;
Splitter11\output -> Body4\input;
Splitter11\output -> Splitter4\input;
Splitter2\output -> COM_body1\Hin;
Splitter2\output -> Link3\Hin;
Splitter3\output -> COM_body3\Hin;
Splitter3\output -> Link4\Hin;
Splitter4\output -> Link1\Hin;
Splitter6\output -> COM_body4\Hin;
Splitter6\output -> Link11\Hin;
Splitter9\output -> Body5\input;
Splitter9\output -> Link8\Hin;
stepper_control\output -> Joint_dynA\angle;
stepper_control1\output -> Joint_dynC\angle;
end;
implementation_end;
]]>
Experiment 1
4.8
COM_body1\InertialTensor\state_initial
6
1
0 0 0 0 0 0
COM_body2\InertialTensor\state_initial
6
1
0 0 0 0 0 0
COM_body3\InertialTensor\state_initial
6
1
0 0 0 0 0 0
COM_body4\InertialTensor\state_initial
6
1
0 0 0 0 0 0
COM_body5\InertialTensor\state_initial
6
1
0 0 0 0 0 0
JointA\Hmatrix\p_initial
3
1
0 0 0
JointB\Hmatrix\p_initial
3
1
0 0 0
JointC\Hmatrix\p_initial
3
1
0 0 0
JointD\Hmatrix\p_initial
3
1
0 0 0
JointE\Hmatrix\p_initial
3
1
0 0 0
JointF\Hmatrix\p_initial
3
1
0 0 0
Joint_dynA\C1\state_initial
3
1
0 0 0
Joint_dynA\C4\state_initial
2
1
0 0
Joint_dynA\C\state_initial
0
Joint_dynA\stepper_model\I1\state_initial
0
Joint_dynA\stepper_model\I2\state_initial
0
Joint_dynA\stepper_model\I\state_initial
0
Joint_dynB\C1\state_initial
3
1
0 0 0
Joint_dynB\C4\state_initial
2
1
0 0
Joint_dynC\C1\state_initial
3
1
0 0 0
Joint_dynC\C4\state_initial
2
1
0 0
Joint_dynC\C\state_initial
0
Joint_dynC\stepper_model\I1\state_initial
0
Joint_dynC\stepper_model\I2\state_initial
0
Joint_dynC\stepper_model\I\state_initial
0
Joint_dynC\stepper_model\RotorAngle\angle_initial
rad
0
Joint_dynD\C1\state_initial
3
1
0 0 0
Joint_dynD\C4\state_initial
2
1
0 0
Joint_dynE\C1\state_initial
3
1
0 0 0
Joint_dynE\C4\state_initial
2
1
0 0
Joint_dynF\C1\state_initial
3
1
0 0 0
Joint_dynF\C4\state_initial
2
1
0 0
LiftingArm\COM1\InertialTensor\state_initial
6
1
0 0 0 0 0 0
LiftingArm\COM\InertialTensor\state_initial
6
1
0 0 0 0 0 0
LiftingArm\Joint1\Hmatrix\p_initial
3
1
0 0 0
LiftingArm\Joint2\Hmatrix\p_initial
3
1
0 0 0
LiftingArm\Joint\Hmatrix\p_initial
3
1
0 0 0
LiftingArm\Joint_dynF1\C1\state_initial
3
1
0 0 0
LiftingArm\Joint_dynF1\C4\state_initial
2
1
0 0
LiftingArm\Joint_dynF1\C\state_initial
0
LiftingArm\Joint_dynF1\SG90\C\state_initial
0
LiftingArm\Joint_dynF1\SG90\I\state_initial
0
LiftingArm\Joint_dynF1\SG90\PD\state_initial
0
LiftingArm\Joint_dynF2\C1\state_initial
3
1
0 0 0
LiftingArm\Joint_dynF2\C4\state_initial
2
1
0 0
LiftingArm\Joint_dynF3\C1\state_initial
3
1
0 0 0
LiftingArm\Joint_dynF3\C4\state_initial
2
1
0 0
time
Body2\dimension[1]
Body2\dimension[2]
Body2\dimension[3]
Body2\position[1]
Body2\position[2]
Body2\position[3]
Body2\R[1,3]
Body2\R[2,3]
Body2\R[3,3]
Body2\R[1,2]
Body2\R[2,2]
Body2\R[3,2]
Body3\dimension[1]
Body3\dimension[2]
Body3\dimension[3]
Body3\position[1]
Body3\position[2]
Body3\position[3]
Body3\R[1,3]
Body3\R[2,3]
Body3\R[3,3]
Body3\R[1,2]
Body3\R[2,2]
Body3\R[3,2]
Body4\dimension[1]
Body4\dimension[2]
Body4\dimension[3]
Body4\R[1,3]
Body4\R[2,3]
Body4\R[3,3]
Body4\R[1,2]
Body4\R[2,2]
Body4\R[3,2]
Body4\position[1]
Body4\position[2]
Body4\position[3]
Body5\dimension[1]
Body5\dimension[2]
Body5\dimension[3]
Body5\position[1]
Body5\position[2]
Body5\position[3]
Body5\R[1,3]
Body5\R[2,3]
Body5\R[3,3]
Body5\R[1,2]
Body5\R[2,2]
Body5\R[3,2]
Joint_dynA\stepper_model\RotorAngle\angle
Joint_dynC\stepper_model\RotorAngle\angle
Body6\position[3]
Body6\position[2]
rectanglepath\output[2]
rectanglepath\output[1]
stepper_control\Acceleration_int\input
stepper_control\Velocity_int\output
stepper_control\Velocity_int\input
stepper_control1\Acceleration_int\input
stepper_control1\Velocity_int\output
stepper_control1\Velocity_int\input
Body6\R[1,3]
Body6\R[2,3]
Body6\R[3,3]
Body6\R[1,2]
Body6\R[2,2]
Body6\R[3,2]
Body6\position[1]
Body1\position[1]
Body1\position[2]
Body1\R[1,3]
Body1\R[2,3]
Body1\R[3,3]
Body1\R[1,2]
Body1\R[2,2]
Body1\R[3,2]
Body1\dimension[1]
Body1\dimension[2]
Body1\dimension[3]
Body1\position[3]
LiftingArm\Body_Lift2\dimension[1]
LiftingArm\Body_Lift2\dimension[2]
LiftingArm\Body_Lift2\dimension[3]
LiftingArm\Body_Lift2\position[1]
LiftingArm\Body_Lift2\position[2]
LiftingArm\Body_Lift2\position[3]
LiftingArm\Body_Lift2\R[1,3]
LiftingArm\Body_Lift2\R[2,3]
LiftingArm\Body_Lift2\R[3,3]
LiftingArm\Body_Lift2\R[1,2]
LiftingArm\Body_Lift2\R[2,2]
LiftingArm\Body_Lift2\R[3,2]
LiftingArm\Body_Lift3\dimension[1]
LiftingArm\Body_Lift3\dimension[2]
LiftingArm\Body_Lift3\dimension[3]
LiftingArm\Body_Lift3\position[1]
LiftingArm\Body_Lift3\position[2]
LiftingArm\Body_Lift3\position[3]
LiftingArm\Body_Lift3\R[1,3]
LiftingArm\Body_Lift3\R[2,3]
LiftingArm\Body_Lift3\R[3,3]
LiftingArm\Body_Lift3\R[1,2]
LiftingArm\Body_Lift3\R[2,2]
LiftingArm\Body_Lift3\R[3,2]
LiftingArm\Body_Lift4\dimension[1]
LiftingArm\Body_Lift4\dimension[2]
LiftingArm\Body_Lift4\dimension[3]
LiftingArm\Body_Lift4\position[1]
LiftingArm\Body_Lift4\position[2]
LiftingArm\Body_Lift4\position[3]
LiftingArm\Body_Lift4\R[1,3]
LiftingArm\Body_Lift4\R[2,3]
LiftingArm\Body_Lift4\R[3,3]
LiftingArm\Body_Lift4\R[1,2]
LiftingArm\Body_Lift4\R[2,2]
LiftingArm\Body_Lift4\R[3,2]
stepper_control\setpoint
Joint_dynA\stepper_model\angle
stepper_control1\setpoint
Joint_dynC\angle
Body_Lift2\position[2]
Body_Lift2\position[3]
Joint_dynA\stepper_model\p.T
Joint_dynC\stepper_model\p.T
GraphPlot
1
false
16777215
true
true
15780518
12624260
0
10
10
10
false
16777215
true
1
Stepper Motor A
true
Arial
12
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
Arial
10
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
true
true
false
0.0
17.641751363645234
true
3
0.6000000000000002
2.6000000000000005
true
2
-2.6
-0.6
true
2
-2.6
-0.6
true
2
3355111
1
3355111
0
true
1
1
1
true
true
time
true
stepper_control\setpoint
6076255
1
6076255
0
true
1
1
1
true
true
time
true
Joint_dynA\stepper_model\angle
12553035
1
12553035
0
true
1
1
1
true
true
time
true
Joint_dynA\stepper_model\RotorAngle\angle
true
0.12119013062409288
0.8741610738255033
0
16777215
D3DPlot
2
false
16777215
true
3D Animation
137
true
false
4294967295
Gradients\BlueWhite.png
true
1.0
1.0
1
1
1
true
Reference Frame
Bryant
false
false
false
false
false
false
1
1
1
false
Default Lights and Cameras
Bryant
false
false
false
false
false
false
false
Ambient
1
1
Direct3D
false
false
false
false
false
false
0
0.3
0.3
0.3
1
1
1
true
0.3
0.3
0.3
1
1
1
true
true
false
false
false
Parallel
-3
5
3
0.457495710997814
-0.762492851663023
-0.457495710997814
0.235379601434674
-0.392299335724456
0.889211827642101
Direct3D
false
false
false
false
false
false
3
0.5
0.5
0.5
1
1
1
true
1.0
0.0
0.0
0.5
0.5
0.5
1
1
1
true
0.5
0.5
0.5
1
1
1
true
false
true
true
false
Spot Light 1
-3
-5
1
0.50709255283711
0.845154254728517
-0.169030850945703
0.0869656553478673
0.144942758913112
0.985610760609162
Direct3D
false
false
false
false
false
false
2
0.5
0.5
0.5
1
1
1
true
1.0
0.05
0.05
1.0471975511965976
1.0471975511965976
0.0
0.5
0.5
0.5
1
1
1
true
0.5
0.5
0.5
1
1
1
true
false
true
true
false
Spot Light 2
2
-3
-1
-0.534522483824849
0.801783725737273
0.267261241912424
0.14824986333222
-0.22237479499833
0.963624111659432
Direct3D
false
false
false
false
false
false
2
1
1
1
1
1
1
true
1.0
0.05
0.05
1.5707963267948966
1.5707963267948966
0.0
1
1
1
1
1
1
true
0.5
0.5
0.5
1
1
1
true
false
true
true
false
Camera Looking at Origin
0.144494930276406
-0.16367032375516
0.165819959065724
-0.574494337780199
0.647932475925021
-0.500139742972065
-0.331808079368203
0.374223410499862
0.865944708107762
Direct3D
false
false
false
false
false
false
0.01
100.0
true
0.003926990816987242
45.0
-10.0
10.0
10.0
-10.0
true
-0.000627364166602552
3.08669776184333e-006
0.0394802856014185
true
1
true
true
true
false
Front(XY)-Camera
10
-1
1
Direct3D
false
false
false
false
false
false
0.01
100.0
true
9.999999999999998
45.0
-9.999999999999998
9.999999999999998
9.999999999999998
-9.999999999999998
true
true
1
true
false
false
false
Side(YZ)-Camera
10
-1
1
Direct3D
false
false
false
false
false
false
0.01
100.0
true
9.999999999999998
45.0
-9.999999999999998
9.999999999999998
9.999999999999998
-9.999999999999998
true
true
1
true
false
false
false
Top(XZ)-Camera
10
-1
1
Direct3D
false
false
false
false
false
false
0.01
100.0
true
9.999999999999998
45.0
-9.999999999999998
9.999999999999998
9.999999999999998
-9.999999999999998
true
true
1
true
false
false
1
1
1
false
Cylinder
Bryant
false
false
false
false
false
false
Center
1.0
true
4
Body1\dimension[1]
0.0048
Body1\dimension[2]
0.009
Body1\dimension[3]
0.065
true
0
0.501960784313725
0.501960784313725
1.0
1
1
1
true
0.5
0.5
0.5
15
false
false
Block
Body1\position[1]
-2.1842289058019197e-7
Body1\position[2]
0.015840355657380765
Body1\position[3]
0.029380449362273412
Body1\R[1,3]
-6.850425895176294e-6
Body1\R[2,3]
0.5871777540389943
Body1\R[3,3]
0.8094580193652998
Body1\R[1,2]
7.434260214968079e-7
Body1\R[2,2]
0.8094580193870597
Body1\R[3,2]
-0.5871777540484873
Matrix
false
false
false
false
false
false
Center
1.0
true
4
Body2\dimension[1]
0.005
Body2\dimension[2]
0.025
Body2\dimension[3]
0.01
true
1
0.501960784313725
0
1.0
1
1
1
true
0.5
0.5
0.5
15
false
false
Block
Body2\position[1]
1.0777759396163201e-7
Body2\position[2]
-0.009660323640814466
Body2\position[3]
-0.007864631962265943
Body2\R[1,3]
-3.214012075936454e-6
Body2\R[2,3]
-0.6319089858363088
Body2\R[3,3]
0.7750426011575092
Body2\R[1,2]
-6.6483879653314135e-6
Body2\R[2,2]
0.7750426011578859
Body2\R[3,2]
0.631908985809046
Matrix
false
false
false
false
false
false
Center
1.0
true
4
Body3\dimension[1]
0.0045
Body3\dimension[2]
0.01
Body3\dimension[3]
0.065
true
0.501960784313725
0.501960784313725
1
1.0
1
1
1
true
0.5
0.5
0.5
15
false
false
Block
Body3\position[1]
-6.692317187352706e-9
Body3\position[2]
-9.271524762268744e-4
Body3\position[3]
0.010912823003701597
Body3\R[1,3]
-6.861783032899875e-6
Body3\R[2,3]
0.5688421031724941
Body3\R[3,3]
0.8224467530553025
Body3\R[1,2]
1.135164957808117e-6
Body3\R[2,2]
0.8224467530785655
Body3\R[3,2]
-0.568842103179113
Matrix
false
false
false
false
false
false
Center
1.0
true
4
Body4\dimension[1]
0.005
Body4\dimension[2]
0.05
Body4\dimension[3]
0.01
true
0.501960784313725
0
0
1.0
1
1
1
true
0.5
0.5
0.5
15
false
false
Block
Body4\position[1]
-4.336569241139506e-7
Body4\position[2]
0.034816284358052924
Body4\position[3]
0.05544654051093069
Body4\R[1,3]
7.660983997214484e-7
Body4\R[2,3]
-0.7184279975751117
Body4\R[3,3]
0.6956013314389418
Body4\R[1,2]
-9.221922498965795e-6
Body4\R[2,2]
0.695601331404492
Body4\R[3,2]
0.7184279975496879
Matrix
false
false
false
false
false
false
Center
1.0
true
4
Body5\dimension[1]
0.005
Body5\dimension[2]
0.025
Body5\dimension[3]
0.01
true
0.501960784313725
0
0
1.0
1
1
1
true
0.5
0.5
0.5
15
false
false
Block
Body5\position[1]
7.520860330604783e-4
Body5\position[2]
0.06082379340134874
Body5\position[3]
0.08216055305480323
Body5\R[1,3]
8.290876761564355e-7
Body5\R[2,3]
-0.7184280341474859
Body5\R[3,3]
0.6956012936663442
Body5\R[1,2]
0.0605296964229612
Body5\R[2,2]
0.6943258730148419
Body5\R[3,2]
0.7171106873510685
Matrix
false
false
false
false
false
false
1
1
1
false
Reference Frame
Body6\position[1]
0.0015045370330949836
Body6\position[2]
0.06945503109745695
Body6\position[3]
0.0910750311658822
Body6\R[1,3]
8.290876761564355e-7
Body6\R[2,3]
-0.7184280341474859
Body6\R[3,3]
0.6956012936663442
Body6\R[1,2]
0.0605296964229612
Body6\R[2,2]
0.6943258730148419
Body6\R[3,2]
0.7171106873510685
Matrix
false
false
false
false
false
false
1
1
1
false
Reference Frame
1.5707963267949
Bryant
false
false
false
false
false
false
16
0.0073
0.0073
0.1
true
true
true
true
false
true
1
1
1
true
0.752941176470588
0.752941176470588
0.752941176470588
1.0
1
1
1
true
0.5
0.5
0.5
15
false
false
Cylinder
0.015
Bryant
false
false
false
false
false
false
16
0.007
0.007
0.11
true
true
true
true
false
true
1
1
1
true
0
0
0.627450980392157
1.0
1
1
1
true
0.5
0.5
0.5
15
false
false
Reference Frame
0.013
Bryant
false
false
false
false
false
false
16
0.001
0.007
0.02
true
true
true
true
false
true
1
1
1
true
0
0
1
1.0
1
1
1
true
0.5
0.5
0.5
15
false
false
Cylinder
-0.05
Bryant
false
false
false
false
false
false
Center
1.0
true
4
LiftingArm\Body_Lift2\dimension[1]
0.01
LiftingArm\Body_Lift2\dimension[2]
0.003
LiftingArm\Body_Lift2\dimension[3]
0.002
true
1
1
1
1.0
1
1
1
true
0.5
0.5
0.5
15
false
false
Block
LiftingArm\Body_Lift2\position[1]
0.010766949228224007
LiftingArm\Body_Lift2\position[2]
0.04274079922313772
LiftingArm\Body_Lift2\position[3]
0.06387488576858491
LiftingArm\Body_Lift2\R[1,3]
3.495345900239307e-7
LiftingArm\Body_Lift2\R[2,3]
-0.7184232033740139
LiftingArm\Body_Lift2\R[3,3]
0.6956062829314426
LiftingArm\Body_Lift2\R[1,2]
0.16844891169312998
LiftingArm\Body_Lift2\R[2,2]
0.6856663796280392
LiftingArm\Body_Lift2\R[3,2]
0.708157171817936
Matrix
false
false
false
false
false
false
Center
1.0
true
4
LiftingArm\Body_Lift3\dimension[1]
0.003
LiftingArm\Body_Lift3\dimension[2]
0.025
LiftingArm\Body_Lift3\dimension[3]
0.001
true
1
1
1
1.0
1
1
1
true
0.5
0.5
0.5
15
false
false
Block
LiftingArm\Body_Lift3\position[1]
0.016117999410126673
LiftingArm\Body_Lift3\position[2]
0.05065901420629866
LiftingArm\Body_Lift3\position[3]
0.0722974979075188
LiftingArm\Body_Lift3\R[1,3]
8.977844069799541e-7
LiftingArm\Body_Lift3\R[2,3]
-0.7184185304092274
LiftingArm\Body_Lift3\R[3,3]
0.6956111091434926
LiftingArm\Body_Lift3\R[1,2]
0.036207434688140326
LiftingArm\Body_Lift3\R[2,2]
0.6951550174148017
LiftingArm\Body_Lift3\R[3,2]
0.7179474377949481
Matrix
false
false
false
false
false
false
Center
1.0
true
4
LiftingArm\Body_Lift4\dimension[1]
0.0159
LiftingArm\Body_Lift4\dimension[2]
0.003
LiftingArm\Body_Lift4\dimension[3]
0.002
true
1
1
1
1.0
1
1
1
true
0.5
0.5
0.5
15
false
false
Block
LiftingArm\Body_Lift4\position[1]
0.008675736059349695
LiftingArm\Body_Lift4\position[2]
0.0594920761737879
LiftingArm\Body_Lift4\position[3]
0.08166625242071981
LiftingArm\Body_Lift4\R[1,3]
1.5867030881723527e-6
LiftingArm\Body_Lift4\R[2,3]
-0.7184107972199947
LiftingArm\Body_Lift4\R[3,3]
0.6956190957954029
LiftingArm\Body_Lift4\R[1,2]
0.06052954540305655
LiftingArm\Body_Lift4\R[2,2]
0.6943436818169639
LiftingArm\Body_Lift4\R[3,2]
0.7170934567085117
Matrix
false
false
false
false
false
false
GraphPlot
3
false
16777215
true
true
15780518
12624260
0
10
10
10
false
16777215
true
1
Stepper Motor D
true
Arial
12
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
Arial
10
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
true
true
false
0.0
17.641751363645234
true
3
-1.0
1.0
true
2
-1.0
1.0
true
2
-1.0
1.0
true
2
3355111
1
3355111
0
true
1
1
1
true
true
time
true
stepper_control1\setpoint
6076255
1
6076255
0
true
1
1
1
true
true
time
true
Joint_dynC\angle
12553035
1
12553035
0
true
1
1
1
true
true
time
true
Joint_dynC\stepper_model\RotorAngle\angle
true
0.11683599419448476
0.8741610738255033
0
16777215
GraphPlot
4
false
16777215
true
true
15780518
12624260
0
10
10
10
false
16777215
true
1
Plot
true
Arial
12
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
Arial
10
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
true
true
false
-0.04252191533744833
0.08812961394085853
true
3
-0.06
0.14
true
2
-0.06
0.14
true
2
-0.06
0.14
true
2
-0.06
0.14
true
2
-0.06
0.14
true
2
-0.06
0.14
true
2
-0.06
0.14
true
2
3355111
1
3355111
0
true
1
1
1
true
true
Body_Lift2\position[2]
true
Body_Lift2\position[3]
6076255
1
6076255
0
true
1
1
1
true
true
Body2\position[2]
true
Body2\position[3]
12553035
1
12553035
0
true
1
1
1
true
true
Body3\position[2]
true
Body3\position[3]
15086320
1
15086320
0
true
1
1
1
true
true
Body4\position[2]
true
Body4\position[3]
15790150
1
15790150
0
true
1
1
1
true
true
Body5\position[2]
true
Body5\position[3]
1696255
1
1696255
0
true
1
1
1
true
true
Body6\position[2]
true
Body6\position[3]
4089775
1
4089775
0
true
1
1
1
true
true
rectanglepath\output[1]
true
rectanglepath\output[2]
true
0
16777215
GraphPlot
5
false
16777215
true
true
15780518
12624260
0
10
10
10
false
16777215
true
1
Stepper Control A
true
Arial
12
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
Arial
10
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
true
true
false
0.0
17.641751363645234
true
3
-250.0
250.0
true
1
0.0
0.730288609349958
true
1
0.0
0.730288609349958
true
1
6076255
1
6076255
0
true
1
1
1
true
true
time
true
stepper_control\Acceleration_int\input
12553035
1
12553035
0
true
1
1
1
true
true
time
true
stepper_control\Velocity_int\output
15086320
1
15086320
0
true
1
1
1
true
true
time
true
stepper_control\Velocity_int\input
true
0.07602339181286549
0.877104377104377
0
16777215
GraphPlot
6
false
16777215
true
true
15780518
12624260
0
10
10
10
false
16777215
true
1
Stepper Control D
true
Arial
12
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
Arial
10
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
true
true
false
0.0
17.641751363645234
true
3
-250.0
250.0
true
1
0.0
39.669708688195
true
1
0.0
39.669708688195
true
1
3355111
1
3355111
0
true
1
1
1
true
true
time
true
stepper_control1\Acceleration_int\input
6076255
1
6076255
0
true
1
1
1
true
true
time
true
stepper_control1\Velocity_int\output
12553035
1
12553035
0
true
1
1
1
true
true
time
true
stepper_control1\Velocity_int\input
true
0.07602339181286549
0.877104377104377
0
16777215
GraphPlot
7
false
16777215
true
true
15780518
12624260
0
10
10
10
false
16777215
true
1
Plot
true
Arial
12
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
Arial
10
34
400
0
0
0
0
Arial
12
34
400
0
0
0
0
true
true
false
0.0
17.641751363645234
true
3
-0.1
0.1
true
2
0.0
0.063461060702673
true
2
3355111
1
3355111
0
true
1
1
1
true
true
time
true
Joint_dynA\stepper_model\p.T
6076255
1
6076255
0
true
1
1
1
true
true
time
true
Joint_dynC\stepper_model\p.T
true
0
16777215
1
true
Window 1
0
1
3
5
6
Base
2
true
Window 2
0
2
Base
3
true
Window 3
0
4
Base
4
true
Window 4
0
7
Base
0.0895833 0.109259 0.892188 0.862037
0.14375 0.0537037 0.94375 0.84537
0.0265625 0.134259 0.776042 0.859259
0.192708 0.163889 0.803646 0.708333
0.0
20.0
false
false
false
false
0.1
1.0e-6
1.0e-7
false
true
Euler
0.01
false
BackwardEuler
1.0e-5
1.0e-5
1.0e-5
1.0e-5
0.01
1.0
AdamsBashforth
1.0e-4
false
RungeKutta2
0.01
false
RungeKutta4
0.01
false
RungeKutta8
false
0.0
false
0.0
1.0e-6
1.0e-6
0.9
0.33
6.0
0.0
false
100000
false
1000
RungeKuttaFehlberg
false
0.0
false
0.0
1.0e-6
1.0e-6
VodeAdams
false
0.0
false
0.0
1.0e-6
1.0e-6
true
true
BDFMethod
1.0e-5
1.0e-5
1.0e-5
1.0e-5
false
0.0
false
0.0
MeBDFiMethod
1.0e-6
1.0e-6
1.0e-6
1.0e-6
false
0.0
false
0.0
7
10
false
true
true
false
true
0
0.0
false
Optimization
true
Joint_dynC\stepper_model\angle
stepper_control1\setpoint
UseIntegralAbsolute
0.001
DavidsonFletcherPowell
stepper_control1\Position_control\kp
13.0
39.0
Linear
Uniform
26.0
1.0
1.0
26.0
stepper_control1\Velocity_control\kp
33.0
99.0
Linear
Uniform
66.0
1.0
1.0
66.0
true
true
true
true
false
1.0