diff --git a/implementation/SCARA/05_stepper/stepper.emx b/implementation/SCARA/05_stepper/stepper.emx
new file mode 100644
index 0000000..8f3076b
--- /dev/null
+++ b/implementation/SCARA/05_stepper/stepper.emx
@@ -0,0 +1,6337 @@
+
+
+
+
+
+ 4.8
+0
+ False
+ C:\users\wouter\My Documents\studie\ma\mahd\implementation\SCARA\05_stepper\stepper.emx
+ 2020-7-22 16:26:16
+True
+
+
+ parameters
+ real A = 0.05 {m};
+ real B = 0.05 {m};
+variables
+ real J0_1_BF1[2];
+ real J1_2_BF1[2];
+ real J1_2_BF2[2];
+ real EE1_BF2[2];
+initialequations
+ J0_1_BF1 = [A/2;0];
+ J1_2_BF1 = [-A/2;0];
+ J1_2_BF2 = [B/2;0];
+ EE1_BF2 = [-B/2;0];
+
+';
+ type Mainmodel
+ end;
+ implementation bg
+ submodels
+ C 456 232
+ 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' 456 232 color 0 18 bold;
+ end;
+ implementation eq
+parameters
+ real c = 0.0001;
+equations
+ state = int(p.f);
+ p.e = state / c;
+implementation_end;
+ C1 640 264
+ 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 bottom
+ figures
+ text 'C' 640 264 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;
+ C2 304 272
+ 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 bottom
+ figures
+ text 'C' 304 272 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;
+ C3 304 224
+ 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' 304 224 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;
+ C4 640 216
+ 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' 640 216 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;
+ C5 32 232
+ 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' 32 232 color 0 18 bold;
+ end;
+ implementation eq
+parameters
+ real c = 0.0001;
+equations
+ state = int(p.f);
+ p.e = state / c;
+implementation_end;
+ COM 376 208
+ 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 344 192 408 224 color 0 fill 139;
+ text 'COM' 376 208 color 0 'Clear Sans' 16;
+ terminals
+ Hin 392 192 fixed;
+ p 360 192 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;
+ COM1 720 200
+ description '4.81Bond Graph\MR\center_of_mass_v2.emx2020-7-21 12:24:38parameters
+ real I [3,1] = [7.583333333333335e-7; 3.645833333333334e-8; 7.364583333333335e-7] {N.m.s};
+ real m = 0.0035 {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 688 184 752 216 color 0 fill 139;
+ text 'COM' 720 200 color 0 'Clear Sans' 16;
+ terminals
+ Hin 736 184 fixed;
+ p 704 184 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;
+ COM2 904 184
+ 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 872 168 936 200 color 0 fill 139;
+ text 'COM' 904 184 color 0 'Clear Sans' 16;
+ terminals
+ Hin 920 168 fixed;
+ p 888 168 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 424 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 480 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' 480 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;
+ inverse_kinematics1 272 552
+ 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} ;
+ signal out abs_angle2;
+ 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;
+ abs_angle2 = angle1 - pi * to_rad + c;
+ angle2 = c - pi * to_rad;
+
+
+
+ implementation_end;
+ Joint 192 120
+ 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 88 216 152 color 0 fill 14745599;
+ text 'Joint' 192 120 color 0 'Clear Sans' 16;
+ terminals
+ Pin 216 104 fixed;
+ Hin 168 136 fixed;
+ Hout 216 136 fixed;
+ Pout 168 104 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 536 120
+ 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 512 88 560 152 color 0 fill 14745599;
+ text 'Joint' 536 120 color 0 'Clear Sans' 16;
+ terminals
+ Pin 560 104 fixed;
+ Hin 512 136 fixed;
+ Hout 560 136 fixed;
+ Pout 512 104 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;
+ Link 288 120
+ 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 256 96 320 144 color 0 fill 8454041;
+ text 'Link' 288 120 color 0 'Clear Sans' 16;
+ terminals
+ Hin 256 136 fixed;
+ Hout 320 136 fixed;
+ Pin 320 104 fixed;
+ Pout 256 104 fixed;
+ end;
+ implementation eq
+parameters
+ real offset[6]= [0;0;0;0;0.0325;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;
+ Link1 456 120
+ 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 424 96 488 144 color 0 fill 8454041;
+ text 'Link' 456 120 color 0 'Clear Sans' 16;
+ terminals
+ Hin 424 136 fixed;
+ Hout 488 136 fixed;
+ Pin 488 104 fixed;
+ Pout 424 104 fixed;
+ end;
+ implementation eq
+parameters
+ real offset[6]= [0;0;0;0;0.0325;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','RotationMatrixFromEulXYZr',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 624 120
+ description '
+
+ 4.8
+ Bond Graph\MR\link-v3.emx
+1
+ False
+ 2020-7-19 15:22:34
+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 592 96 656 144 color 0 fill 8454041;
+ text 'Link' 624 120 color 0 'Clear Sans' 16;
+ terminals
+ Hin 592 136 fixed;
+ Hout 656 136 fixed;
+ Pin 656 104 fixed;
+ Pout 592 104 fixed;
+ end;
+ implementation eq
+parameters
+ real offset[3]= [0;0.025;0]; //coordinates of joint_1
+variables
+ real Hab[4,4];
+ real AdHab[6,6];
+equations
+ Hab = homogeneous(eye(3),offset);
+ AdHab = Adjoint(eye(3),offset);
+ Hout = Hin * Hab;
+ Pout.e = transpose(AdHab) * Pin.e;
+ Pin.f = AdHab * Pout.f;
+
+ implementation_end;
+ Link3 800 120
+ description '
+
+ 4.8
+ Bond Graph\MR\link-v3.emx
+1
+ False
+ 2020-7-19 15:22:34
+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 768 96 832 144 color 0 fill 8454041;
+ text 'Link' 800 120 color 0 'Clear Sans' 16;
+ terminals
+ Hin 768 136 fixed;
+ Hout 832 136 fixed;
+ Pin 832 104 fixed;
+ Pout 768 104 fixed;
+ end;
+ implementation eq
+parameters
+ real offset[3]= [0;0.025;0]; //coordinates of joint_1
+variables
+ real Hab[4,4];
+ real AdHab[6,6];
+equations
+ Hab = homogeneous(eye(3),offset);
+ AdHab = Adjoint(eye(3),offset);
+ Hout = Hin * Hab;
+ Pout.e = transpose(AdHab) * Pin.e;
+ Pin.f = AdHab * Pout.f;
+
+ implementation_end;
+ Negate1 272 472
+ 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 256 456 288 488 color 0 fill 15132390;
+ text '-1' 272 472 color 16711680 16 bold;
+ end;
+ implementation eq
+equations
+ output = - input;
+ implementation_end;
+ Negate2 520 552
+ 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 504 536 536 568 color 0 fill 15132390;
+ text '-1' 520 552 color 16711680 16 bold;
+ end;
+ implementation eq
+equations
+ output = - input;
+ implementation_end;
+ new_joint1 376 280
+ 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
+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;
+ new_joint2 720 256
+ 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
+variables
+ real position[3];
+ real rotation[3];
+ real R[3,3];
+equations
+ // start typing here
+ position = input[1:3,4];
+ rotation = [input[3,2];input[1,3];input[2,1]];
+ R = input[1:3,1:3];implementation_end;
+ new_joint3 1016 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
+variables
+ real position[3];
+ real rotation[3];
+ real R[3,3];
+equations
+ position = input[1:3,4];
+ rotation = [input[3,2];input[1,3];input[2,1]];
+ R = input[1:3,1:3];implementation_end;
+ OneJunction1 360 104
+ 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' 360 104 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction11 520 352
+ 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' 520 352 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction12 888 104
+ 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' 888 104 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction14 112 352
+ 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' 112 352 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction17 456 280
+ 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' 456 280 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction2 120 104
+ 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' 120 104 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction3 704 104
+ 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' 704 104 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction4 593 232
+ 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' 593 232 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction5 257 240
+ 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' 257 240 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction6 257 256
+ 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' 257 256 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction7 593 248
+ 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' 593 248 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction8 32 280
+ 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' 32 280 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ PowerMux 192 214
+ 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 168 216 216 216 color 0 width 2;
+ rectangle 168 208 216 220 color -1;
+ text '1' 186 211 color 8421504 8;
+ terminals
+ input 176 216 fixed;
+ output 192 216 fixed;
+ input_rot2 208 216 fixed;
+ input_pos3 192 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;
+ end;
+ icon bg bottom
+ figures
+ line 808 216 808 264 color 0 width 2;
+ rectangle 804 216 816 264 color -1;
+ text '1' 813 234 color 8421504 8;
+ terminals
+ input 808 224 fixed;
+ output 808 240 fixed;
+ input_rot2 808 256 fixed;
+ input_pos3 808 240 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.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;
+ end;
+ icon bg bottom
+ figures
+ line 808 216 808 264 color 0 width 2;
+ rectangle 804 216 816 264 color -1;
+ text '1' 813 234 color 8421504 8;
+ terminals
+ input 808 224 fixed;
+ output 808 240 fixed;
+ input_rot2 808 256 fixed;
+ input_pos3 808 240 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;
+ PowerMux1 536 206
+ 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 512 208 560 208 color 0 width 2;
+ rectangle 512 200 560 212 color -1;
+ text '1' 530 203 color 8421504 8;
+ terminals
+ input 520 208 fixed;
+ output 536 208 fixed;
+ input_rot2 552 208 fixed;
+ input_pos3 536 208 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;
+ end;
+ icon bg bottom
+ figures
+ line 808 216 808 264 color 0 width 2;
+ rectangle 804 216 816 264 color -1;
+ text '1' 813 234 color 8421504 8;
+ terminals
+ input 808 224 fixed;
+ output 808 240 fixed;
+ input_rot2 808 256 fixed;
+ input_pos3 808 240 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.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;
+ end;
+ icon bg bottom
+ figures
+ line 808 216 808 264 color 0 width 2;
+ rectangle 804 216 816 264 color -1;
+ text '1' 813 234 color 8421504 8;
+ terminals
+ input 808 224 fixed;
+ output 808 240 fixed;
+ input_rot2 808 256 fixed;
+ input_pos3 808 240 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;
+ R1 456 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' 456 328 color 0 18 bold;
+ end;
+ implementation eq
+parameters
+ real r = 25;
+equations
+ p.e = r * p.f;
+implementation_end;
+ R2 257 184
+ 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' 257 184 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;
+ R3 257 312
+ 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 bottom
+ figures
+ text 'R' 257 312 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;
+ R4 593 176
+ 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' 593 176 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 593 304
+ 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 bottom
+ figures
+ text 'R' 593 304 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;
+ R6 32 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' 32 328 color 0 18 bold;
+ end;
+ implementation eq
+parameters
+ real r = 25;
+equations
+ p.e = r * p.f;
+implementation_end;
+ rectanglepath 104 552
+ 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;
+ 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 = 0.5 {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};
+initialequations
+ v = (2*w + 2*h)/t;
+ t_w = w / v;
+ t_h = h / v;
+equations
+ period = floor(time / t) * t;
+ 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;
+ rectanglepath1 272 656
+ 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 216 640 328 672 color 0 fill 15132390;
+ text 'name' 272 656 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 = t - time + floor(time / t) * t;
+
+if period < t_w or time < 4 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;
+ Sf2 64 104
+ 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' 64 104 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;
+ Splitter1 392 136
+ 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 388.8 132.8 395.2 139.2 color -1 fill 0;
+ ellipse 387.7 131.7 396.3 140.3 color -1;
+ terminals
+ input 392 136 fixed;
+ end;
+ implementation eq
+equations
+ collect (output) = input;
+implementation_end;
+ Splitter2 736 136
+ 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 732.8 132.8 739.2 139.2 color -1 fill 0;
+ ellipse 731.7 131.7 740.3 140.3 color -1;
+ terminals
+ input 736 136 fixed;
+ end;
+ implementation eq
+equations
+ collect (output) = input;
+implementation_end;
+ stepper_control 112 472
+ description '
+
+ 4.8
+1
+ Motor\stepper_control.emx
+ 2020-7-22 15:25:26
+
+';
+ type Submodel
+ ports
+ signal in setpoint {rad} ;
+ signal out output {rad} ;
+ 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 initial = 0; // initial value
+equations
+ output = int (input, initial);
+ 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 maximum = 300;
+ real minimum = -300;
+equations
+ output = limit (input, minimum, maximum);
+ 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
+ real maximum = 25;
+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
+ real maximum = 100;
+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 initial = 0; // initial value
+equations
+ output = int (input, initial);
+ 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 maximum = 25;
+ real minimum = -25;
+equations
+ output = limit (input, minimum, maximum);
+ 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;
+ stepper_control1 520 472
+ description '
+
+ 4.8
+1
+ Motor\stepper_control.emx
+ 2020-7-22 15:25:26
+
+';
+ type Submodel
+ ports
+ signal in setpoint {rad} ;
+ signal out output {rad} ;
+ 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 initial = 0; // initial value
+equations
+ output = int (input, initial);
+ 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 maximum = 300;
+ real minimum = -300;
+equations
+ output = limit (input, minimum, maximum);
+ 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
+ real maximum = 25;
+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
+ real maximum = 100;
+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 initial = 0; // initial value
+equations
+ output = int (input, initial);
+ 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 maximum = 25;
+ real minimum = -25;
+equations
+ output = limit (input, minimum, maximum);
+ 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;
+ stepper_model 112 392
+ description '
+
+ 4.8
+1
+ Motor\stepper_model.emx
+ 2020-7-22 15:25:37
+
+
+ parameters
+ 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 224 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' 224 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 272 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' 272 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 416 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' 416 160 color 0 18 bold;
+ end;
+ implementation eq
+parameters
+ real i = 8e-5 {kg.m2};
+ real global RotorInertia;
+equations
+ state = int(p.e);
+ p.f = state / (RotorInertia);
+implementation_end;
+ MGY_a 320 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' 320 160 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ p1.e = r * p2.f;
+ p2.e = r * p1.f;
+implementation_end;
+ MGY_b 320 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' 320 272 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ p1.e = r * p2.f;
+ p2.e = r * p1.f;
+implementation_end;
+ MSe_a 176 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' 176 160 color 0 18 bold;
+ end;
+ implementation eq
+variables
+ real flow;
+equations
+ p.e = effort;
+ flow = p.f;
+implementation_end;
+ MSe_b 176 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' 176 272 color 0 18 bold;
+ end;
+ implementation eq
+variables
+ real flow;
+equations
+ p.e = effort;
+ flow = p.f;
+implementation_end;
+ plug angle 72 216;
+ plug p 560 216;
+ OneJunction1 504 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' 504 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 248 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' 248 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 248 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' 248 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 416 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' 416 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 176 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 136 200 216 232 color 0 fill 15132390;
+ text 'name' 176 216 color 0 'Clear Sans' 16;
+ end;
+ implementation eq
+parameters
+ real global u_max {V};
+ real global angle_step;
+ real max_a {m/s2};
+variables
+ real current_angle;
+ real c,s;
+ 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);
+ current_angle = angle;
+
+
+
+ implementation_end;
+ R 272 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' 272 104 color 0 18 bold;
+ end;
+ implementation eq
+parameters
+ real global R_phase;
+equations
+ p.e = R_phase * p.f;
+implementation_end;
+ R1 224 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' 224 328 color 0 18 bold;
+ end;
+ implementation eq
+parameters
+ real global R_phase;
+equations
+ p.e = R_phase * p.f;
+implementation_end;
+ R2 488 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' 488 264 color 0 18 bold;
+ end;
+ implementation eq
+parameters
+ real r = 1.0e-3;
+equations
+ p.e = r * p.f;
+implementation_end;
+ RotorAngle 320 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 280 200 360 232 color 0 fill 15132390;
+ text 'name' 320 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 416 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' 416 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;
+ stepper_model1 520 392
+ description '
+
+ 4.8
+1
+ Motor\stepper_model.emx
+ 2020-7-22 15:25:37
+
+
+ parameters
+ 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 i = 8e-5 {kg.m2};
+ 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};
+ real global angle_step;
+ real max_a {m/s2};
+variables
+ real current_angle;
+ real c,s;
+ 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);
+ current_angle = angle;
+
+
+
+ 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;
+ Zero 112 136
+ 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 96.1 120 127.9 152 color 0 fill 15132390;
+ text '0' 112 136 color 16711680 18 bold;
+ end;
+ implementation eq
+equations
+ output = eye(4);implementation_end;
+ ZeroJunction2 520 280
+ 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' 520 280 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.f)) = 0;
+ equal (collect (p.e));
+ effort = first (p.e);
+implementation_end;
+ ZeroJunction3 112 288
+ 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' 112 288 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
+ C1\p <= OneJunction7\p;
+ C2\p <= OneJunction6\p;
+ COM\Hout -> new_joint1\input;
+ COM1\Hout -> new_joint2\input;
+ COM2\Hin <- Link3\Hout 920 136;
+ COM2\Hout -> new_joint3\input;
+ COM2\p => OneJunction12\p;
+ inverse_kinematics1\angle1 -> Negate1\input;
+ inverse_kinematics1\angle2 -> Negate2\input;
+ Joint\Hout -> Link\Hin;
+ Joint\Pdiff <= PowerMux\output;
+ Joint\Pin <= Link\Pout;
+ Joint\Pout => OneJunction2\p;
+ Link\Pin <= OneJunction1\p;
+ Link1\Hout -> Joint1\Hin;
+ Link1\Pin <= Joint1\Pout;
+ Link1\Pout => OneJunction1\p;
+ Link2\Hin <- Joint1\Hout;
+ Link2\Hout -> Splitter2\input;
+ Link2\Pin <= OneJunction3\p;
+ Link2\Pout => Joint1\Pin;
+ Link3\Pin <= OneJunction12\p;
+ Link3\Pout => OneJunction3\p;
+ Negate1\output -> stepper_control\setpoint;
+ Negate2\output -> stepper_control1\setpoint;
+ OneJunction1\p <= COM\p;
+ OneJunction11\p => ZeroJunction2\p;
+ OneJunction14\p => ZeroJunction3\p;
+ OneJunction17\p => C\p;
+ OneJunction3\p <= COM1\p;
+ OneJunction4\p => C4\p;
+ OneJunction4\p => R4\p;
+ OneJunction5\p => C3\p;
+ OneJunction5\p => R2\p;
+ OneJunction6\p => R3\p;
+ OneJunction7\p => R5\p;
+ OneJunction8\p => C5\p;
+ PowerMux\input_pos3 <= OneJunction6\p;
+ PowerMux\input_rot2 <= OneJunction5\p;
+ PowerMux1\input_pos3 <= OneJunction7\p;
+ PowerMux1\input_rot2 <= OneJunction4\p;
+ PowerMux1\output => Joint1\Pdiff;
+ R1\p <= OneJunction17\p;
+ R6\p <= OneJunction8\p;
+ rectanglepath1\output -> inverse_kinematics1\input;
+ Sf2\p => OneJunction2\p;
+ Splitter1\input <- Link\Hout;
+ Splitter1\output -> COM\Hin;
+ Splitter1\output -> Link1\Hin;
+ Splitter2\output -> COM1\Hin;
+ Splitter2\output -> Link3\Hin;
+ stepper_control\output -> stepper_model\angle;
+ stepper_control1\output -> stepper_model1\angle;
+ stepper_model\p => OneJunction14\p;
+ stepper_model1\p => OneJunction11\p;
+ Zero\output -> Joint\Hin;
+ ZeroJunction2\p => OneJunction17\p;
+ ZeroJunction2\p => PowerMux1\input;
+ ZeroJunction3\p => OneJunction8\p;
+ ZeroJunction3\p => PowerMux\input;
+ end;
+ implementation_end;
+]]>
+
+
+
+
+
+
+ Experiment 1
+
+
+
+ 4.8
+
+
+
+
+
+
+
+
+ stepper_model\phase_control\max_a
+ m/s2
+ 0
+
+
+ stepper_model1\phase_control\max_a
+ m/s2
+ 0
+
+
+
+
+ C1\state_initial
+ 3
+ 1
+ 0 0 0
+
+
+ C2\state_initial
+ 3
+ 1
+ 0 0 0
+
+
+ C3\state_initial
+ 2
+ 1
+ 0 0
+
+
+ C4\state_initial
+ 2
+ 1
+ 0 0
+
+
+ C5\state_initial
+ 0
+
+
+ COM1\InertialTensor\state_initial
+ 6
+ 1
+ 0 0 0 0 0 0
+
+
+ COM\InertialTensor\state_initial
+ 6
+ 1
+ 0 0 0 0 0 0
+
+
+ C\state_initial
+ 0
+
+
+ Joint1\Hmatrix\p_initial
+ 3
+ 1
+ 0 0 0
+
+
+ Joint\Hmatrix\p_initial
+ 3
+ 1
+ 0 0 0
+
+
+ stepper_control1\Position_control\state_initial
+ 0
+
+
+ stepper_control1\Velocity_control\state_initial
+ 0
+
+
+ stepper_control\Position_control\state_initial
+ 0
+
+
+ stepper_control\Velocity_control\state_initial
+ 0
+
+
+ stepper_model1\I1\state_initial
+ 0
+
+
+ stepper_model1\I\state_initial
+ 0
+
+
+ stepper_model1\RotorAngle\angle_initial
+ rad
+ 0
+
+
+ stepper_model\I1\state_initial
+ 0
+
+
+ stepper_model\I\state_initial
+ 0
+
+
+ stepper_model\RotorAngle\angle_initial
+ rad
+ 0
+
+
+ COM2\InertialTensor\p.e_initial
+ 6
+ 1
+ 0 0 0 0 0 0
+
+
+ stepper_model1\I2\p.e_initial
+ 0
+
+
+ stepper_model\I2\p.e_initial
+ 0
+
+
+
+
+
+ time
+ new_joint1\position[1]
+ new_joint1\position[2]
+ new_joint1\position[3]
+ new_joint1\R[1,3]
+ new_joint1\R[2,3]
+ new_joint1\R[3,3]
+ new_joint1\R[1,2]
+ new_joint1\R[2,2]
+ new_joint1\R[3,2]
+ new_joint2\R[1,3]
+ new_joint2\R[2,3]
+ new_joint2\R[3,3]
+ new_joint2\R[1,2]
+ new_joint2\R[2,2]
+ new_joint2\R[3,2]
+ new_joint2\position[1]
+ new_joint2\position[2]
+ new_joint2\position[3]
+ new_joint3\position[3]
+ new_joint3\position[2]
+ rectanglepath1\output[2]
+ rectanglepath1\output[1]
+ Integrate2\output
+ Submodel3\dimension[1]
+ Submodel3\dimension[2]
+ Submodel3\dimension[3]
+ Submodel4\dimension[1]
+ Submodel4\dimension[2]
+ Submodel4\dimension[3]
+ Step\output
+ motor_joint2\SignalLimiter2\output
+ stepper_control\Acceleration_int\output
+ stepper_control\Acceleration_int\input
+ stepper_control\Velocity_int\output
+ stepper_control1\Acceleration_int\output
+ stepper_control1\Acceleration_int\input
+ stepper_control1\Velocity_int\output
+
+
+
+ D3DPlot
+
+ 1
+ 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
+
+
+ 3.04292494817788
+
+
+ -0.198158420944799
+
+
+ 2.86669745787175
+
+
+
+
+
+ -0.727053165168863
+
+
+ 0.0473464543511177
+
+
+ -0.684946719298892
+
+
+
+
+ -0.6834989786941
+
+
+ 0.0445101606651553
+
+
+ 0.728593159260835
+
+
+ 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
+
+
+ -9.99200722162641e-016
+
+
+ 1.76247905159244e-015
+
+
+ -3.05678199886544e-015
+
+
+ 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
+ Scenery
+
+
+
+
+
+ Bryant
+
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+ 10
+
+
+ 10
+
+
+ 10
+
+
+ false
+ Reference Frame
+
+
+
+
+
+ Bryant
+
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+ Center
+ 1.0
+ true
+ 4
+
+
+ Submodel3\dimension[1]
+ 0.005
+
+
+ Submodel3\dimension[2]
+ 0.065
+
+
+ Submodel3\dimension[3]
+ 0.01
+
+
+ true
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1.0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+ true
+
+
+ 0.498039215686275
+
+
+ 0.498039215686275
+
+
+ 0.498039215686275
+
+
+
+
+
+ 14.298713684082
+
+ false
+ false
+ Block
+
+
+ new_joint1\position[1]
+ 0.0
+
+
+ new_joint1\position[2]
+ -0.01651527795907241
+
+
+ new_joint1\position[3]
+ 0.027946459849279154
+
+
+
+
+
+ new_joint1\R[1,3]
+ 0.0
+
+
+ new_joint1\R[2,3]
+ -0.8611149858648751
+
+
+ new_joint1\R[3,3]
+ -0.5084102488334947
+
+
+
+
+ new_joint1\R[1,2]
+ 0.0
+
+
+ new_joint1\R[2,2]
+ -0.5084102488334947
+
+
+ new_joint1\R[3,2]
+ 0.8611149858648751
+
+
+ Matrix
+
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+ Center
+ 1.0
+ true
+ 4
+
+
+ Submodel4\dimension[1]
+ 0.005
+
+
+ Submodel4\dimension[2]
+ 0.05
+
+
+ Submodel4\dimension[3]
+ 0.01
+
+
+ true
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1.0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+ true
+
+
+ 0.5
+
+
+ 0.5
+
+
+ 0.5
+
+
+
+
+
+ 15
+
+ false
+ false
+ Block
+
+
+ new_joint2\position[1]
+ 0.0
+
+
+ new_joint2\position[2]
+ -0.008092142484759316
+
+
+ new_joint2\position[3]
+ 0.05482151967891108
+
+
+
+
+
+ new_joint2\R[1,3]
+ 0.0
+
+
+ new_joint2\R[2,3]
+ 0.04312796974618256
+
+
+ new_joint2\R[3,3]
+ 0.9990695562500003
+
+
+
+
+ new_joint2\R[1,2]
+ 0.0
+
+
+ new_joint2\R[2,2]
+ 0.9990695562500003
+
+
+ new_joint2\R[3,2]
+ -0.043127969746182555
+
+
+ Matrix
+
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ GraphPlot
+
+ 2
+ false
+ 16777215
+ true
+
+
+ true
+ 15780518
+ 12624260
+ 0
+ 10
+ 10
+ 10
+ false
+
+ 16777215
+ true
+ 1
+ model(2)
+ 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.04000000000000001
+ 0.15999999999999998
+ true
+ 1
+
+
+
+
+
+ -0.06
+ 0.14
+ true
+ 1
+
+
+
+ -0.06
+ 0.14
+ true
+ 1
+
+
+
+
+
+
+
+ 3355111
+ 1
+ 3355111
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ new_joint3\position[2]
+
+
+ true
+ new_joint3\position[3]
+
+
+
+ 6076255
+ 1
+ 6076255
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ rectanglepath1\output[1]
+
+
+ true
+ rectanglepath1\output[2]
+
+
+
+
+ true
+ 0
+ 16777215
+
+
+
+ GraphPlot
+
+ 4
+ false
+ 16777215
+ true
+
+
+ true
+ 15780518
+ 12624260
+ 0
+ 10
+ 10
+ 10
+ false
+
+ 16777215
+ true
+ 1
+ model
+ 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.8
+ 1.5
+ true
+ 0
+
+
+
+
+
+ -1.7999999999999985
+ -0.7999999999999988
+ true
+ 1
+
+
+
+ -2.5
+ 2.5
+ true
+ 1
+
+
+
+ -2.5
+ 2.5
+ true
+ 1
+
+
+
+
+
+
+
+ 3355111
+ 1
+ 3355111
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ Step\output
+
+
+
+ 6076255
+ 1
+ 6076255
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ Integrate2\output
+ -1.0
+
+
+
+ 12553035
+ 1
+ 12553035
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ motor_joint2\SignalLimiter2\output
+
+
+
+
+ true
+
+ 0.9365808823529411
+ 0.0811764705882353
+
+ 0
+ 16777215
+
+
+
+ GraphPlot
+
+ 5
+ false
+ 16777215
+ true
+
+
+ true
+ 15780518
+ 12624260
+ 0
+ 10
+ 10
+ 10
+ false
+
+ 16777215
+ true
+ 1
+ model
+ 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
+ 6.088762158038446
+ true
+ 3
+
+
+
+
+
+ -500.0
+ 500.0
+ true
+ 1
+
+
+
+ -3.79912966828766
+ 0.0
+ true
+ 1
+
+
+
+ -3.79912966828766
+ 0.0
+ true
+ 1
+
+
+
+ -3.79912966828766
+ 0.0
+ true
+ 1
+
+
+
+ -3.79912966828766
+ 0.0
+ true
+ 1
+
+
+
+ -3.79912966828766
+ 0.0
+ true
+ 1
+
+
+
+
+
+
+
+ 3355111
+ 1
+ 3355111
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_control\Acceleration_int\output
+
+
+
+ 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_control1\Acceleration_int\output
+
+
+
+ 15790150
+ 1
+ 15790150
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_control1\Acceleration_int\input
+
+
+
+ 1696255
+ 1
+ 1696255
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_control1\Velocity_int\output
+
+
+
+
+ true
+ 0
+ 16777215
+
+
+
+
+
+ 1
+ true
+ Window 1
+ 0
+
+ 2
+ 4
+
+ Base
+
+
+ 2
+ true
+ Window 2
+ 0
+
+ 1
+
+ Base
+
+
+ 3
+ true
+ Window 3
+ 2
+
+ 5
+
+ StripChart
+
+
+
+
+0.0703125 0.0435185 0.872917 0.814815
+
+
+0.130729 0.0842593 0.846354 0.864815
+
+
+0.05625 0.175926 0.806771 0.9
+
+
+
+
+
+ 0.0
+ 15.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
+ 0.01
+ 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-5
+ 1.0e-5
+ 1.0e-5
+ 1.0e-5
+ false
+ 0.0
+ false
+ 0.0
+
+ 8
+
+
+
+ 10
+ false
+ true
+ true
+ false
+ true
+ 0
+ 0.0
+ true
+ MultipleRun
+ true
+
+ UseEndValue
+ 0.001
+ BroydonFletcherGoldfarbShanno
+
+
+
+
+ true
+ true
+ true
+ true
+
+
+ false
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
diff --git a/implementation/SCARA/05_stepper/stepper_103H5208_controller.emx b/implementation/SCARA/05_stepper/stepper_103H5208_controller.emx
new file mode 100644
index 0000000..69af79e
--- /dev/null
+++ b/implementation/SCARA/05_stepper/stepper_103H5208_controller.emx
@@ -0,0 +1,2038 @@
+
+
+
+
+
+ 4.8
+0
+ False
+ C:\users\wouter\My Documents\studie\ma\mahd\implementation\SCARA\05_stepper\stepper_103H5208_controller.emx
+ 2020-7-22 15:25:39
+
+';
+ type Mainmodel
+ end;
+ implementation bg
+ submodels
+ C 976 392
+ 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' 976 392 color 0 18 bold;
+ end;
+ implementation eq
+parameters
+ real c = 0.00001;
+equations
+ state = int(p.f);
+ p.e = state / c;
+implementation_end;
+ I2 1024 272
+ 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' 1024 272 color 0 18 bold;
+ end;
+ implementation eq
+parameters
+ real i = 8e-5 {kg.m2};
+equations
+ state = int(p.e);
+ p.f = state / i;
+implementation_end;
+ OneJunction 1024 336
+ 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' 1024 336 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ OneJunction1 936 392
+ 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' 936 392 color 0 18 bold;
+ end;
+ implementation eq
+equations
+ sum (direct (p.e)) = 0;
+ equal (collect (p.f));
+ flow = first (p.f);
+implementation_end;
+ R 896 392
+ 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' 896 392 color 0 18 bold;
+ end;
+ implementation eq
+parameters
+ real r = 100;
+equations
+ p.e = r * p.f;
+implementation_end;
+ Square 432 336
+ 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 416.1 320 447.9 352 color 0 fill 15132390;
+ line 420.1 323.9 419.9 350.2 color 0 fill 0;
+ line 417.9 348.1 443.9 348.1 color 0 fill 0;
+ line 420.1 348.1 424 348.1 424 336 color 16711680 fill 0;
+ line 432 336 424 336 432 336 color 16711680 fill 0;
+ line 432 348.1 432 336 432 348.1 color 16711680 fill 0;
+ line 440 336 440 348.1 440 336 color 16711680 fill 0;
+ line 443.9 336.1 439.7 336.1 color 16711680 fill 0;
+ line 432 348.1 440 348.1 color 16711680 fill 0;
+ end;
+ implementation eq
+parameters
+ real amplitude = 50; // amplitude of the wave
+ real omega = 2 {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;
+ stepper_control 584 336
+ description '
+
+ 4.8
+1
+ Motor\stepper_control.emx
+ 2020-7-22 15:25:26
+
+';
+ type Submodel
+ ports
+ signal in setpoint {rad} ;
+ signal out output {rad} ;
+ 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 initial = 0; // initial value
+equations
+ output = int (input, initial);
+ 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 maximum = 200;
+ real minimum = -200;
+equations
+ output = limit (input, minimum, maximum);
+ 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
+ real maximum = 25;
+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
+ real maximum = 100;
+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 initial = 0; // initial value
+equations
+ output = int (input, initial);
+ 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 maximum = 25;
+ real minimum = -25;
+equations
+ output = limit (input, minimum, maximum);
+ 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;
+ stepper_model 768 336
+ description '
+
+ 4.8
+1
+ Motor\stepper_model.emx
+ 2020-7-22 15:25:37
+
+
+ parameters
+ 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 i = 8e-5 {kg.m2};
+ 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};
+ real global angle_step;
+ real max_a {m/s2};
+variables
+ real current_angle;
+ real c,s;
+ 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);
+ current_angle = angle;
+
+
+
+ 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 936 336
+ 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' 936 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
+ C\p <= OneJunction1\p;
+ OneJunction\p => I2\p;
+ OneJunction1\p => R\p;
+ OneJunction1\p => ZeroJunction1\p;
+ Square\output -> stepper_control\setpoint;
+ stepper_control\output -> stepper_model\angle;
+ stepper_model\p => ZeroJunction1\p;
+ ZeroJunction1\p => OneJunction\p;
+ end;
+ implementation_end;
+]]>
+
+
+
+
+
+
+ Experiment 1
+
+
+
+ 4.8
+
+
+
+
+
+
+
+ stepper_model\phase_control\max_a
+ m/s2
+ 0
+
+
+
+
+ C\state_initial
+ 0
+
+
+ I2\state_initial
+ 0
+
+
+ stepper_control\Position_control\state_initial
+ 0
+
+
+ stepper_control\Velocity_control\state_initial
+ 0
+
+
+ stepper_model\I1\state_initial
+ 0
+
+
+ stepper_model\I2\state_initial
+ 0
+
+
+ stepper_model\I\state_initial
+ 0
+
+
+ stepper_model\RotorAngle\angle_initial
+ rad
+ 0
+
+
+
+
+
+ time
+ stepper_model\I2\p.e
+ stepper_model\I2\p.f
+ stepper_model\RotorAngle\angle
+ stepper_model\MSe_a\effort
+ stepper_model\MSe_b\effort
+ stepper_model\Submodel2\a
+ stepper_model\Submodel2\b
+ stepper_control\Integrate\input
+ stepper_control\Integrate\output
+ stepper_control\Integrate1\output
+ Square\output
+ stepper_control\PD\error
+ stepper_control\PD1\error
+
+
+
+ GraphPlot
+
+ 1
+ false
+ 16777215
+ true
+
+
+ true
+ 15780518
+ 12624260
+ 0
+ 10
+ 10
+ 10
+ false
+
+ 16777215
+ true
+ 1
+ model
+ 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
+ false
+ false
+
+
+ 0.0
+ 2.0
+ true
+ 3
+
+
+
+
+
+ -0.025
+ 0.025
+ true
+ 2
+
+
+
+ -25.0
+ 25.0
+ true
+ 2
+
+
+
+
+
+
+
+ 3355111
+ 1
+ 3355111
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_model\I2\p.e
+
+
+
+ 6076255
+ 1
+ 6076255
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_model\I2\p.f
+
+
+
+
+ true
+ 0
+ 16777215
+
+
+
+ GraphPlot
+
+ 2
+ false
+ 16777215
+ true
+
+
+ true
+ 15780518
+ 12624260
+ 0
+ 10
+ 10
+ 10
+ false
+
+ 16777215
+ true
+ 1
+ model(2)
+ 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
+ 2.0
+ true
+ 3
+
+
+
+
+
+ -30.0
+ 70.0
+ true
+ 2
+
+
+
+ -1.5
+ 3.5
+ true
+ 2
+
+
+
+
+
+
+
+ 3355111
+ 1
+ 3355111
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_model\RotorAngle\angle
+
+
+
+ 6076255
+ 1
+ 6076255
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ Square\output
+
+
+
+
+ true
+ 0
+ 16777215
+
+
+
+ GraphPlot
+
+ 3
+ false
+ 16777215
+ true
+
+
+ true
+ 15780518
+ 12624260
+ 0
+ 10
+ 10
+ 10
+ false
+
+ 16777215
+ true
+ 1
+ model(1)
+ 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
+ 2.0
+ true
+ 3
+
+
+
+
+
+ -250.0
+ 250.0
+ true
+ 1
+
+
+
+ -400.0
+ 600.0
+ true
+ 1
+
+
+
+ -400.0
+ 600.0
+ true
+ 1
+
+
+
+ -400.0
+ 600.0
+ true
+ 1
+
+
+
+ -400.0
+ 600.0
+ true
+ 1
+
+
+
+
+
+
+
+ 3355111
+ 1
+ 3355111
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_control\Integrate\input
+
+
+
+ 6076255
+ 1
+ 6076255
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_control\Integrate\output
+
+
+
+ 12553035
+ 1
+ 12553035
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_control\Integrate1\output
+
+
+
+ 15086320
+ 1
+ 15086320
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_control\PD\error
+
+
+
+ 15790150
+ 1
+ 15790150
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_control\PD1\error
+
+
+
+
+ true
+ 0
+ 16777215
+
+
+
+ GraphPlot
+
+ 4
+ false
+ 16777215
+ true
+
+
+ true
+ 15780518
+ 12624260
+ 0
+ 10
+ 10
+ 10
+ false
+
+ 16777215
+ true
+ 1
+ Window 2
+ 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
+ 2.0
+ true
+ 3
+
+
+
+
+
+ -5.0
+ 5.0
+ true
+ 2
+
+
+
+ -5.0
+ 5.0
+ true
+ 2
+
+
+
+ -5.0
+ 5.0
+ true
+ 2
+
+
+
+ -5.0
+ 5.0
+ true
+ 2
+
+
+
+
+
+
+
+ 3355111
+ 1
+ 3355111
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_model\Submodel2\a
+
+
+
+ 6076255
+ 1
+ 6076255
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_model\MSe_a\effort
+
+
+
+ 12553035
+ 1
+ 12553035
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_model\MSe_b\effort
+
+
+
+ 15086320
+ 1
+ 15086320
+ 0
+ true
+ 1
+ 1
+ 1
+ true
+
+ true
+ time
+
+
+ true
+ stepper_model\Submodel2\b
+
+
+
+
+ true
+ 0
+ 16777215
+
+
+
+
+
+ 1
+ true
+ Window 1
+ 0
+
+ 1
+ 2
+ 3
+
+ Base
+
+
+ 2
+ false
+ Window 2
+ 2
+
+ 4
+
+ Base
+
+
+
+
+0.0260417 0.025 0.908854 0.872222
+
+
+0.172917 0.158333 0.841667 0.919444
+
+
+
+
+
+ 0.0
+ 2.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
+ 0.01
+ false
+
+
+ RungeKutta2
+ 0.01
+ false
+
+
+ RungeKutta4
+ 1.0e-4
+ 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
+ false
+ true
+
+
+ BDFMethod
+ 1.0e-5
+ 1.0e-5
+ 1.0e-5
+ 1.0e-5
+ false
+ 0.0
+ false
+ 0.0
+
+
+ MeBDFiMethod
+ 1.0e-5
+ 1.0e-5
+ 1.0e-5
+ 1.0e-5
+ false
+ 0.0
+ false
+ 0.0
+
+ 8
+
+
+
+ 20
+ false
+ false
+ true
+ false
+ false
+ 1
+ 0.0
+ false
+ Optimization
+ true
+ Submodel3\RotorAngle\angle
+ Square\output
+ UseIntegralAbsolute
+ 0.001
+ BroydonFletcherGoldfarbShanno
+
+
+ stepper_control\PD1\kp
+ 1.0
+ 50.0
+ Linear
+ Uniform
+ 15.0
+ 3.75
+ 1.0
+ 10.0
+
+
+ stepper_control\PD1\tauD
+ 1.0
+ 50.0
+ Linear
+ Uniform
+ 6.0
+ 1.5
+ 1.0
+ 10.0
+
+
+
+
+ true
+ true
+ true
+ true
+
+
+ false
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+