4.8 0 False C:\users\wouter\My Documents\studie\ma\mahd\implementation\SCARA\05_stepper\stepper.emx 2020-7-23 10:09:09 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 528 216 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' 528 216 color 0 18 bold; end; implementation eq parameters real c = 0.0001; equations state = int(p.f); p.e = state / c; implementation_end; C1 712 232 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' 712 232 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 376 256 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' 376 256 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 376 208 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' 376 208 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 712 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 top figures text 'C' 712 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 104 216 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' 104 216 color 0 18 bold; end; implementation eq parameters real c = 0.0001; equations state = int(p.f); p.e = state / c; implementation_end; COM 448 192 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 416 176 480 208 color 0 fill 139; text 'COM' 448 192 color 0 'Clear Sans' 16; terminals Hin 464 176 fixed; p 432 176 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 792 184 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 760 168 824 200 color 0 fill 139; text 'COM' 792 184 color 0 'Clear Sans' 16; terminals Hin 808 168 fixed; p 776 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 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 976 168 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 944 152 1008 184 color 0 fill 139; text 'COM' 976 168 color 0 'Clear Sans' 16; terminals Hin 992 152 fixed; p 960 152 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; Ground 144 104 description ' 4.8 1 Bond Graph\MR\Ground.emx 2020-7-23 09:30:51 '; type Submodel ports power in p [6,1]; signal out output [4,4]; end; icon bg bottom figures line 108 96.5 124 112.5 color 0 fill 15132390; line 116 96.5 132 112.5 color 0 fill 15132390; line 100 96.5 116 112.5 color 0 fill 15132390; line 140 112.5 124 96.5 color 0 fill 15132390; line 148 112.5 132 96.5 color 0 fill 15132390; line 156 112.5 140 96.5 color 0 fill 15132390; line 172 112.5 156 96.5 color 0 fill 15132390; line 164 112.5 148 96.5 color 0 fill 15132390; line 180 112.5 164 96.5 color 0 fill 15132390; line 188 112.5 172 96.5 color 0 fill 15132390; line 100 96.5 188 96.5 color 0 fill 15132390 width 2; line 180 96.5 188 104.5 color 0 fill 15132390; line 100 104.5 108 112.5 color 0 fill 15132390; terminals p 124 96.5 fixed; output 156 96.5 fixed; end; implementation bg submodels plug p 240 88; plug output 240 120; OneJunction2 192 88 description ' 4.2 1 False Bond Graph\OneJunction.emx 2011-11-29 16:17:51 '; knot OneJunction ports power knot duplicatable none p [6,1]; signal knot out flow [6,1]; restrictions causality constraint one_out p; end; icon bg figures text '1' 192 88 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; Sf2 136 88 description '4.01False Bond Graph\2D\Sf-2.emx 2007-9-25 12:7:5 '; type 'Sf-2' ports power out p [6,1]; restrictions causality fixed in p; end; icon bg bottom figures text 'Sf' 136 88 color 0 18 bold; end; implementation eq parameters real flow[6,1] = 0; variables real effort [6]; equations p.f = flow; effort = p.e; implementation_end; Zero 144 120 description '4.01False Signal\Sources\Zero.emx 2007-9-27 15:54:36 '; type Zero ports signal out output [4,4]; end; icon bg bottom figures rectangle 128.1 104 159.9 136 color 0 fill 15132390; text '0' 144 120 color 16711680 18 bold; end; implementation eq equations output = eye(4);implementation_end; end; connections p => OneJunction2\p; Sf2\p => OneJunction2\p; Zero\output -> output; end; implementation_end; inverse_kinematics1 344 536 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 264 104 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 240 72 288 136 color 0 fill 14745599; text 'Joint' 264 104 color 0 'Clear Sans' 16; terminals Pin 288 88 fixed; Hin 240 120 fixed; Hout 288 120 fixed; Pout 240 88 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 608 104 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 584 72 632 136 color 0 fill 14745599; text 'Joint' 608 104 color 0 'Clear Sans' 16; terminals Pin 632 88 fixed; Hin 584 120 fixed; Hout 632 120 fixed; Pout 584 88 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 360 104 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 328 80 392 128 color 0 fill 8454041; text 'Link' 360 104 color 0 'Clear Sans' 16; terminals Hin 328 120 fixed; Hout 392 120 fixed; Pin 392 88 fixed; Pout 328 88 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 528 104 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 496 80 560 128 color 0 fill 8454041; text 'Link' 528 104 color 0 'Clear Sans' 16; terminals Hin 496 120 fixed; Hout 560 120 fixed; Pin 560 88 fixed; Pout 496 88 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 696 104 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 664 80 728 128 color 0 fill 8454041; text 'Link' 696 104 color 0 'Clear Sans' 16; terminals Hin 664 120 fixed; Hout 728 120 fixed; Pin 728 88 fixed; Pout 664 88 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 872 104 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 840 80 904 128 color 0 fill 8454041; text 'Link' 872 104 color 0 'Clear Sans' 16; terminals Hin 840 120 fixed; Hout 904 120 fixed; Pin 904 88 fixed; Pout 840 88 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 344 456 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 328 440 360 472 color 0 fill 15132390; text '-1' 344 456 color 16711680 16 bold; end; implementation eq equations output = - input; implementation_end; Negate2 592 536 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 576 520 608 552 color 0 fill 15132390; text '-1' 592 536 color 16711680 16 bold; end; implementation eq equations output = - input; implementation_end; new_joint1 448 264 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 792 240 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 1088 168 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 432 88 description ' 4.2 1 False Bond Graph\OneJunction.emx 2011-11-29 16:17:51 '; knot OneJunction ports power knot duplicatable none p [6,1]; signal knot out flow [6,1]; restrictions causality constraint one_out p; end; icon bg figures text '1' 432 88 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; OneJunction11 592 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' 592 336 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; OneJunction12 960 88 description ' 4.2 1 False Bond Graph\OneJunction.emx 2011-11-29 16:17:51 '; knot OneJunction ports power knot duplicatable none p [6,1]; signal knot out flow [6,1]; restrictions causality constraint one_out p; end; icon bg figures text '1' 960 88 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; OneJunction14 184 328 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' 184 328 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; OneJunction17 528 264 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' 528 264 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; OneJunction3 776 88 description ' 4.2 1 False Bond Graph\OneJunction.emx 2011-11-29 16:17:51 '; knot OneJunction ports power knot duplicatable none p [6,1]; signal knot out flow [6,1]; restrictions causality constraint one_out p; end; icon bg figures text '1' 776 88 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; OneJunction4 664 216 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' 664 216 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; OneJunction5 329 224 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' 329 224 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; OneJunction6 329 240 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' 329 240 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; OneJunction7 664 232 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' 664 232 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; OneJunction8 104 264 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' 104 264 color 0 18 bold; end; implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; PowerMux 264 198 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 240 200 288 200 color 0 width 2; rectangle 240 192 288 204 color -1; text '1' 258 195 color 8421504 8; terminals input 248 200 fixed; output 264 200 fixed; input_rot2 280 200 fixed; input_pos3 264 200 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 608 190 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 584 192 632 192 color 0 width 2; rectangle 584 184 632 196 color -1; text '1' 602 187 color 8421504 8; terminals input 592 192 fixed; output 608 192 fixed; input_rot2 624 192 fixed; input_pos3 608 192 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 528 312 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' 528 312 color 0 18 bold; end; implementation eq parameters real r = 25; equations p.e = r * p.f; implementation_end; R2 329 168 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' 329 168 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 329 296 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' 329 296 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 664 160 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 top figures text 'R' 664 160 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 664 280 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' 664 280 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 104 312 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' 104 312 color 0 18 bold; end; implementation eq parameters real r = 25; equations p.e = r * p.f; implementation_end; rectanglepath 176 536 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 344 640 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 288 624 400 656 color 0 fill 15132390; text 'name' 344 640 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; Splitter1 464 120 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 460.8 116.8 467.2 123.2 color -1 fill 0; ellipse 459.7 115.7 468.3 124.3 color -1; terminals input 464 120 fixed; end; implementation eq equations collect (output) = input; implementation_end; Splitter2 808 120 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 804.8 116.8 811.2 123.2 color -1 fill 0; ellipse 803.7 115.7 812.3 124.3 color -1; terminals input 808 120 fixed; end; implementation eq equations collect (output) = input; implementation_end; stepper_control 184 456 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 592 456 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 184 376 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 592 376 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; ZeroJunction2 592 264 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' 592 264 color 0 18 bold; end; implementation eq equations sum (direct (p.f)) = 0; equal (collect (p.e)); effort = first (p.e); implementation_end; ZeroJunction3 184 264 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' 184 264 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 992 120; COM2\Hout -> new_joint3\input; COM2\p => OneJunction12\p; Ground\output -> Joint\Hin; inverse_kinematics1\angle1 -> Negate1\input; inverse_kinematics1\angle2 -> Negate2\input; Joint\Hout -> Link\Hin; Joint\Pdiff <= PowerMux\output; Joint\Pin <= Link\Pout; Joint\Pout => Ground\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; 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; 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\I2\state_initial 0 stepper_model1\I\state_initial 0 stepper_model1\RotorAngle\angle_initial rad 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 COM2\InertialTensor\p.e_initial 6 1 0 0 0 0 0 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] 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 Submodel3\dimension[1] Submodel3\dimension[2] Submodel3\dimension[3] Submodel4\dimension[1] Submodel4\dimension[2] Submodel4\dimension[3] Step\output Integrate2\output motor_joint2\SignalLimiter2\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.004779004084536204 new_joint1\position[3] 0.032131984037075616 new_joint1\R[1,3] 0.0 new_joint1\R[2,3] -0.9891507613546217 new_joint1\R[3,3] 0.14690395267511475 new_joint1\R[1,2] 0.0 new_joint1\R[2,2] 0.14690395267511475 new_joint1\R[3,2] 0.9891507613546217 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.03341576943552989 new_joint2\position[3] 0.05682777438151479 new_joint2\R[1,3] 0.0 new_joint2\R[2,3] 0.29812485436275077 new_joint2\R[3,3] 0.9545268834407906 new_joint2\R[1,2] 0.0 new_joint2\R[2,2] 0.9545268834407906 new_joint2\R[3,2] -0.29812485436275077 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.020000000000000004 0.07999999999999999 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 0.13434062268478064 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.0744792 0.00462963 0.86875 0.755556 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