From cf163539481c392546357b2d0a901d3f91be389b Mon Sep 17 00:00:00 2001 From: Wouter Horlings Date: Fri, 17 Jul 2020 18:42:05 +0200 Subject: [PATCH] fixup! fixup! fixup! fixup! fixup! fixup! Add physics model --- implementation/SCARA/03_motor/MR_dynamics.emx | 9018 +++++++++++++++++ .../SCARA/03_motor/MR_dynamics2.emx | 6251 ++++++++++++ .../SCARA/03_motor/motor_physics.emx | 7272 +++++++++++++ 3 files changed, 22541 insertions(+) create mode 100644 implementation/SCARA/03_motor/MR_dynamics.emx create mode 100644 implementation/SCARA/03_motor/MR_dynamics2.emx create mode 100644 implementation/SCARA/03_motor/motor_physics.emx diff --git a/implementation/SCARA/03_motor/MR_dynamics.emx b/implementation/SCARA/03_motor/MR_dynamics.emx new file mode 100644 index 0000000..7f235a4 --- /dev/null +++ b/implementation/SCARA/03_motor/MR_dynamics.emx @@ -0,0 +1,9018 @@ + + + + + + 4.8 +0 + False + C:\users\wouter\My Documents\studie\ma\mahd\implementation\SCARA\03_motor\MR_dynamics.emx + 2020-7-17 13:58:25 + +'; + type Mainmodel + end; + implementation bg + submodels + Base 392 296 + description ' + + 4.8 +1 + False + True + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link.emx + 2020-7-16 14:21:54 +Base + +'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + parameters + real I[3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6] {N.m.s}; + real m = 0.00455 {kg}; + real COMdim[3,1] = [0.0; 0.0325; 0.0] {m}; + real dim[3,1] = [0.0; 0.065; 0.0] {m}; + end; + icon bg bottom + figures + rectangle 360 224 424 368 color 0 fill 10025880; + text 'Link' 392 296 color 0; + terminals + p 360 256 fixed; + Hin 360 336 fixed; + p1 424 256 fixed; + Hout 424 336 fixed; + end; + implementation bg + submodels + AdHi0 544 416 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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 416 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; + AdHij 864 304 + 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 top + figures + text 'MTF' 864 304 color 0 18 bold; + end; + implementation eq +equations + //Only rotations with respect to the inertial system matter! + + p1.e = transpose(Adjoint(H)) * p2.e; + p2.f = Adjoint(H) * p1.f; +implementation_end; + AdHik 544 248 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1 [6,1]; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + parameters + real COMdim[3,1] = [0.0; 0.0325; 0.0]; + end; + icon bg left + figures + text 'TF' 544 248 color 0 18 bold; + end; + implementation eq +//Frame in joint connected to port 1 +//Principal inertial frame connected in port 2 +variables + real d[3]; //distance between frames + real R[3,3]; //rotation between frames + + real H[4,4]; //homogeneous matrix + real AdH[6,6]; //Adjoint of homogeneous matrix +equations + d = COMdim; //distance of 1 in z direction of frames + R = eye(3); //no rotation + + H = homogeneous(R,d); + AdH = Adjoint(H); + + p1.f = AdH * p2.f; + p2.e = transpose(AdH) * p1.e; +implementation_end; + AdHik1 544 360 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1 [6,1]; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + parameters + real COMdim[3,1] = [0.0; 0.0325; 0.0]; + end; + icon bg left + figures + text 'TF' 544 360 color 0 18 bold; + end; + implementation eq +//Frame in joint connected to port 1 +//Principal inertial frame connected in port 2 +variables + real d[3]; //distance between frames + real R[3,3]; //rotation between frames + + real H[4,4]; //homogeneous matrix + real AdH[6,6]; //Adjoint of homogeneous matrix +equations + d = COMdim; //distance of 1 in z direction of frames + R = eye(3); //no rotation + + H = homogeneous(R,d); + AdH = Adjoint(H); + + p1.f = AdH * p2.f; + p2.e = transpose(AdH) * p1.e; +implementation_end; + EJS 608 184 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + parameters + real I[3,1] = [20.0; 20.0; 20.0]; + real m = 20.0; + end; + icon bg top + figures + text 'MGY' 608 184 color 0 18 bold; + end; + implementation eq +//EJS / Gyroscopic effects +variables + real II[6,6]; //Inertial tensor + real Q[6,6]; + real QI[6,6]; + real v[3]; + real omega[3]; +equations + II = [ I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + v[1:3] = p1.f[4:6]; + omega[1:3] = p1.f[1:3]; + + Q[1:3,1:3] = -skew(omega); + Q[1:3,4:6] = -skew(v); + Q[4:6,1:3] = [0,0,0;0,0,0;0,0,0];//matrix filled with zeros + Q[4:6,4:6] = -skew(omega); + QI = Q*II; + + p1.e = QI*p1.f;implementation_end; + Gravity 656 416 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + parameters + real m = 20.0; + end; + icon bg bottom + figures + text 'Se' 656 416 color 0 18 bold; + end; + implementation eq +variables + real effort[6]; +equations + effort = [0;0;0;0;0;-9.8*m]; + p.e = effort; +implementation_end; + Hij 864 496 + description ' + 4.1 +1 + False + H.emx + 2010-9-21 15:03:50 +True +'; + type Gain + ports + signal in input [4,4]; + signal out output [4,4]; + signal out Hab [4,4]; + parameters + real dim[3,1] = [0.024; 0.0; 0.096]; + end; + icon bg bottom + figures + rectangle 848.1 480 879.9 512 color 0 fill 15132390; + text 'H' 864 496 color 16711680 16 bold; + end; + implementation eq +parameters + real baseoffset[3]=[0.143; 0; 0.046]; //coordinates of joint_1 +equations + Hab = homogeneous(eye(3),dim+baseoffset); + output = input * Hab; + implementation_end; + InertialTensor 480 184 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + parameters + real m = 1.0; + real I[3,1] = [20.0; 20.0; 20.0]; + end; + icon bg top + figures + text 'I' 480 184 color 0 18 bold; + end; + implementation eq +variables + real II[6,6]; //Inertial tensor +equations + II = [I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + + state = int(p.e); //state = generalized momentum + p.f = inverse(II)*state; +implementation_end; + plug Hout 984 496; + plug p1 984 304; + plug Hin 472 496; + plug p 472 304; + 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; + Ta00 600 416 + 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' 600 416 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0j 544 304 + 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 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 544 184 + 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 top + figures + text '1' 544 184 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => AdHik1\p1; + AdHij\p1 => Ta0j\p; + AdHik\p2 => Ta0k\p; + AdHik1\p2 => Ta0j\p; + Gravity\p => Ta00\p; + Hij\Hab -> AdHij\H; + Hij\output -> Hout; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => AdHij\p2; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hij\input; + Ta00\p => AdHi0\p1; + Ta0j\p => AdHik\p1; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + Base1 584 296 + description ' + + 4.8 +1 + False + True + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link.emx + 2020-7-16 14:21:54 +Base + +'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + parameters + real I[3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6] {N.m.s}; + real m = 0.00455 {kg}; + real COMdim[3,1] = [0.0; 0.025; 0.0] {m}; + real dim[3,1] = [0.0; 0.05; 0.0] {m}; + end; + icon bg bottom + figures + rectangle 552 224 616 368 color 0 fill 10025880; + text 'Link' 584 296 color 0; + terminals + p 552 256 fixed; + Hin 552 336 fixed; + p1 616 256 fixed; + Hout 616 336 fixed; + end; + implementation bg + submodels + AdHi0 664 416 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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' 664 416 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; + AdHij 816 304 + 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 top + figures + text 'MTF' 816 304 color 0 18 bold; + end; + implementation eq +equations + //Only rotations with respect to the inertial system matter! + + p1.e = transpose(Adjoint(H)) * p2.e; + p2.f = Adjoint(H) * p1.f; +implementation_end; + AdHik 664 248 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1 [6,1]; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + parameters + real COMdim[3,1] = [0.01489; 0.00213; 0.00213]; + end; + icon bg left + figures + text 'TF' 664 248 color 0 18 bold; + end; + implementation eq +//Frame in joint connected to port 1 +//Principal inertial frame connected in port 2 +variables + real d[3]; //distance between frames + real R[3,3]; //rotation between frames + + real H[4,4]; //homogeneous matrix + real AdH[6,6]; //Adjoint of homogeneous matrix +equations + d = COMdim; //distance of 1 in z direction of frames + R = eye(3); //no rotation + + H = homogeneous(R,d); + AdH = Adjoint(H); + + p1.f = AdH * p2.f; + p2.e = transpose(AdH) * p1.e; +implementation_end; + AdHik1 664 360 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power out p1 [6,1]; + power in p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + parameters + real COMdim[3,1] = [0.01489; 0.00213; 0.00213]; + end; + icon bg left + figures + text 'TF' 664 360 color 0 18 bold; + end; + implementation eq +//Principal inertial frame connected in port 2 +variables + real d[3]; //distance between frames + real R[3,3]; //rotation between frames + + real H[4,4]; //homogeneous matrix + real AdH[6,6]; //Adjoint of homogeneous matrix +equations + d = COMdim; //distance of 1 in z direction of frames + R = eye(3); //no rotation + + H = homogeneous(R,d); + AdH = Adjoint(H); + + p1.f = AdH * p2.f; + p2.e = transpose(AdH) * p1.e; +implementation_end; + EJS 728 184 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + parameters + real I[3,1] = [20.0; 20.0; 20.0]; + real m = 20.0; + end; + icon bg top + figures + text 'MGY' 728 184 color 0 18 bold; + end; + implementation eq +//EJS / Gyroscopic effects +variables + real II[6,6]; //Inertial tensor + real Q[6,6]; + real QI[6,6]; + real v[3]; + real omega[3]; +equations + II = [ I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + v[1:3] = p1.f[4:6]; + omega[1:3] = p1.f[1:3]; + + Q[1:3,1:3] = -skew(omega); + Q[1:3,4:6] = -skew(v); + Q[4:6,1:3] = [0,0,0;0,0,0;0,0,0];//matrix filled with zeros + Q[4:6,4:6] = -skew(omega); + QI = Q*II; + + p1.e = QI*p1.f;implementation_end; + Gravity 776 416 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + parameters + real m = 20.0; + end; + icon bg bottom + figures + text 'Se' 776 416 color 0 18 bold; + end; + implementation eq +variables + real effort[6]; +equations + effort = [0;0;0;0;0;-9.8*m]; + p.e = effort; +implementation_end; + Hij 816 496 + description ' + 4.1 +1 + False + H.emx + 2010-9-21 15:03:50 +True +'; + type Gain + ports + signal in input [4,4]; + signal out output [4,4]; + signal out Hab [4,4]; + parameters + real dim[3,1] = [0.024; 0.0; 0.096]; + end; + icon bg bottom + figures + rectangle 800.1 480 831.9 512 color 0 fill 15132390; + text 'H' 816 496 color 16711680 16 bold; + end; + implementation eq +parameters + real baseoffset[3]=[0.143; 0; 0.046]; //coordinates of joint_1 +equations + Hab = homogeneous(eye(3),dim+baseoffset); + output = input * Hab; + implementation_end; + InertialTensor 600 184 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + parameters + real m = 1.0; + real I[3,1] = [20.0; 20.0; 20.0]; + end; + icon bg top + figures + text 'I' 600 184 color 0 18 bold; + end; + implementation eq +variables + real II[6,6]; //Inertial tensor +equations + II = [I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + + state = int(p.e); //state = generalized momentum + p.f = inverse(II)*state; +implementation_end; + plug Hout 896 496; + plug p1 904 304; + plug Hin 592 496; + plug p 592 304; + Splitter1 664 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 660.8 492.8 667.2 499.2 color -1 fill 0; + ellipse 659.7 491.7 668.3 500.3 color -1; + terminals + input 664 496 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Ta00 720 416 + 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' 720 416 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0j 664 304 + 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' 664 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 664 184 + 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 top + figures + text '1' 664 184 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => AdHik1\p2; + AdHik\p2 => Ta0k\p; + Gravity\p => Ta00\p; + Hij\Hab -> AdHij\H; + Hij\output -> Hout; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => AdHij\p2; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hij\input; + Ta00\p => AdHi0\p1; + Ta0j\p <= AdHij\p1; + Ta0j\p <= AdHik1\p1; + Ta0j\p => AdHik\p1; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + Base2 520 512 + description ' + + 4.8 +1 + False + True + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link.emx + 2020-7-16 14:21:54 +Base + +'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + parameters + real I[3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6] {N.m.s}; + real m = 0.00455 {kg}; + real COMdim[3,1] = [0.0; 0.0325; 0.0] {m}; + real dim[3,1] = [0.0; 0.065; 0.0] {m}; + end; + icon bg bottom + figures + rectangle 488 472 552 552 color 0 fill 255; + text 'COM' 520 496 color 0; + terminals + p 488 488 fixed; + Hin 488 536 fixed; + p1 552 488 fixed; + Hout 552 536 fixed; + end; + implementation bg + submodels + AdHi0 544 400 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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 256 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + parameters + real I[3,1] = [20.0; 20.0; 20.0]; + real m = 20.0; + end; + icon bg top + figures + text 'MGY' 616 256 color 0 18 bold; + end; + implementation eq +//EJS / Gyroscopic effects +variables + real II[6,6]; //Inertial tensor + real Q[6,6]; + real QI[6,6]; + real v[3]; + real omega[3]; +equations + II = [ I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + v[1:3] = p1.f[4:6]; + omega[1:3] = p1.f[1:3]; + + Q[1:3,1:3] = -skew(omega); + Q[1:3,4:6] = -skew(v); + Q[4:6,1:3] = [0,0,0;0,0,0;0,0,0];//matrix filled with zeros + Q[4:6,4:6] = -skew(omega); + QI = Q*II; + + p1.e = QI*p1.f;implementation_end; + Gravity 616 400 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + parameters + real m = 20.0; + end; + icon bg bottom + figures + text 'Se' 616 400 color 0 18 bold; + end; + implementation eq +variables + real effort[6]; +equations + effort = [0;0;0;0;0;-g_n*m]; + p.e = effort; +implementation_end; + InertialTensor 480 256 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + parameters + real m = 1.0; + real I[3,1] = [20.0; 20.0; 20.0]; + end; + icon bg top + figures + text 'I' 480 256 color 0 18 bold; + end; + implementation eq +variables + real II[6,6]; //Inertial tensor +equations + II = [I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + + state = int(p.e); //state = generalized momentum + p.f = inverse(II)*state; +implementation_end; + plug Hin 472 496; + plug p1 752 304; + plug Hout 768 496; + plug p 472 304; + 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 304 + 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 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 544 256 + 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 top + figures + text '1' 544 256 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => Ta0j\p; + Gravity\p => AdHi0\p1; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => Ta0j\p; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hout; + Ta0j\p => Ta0k\p; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + Base3 1024 512 + description ' + + 4.8 +1 + False + True + Bond Graph\MR\center_of_mass.emx + 2020-7-17 13:52:18 +Base + +'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + parameters + real I[3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6] {N.m.s}; + real m = 0.00455 {kg}; + real COMdim[3,1] = [0.0; 0.0325; 0.0] {m}; + real dim[3,1] = [0.0; 0.065; 0.0] {m}; + end; + icon bg bottom + figures + rectangle 992 472 1056 552 color 0 fill 255; + text 'COM' 1024 496 color 0; + terminals + p 992 488 fixed; + Hin 992 536 fixed; + p1 1056 488 fixed; + Hout 1056 536 fixed; + end; + implementation bg + submodels + AdHi0 544 400 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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 256 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + parameters + real I[3,1] = [20.0; 20.0; 20.0]; + real m = 20.0; + end; + icon bg top + figures + text 'MGY' 616 256 color 0 18 bold; + end; + implementation eq +//EJS / Gyroscopic effects +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 616 400 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + parameters + real m = 20.0; + end; + icon bg bottom + figures + text 'Se' 616 400 color 0 18 bold; + end; + implementation eq +variables + real effort[6]; +equations + effort = [0;0;0;0;0;-g_n*m]; + p.e = effort; +implementation_end; + InertialTensor 480 256 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + parameters + real m = 1.0; + real I[3,1] = [20.0; 20.0; 20.0]; + end; + icon bg top + figures + text 'I' 480 256 color 0 18 bold; + end; + implementation eq +variables + real II[6,6]; //Inertial tensor +equations + II = [I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + + state = int(p.e); //state = generalized momentum + p.f = inverse(II)*state; +implementation_end; + plug Hin 472 496; + plug p1 752 304; + plug Hout 768 496; + plug p 472 304; + 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 304 + 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 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 544 256 + 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 top + figures + text '1' 544 256 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => Ta0j\p; + Gravity\p => AdHi0\p1; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => Ta0j\p; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hout; + Ta0j\p => Ta0k\p; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + Base4 1432 512 + description ' + + 4.8 +1 + False + True + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link.emx + 2020-7-16 14:21:54 +Base + +'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + parameters + real I[3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6] {N.m.s}; + real m = 0.00455 {kg}; + real COMdim[3,1] = [0.0; 0.0325; 0.0] {m}; + real dim[3,1] = [0.0; 0.065; 0.0] {m}; + end; + icon bg bottom + figures + rectangle 1400 472 1464 552 color 0 fill 255; + text 'COM' 1432 496 color 0; + terminals + p 1400 488 fixed; + Hin 1400 536 fixed; + p1 1464 488 fixed; + Hout 1464 536 fixed; + end; + implementation bg + submodels + AdHi0 544 400 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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 256 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + parameters + real I[3,1] = [20.0; 20.0; 20.0]; + real m = 20.0; + end; + icon bg top + figures + text 'MGY' 616 256 color 0 18 bold; + end; + implementation eq +//EJS / Gyroscopic effects +variables + real II[6,6]; //Inertial tensor + real Q[6,6]; + real QI[6,6]; + real v[3]; + real omega[3]; +equations + II = [ I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + v[1:3] = p1.f[4:6]; + omega[1:3] = p1.f[1:3]; + + Q[1:3,1:3] = -skew(omega); + Q[1:3,4:6] = -skew(v); + Q[4:6,1:3] = [0,0,0;0,0,0;0,0,0];//matrix filled with zeros + Q[4:6,4:6] = -skew(omega); + QI = Q*II; + + p1.e = QI*p1.f;implementation_end; + Gravity 616 400 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + parameters + real m = 20.0; + end; + icon bg bottom + figures + text 'Se' 616 400 color 0 18 bold; + end; + implementation eq +variables + real effort[6]; +equations + effort = [0;0;0;0;0;-g_n*m]; + p.e = effort; +implementation_end; + InertialTensor 480 256 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + parameters + real m = 1.0; + real I[3,1] = [20.0; 20.0; 20.0]; + end; + icon bg top + figures + text 'I' 480 256 color 0 18 bold; + end; + implementation eq +variables + real II[6,6]; //Inertial tensor +equations + II = [I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + + state = int(p.e); //state = generalized momentum + p.f = inverse(II)*state; +implementation_end; + plug Hin 472 496; + plug p1 752 304; + plug Hout 768 496; + plug p 472 304; + 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 304 + 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 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 544 256 + 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 top + figures + text '1' 544 256 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => Ta0j\p; + Gravity\p => AdHi0\p1; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => Ta0j\p; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hout; + Ta0j\p => Ta0k\p; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + Constant 168 336 + description ' + 4.0 + 1 + False + Signal\Sources\Constant.emx + 2007-10-19 14:48:44 + True +'; + type Constant + ports + signal out output [4,4]; + end; + icon bg bottom + figures + rectangle 152.1 320 183.9 352 color 0 fill 15132390; + line 156.9 331.6 178.9 331.6 color 16711680 width 2; + line 154.2 342.7 179.9 342.7 color 0; + line 156.5 326.7 156.5 345 color 0; + end; + implementation eq +equations + output = eye(4); + implementation_end; + Constant1 296 48 + description '4.01False + Signal\Sources\Constant.emx + 2007-10-19 14:48:44 +'; + type Constant + ports + signal out output; + end; + icon bg bottom + figures + rectangle 280.1 32 311.9 64 color 0 fill 15132390; + line 284.9 43.6 306.9 43.6 color 16711680 width 2; + line 282.2 54.7 307.9 54.7 color 0; + line 284.5 38.7 284.5 57 color 0; + end; + implementation eq +parameters + real C = 1.0; // output value +equations + output = C; + implementation_end; + Joint 1224.1 510 + description ' + + 4.8 +1 + False + True + Bond Graph\MR\joint-v2.emx + 2020-7-17 13:36:30 + +'; + type 'Submodel-rotz' + ports + power out p [6,1]; + power in p1; + power in p2 [6,1]; + signal in Hin [4,4]; + signal out Hout [4,4]; + parameters + real Rendstop = 1000.0; + real Cendstop = 1.0e-4; + real InitialPos = -2.9496; + real MinEndstopPos = -2.95; + real MaxEndstopPos = 2.95; + real Rconstraint = 1000.0; + real Cconstraint = 1.0e-4; + real Rjoint = 0.1; + end; + icon bg bottom + figures + rectangle 1192.2 472 1256 548 color 0 fill 14745599; + text 'Joint' 1224 504 color 0; + terminals + p 1192 488 fixed; + p1 1224 472 fixed; + p2 1256 488 fixed; + Hin 1192 536 fixed; + Hout 1256 536 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; + EndstopMax 352 216 + description ' + 4.1 +1 + False + True + EndstopMax.emx + 2011-1-18 16:54:54 +'; + type Submodel + ports + power out p2; + signal boolean out collision; + parameters + real Rendstop = 1000.0; + real Cendstop = 1.0e-4; + real InitialPos = -2.9496; + real EndstopPos = 2.95; + end; + icon bg bottom + figures + rectangle 303 193 401 239 color 0 fill 14013909; + text 'EndstopMax' 353 215 color 0 16; + end; + implementation bg + submodels + Cendstop 704 144 + description ' + 4.0 + 1 + False + Bond Graph\C.emx + 2007-10-31 10:43:59 + True +'; + type C + ports + power in p; + signal out state; + restrictions + causality preferred out p; + parameters + real Cendstop = 1.0e-4; + end; + icon bg right + figures + text 'C' 704 144 color 0 18 bold; + end; + implementation eq +equations + state = int(p.f); + p.e = state / Cendstop; +implementation_end; + Collision 704 216 + description ' + No Version Info + 0 + False + True +'; + type X0e + ports + power in p1; + power out p2; + power out p12; + signal boolean out Collision; + restrictions + causality fixed out p2; + causality fixed out p1; + causality fixed in p12; + parameters + real InitialPos = -2.9496; + real EndstopPos = 2.95; + end; + icon bg + figures + text 'X0e' 704 216 color 0 18 bold; + end; + implementation bg + submodels + Condition1 224.9 231.5 + type Condition + ports + signal in dx; + signal boolean out contact; + end; + icon bg + figures + rectangle 197.2 215 252.6 248 color 0 fill 15132390; + text 'Condition' 224 231.5 color 0; + terminals + dx 224 248 fixed; + contact 224 215 fixed; + end; + implementation eq +parameters + real global epsilon; +variables + boolean bounce; +equations + contact = if dx - epsilon < 0 then true else false end; + bounce = event (dx - epsilon);implementation_end; + plug p1 96 176; + plug p2 352 176; + plug p12 224 64; + plug Collision 408 192; + Splitter1 224 200 + description '4.0 + C:\Program Files\20-sim 4.0\System\SplitterBoolean.emx + 2007-10-31 11:27:48 +1 + False +'; + knot Splitter + ports + signal knot boolean duplicatable out output [1]; + signal knot boolean in input [1]; + end; + icon bg ellipse + figures + ellipse 220.8 196.8 227.2 203.2 color -1 fill 0; + ellipse 219.7 195.7 228.3 204.3 color -1; + terminals + input 224 200 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + v1 160 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 160 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v12 224 120 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg right + figures + text '1' 224 120 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v2 296 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 296 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + X0 224 176 + description ' + 0 + False +'; + type X0 + ports + mechanical in p1; + mechanical out p2; + mechanical out p12; + signal boolean in condition; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + end; + icon bg + figures + text 'X0' 224 176 color 8388608 18 bold; + end; + implementation eq +equations + p1.e = if condition then p12.e else 0 end; + p2.e = p1.e; + p12.f = if condition then p1.f-p2.f else 0 end; + implementation_end; + x1 160 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = 2.95; + end; + icon bg left + figures + rectangle 145 289 175 319 color 0 fill 15132390; + text 'ò' 157.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + x12 224 304 + description ' + 0 + False +'; + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse bottom + figures + ellipse 216.5 296.5 231.5 311.5 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + x2 296 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -2.9496; + end; + icon bg right + figures + rectangle 281 289 311 319 color 0 fill 15132390; + text 'ò' 293.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + end; + connections + Condition1\contact -> Splitter1\input; + p1 => v1\p; + Splitter1\output -> Collision; + Splitter1\output -> X0\condition; + v1\flow -> x1\input; + v1\p => X0\p1; + v12\p => p12; + v2\flow -> x2\input; + v2\p => p2; + X0\p12 => v12\p; + X0\p2 => v2\p; + x1\output -> x12\plus; + x12\output -> Condition1\dx; + x2\output -> x12\minus; + end; + parameterrelations +x1\Initial = EndstopPos; +x2\Initial = InitialPos;parameterrelations_end; + implementation_end; + plug p2 648 216; + plug collision 800 216; + OneJunction5 704 176 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 704 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Rendstop 736 176 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rendstop = 1000.0; + end; + icon bg bottom + figures + text 'R' 736 176 color 0 18 bold; + end; + implementation eq +equations + p.e = Rendstop * p.f; +implementation_end; + Sf1 704 264 + description '4.01False + Bond Graph\Sf.emx + 2007-9-25 12:3:35 +'; + type Sf + ports + power out p; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 704 264 color 0 18 bold; + end; + implementation eq +parameters + real flow = 0.0; +variables + real effort; +equations + p.f = flow; + effort = p.e; +implementation_end; + end; + connections + Collision\Collision -> collision; + Collision\p12 => OneJunction5\p; + Collision\p2 => p2; + OneJunction5\p => Cendstop\p; + OneJunction5\p => Rendstop\p; + Sf1\p => Collision\p1; + end; + parameterrelations +Collision\InitialPos = InitialPos; +Collision\EndstopPos = EndstopPos; +Rendstop\Rendstop = Rendstop; +Cendstop\Cendstop = Cendstop;parameterrelations_end; + implementation_end; + EndstopMin 352 136 + description ' + 4.1 +1 + False + True + EndstopMin.emx + 2011-1-18 16:54:44 +'; + type Submodel + ports + power out p2; + signal boolean out collision; + parameters + real Cendstop = 1.0e-4; + real Rendstop = 1000.0; + real InitialPos = -2.9496; + real EndstopPos = -2.95; + end; + icon bg bottom + figures + rectangle 303 113 401 159 color 0 fill 14013909; + text 'EndstopMin' 353 135 color 0 16; + end; + implementation bg + submodels + Cendstop 248 208 + description ' + 4.0 + 1 + False + Bond Graph\C.emx + 2007-10-31 10:43:59 + True +'; + type C + ports + power in p; + signal out state; + restrictions + causality preferred out p; + parameters + real Cendstop = 1.0e-4; + end; + icon bg right + figures + text 'C' 248 208 color 0 18 bold; + end; + implementation eq +equations + state = int(p.f); + p.e = state / Cendstop; +implementation_end; + Collision 248 120 + description ' + No Version Info + 0 + False + True +'; + type X0e + ports + power in p1; + power out p2; + power out p12; + signal boolean out collision; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + parameters + real InitialPos = -2.9496; + real EndstopLocation = -2.95; + end; + icon bg + figures + text 'X0e' 248 120 color 0 18 bold; + end; + implementation bg + submodels + Condition1 224.9 231.5 + type Condition + ports + signal in dx; + signal boolean out contact; + end; + icon bg + figures + rectangle 197.2 215 252.6 248 color 0 fill 15132390; + text 'Condition' 224 231.5 color 0; + terminals + dx 224 248 fixed; + contact 224 215 fixed; + end; + implementation eq +parameters + real global epsilon; +variables + boolean bounce; +equations + contact = if dx - epsilon > 0 then true else false end; + bounce = event (dx - epsilon);implementation_end; + plug p1 96 176; + plug p2 352 176; + plug p12 224 64; + plug collision 400 200; + Splitter1 224 200 + description '4.0 + C:\Program Files\20-sim 4.0\System\SplitterBoolean.emx + 2007-10-31 11:27:48 +1 + False +'; + knot Splitter + ports + signal knot boolean duplicatable out output [1]; + signal knot boolean in input [1]; + end; + icon bg ellipse + figures + ellipse 220.8 196.8 227.2 203.2 color -1 fill 0; + ellipse 219.7 195.7 228.3 204.3 color -1; + terminals + input 224 200 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + v1 160 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 160 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v12 224 120 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg right + figures + text '1' 224 120 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v2 296 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 296 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + X0 224 176 + description ' + 0 + False +'; + type X0 + ports + power in p1; + power out p2; + power out p12; + signal boolean in condition; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + end; + icon bg + figures + text 'X0' 224 176 color 8388608 18 bold; + end; + implementation eq +equations + p1.e = if condition then p12.e else 0 end; + p2.e = p1.e; + p12.f = if condition then p1.f-p2.f else 0 end; + implementation_end; + x1 160 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -2.95; + end; + icon bg left + figures + rectangle 145 289 175 319 color 0 fill 15132390; + text 'ò' 157.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + x12 224 304 + description ' + 0 + False +'; + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse bottom + figures + ellipse 216.5 296.5 231.5 311.5 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + x2 296 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -2.9496; + end; + icon bg right + figures + rectangle 281 289 311 319 color 0 fill 15132390; + text 'ò' 293.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + end; + connections + Condition1\contact -> Splitter1\input; + p1 => v1\p; + Splitter1\output -> collision; + Splitter1\output -> X0\condition; + v1\flow -> x1\input; + v1\p => X0\p1; + v12\p => p12; + v2\flow -> x2\input; + v2\p => p2; + X0\p12 => v12\p; + X0\p2 => v2\p; + x1\output -> x12\plus; + x12\output -> Condition1\dx; + x2\output -> x12\minus; + end; + parameterrelations +x1\Initial = EndstopLocation; +x2\Initial = InitialPos;parameterrelations_end; + implementation_end; + plug p2 152 120; + plug collision 360 120; + OneJunction 248 160 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 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; + Rendstop 288 160 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rendstop = 1000.0; + end; + icon bg bottom + figures + text 'R' 288 160 color 0 18 bold; + end; + implementation eq +equations + p.e = Rendstop * p.f; +implementation_end; + Sf2 248 64 + description '4.01False + Bond Graph\Sf.emx + 2007-9-25 12:3:35 +'; + type Sf + ports + power out p; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 248 64 color 0 18 bold; + end; + implementation eq +parameters + real flow = 0.0; +variables + real effort; +equations + p.f = flow; + effort = p.e; +implementation_end; + end; + connections + Collision\collision -> collision; + Collision\p12 => OneJunction\p; + Collision\p2 => p2; + OneJunction\p => Cendstop\p; + OneJunction\p => Rendstop\p; + Sf2\p => Collision\p1; + end; + parameterrelations +Cendstop\Cendstop = Cendstop; +Rendstop\Rendstop = Rendstop; +Collision\InitialPos = InitialPos; +Collision\EndstopLocation = EndstopPos;parameterrelations_end; + implementation_end; + JointType 240 312 + description '4.81FalseTrueparameters + real joint = 2;'; + type Submodel + ports + mechanical in p1; + signal out output [4,4]; + power out p2 [6,1]; + end; + implementation bg + submodels + Integrate 320 272 + description ' + 4.0 + 1 + False + Signal\Block Diagram\Integrate.emx + 2007-9-26 12:3:23 + True +'; + type Integrate + ports + signal in input; + signal out output [4,4]; + parameters + real init = -2.9496; + end; + icon bg + figures + rectangle 304 256 336 288 color 0 fill 15132390; + text 'ò' 320 269.3 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +parameters + real global joint; +variables + real R[3,3]; + real p[3]; + real q; + real qa[6]; + real temp [4,4]; +initialequations + qa = 0; +equations +q = -int(input,init); +qa[joint] = q; +R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',qa); +output = homogeneous(R,qa[4:6]);implementation_end; + plug p1 240 188; + plug output 320 368; + plug p2 240 412; + OneJunction2 240 272 + description ' + + 4.2 +1 + False + Bond Graph\FlowSensor.emx + 2011-11-29 15:50:53 + +'; + knot FlowSensor + ports + mechanical knot in p1 [1]; + power knot out p2 [1]; + signal knot out flow [1]; + restrictions + causality constraint not_equal p1 p2; + end; + icon bg ellipse + figures + ellipse 233.1 264.8 246.9 279.1 color 0 fill 16777215; + text 'f' 240 271.2 color 0; + end; + implementation eq +equations + p2.f = p1.f; + p1.e = p2.e; + flow = p1.f; +implementation_end; + uTbai 240 328 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + causality fixed in p1; + causality fixed out p2; + parameters + real Cconstraint = 1.0e-4; + real Rconstraint = 1000.0; + end; + icon bg left + figures + text 'TF' 240 328 color 0 18 bold; + end; + implementation eq +parameters + real global joint; +variables + real i; + real state[6]; +equations + /*p2.e[1] = (Rconstraint*-p2.f[1] + int(-p2.f[1])/Cconstraint); + p2.e[2] = (Rconstraint*-p2.f[2] + int(-p2.f[2])/Cconstraint); + p2.e[3] = p1.e; + p2.e[4] = (Rconstraint*-p2.f[4] + int(-p2.f[4])/Cconstraint); + p2.e[5] = (Rconstraint*-p2.f[5] + int(-p2.f[5])/Cconstraint); + p2.e[6] = (Rconstraint*-p2.f[6] + int(-p2.f[6])/Cconstraint); + + p1.f = p2.f[3];*/ + state = int(p2.f); + for i = 1 to 6 do + if i == joint then + p1.f = p2.f[i]; + p2.e[i] = p1.e; + else + p2.e[i] = (Rconstraint*-p2.f[i] + -state[i]/Cconstraint); + end; + end; +implementation_end; + end; + connections + Integrate\output -> output; + OneJunction2\flow -> Integrate\input; + OneJunction2\p2 => uTbai\p1; + p1 => OneJunction2\p1; + uTbai\p2 => p2; + end; + implementation_end; + MultiplyDivide1 320 576 + description '4.01False + Signal\Block Diagram\MultiplyDivide.emx + 2007-9-27 10:14:59 +'; + knot MultiplyDivide + ports + signal knot duplicatable in multiply [4,4]; + signal knot duplicatable in divide [4,4]; + signal knot out output [4,4]; + end; + icon bg ellipse + figures + ellipse 312 568 328 584 color 0 fill 16777215; + end; + implementation eq +equations + output = mul (collect (multiply)) ./ mul (collect (divide)); + implementation_end; + plug Hout 504 576; + plug Hin 112 576; + plug p2 496 424; + plug p 112 424; + plug p1 240 40; + OneJunction 240 176 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 240 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Or 456 176 + description ' + 4.0 + 1 + False + Signal\Logical\Discrete\Or.emx + 2007-12-18 23:20:57 +'; + type 'Or-Or' + ports + signal boolean in input1; + signal boolean out output; + signal boolean in input2; + end; + icon bg bottom + figures + rectangle 440.1 160 471.9 192 color 0 fill 15132390; + group + line 442.3 169.3 452.8 169.3 color 16711680 fill 16711680; + line 442.3 183.1 452.8 183.1 color 16711680 fill 16711680; + end; + spline 451.9 164.8 453.9 176.5 451.9 187.7 color 16711680 fill 16711680; + line 460.7 176 469.5 176 color 16711680 fill 16711680; + spline 451.7 164.3 457.9 166.6 460.8 176.4 457.6 185.4 451.7 187.7 color 16711680 fill 15132390; + end; + implementation eq +equations + output = if input1 or input2 then + true + else + false + end; + + implementation_end; + Rjoint 168 176 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rjoint = 0.1; + end; + icon bg bottom + figures + text 'R' 168 176 color 0 18 bold; + end; + implementation eq +equations + p.e = Rjoint * p.f; +implementation_end; + 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 240 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' 240 424 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction 240 104 + description '4.01False + Bond Graph\ZeroJunction.emx + 2007-9-27 9:51:43 +'; + knot ZeroJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out effort [1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 240 104 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 + EndstopMax\collision -> Or\input1; + EndstopMin\collision -> Or\input2; + Hin -> MultiplyDivide1\multiply; + JointType\output -> Splitter2\input; + JointType\p2 => Wbai\p; + MultiplyDivide1\output -> Hout; + OneJunction\p <= EndstopMax\p2; + OneJunction\p <= EndstopMin\p2; + OneJunction\p => JointType\p1; + p <= Wbai\p; + p1 => ZeroJunction\p; + p2 => AdHji\p2; + Rjoint\p <= OneJunction\p; + Splitter2\output -> AdHji\H 424 312; + Splitter2\output -> MultiplyDivide1\multiply; + Wbai\p <= AdHji\p1; + ZeroJunction\p => OneJunction\p; + end; + parameterrelations +EndstopMin\Rendstop = Rendstop; +EndstopMin\Cendstop = Cendstop; +EndstopMin\InitialPos = InitialPos; +EndstopMin\EndstopPos = MinEndstopPos; +EndstopMax\Rendstop = Rendstop; +EndstopMax\Cendstop = Cendstop; +EndstopMax\InitialPos = InitialPos; +EndstopMax\EndstopPos = MaxEndstopPos; +Rjoint\Rjoint= Rjoint; +Integrate\init = InitialPos; +uTbai\Rconstraint = Rconstraint; +uTbai\Cconstraint = Cconstraint; + +parameterrelations_end; + figures + text 'b = next link (body) +a = previous link (body) +i = Frame fixed in previous body, fixed in joint +j = Frame fixed in next body, fixed in joint + ' 680 488 color 0; + implementation_end; + JointBase1 488.2 296 + description ' + 4.1 +1 + False + True + Joint-roty.emx + 2011-1-18 17:30:05 +'; + type 'Submodel-roty' + ports + power out p [6,1]; + power in p1; + power in p2 [6,1]; + signal in Hin [4,4]; + signal out Hout [4,4]; + parameters + real Rconstraint = 1000.0; + real Cconstraint = 1.0e-4; + real Rendstop = 1000.0; + real Cendstop = 1.0e-4; + real InitialPos = -1.13; + real MaxEndstopPos = 1.57; + real MinEndstopPos = -1.131; + real Rjoint = 0.1; + end; + icon bg bottom + figures + rectangle 456.5 224 520 368 color 0 fill 14745599; + text 'Joint-roty' 488.5 299 color 0; + terminals + p 456 256 fixed; + p1 487.5 224 fixed; + p2 520 256 fixed; + Hin 456 336 fixed; + Hout 520 336 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; + EndstopMax 471 217 + description ' + 4.1 + 1 + False + True +'; + type Submodel + ports + power out p2; + signal boolean out collision; + parameters + real Rendstop = 1000.0; + real Cendstop = 1.0e-4; + real InitialPos = -1.13; + real EndstopPos = 1.57; + end; + icon bg bottom + figures + rectangle 422 194 520 240 color 0 fill 14013909; + text 'EndstopMax' 472 216 color 0 16; + terminals + p2 472 240 fixed; + end; + implementation bg + submodels + Cendstop 704 144 + description ' + 4.0 + 1 + False + Bond Graph\C.emx + 2007-10-31 10:43:59 + True +'; + type C + ports + power in p; + signal out state; + restrictions + causality preferred out p; + parameters + real Cendstop = 1.0e-4; + end; + icon bg right + figures + text 'C' 704 144 color 0 18 bold; + end; + implementation eq +equations + state = int(p.f); + p.e = state / Cendstop; +implementation_end; + Collision 704 216 + description ' + No Version Info + 0 + False + True +'; + type X0e + ports + power in p1; + power out p2; + power out p12; + signal boolean out Collision; + restrictions + causality fixed in p12; + causality fixed out p2; + causality fixed out p1; + parameters + real InitialPos = -1.13; + real EndstopPos = 1.57; + end; + icon bg + figures + text 'X0e' 704 216 color 0 18 bold; + end; + implementation bg + submodels + Condition1 224.9 231.5 + type Condition + ports + signal in dx; + signal boolean out contact; + end; + icon bg + figures + rectangle 197.2 215 252.6 248 color 0 fill 15132390; + text 'Condition' 224 231.5 color 0; + terminals + dx 224 248 fixed; + contact 224 215 fixed; + end; + implementation eq +parameters + real global epsilon; +variables + boolean bounce; +equations + contact = if dx - epsilon < 0 then true else false end; + bounce = event (dx - epsilon);implementation_end; + plug p1 96 176; + plug p2 352 176; + plug p12 224 64; + plug Collision 408 192; + Splitter1 224 200 + description '4.0 + C:\Program Files\20-sim 4.0\System\SplitterBoolean.emx + 2007-10-31 11:27:48 +1 + False +'; + knot Splitter + ports + signal knot boolean duplicatable out output [1]; + signal knot boolean in input [1]; + end; + icon bg ellipse + figures + ellipse 220.8 196.8 227.2 203.2 color -1 fill 0; + ellipse 219.7 195.7 228.3 204.3 color -1; + terminals + input 224 200 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + v1 160 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 160 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v12 224 120 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg right + figures + text '1' 224 120 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v2 296 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 296 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + X0 224 176 + description ' + 0 + False +'; + type X0 + ports + mechanical in p1; + mechanical out p2; + mechanical out p12; + signal boolean in condition; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + end; + icon bg + figures + text 'X0' 224 176 color 8388608 18 bold; + end; + implementation eq +equations + p1.e = if condition then p12.e else 0 end; + p2.e = p1.e; + p12.f = if condition then p1.f-p2.f else 0 end; + implementation_end; + x1 160 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = 1.57; + end; + icon bg left + figures + rectangle 145 289 175 319 color 0 fill 15132390; + text 'ò' 157.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + x12 224 304 + description ' + 0 + False +'; + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse bottom + figures + ellipse 216.5 296.5 231.5 311.5 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + x2 296 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -1.13; + end; + icon bg right + figures + rectangle 281 289 311 319 color 0 fill 15132390; + text 'ò' 293.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + end; + connections + Condition1\contact -> Splitter1\input; + p1 => v1\p; + Splitter1\output -> Collision; + Splitter1\output -> X0\condition; + v1\flow -> x1\input; + v1\p => X0\p1; + v12\p => p12; + v2\flow -> x2\input; + v2\p => p2; + X0\p12 => v12\p; + X0\p2 => v2\p; + x1\output -> x12\plus; + x12\output -> Condition1\dx; + x2\output -> x12\minus; + end; + parameterrelations +x1\Initial = EndstopPos; +x2\Initial = InitialPos;parameterrelations_end; + implementation_end; + plug p2 648 216; + plug collision 800 216; + OneJunction5 704 176 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 704 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Rendstop 736 176 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rendstop = 1000.0; + end; + icon bg bottom + figures + text 'R' 736 176 color 0 18 bold; + end; + implementation eq +equations + p.e = Rendstop * p.f; +implementation_end; + Sf1 704 264 + description '4.01False + Bond Graph\Sf.emx + 2007-9-25 12:3:35 +'; + type Sf + ports + power out p; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 704 264 color 0 18 bold; + end; + implementation eq +parameters + real flow = 0.0; +variables + real effort; +equations + p.f = flow; + effort = p.e; +implementation_end; + end; + connections + Collision\Collision -> collision; + Collision\p12 => OneJunction5\p; + Collision\p2 => p2; + OneJunction5\p => Cendstop\p; + OneJunction5\p => Rendstop\p; + Sf1\p => Collision\p1; + end; + parameterrelations +Collision\InitialPos = InitialPos; +Collision\EndstopPos = EndstopPos; +Rendstop\Rendstop = Rendstop; +Cendstop\Cendstop = Cendstop;parameterrelations_end; + implementation_end; + EndstopMin 312 216 + description ' + 4.1 +1 + False + True + EndstopMin.emx + 2011-1-18 14:37:57 +'; + type Submodel + ports + power out p2; + signal boolean out collision; + parameters + real Cendstop = 1.0e-4; + real Rendstop = 1000.0; + real InitialPos = -1.13; + real EndstopPos = -1.131; + end; + icon bg bottom + figures + rectangle 263 193 361 239 color 0 fill 14013909; + text 'EndstopMin' 313 215 color 0 16; + end; + implementation bg + submodels + Cendstop 248 208 + description ' + 4.0 + 1 + False + Bond Graph\C.emx + 2007-10-31 10:43:59 + True +'; + type C + ports + power in p; + signal out state; + restrictions + causality preferred out p; + parameters + real Cendstop = 1.0e-4; + end; + icon bg right + figures + text 'C' 248 208 color 0 18 bold; + end; + implementation eq +equations + state = int(p.f); + p.e = state / Cendstop; +implementation_end; + Collision 248 120 + description ' + No Version Info + 0 + False + True +'; + type X0e + ports + power in p1; + power out p2; + power out p12; + signal boolean out collision; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + parameters + real InitialPos = -1.13; + real EndstopLocation = -1.131; + end; + icon bg + figures + text 'X0e' 248 120 color 0 18 bold; + end; + implementation bg + submodels + Condition1 224.9 231.5 + type Condition + ports + signal in dx; + signal boolean out contact; + end; + icon bg + figures + rectangle 197.2 215 252.6 248 color 0 fill 15132390; + text 'Condition' 224 231.5 color 0; + terminals + dx 224 248 fixed; + contact 224 215 fixed; + end; + implementation eq +parameters + real global epsilon; +variables + boolean bounce; +equations + contact = if dx - epsilon > 0 then true else false end; + bounce = event (dx - epsilon);implementation_end; + plug p1 96 176; + plug p2 352 176; + plug p12 224 64; + plug collision 400 200; + Splitter1 224 200 + description '4.0 + C:\Program Files\20-sim 4.0\System\SplitterBoolean.emx + 2007-10-31 11:27:48 +1 + False +'; + knot Splitter + ports + signal knot boolean duplicatable out output [1]; + signal knot boolean in input [1]; + end; + icon bg ellipse + figures + ellipse 220.8 196.8 227.2 203.2 color -1 fill 0; + ellipse 219.7 195.7 228.3 204.3 color -1; + terminals + input 224 200 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + v1 160 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 160 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v12 224 120 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg right + figures + text '1' 224 120 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v2 296 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 296 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + X0 224 176 + description ' + 0 + False +'; + type X0 + ports + power in p1; + power out p2; + power out p12; + signal boolean in condition; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + end; + icon bg + figures + text 'X0' 224 176 color 8388608 18 bold; + end; + implementation eq +equations + p1.e = if condition then p12.e else 0 end; + p2.e = p1.e; + p12.f = if condition then p1.f-p2.f else 0 end; + implementation_end; + x1 160 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -1.131; + end; + icon bg left + figures + rectangle 145 289 175 319 color 0 fill 15132390; + text 'ò' 157.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + x12 224 304 + description ' + 0 + False +'; + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse bottom + figures + ellipse 216.5 296.5 231.5 311.5 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + x2 296 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -1.13; + end; + icon bg right + figures + rectangle 281 289 311 319 color 0 fill 15132390; + text 'ò' 293.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + end; + connections + Condition1\contact -> Splitter1\input; + p1 => v1\p; + Splitter1\output -> collision; + Splitter1\output -> X0\condition; + v1\flow -> x1\input; + v1\p => X0\p1; + v12\p => p12; + v2\flow -> x2\input; + v2\p => p2; + X0\p12 => v12\p; + X0\p2 => v2\p; + x1\output -> x12\plus; + x12\output -> Condition1\dx; + x2\output -> x12\minus; + end; + parameterrelations +x1\Initial = EndstopLocation; +x2\Initial = InitialPos;parameterrelations_end; + implementation_end; + plug p2 152 120; + plug collision 360 120; + OneJunction 248 160 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 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; + Rendstop 288 160 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rendstop = 1000.0; + end; + icon bg bottom + figures + text 'R' 288 160 color 0 18 bold; + end; + implementation eq +equations + p.e = Rendstop * p.f; +implementation_end; + Sf2 248 64 + description '4.01False + Bond Graph\Sf.emx + 2007-9-25 12:3:35 +'; + type Sf + ports + power out p; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 248 64 color 0 18 bold; + end; + implementation eq +parameters + real flow = 0.0; +variables + real effort; +equations + p.f = flow; + effort = p.e; +implementation_end; + end; + connections + Collision\collision -> collision; + Collision\p12 => OneJunction\p; + Collision\p2 => p2; + OneJunction\p => Cendstop\p; + OneJunction\p => Rendstop\p; + Sf2\p => Collision\p1; + end; + parameterrelations +Cendstop\Cendstop = Cendstop; +Rendstop\Rendstop = Rendstop; +Collision\InitialPos = InitialPos; +Collision\EndstopLocation = EndstopPos;parameterrelations_end; + implementation_end; + Integrate 320 336 + description ' + 4.0 + 1 + False + Signal\Block Diagram\Integrate.emx + 2007-9-26 12:3:23 + True +'; + type Integrate + ports + signal in input; + signal out output [4,4]; + parameters + real init = -1.13; + end; + icon bg + figures + rectangle 304 320 336 352 color 0 fill 15132390; + text 'ò' 320 333.3 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +variables + real R[3,3]; + real p[3]; + real q; +equations +q = int(input,init); +R = [ cos(q), 0, sin(q); + 0, 1, 0; + -sin(q), 0, cos(q)]; +p = [0;0;0]; +output = homogeneous(R,p); + + implementation_end; + MatrixMul 320 496 + 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 480 335.9 512 color 0 fill 15132390; + text 'X' 320 496 color 16711680 16 bold; + end; + implementation eq +equations + output = input2*input1; implementation_end; + plug p1 240 56; + plug p2 496 424; + plug Hin 112 496; + plug Hout 504 496; + plug p 112 424; + OneJunction 240 272 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 240 272 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Or 392 216 + description ' + 4.0 + 1 + False + Signal\Logical\Discrete\Or.emx + 2007-12-18 23:20:57 +'; + type 'Or-Or' + ports + signal boolean in input1; + signal boolean out output; + signal boolean in input2; + end; + icon bg bottom + figures + rectangle 376.1 200 407.9 232 color 0 fill 15132390; + group + line 378.3 209.3 388.8 209.3 color 16711680 fill 16711680; + line 378.3 223.1 388.8 223.1 color 16711680 fill 16711680; + end; + spline 387.9 204.8 389.9 216.5 387.9 227.7 color 16711680 fill 16711680; + line 396.7 216 405.5 216 color 16711680 fill 16711680; + spline 387.7 204.3 393.9 206.6 396.8 216.4 393.6 225.4 387.7 227.7 color 16711680 fill 15132390; + end; + implementation eq +equations + output = if input1 or input2 then + true + else + false + end; + + implementation_end; + Rjoint 192 272 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rjoint = 0.1; + end; + icon bg bottom + figures + text 'R' 192 272 color 0 18 bold; + end; + implementation eq +equations + p.e = Rjoint * p.f; +implementation_end; + Splitter2 320 368 + 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 364.8 323.2 371.2 color -1 fill 0; + ellipse 315.7 363.7 324.3 372.3 color -1; + terminals + input 320 368 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Tbai 240 384 + 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 left + figures + text '1' 240 384 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + uTbai 240 328 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + parameters + real Rconstraint = 1000.0; + real Cconstraint = 1.0e-4; + end; + icon bg left + figures + text 'TF' 240 328 color 0 18 bold; + end; + implementation eq +equations + p2.e[1] = (Rconstraint*-p2.f[1] + int(-p2.f[1])/Cconstraint); + p2.e[2] = p1.e; + p2.e[3] = (Rconstraint*-p2.f[3] + int(-p2.f[3])/Cconstraint); + p2.e[4] = (Rconstraint*-p2.f[4] + int(-p2.f[4])/Cconstraint); + p2.e[5] = (Rconstraint*-p2.f[5] + int(-p2.f[5])/Cconstraint); + p2.e[6] = (Rconstraint*-p2.f[6] + int(-p2.f[6])/Cconstraint); + + p1.f = p2.f[2]; +implementation_end; + Wbai 240 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' 240 424 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction 240 104 + description '4.01False + Bond Graph\ZeroJunction.emx + 2007-9-27 9:51:43 +'; + knot ZeroJunction + ports + power knot duplicatable none p [1]; + signal knot out effort [1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 240 104 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 + EndstopMax\collision -> Or\input1; + EndstopMin\collision -> Or\input2; + Hin -> MatrixMul\input2; + Integrate\output -> Splitter2\input; + MatrixMul\output -> Hout; + OneJunction\flow -> Integrate\input 320 272; + OneJunction\p <= EndstopMax\p2; + OneJunction\p <= EndstopMin\p2; + OneJunction\p => Rjoint\p; + OneJunction\p => uTbai\p1; + p <= Wbai\p; + p1 => ZeroJunction\p; + p2 => AdHji\p2; + Splitter2\output -> AdHji\H 424 368; + Splitter2\output -> MatrixMul\input1; + Tbai\p => Wbai\p; + uTbai\p2 => Tbai\p; + Wbai\p <= AdHji\p1; + ZeroJunction\p => OneJunction\p; + end; + parameterrelations +EndstopMin\Rendstop = Rendstop; +EndstopMin\Cendstop = Cendstop; +EndstopMin\InitialPos = InitialPos; +EndstopMin\EndstopPos = MinEndstopPos; +EndstopMax\Rendstop = Rendstop; +EndstopMax\Cendstop = Cendstop; +EndstopMax\InitialPos = InitialPos; +EndstopMax\EndstopPos = MaxEndstopPos; +Rjoint\Rjoint= Rjoint; +Integrate\init = InitialPos; +uTbai\Rconstraint = Rconstraint; +uTbai\Cconstraint = Cconstraint;parameterrelations_end; + figures + text 'b = next link (body) +a = previous link (body) +i = Frame fixed in previous body, fixed in joint +j = Frame fixed in next body, fixed in joint + ' 744 400 color 0; + implementation_end; + JointBase2 296.2 296 + description ' + 4.1 +1 + False + True + Joint-roty.emx + 2011-1-18 17:30:05 +'; + type 'Submodel-roty' + ports + power out p [6,1]; + power in p1; + power in p2 [6,1]; + signal in Hin [4,4]; + signal out Hout [4,4]; + parameters + real Rconstraint = 1000.0; + real Cconstraint = 1.0e-4; + real Rendstop = 1000.0; + real Cendstop = 1.0e-4; + real InitialPos = 0.0; + real MaxEndstopPos = 1.57; + real MinEndstopPos = -1.131; + real Rjoint = 0.1; + end; + icon bg bottom + figures + rectangle 264.5 224 328 368 color 0 fill 14745599; + text 'Joint-roty' 296.5 299 color 0; + terminals + p 264 256 fixed; + p1 295.5 224 fixed; + p2 328 256 fixed; + Hin 264 336 fixed; + Hout 328 336 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; + EndstopMax 471 217 + description ' + 4.1 + 1 + False + True +'; + type Submodel + ports + power out p2; + signal boolean out collision; + parameters + real Rendstop = 1000.0; + real Cendstop = 1.0e-4; + real InitialPos = -1.13; + real EndstopPos = 1.57; + end; + icon bg bottom + figures + rectangle 422 194 520 240 color 0 fill 14013909; + text 'EndstopMax' 472 216 color 0 16; + terminals + p2 472 240 fixed; + end; + implementation bg + submodels + Cendstop 704 144 + description ' + 4.0 + 1 + False + Bond Graph\C.emx + 2007-10-31 10:43:59 + True +'; + type C + ports + power in p; + signal out state; + restrictions + causality preferred out p; + parameters + real Cendstop = 1.0e-4; + end; + icon bg right + figures + text 'C' 704 144 color 0 18 bold; + end; + implementation eq +equations + state = int(p.f); + p.e = state / Cendstop; +implementation_end; + Collision 704 216 + description ' + No Version Info + 0 + False + True +'; + type X0e + ports + power in p1; + power out p2; + power out p12; + signal boolean out Collision; + restrictions + causality fixed in p12; + causality fixed out p2; + causality fixed out p1; + parameters + real InitialPos = -1.13; + real EndstopPos = 1.57; + end; + icon bg + figures + text 'X0e' 704 216 color 0 18 bold; + end; + implementation bg + submodels + Condition1 224.9 231.5 + type Condition + ports + signal in dx; + signal boolean out contact; + end; + icon bg + figures + rectangle 197.2 215 252.6 248 color 0 fill 15132390; + text 'Condition' 224 231.5 color 0; + terminals + dx 224 248 fixed; + contact 224 215 fixed; + end; + implementation eq +parameters + real global epsilon; +variables + boolean bounce; +equations + contact = if dx - epsilon < 0 then true else false end; + bounce = event (dx - epsilon);implementation_end; + plug p1 96 176; + plug p2 352 176; + plug p12 224 64; + plug Collision 408 192; + Splitter1 224 200 + description '4.0 + C:\Program Files\20-sim 4.0\System\SplitterBoolean.emx + 2007-10-31 11:27:48 +1 + False +'; + knot Splitter + ports + signal knot boolean duplicatable out output [1]; + signal knot boolean in input [1]; + end; + icon bg ellipse + figures + ellipse 220.8 196.8 227.2 203.2 color -1 fill 0; + ellipse 219.7 195.7 228.3 204.3 color -1; + terminals + input 224 200 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + v1 160 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 160 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v12 224 120 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg right + figures + text '1' 224 120 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v2 296 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 296 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + X0 224 176 + description ' + 0 + False +'; + type X0 + ports + mechanical in p1; + mechanical out p2; + mechanical out p12; + signal boolean in condition; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + end; + icon bg + figures + text 'X0' 224 176 color 8388608 18 bold; + end; + implementation eq +equations + p1.e = if condition then p12.e else 0 end; + p2.e = p1.e; + p12.f = if condition then p1.f-p2.f else 0 end; + implementation_end; + x1 160 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = 1.57; + end; + icon bg left + figures + rectangle 145 289 175 319 color 0 fill 15132390; + text 'ò' 157.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + x12 224 304 + description ' + 0 + False +'; + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse bottom + figures + ellipse 216.5 296.5 231.5 311.5 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + x2 296 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -1.13; + end; + icon bg right + figures + rectangle 281 289 311 319 color 0 fill 15132390; + text 'ò' 293.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + end; + connections + Condition1\contact -> Splitter1\input; + p1 => v1\p; + Splitter1\output -> Collision; + Splitter1\output -> X0\condition; + v1\flow -> x1\input; + v1\p => X0\p1; + v12\p => p12; + v2\flow -> x2\input; + v2\p => p2; + X0\p12 => v12\p; + X0\p2 => v2\p; + x1\output -> x12\plus; + x12\output -> Condition1\dx; + x2\output -> x12\minus; + end; + parameterrelations +x1\Initial = EndstopPos; +x2\Initial = InitialPos;parameterrelations_end; + implementation_end; + plug p2 648 216; + plug collision 800 216; + OneJunction5 704 176 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 704 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Rendstop 736 176 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rendstop = 1000.0; + end; + icon bg bottom + figures + text 'R' 736 176 color 0 18 bold; + end; + implementation eq +equations + p.e = Rendstop * p.f; +implementation_end; + Sf1 704 264 + description '4.01False + Bond Graph\Sf.emx + 2007-9-25 12:3:35 +'; + type Sf + ports + power out p; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 704 264 color 0 18 bold; + end; + implementation eq +parameters + real flow = 0.0; +variables + real effort; +equations + p.f = flow; + effort = p.e; +implementation_end; + end; + connections + Collision\Collision -> collision; + Collision\p12 => OneJunction5\p; + Collision\p2 => p2; + OneJunction5\p => Cendstop\p; + OneJunction5\p => Rendstop\p; + Sf1\p => Collision\p1; + end; + parameterrelations +Collision\InitialPos = InitialPos; +Collision\EndstopPos = EndstopPos; +Rendstop\Rendstop = Rendstop; +Cendstop\Cendstop = Cendstop;parameterrelations_end; + implementation_end; + EndstopMin 312 216 + description ' + 4.1 +1 + False + True + EndstopMin.emx + 2011-1-18 14:37:57 +'; + type Submodel + ports + power out p2; + signal boolean out collision; + parameters + real Cendstop = 1.0e-4; + real Rendstop = 1000.0; + real InitialPos = -1.13; + real EndstopPos = -1.131; + end; + icon bg bottom + figures + rectangle 263 193 361 239 color 0 fill 14013909; + text 'EndstopMin' 313 215 color 0 16; + end; + implementation bg + submodels + Cendstop 248 208 + description ' + 4.0 + 1 + False + Bond Graph\C.emx + 2007-10-31 10:43:59 + True +'; + type C + ports + power in p; + signal out state; + restrictions + causality preferred out p; + parameters + real Cendstop = 1.0e-4; + end; + icon bg right + figures + text 'C' 248 208 color 0 18 bold; + end; + implementation eq +equations + state = int(p.f); + p.e = state / Cendstop; +implementation_end; + Collision 248 120 + description ' + No Version Info + 0 + False + True +'; + type X0e + ports + power in p1; + power out p2; + power out p12; + signal boolean out collision; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + parameters + real InitialPos = -1.13; + real EndstopLocation = -1.131; + end; + icon bg + figures + text 'X0e' 248 120 color 0 18 bold; + end; + implementation bg + submodels + Condition1 224.9 231.5 + type Condition + ports + signal in dx; + signal boolean out contact; + end; + icon bg + figures + rectangle 197.2 215 252.6 248 color 0 fill 15132390; + text 'Condition' 224 231.5 color 0; + terminals + dx 224 248 fixed; + contact 224 215 fixed; + end; + implementation eq +parameters + real global epsilon; +variables + boolean bounce; +equations + contact = if dx - epsilon > 0 then true else false end; + bounce = event (dx - epsilon);implementation_end; + plug p1 96 176; + plug p2 352 176; + plug p12 224 64; + plug collision 400 200; + Splitter1 224 200 + description '4.0 + C:\Program Files\20-sim 4.0\System\SplitterBoolean.emx + 2007-10-31 11:27:48 +1 + False +'; + knot Splitter + ports + signal knot boolean duplicatable out output [1]; + signal knot boolean in input [1]; + end; + icon bg ellipse + figures + ellipse 220.8 196.8 227.2 203.2 color -1 fill 0; + ellipse 219.7 195.7 228.3 204.3 color -1; + terminals + input 224 200 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + v1 160 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 160 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v12 224 120 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg right + figures + text '1' 224 120 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v2 296 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 296 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + X0 224 176 + description ' + 0 + False +'; + type X0 + ports + power in p1; + power out p2; + power out p12; + signal boolean in condition; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + end; + icon bg + figures + text 'X0' 224 176 color 8388608 18 bold; + end; + implementation eq +equations + p1.e = if condition then p12.e else 0 end; + p2.e = p1.e; + p12.f = if condition then p1.f-p2.f else 0 end; + implementation_end; + x1 160 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -1.131; + end; + icon bg left + figures + rectangle 145 289 175 319 color 0 fill 15132390; + text 'ò' 157.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + x12 224 304 + description ' + 0 + False +'; + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse bottom + figures + ellipse 216.5 296.5 231.5 311.5 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + x2 296 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -1.13; + end; + icon bg right + figures + rectangle 281 289 311 319 color 0 fill 15132390; + text 'ò' 293.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + end; + connections + Condition1\contact -> Splitter1\input; + p1 => v1\p; + Splitter1\output -> collision; + Splitter1\output -> X0\condition; + v1\flow -> x1\input; + v1\p => X0\p1; + v12\p => p12; + v2\flow -> x2\input; + v2\p => p2; + X0\p12 => v12\p; + X0\p2 => v2\p; + x1\output -> x12\plus; + x12\output -> Condition1\dx; + x2\output -> x12\minus; + end; + parameterrelations +x1\Initial = EndstopLocation; +x2\Initial = InitialPos;parameterrelations_end; + implementation_end; + plug p2 152 120; + plug collision 360 120; + OneJunction 248 160 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 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; + Rendstop 288 160 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rendstop = 1000.0; + end; + icon bg bottom + figures + text 'R' 288 160 color 0 18 bold; + end; + implementation eq +equations + p.e = Rendstop * p.f; +implementation_end; + Sf2 248 64 + description '4.01False + Bond Graph\Sf.emx + 2007-9-25 12:3:35 +'; + type Sf + ports + power out p; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 248 64 color 0 18 bold; + end; + implementation eq +parameters + real flow = 0.0; +variables + real effort; +equations + p.f = flow; + effort = p.e; +implementation_end; + end; + connections + Collision\collision -> collision; + Collision\p12 => OneJunction\p; + Collision\p2 => p2; + OneJunction\p => Cendstop\p; + OneJunction\p => Rendstop\p; + Sf2\p => Collision\p1; + end; + parameterrelations +Cendstop\Cendstop = Cendstop; +Rendstop\Rendstop = Rendstop; +Collision\InitialPos = InitialPos; +Collision\EndstopLocation = EndstopPos;parameterrelations_end; + implementation_end; + Integrate 320 328 + description ' + 4.0 + 1 + False + Signal\Block Diagram\Integrate.emx + 2007-9-26 12:3:23 + True +'; + type Integrate + ports + signal in input; + signal out output [4,4]; + parameters + real init = -1.13; + end; + icon bg + figures + rectangle 304 312 336 344 color 0 fill 15132390; + text 'ò' 320 325.3 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +variables + real R[3,3]; + real p[3]; + real q; +equations +q = int(input,init); +R = [ cos(q), 0, sin(q); + 0, 1, 0; + -sin(q), 0, cos(q)]; +p = [0;0;0]; +output = homogeneous(R,p); + + implementation_end; + MatrixMul 320 496 + 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 480 335.9 512 color 0 fill 15132390; + text 'X' 320 496 color 16711680 16 bold; + end; + implementation eq +equations + output = input2*input1; implementation_end; + plug p1 240 56; + plug p2 496 424; + plug Hin 112 496; + plug Hout 504 496; + plug p 112 424; + OneJunction 240 272 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 240 272 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Or 392 216 + description ' + 4.0 + 1 + False + Signal\Logical\Discrete\Or.emx + 2007-12-18 23:20:57 +'; + type 'Or-Or' + ports + signal boolean in input1; + signal boolean out output; + signal boolean in input2; + end; + icon bg bottom + figures + rectangle 376.1 200 407.9 232 color 0 fill 15132390; + group + line 378.3 209.3 388.8 209.3 color 16711680 fill 16711680; + line 378.3 223.1 388.8 223.1 color 16711680 fill 16711680; + end; + spline 387.9 204.8 389.9 216.5 387.9 227.7 color 16711680 fill 16711680; + line 396.7 216 405.5 216 color 16711680 fill 16711680; + spline 387.7 204.3 393.9 206.6 396.8 216.4 393.6 225.4 387.7 227.7 color 16711680 fill 15132390; + end; + implementation eq +equations + output = if input1 or input2 then + true + else + false + end; + + implementation_end; + Rjoint 192 272 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rjoint = 0.1; + end; + icon bg bottom + figures + text 'R' 192 272 color 0 18 bold; + end; + implementation eq +equations + p.e = Rjoint * p.f; +implementation_end; + Splitter2 320 368 + 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 364.8 323.2 371.2 color -1 fill 0; + ellipse 315.7 363.7 324.3 372.3 color -1; + terminals + input 320 368 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Tbai 240 376 + 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 left + figures + text '1' 240 376 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + uTbai 240 328 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + parameters + real Rconstraint = 1000.0; + real Cconstraint = 1.0e-4; + end; + icon bg left + figures + text 'TF' 240 328 color 0 18 bold; + end; + implementation eq +equations + p2.e[1] = (Rconstraint*-p2.f[1] + int(-p2.f[1])/Cconstraint); + p2.e[2] = p1.e; + p2.e[3] = (Rconstraint*-p2.f[3] + int(-p2.f[3])/Cconstraint); + p2.e[4] = (Rconstraint*-p2.f[4] + int(-p2.f[4])/Cconstraint); + p2.e[5] = (Rconstraint*-p2.f[5] + int(-p2.f[5])/Cconstraint); + p2.e[6] = (Rconstraint*-p2.f[6] + int(-p2.f[6])/Cconstraint); + + p1.f = p2.f[2]; +implementation_end; + Wbai 240 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' 240 424 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction 240 160 + description '4.01False + Bond Graph\ZeroJunction.emx + 2007-9-27 9:51:43 +'; + knot ZeroJunction + ports + power knot duplicatable none p [1]; + signal knot out effort [1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 240 160 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 + EndstopMax\collision -> Or\input1; + EndstopMin\collision -> Or\input2; + Hin -> MatrixMul\input2; + Integrate\output -> Splitter2\input; + MatrixMul\output -> Hout; + OneJunction\flow -> Integrate\input 320 272; + OneJunction\p <= EndstopMax\p2; + OneJunction\p <= EndstopMin\p2; + OneJunction\p => Rjoint\p; + OneJunction\p => uTbai\p1; + p <= Wbai\p; + p1 => ZeroJunction\p; + p2 => AdHji\p2; + Splitter2\output -> AdHji\H 424 368; + Splitter2\output -> MatrixMul\input1; + Tbai\p => Wbai\p; + uTbai\p2 => Tbai\p; + Wbai\p <= AdHji\p1; + ZeroJunction\p => OneJunction\p; + end; + parameterrelations +EndstopMin\Rendstop = Rendstop; +EndstopMin\Cendstop = Cendstop; +EndstopMin\InitialPos = InitialPos; +EndstopMin\EndstopPos = MinEndstopPos; +EndstopMax\Rendstop = Rendstop; +EndstopMax\Cendstop = Cendstop; +EndstopMax\InitialPos = InitialPos; +EndstopMax\EndstopPos = MaxEndstopPos; +Rjoint\Rjoint= Rjoint; +Integrate\init = InitialPos; +uTbai\Rconstraint = Rconstraint; +uTbai\Cconstraint = Cconstraint;parameterrelations_end; + figures + text 'b = next link (body) +a = previous link (body) +i = Frame fixed in previous body, fixed in joint +j = Frame fixed in next body, fixed in joint + ' 744 400 color 0; + implementation_end; + JointBase3 784.2 496 + description ' + 4.1 +1 + False + True + Joint-roty.emx + 2011-1-18 17:30:05 +'; + type 'Submodel-roty' + ports + power out p [6,1]; + power in p1; + power in p2 [6,1]; + signal in Hin [4,4]; + signal out Hout [4,4]; + parameters + real Rconstraint = 1000.0; + real Cconstraint = 1.0e-4; + real Rendstop = 1000.0; + real Cendstop = 1.0e-4; + real InitialPos = 0.0; + real MaxEndstopPos = 1.57; + real MinEndstopPos = -1.131; + real Rjoint = 0.1; + end; + icon bg bottom + figures + rectangle 752.5 424 816 568 color 0 fill 14745599; + text 'Joint-roty' 784.5 499 color 0; + terminals + p 752 456 fixed; + p1 783.5 424 fixed; + p2 816 456 fixed; + Hin 752 536 fixed; + Hout 816 536 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; + EndstopMax 471 217 + description ' + 4.1 + 1 + False + True +'; + type Submodel + ports + power out p2; + signal boolean out collision; + parameters + real Rendstop = 1000.0; + real Cendstop = 1.0e-4; + real InitialPos = -1.13; + real EndstopPos = 1.57; + end; + icon bg bottom + figures + rectangle 422 194 520 240 color 0 fill 14013909; + text 'EndstopMax' 472 216 color 0 16; + terminals + p2 472 240 fixed; + end; + implementation bg + submodels + Cendstop 704 144 + description ' + 4.0 + 1 + False + Bond Graph\C.emx + 2007-10-31 10:43:59 + True +'; + type C + ports + power in p; + signal out state; + restrictions + causality preferred out p; + parameters + real Cendstop = 1.0e-4; + end; + icon bg right + figures + text 'C' 704 144 color 0 18 bold; + end; + implementation eq +equations + state = int(p.f); + p.e = state / Cendstop; +implementation_end; + Collision 704 216 + description ' + No Version Info + 0 + False + True +'; + type X0e + ports + power in p1; + power out p2; + power out p12; + signal boolean out Collision; + restrictions + causality fixed in p12; + causality fixed out p2; + causality fixed out p1; + parameters + real InitialPos = -1.13; + real EndstopPos = 1.57; + end; + icon bg + figures + text 'X0e' 704 216 color 0 18 bold; + end; + implementation bg + submodels + Condition1 224.9 231.5 + type Condition + ports + signal in dx; + signal boolean out contact; + end; + icon bg + figures + rectangle 197.2 215 252.6 248 color 0 fill 15132390; + text 'Condition' 224 231.5 color 0; + terminals + dx 224 248 fixed; + contact 224 215 fixed; + end; + implementation eq +parameters + real global epsilon; +variables + boolean bounce; +equations + contact = if dx - epsilon < 0 then true else false end; + bounce = event (dx - epsilon);implementation_end; + plug p1 96 176; + plug p2 352 176; + plug p12 224 64; + plug Collision 408 192; + Splitter1 224 200 + description '4.0 + C:\Program Files\20-sim 4.0\System\SplitterBoolean.emx + 2007-10-31 11:27:48 +1 + False +'; + knot Splitter + ports + signal knot boolean duplicatable out output [1]; + signal knot boolean in input [1]; + end; + icon bg ellipse + figures + ellipse 220.8 196.8 227.2 203.2 color -1 fill 0; + ellipse 219.7 195.7 228.3 204.3 color -1; + terminals + input 224 200 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + v1 160 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 160 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v12 224 120 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg right + figures + text '1' 224 120 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v2 296 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 296 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + X0 224 176 + description ' + 0 + False +'; + type X0 + ports + mechanical in p1; + mechanical out p2; + mechanical out p12; + signal boolean in condition; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + end; + icon bg + figures + text 'X0' 224 176 color 8388608 18 bold; + end; + implementation eq +equations + p1.e = if condition then p12.e else 0 end; + p2.e = p1.e; + p12.f = if condition then p1.f-p2.f else 0 end; + implementation_end; + x1 160 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = 1.57; + end; + icon bg left + figures + rectangle 145 289 175 319 color 0 fill 15132390; + text 'ò' 157.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + x12 224 304 + description ' + 0 + False +'; + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse bottom + figures + ellipse 216.5 296.5 231.5 311.5 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + x2 296 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -1.13; + end; + icon bg right + figures + rectangle 281 289 311 319 color 0 fill 15132390; + text 'ò' 293.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + end; + connections + Condition1\contact -> Splitter1\input; + p1 => v1\p; + Splitter1\output -> Collision; + Splitter1\output -> X0\condition; + v1\flow -> x1\input; + v1\p => X0\p1; + v12\p => p12; + v2\flow -> x2\input; + v2\p => p2; + X0\p12 => v12\p; + X0\p2 => v2\p; + x1\output -> x12\plus; + x12\output -> Condition1\dx; + x2\output -> x12\minus; + end; + parameterrelations +x1\Initial = EndstopPos; +x2\Initial = InitialPos;parameterrelations_end; + implementation_end; + plug p2 648 216; + plug collision 800 216; + OneJunction5 704 176 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 704 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Rendstop 736 176 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rendstop = 1000.0; + end; + icon bg bottom + figures + text 'R' 736 176 color 0 18 bold; + end; + implementation eq +equations + p.e = Rendstop * p.f; +implementation_end; + Sf1 704 264 + description '4.01False + Bond Graph\Sf.emx + 2007-9-25 12:3:35 +'; + type Sf + ports + power out p; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 704 264 color 0 18 bold; + end; + implementation eq +parameters + real flow = 0.0; +variables + real effort; +equations + p.f = flow; + effort = p.e; +implementation_end; + end; + connections + Collision\Collision -> collision; + Collision\p12 => OneJunction5\p; + Collision\p2 => p2; + OneJunction5\p => Cendstop\p; + OneJunction5\p => Rendstop\p; + Sf1\p => Collision\p1; + end; + parameterrelations +Collision\InitialPos = InitialPos; +Collision\EndstopPos = EndstopPos; +Rendstop\Rendstop = Rendstop; +Cendstop\Cendstop = Cendstop;parameterrelations_end; + implementation_end; + EndstopMin 312 216 + description ' + 4.1 +1 + False + True + EndstopMin.emx + 2011-1-18 14:37:57 +'; + type Submodel + ports + power out p2; + signal boolean out collision; + parameters + real Cendstop = 1.0e-4; + real Rendstop = 1000.0; + real InitialPos = -1.13; + real EndstopPos = -1.131; + end; + icon bg bottom + figures + rectangle 263 193 361 239 color 0 fill 14013909; + text 'EndstopMin' 313 215 color 0 16; + end; + implementation bg + submodels + Cendstop 248 208 + description ' + 4.0 + 1 + False + Bond Graph\C.emx + 2007-10-31 10:43:59 + True +'; + type C + ports + power in p; + signal out state; + restrictions + causality preferred out p; + parameters + real Cendstop = 1.0e-4; + end; + icon bg right + figures + text 'C' 248 208 color 0 18 bold; + end; + implementation eq +equations + state = int(p.f); + p.e = state / Cendstop; +implementation_end; + Collision 248 120 + description ' + No Version Info + 0 + False + True +'; + type X0e + ports + power in p1; + power out p2; + power out p12; + signal boolean out collision; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + parameters + real InitialPos = -1.13; + real EndstopLocation = -1.131; + end; + icon bg + figures + text 'X0e' 248 120 color 0 18 bold; + end; + implementation bg + submodels + Condition1 224.9 231.5 + type Condition + ports + signal in dx; + signal boolean out contact; + end; + icon bg + figures + rectangle 197.2 215 252.6 248 color 0 fill 15132390; + text 'Condition' 224 231.5 color 0; + terminals + dx 224 248 fixed; + contact 224 215 fixed; + end; + implementation eq +parameters + real global epsilon; +variables + boolean bounce; +equations + contact = if dx - epsilon > 0 then true else false end; + bounce = event (dx - epsilon);implementation_end; + plug p1 96 176; + plug p2 352 176; + plug p12 224 64; + plug collision 400 200; + Splitter1 224 200 + description '4.0 + C:\Program Files\20-sim 4.0\System\SplitterBoolean.emx + 2007-10-31 11:27:48 +1 + False +'; + knot Splitter + ports + signal knot boolean duplicatable out output [1]; + signal knot boolean in input [1]; + end; + icon bg ellipse + figures + ellipse 220.8 196.8 227.2 203.2 color -1 fill 0; + ellipse 219.7 195.7 228.3 204.3 color -1; + terminals + input 224 200 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + v1 160 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 160 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v12 224 120 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg right + figures + text '1' 224 120 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + v2 296 176 + description ' + 0 + False +'; + knot OneJunction + ports + mechanical knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg top + figures + text '1' 296 176 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); + implementation_end; + X0 224 176 + description ' + 0 + False +'; + type X0 + ports + power in p1; + power out p2; + power out p12; + signal boolean in condition; + restrictions + causality fixed out p1; + causality fixed out p2; + causality fixed in p12; + end; + icon bg + figures + text 'X0' 224 176 color 8388608 18 bold; + end; + implementation eq +equations + p1.e = if condition then p12.e else 0 end; + p2.e = p1.e; + p12.f = if condition then p1.f-p2.f else 0 end; + implementation_end; + x1 160 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -1.131; + end; + icon bg left + figures + rectangle 145 289 175 319 color 0 fill 15132390; + text 'ò' 157.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + x12 224 304 + description ' + 0 + False +'; + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse bottom + figures + ellipse 216.5 296.5 231.5 311.5 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + x2 296 304 + description ' + 0 + False +'; + type Integrate + ports + signal in input; + signal out output; + parameters + real Initial = -1.13; + end; + icon bg right + figures + rectangle 281 289 311 319 color 0 fill 15132390; + text 'ò' 293.5 304 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +equations + output = int (input, Initial); + implementation_end; + end; + connections + Condition1\contact -> Splitter1\input; + p1 => v1\p; + Splitter1\output -> collision; + Splitter1\output -> X0\condition; + v1\flow -> x1\input; + v1\p => X0\p1; + v12\p => p12; + v2\flow -> x2\input; + v2\p => p2; + X0\p12 => v12\p; + X0\p2 => v2\p; + x1\output -> x12\plus; + x12\output -> Condition1\dx; + x2\output -> x12\minus; + end; + parameterrelations +x1\Initial = EndstopLocation; +x2\Initial = InitialPos;parameterrelations_end; + implementation_end; + plug p2 152 120; + plug collision 360 120; + OneJunction 248 160 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 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; + Rendstop 288 160 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rendstop = 1000.0; + end; + icon bg bottom + figures + text 'R' 288 160 color 0 18 bold; + end; + implementation eq +equations + p.e = Rendstop * p.f; +implementation_end; + Sf2 248 64 + description '4.01False + Bond Graph\Sf.emx + 2007-9-25 12:3:35 +'; + type Sf + ports + power out p; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 248 64 color 0 18 bold; + end; + implementation eq +parameters + real flow = 0.0; +variables + real effort; +equations + p.f = flow; + effort = p.e; +implementation_end; + end; + connections + Collision\collision -> collision; + Collision\p12 => OneJunction\p; + Collision\p2 => p2; + OneJunction\p => Cendstop\p; + OneJunction\p => Rendstop\p; + Sf2\p => Collision\p1; + end; + parameterrelations +Cendstop\Cendstop = Cendstop; +Rendstop\Rendstop = Rendstop; +Collision\InitialPos = InitialPos; +Collision\EndstopLocation = EndstopPos;parameterrelations_end; + implementation_end; + Integrate 320 328 + description ' + 4.0 + 1 + False + Signal\Block Diagram\Integrate.emx + 2007-9-26 12:3:23 + True +'; + type Integrate + ports + signal in input; + signal out output [4,4]; + parameters + real init = -1.13; + end; + icon bg + figures + rectangle 304 312 336 344 color 0 fill 15132390; + text 'ò' 320 325.3 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +variables + real R[3,3]; + real p[3]; + real q[3]; + real qa; + real temp [4,4]; +initialequations + q = 0; +equations +qa= int(input,init); +q[2] = qa; +R = [ cos(q[2]), 0, sin(q[2]); + 0, 1, 0; + -sin(q[2]), 0, cos(q[2])]; +p = [0;0;0]; +output = dll('EulerAngles.dll','HMatrixFromEulXYZr',q); +temp = output - homogeneous(R,p); + + implementation_end; + MatrixMul 320 496 + 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 480 335.9 512 color 0 fill 15132390; + text 'X' 320 496 color 16711680 16 bold; + end; + implementation eq +equations + output = input2*input1; implementation_end; + plug p1 240 56; + plug p2 496 424; + plug Hin 112 496; + plug Hout 504 496; + plug p 112 424; + OneJunction 240 272 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 240 272 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Or 392 216 + description ' + 4.0 + 1 + False + Signal\Logical\Discrete\Or.emx + 2007-12-18 23:20:57 +'; + type 'Or-Or' + ports + signal boolean in input1; + signal boolean out output; + signal boolean in input2; + end; + icon bg bottom + figures + rectangle 376.1 200 407.9 232 color 0 fill 15132390; + group + line 378.3 209.3 388.8 209.3 color 16711680 fill 16711680; + line 378.3 223.1 388.8 223.1 color 16711680 fill 16711680; + end; + spline 387.9 204.8 389.9 216.5 387.9 227.7 color 16711680 fill 16711680; + line 396.7 216 405.5 216 color 16711680 fill 16711680; + spline 387.7 204.3 393.9 206.6 396.8 216.4 393.6 225.4 387.7 227.7 color 16711680 fill 15132390; + end; + implementation eq +equations + output = if input1 or input2 then + true + else + false + end; + + implementation_end; + Rjoint 192 272 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rjoint = 0.1; + end; + icon bg bottom + figures + text 'R' 192 272 color 0 18 bold; + end; + implementation eq +equations + p.e = Rjoint * p.f; +implementation_end; + Splitter2 320 368 + 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 364.8 323.2 371.2 color -1 fill 0; + ellipse 315.7 363.7 324.3 372.3 color -1; + terminals + input 320 368 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Tbai 240 376 + 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 left + figures + text '1' 240 376 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + uTbai 240 328 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + parameters + real Rconstraint = 1000.0; + real Cconstraint = 1.0e-4; + end; + icon bg left + figures + text 'TF' 240 328 color 0 18 bold; + end; + implementation eq +equations + p2.e[1] = (Rconstraint*-p2.f[1] + int(-p2.f[1])/Cconstraint); + p2.e[2] = p1.e; + p2.e[3] = (Rconstraint*-p2.f[3] + int(-p2.f[3])/Cconstraint); + p2.e[4] = (Rconstraint*-p2.f[4] + int(-p2.f[4])/Cconstraint); + p2.e[5] = (Rconstraint*-p2.f[5] + int(-p2.f[5])/Cconstraint); + p2.e[6] = (Rconstraint*-p2.f[6] + int(-p2.f[6])/Cconstraint); + + p1.f = p2.f[2]; +implementation_end; + Wbai 240 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' 240 424 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction 240 160 + description '4.01False + Bond Graph\ZeroJunction.emx + 2007-9-27 9:51:43 +'; + knot ZeroJunction + ports + power knot duplicatable none p [1]; + signal knot out effort [1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 240 160 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 + EndstopMax\collision -> Or\input1; + EndstopMin\collision -> Or\input2; + Hin -> MatrixMul\input2; + Integrate\output -> Splitter2\input; + MatrixMul\output -> Hout; + OneJunction\flow -> Integrate\input 320 272; + OneJunction\p <= EndstopMax\p2; + OneJunction\p <= EndstopMin\p2; + OneJunction\p => Rjoint\p; + OneJunction\p => uTbai\p1; + p <= Wbai\p; + p1 => ZeroJunction\p; + p2 => AdHji\p2; + Splitter2\output -> AdHji\H 424 368; + Splitter2\output -> MatrixMul\input1; + Tbai\p => Wbai\p; + uTbai\p2 => Tbai\p; + Wbai\p <= AdHji\p1; + ZeroJunction\p => OneJunction\p; + end; + parameterrelations +EndstopMin\Rendstop = Rendstop; +EndstopMin\Cendstop = Cendstop; +EndstopMin\InitialPos = InitialPos; +EndstopMin\EndstopPos = MinEndstopPos; +EndstopMax\Rendstop = Rendstop; +EndstopMax\Cendstop = Cendstop; +EndstopMax\InitialPos = InitialPos; +EndstopMax\EndstopPos = MaxEndstopPos; +Rjoint\Rjoint= Rjoint; +Integrate\init = InitialPos; +uTbai\Rconstraint = Rconstraint; +uTbai\Cconstraint = Cconstraint;parameterrelations_end; + figures + text 'b = next link (body) +a = previous link (body) +i = Frame fixed in previous body, fixed in joint +j = Frame fixed in next body, fixed in joint + ' 744 400 color 0; + implementation_end; + Link 408 512 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 + figures + rectangle 376 472 440 552 color 0 fill 8454041; + text 'name' 408 496 color 0 'Clear Sans' 16; + terminals + Hin 376 536 fixed; + Hout 440 536 fixed; + Pin 440 488 fixed; + Pout 376 488 fixed; + end; + implementation eq +parameters + real offset[3]= [0.167; 0.00001; 0.142]; //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; + Link1 640 512 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 + figures + rectangle 608 472 672 552 color 0 fill 8454041; + text 'name' 640 496 color 0 'Clear Sans' 16; + terminals + Hin 608 536 fixed; + Hout 672 536 fixed; + Pin 672 488 fixed; + Pout 608 488 fixed; + end; + implementation eq +parameters + real offset[3]= [0.167;1e-005;0.142]; //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; + Link2 912 512 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 + figures + rectangle 880 472 944 552 color 0 fill 8454041; + text 'name' 912 496 color 0 'Clear Sans' 16; + terminals + Hin 880 536 fixed; + Hout 944 536 fixed; + Pin 944 488 fixed; + Pout 880 488 fixed; + end; + implementation eq +parameters + real offset[3]= [0.167;0.0001;0.142]; //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 1120 512 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 + figures + rectangle 1088 472 1152 552 color 0 fill 8454041; + text 'name' 1120 496 color 0 'Clear Sans' 16; + terminals + Hin 1088 536 fixed; + Hout 1152 536 fixed; + Pin 1152 488 fixed; + Pout 1088 488 fixed; + end; + implementation eq +parameters + real offset[3]= [0.167;0.0001;0.142]; //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; + Link4 1328 512 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 + figures + rectangle 1296 472 1360 552 color 0 fill 8454041; + text 'name' 1328 496 color 0 'Clear Sans' 16; + terminals + Hin 1296 536 fixed; + Hout 1360 536 fixed; + Pin 1360 488 fixed; + Pout 1296 488 fixed; + end; + implementation eq +parameters + real offset[3]= [0.167;0.0001;0.142]; //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; + OneJunction 200 256 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + 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' 200 256 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction1 304 488 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + 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' 304 488 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction3 488 160 + description ' + + 4.2 +1 + False + Bond Graph\ZeroJunction.emx + 2011-11-29 16:45:16 + +'; + knot ZeroJunction + ports + power knot duplicatable none p [1]; + signal knot out effort [1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 488 160 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + Sf 128 256 + description '4.01False + Bond Graph\3D\Sf-3.emx + 2007-9-25 12:11:58 +'; + type 'Sf-3' + ports + power out p [6,1]; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 128 256 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; + Sf1 256 488 + description '4.01False + Bond Graph\3D\Sf-3.emx + 2007-9-25 12:11:58 +'; + type 'Sf-3' + ports + power out p [6,1]; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 256 488 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 296 96 + 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 292.8 92.8 299.2 99.2 color -1 fill 0; + ellipse 291.7 91.7 300.3 100.3 color -1; + terminals + input 296 96 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter2 232 336 + description '4.0 + Signal\Block Diagram\Splitter.emx + 2008-01-17 11:28:29 +1 + False +'; + knot Splitter + ports + signal knot duplicatable out output [4,4]; + signal knot in input [4,4]; + end; + icon bg ellipse + figures + ellipse 228.8 332.8 235.2 339.2 color -1 fill 0; + ellipse 227.7 331.7 236.3 340.3 color -1; + terminals + input 232 336 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter3 400 96 + 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 396.8 92.8 403.2 99.2 color -1 fill 0; + ellipse 395.7 91.7 404.3 100.3 color -1; + terminals + input 400 96 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter4 232 536 + 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 228.8 532.8 235.2 539.2 color -1 fill 0; + ellipse 227.7 531.7 236.3 540.3 color -1; + terminals + input 232 536 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Submodel1 296 144 + description ' + 4.8 + 1 + '; + type Submodel + ports + signal in input; + power out p2; + end; + implementation bg + submodels + Gain1 552 88 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 536.1 72 567.9 104 color 0 fill 15132390; + text 'K' 552 88 color 16711680 16 bold; + end; + implementation eq +parameters + real K = 12.0; // gain +equations + output = K * input; + implementation_end; + GY 624 184 + description ' + + 4.2 +1 + False + Bond Graph\GY.emx + 2011-11-29 15:53:45 + +'; + type GY + ports + power in p1; + power out p2; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'GY' 624 184 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.127; +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe 624 88 + 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' 624 88 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug input 424 88; + plug p2 624 220; + OneJunction2 624 136 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 624 136 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + R 664 136 + 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' 664 136 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.08; +equations + p.e = r * p.f; +implementation_end; + SignalLimiter2 488 88 + 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 472 72 504 104 color 0 fill 15132390; + line 487.9 76.5 487.9 101 color 0 fill 15132390; + line 475 88.2 500.7 88.2 color 0 fill 15132390; + spline 481.9 95.1 493.9 81.4 color 16711680 fill 15132390 width 2; + spline 493.3 82.2 501.9 81.8 color 16711680 fill 15132390 width 2; + spline 475 95.6 481.9 95.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 1; + real minimum = -1; +equations + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Gain1\output -> MSe\effort; + GY\p2 => p2; + input -> SignalLimiter2\input; + MSe\p => OneJunction2\p; + OneJunction2\p => GY\p1; + R\p <= OneJunction2\p; + SignalLimiter2\output -> Gain1\input; + end; + implementation_end; + Submodel2 488 96 + description ' + 4.8 + 1 + '; + type Submodel + ports + signal in input; + power out p2; + end; + implementation bg + submodels + Gain1 552 88 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 536.1 72 567.9 104 color 0 fill 15132390; + text 'K' 552 88 color 16711680 16 bold; + end; + implementation eq +parameters + real K = 12.0; // gain +equations + output = K * input; + implementation_end; + GY 624 184 + description ' + + 4.2 +1 + False + Bond Graph\GY.emx + 2011-11-29 15:53:45 + +'; + type GY + ports + power in p1; + power out p2; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'GY' 624 184 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.127; +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe 624 88 + 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' 624 88 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug input 424 88; + plug p2 624 220; + OneJunction2 624 136 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 624 136 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + R 664 136 + 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' 664 136 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.08; +equations + p.e = r * p.f; +implementation_end; + SignalLimiter2 488 88 + 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 472 72 504 104 color 0 fill 15132390; + line 487.9 76.5 487.9 101 color 0 fill 15132390; + line 475 88.2 500.7 88.2 color 0 fill 15132390; + spline 481.9 95.1 493.9 81.4 color 16711680 fill 15132390 width 2; + spline 493.3 82.2 501.9 81.8 color 16711680 fill 15132390 width 2; + spline 475 95.6 481.9 95.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 1; + real minimum = -1; +equations + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Gain1\output -> MSe\effort; + GY\p2 => p2; + input -> SignalLimiter2\input; + MSe\p => OneJunction2\p; + OneJunction2\p => GY\p1; + R\p <= OneJunction2\p; + SignalLimiter2\output -> Gain1\input; + end; + implementation_end; + Submodel7 1464 656 + 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]; + signal out output; + end; + implementation eq +variables + real position[3]; + real rotation[3]; +equations + // start typing here + position = input[1:3,4]; + rotation = [input[3,2];input[1,3];input[2,1]]; + implementation_end; + Wtip0 664 256 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'Se' 664 256 color 0 18 bold; + end; + implementation eq +parameters + real effort = 0.0; +variables + real flow[6]; +equations + p.e = effort; + flow = p.f; +implementation_end; + Wtip1 1504 488 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'Se' 1504 488 color 0 18 bold; + end; + implementation eq +parameters + real effort = 0.0; +variables + real flow[6]; +equations + p.e = effort; + flow = p.f; +implementation_end; + ZeroJunction2 808 232 + description ' + + 4.2 +1 + False + Bond Graph\ZeroJunction.emx + 2011-11-29 16:45:16 + +'; + knot ZeroJunction + ports + power knot duplicatable none p [1]; + signal knot out effort [1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 808 232 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 + Base\Hout -> JointBase1\Hin; + Base\p => JointBase2\p2; + Base1\p => JointBase1\p2; + Base2\Hout -> Link1\Hin; + Base2\p1 <= Link1\Pout; + Base3\Hin <- Link2\Hout; + Base3\Hout -> Link3\Hin; + Base4\Hin <- Link4\Hout; + Base4\Hout -> Submodel7\input; + Constant\output -> Splitter2\input; + Constant1\output -> Splitter1\input; + Joint\p => Link3\Pin; + Joint\p2 <= Link4\Pout; + JointBase1\Hout -> Base1\Hin; + JointBase1\p => Base\p1; + JointBase2\Hout -> Base\Hin; + JointBase2\p => OneJunction\p; + JointBase3\Hout -> Link2\Hin; + JointBase3\p => Link1\Pin; + JointBase3\p1 <= ZeroJunction2\p; + JointBase3\p2 <= Link2\Pout; + Link\Hout -> Base2\Hin; + Link\Pin <= Base2\p; + Link1\Hout -> JointBase3\Hin; + Link2\Pin <= Base3\p; + Link3\Hout -> Joint\Hin; + Link3\Pout => Base3\p1; + Link4\Hin <- Joint\Hout; + Link4\Pin <= Base4\p; + OneJunction\p <= Sf\p; + OneJunction1\p <= Link\Pout; + OneJunction1\p <= Sf1\p; + OneJunction3\p => JointBase1\p1; + Splitter1\output -> Splitter3\input; + Splitter1\output -> Submodel1\input; + Splitter2\output -> JointBase2\Hin; + Splitter2\output -> Splitter4\input; + Splitter3\output -> Submodel2\input; + Splitter4\output -> Link\Hin; + Submodel1\p2 => JointBase2\p1; + Submodel2\p2 => OneJunction3\p; + Wtip0\p => Base1\p1; + Wtip1\p => Base4\p1; + ZeroJunction2\p <= OneJunction3\p 808 160; + ZeroJunction2\p => Joint\p1; + end; + implementation_end; +]]> + + + + + + + Experiment 1 + + + + 4.8 + + + + + + + + + epsilon + 0 + + + + + Base1\InertialTensor\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + Base3\InertialTensor\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + Base4\InertialTensor\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + Base\InertialTensor\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + JointBase1\EndstopMax\Cendstop\state_initial + 0 + + + JointBase1\EndstopMin\Cendstop\state_initial + 0 + + + JointBase2\EndstopMax\Cendstop\state_initial + 0 + + + JointBase2\EndstopMin\Cendstop\state_initial + 0 + + + JointBase3\EndstopMax\Cendstop\state_initial + 0 + + + JointBase3\EndstopMin\Cendstop\state_initial + 0 + + + Joint\EndstopMax\Cendstop\state_initial + 0 + + + Joint\EndstopMin\Cendstop\state_initial + 0 + + + Joint\JointType\uTbai\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + new_state1_initial + 0 + + + new_state10_initial + 0 + + + new_state11_initial + 0 + + + new_state12_initial + 0 + + + new_state13_initial + 0 + + + new_state14_initial + 0 + + + new_state15_initial + 0 + + + new_state2_initial + 0 + + + new_state3_initial + 0 + + + new_state4_initial + 0 + + + new_state5_initial + 0 + + + new_state6_initial + 0 + + + new_state7_initial + 0 + + + new_state8_initial + 0 + + + new_state9_initial + 0 + + + Joint\EndstopMax\Collision\p12.f_initial + 0 + + + Joint\EndstopMin\Collision\p12.f_initial + 0 + + + Joint\Rjoint\p.e_initial + 0 + + + Submodel2\R\p.f_initial + 0 + + + + + + time + Submodel7\position[1] + Submodel7\position[2] + Submodel7\position[3] + Submodel7\rotation[1] + Submodel7\rotation[2] + Submodel7\rotation[3] + + + + 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 + true + false + + + 0.0 + 10.0 + true + 3 + + + + + + -1.0 + 1.0 + true + 2 + + + + -0.5 + 0.5 + true + 2 + + + + -0.5 + 0.5 + true + 2 + + + + -0.5 + 0.5 + true + 2 + + + + -0.5 + 0.5 + true + 2 + + + + -0.5 + 0.5 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Submodel7\position[1] + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Submodel7\position[2] + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Submodel7\position[3] + + + + 15086320 + 1 + 15086320 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Submodel7\rotation[1] + + + + 15790150 + 1 + 15790150 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Submodel7\rotation[2] + + + + 1696255 + 1 + 1696255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Submodel7\rotation[3] + + + + + true + 0 + 16777215 + + + + D3DPlot + + 2 + false + 16777215 + true + + 3D Animation + 137 + true + false + 4294967295 + Gradients\BlueWhite.png + true + 1.0 + 1.0 + + + + + 1 + + + 1 + + + 1 + + + true + Reference Frame + + + + + + Bryant + + false + false + false + false + false + false + + + + + 1 + + + 1 + + + 1 + + + false + Default Lights and Cameras + + + + + + Bryant + + false + false + false + false + false + false + + + false + Ambient + + + + + + 1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0 + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + + 1 + + + 1 + + + 1 + + + true + + true + false + false + + + false + Parallel + + + -3 + + + 5 + + + 3 + + + + + + 0.457495710997814 + + + -0.762492851663023 + + + -0.457495710997814 + + + + + 0.235379601434674 + + + -0.392299335724456 + + + 0.889211827642101 + + + Direct3D + + false + false + false + false + false + false + + + 3 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.0 + + + 0.0 + + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 1 + + + -3 + + + -5 + + + 1 + + + + + + 0.50709255283711 + + + 0.845154254728517 + + + -0.169030850945703 + + + + + 0.0869656553478673 + + + 0.144942758913112 + + + 0.985610760609162 + + + Direct3D + + false + false + false + false + false + false + + + 2 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.0471975511965976 + + + 1.0471975511965976 + + 0.0 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 2 + + + 2 + + + -3 + + + -1 + + + + + + -0.534522483824849 + + + 0.801783725737273 + + + 0.267261241912424 + + + + + 0.14824986333222 + + + -0.22237479499833 + + + 0.963624111659432 + + + Direct3D + + false + false + false + false + false + false + + + 2 + + + + 1 + + + 1 + + + 1 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.5707963267948966 + + + 1.5707963267948966 + + 0.0 + + + + 1 + + + 1 + + + 1 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Camera Looking at Origin + + + 8 + + + 4 + + + 4 + + + + + + -0.816496580927726 + + + -0.408248290463863 + + + -0.408248290463863 + + + + + -0.365148371670111 + + + -0.182574185835055 + + + 0.912870929175277 + + + 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 + + + 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 + + +
Center
+ 1.0 + true + 4 + + + 1 + + + 1 + + + 1 + + + true + + + 1 + + + 1 + + + 1 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Block + + + + + + Bryant + + false + false + false + false + false + false + + +
+
+ +
+ +
+
+
+ + + 1 + true + Window 1 + 0 + + 1 + + Base + + + 2 + false + Window 2 + 0 + + 2 + + Base + + + + +0.330208 0.32963 0.669792 0.67037 + + +0.133333 0.00462963 0.895833 0.776852 + + +
+ + + 0.0 + 10.0 + false + true + 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 + + 7 + + + + 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/03_motor/MR_dynamics2.emx b/implementation/SCARA/03_motor/MR_dynamics2.emx new file mode 100644 index 0000000..62af5ae --- /dev/null +++ b/implementation/SCARA/03_motor/MR_dynamics2.emx @@ -0,0 +1,6251 @@ + + + + + + 4.8 +0 + False + C:\users\wouter\My Documents\studie\ma\mahd\implementation\SCARA\03_motor\MR_dynamics2.emx + 2020-7-17 15:47:18 + +'; + type Mainmodel + end; + implementation bg + submodels + Base 392 296 + description ' + + 4.8 +1 + False + True + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link.emx + 2020-7-16 14:21:54 +Base + +'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + parameters + real I[3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6] {N.m.s}; + real m = 0.00455 {kg}; + real COMdim[3,1] = [0.0; 0.0325; 0.0] {m}; + real dim[3,1] = [0.0; 0.065; 0.0] {m}; + end; + icon bg bottom + figures + rectangle 360 224 424 368 color 0 fill 10025880; + text 'Link' 392 296 color 0; + terminals + p 360 256 fixed; + Hin 360 336 fixed; + p1 424 256 fixed; + Hout 424 336 fixed; + end; + implementation bg + submodels + AdHi0 544 416 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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 416 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; + AdHij 864 304 + 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 top + figures + text 'MTF' 864 304 color 0 18 bold; + end; + implementation eq +equations + //Only rotations with respect to the inertial system matter! + + p1.e = transpose(Adjoint(H)) * p2.e; + p2.f = Adjoint(H) * p1.f; +implementation_end; + AdHik 544 248 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1 [6,1]; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + parameters + real COMdim[3,1] = [0.0; 0.0325; 0.0]; + end; + icon bg left + figures + text 'TF' 544 248 color 0 18 bold; + end; + implementation eq +//Frame in joint connected to port 1 +//Principal inertial frame connected in port 2 +variables + real d[3]; //distance between frames + real R[3,3]; //rotation between frames + + real H[4,4]; //homogeneous matrix + real AdH[6,6]; //Adjoint of homogeneous matrix +equations + d = COMdim; //distance of 1 in z direction of frames + R = eye(3); //no rotation + + H = homogeneous(R,d); + AdH = Adjoint(H); + + p1.f = AdH * p2.f; + p2.e = transpose(AdH) * p1.e; +implementation_end; + AdHik1 544 360 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1 [6,1]; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + parameters + real COMdim[3,1] = [0.0; 0.0325; 0.0]; + end; + icon bg left + figures + text 'TF' 544 360 color 0 18 bold; + end; + implementation eq +//Frame in joint connected to port 1 +//Principal inertial frame connected in port 2 +variables + real d[3]; //distance between frames + real R[3,3]; //rotation between frames + + real H[4,4]; //homogeneous matrix + real AdH[6,6]; //Adjoint of homogeneous matrix +equations + d = COMdim; //distance of 1 in z direction of frames + R = eye(3); //no rotation + + H = homogeneous(R,d); + AdH = Adjoint(H); + + p1.f = AdH * p2.f; + p2.e = transpose(AdH) * p1.e; +implementation_end; + EJS 608 184 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + parameters + real I[3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6]; + real m = 0.00455; + end; + icon bg top + figures + text 'MGY' 608 184 color 0 18 bold; + end; + implementation eq +//EJS / Gyroscopic effects +variables + real II[6,6]; //Inertial tensor + real Q[6,6]; + real QI[6,6]; + real v[3]; + real omega[3]; +equations + II = [ I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + v[1:3] = p1.f[4:6]; + omega[1:3] = p1.f[1:3]; + + Q[1:3,1:3] = -skew(omega); + Q[1:3,4:6] = -skew(v); + Q[4:6,1:3] = [0,0,0;0,0,0;0,0,0];//matrix filled with zeros + Q[4:6,4:6] = -skew(omega); + QI = Q*II; + + p1.e = QI*p1.f;implementation_end; + Gravity 656 416 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + parameters + real m = 0.00455; + end; + icon bg bottom + figures + text 'Se' 656 416 color 0 18 bold; + end; + implementation eq +variables + real effort[6]; +equations + effort = [0;0;0;0;0;-9.8*m]; + p.e = effort; +implementation_end; + Hij 864 496 + description ' + 4.1 +1 + False + H.emx + 2010-9-21 15:03:50 +True +'; + type Gain + ports + signal in input [4,4]; + signal out output [4,4]; + signal out Hab [4,4]; + parameters + real dim[3,1] = [0.0; 0.065; 0.0]; + end; + icon bg bottom + figures + rectangle 848.1 480 879.9 512 color 0 fill 15132390; + text 'H' 864 496 color 16711680 16 bold; + end; + implementation eq +equations + Hab = homogeneous(eye(3),dim); + output = input * Hab; + implementation_end; + InertialTensor 480 184 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + parameters + real m = 0.00455; + real I[3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6]; + end; + icon bg top + figures + text 'I' 480 184 color 0 18 bold; + end; + implementation eq +variables + real II[6,6]; //Inertial tensor +equations + II = [I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + + state = int(p.e); //state = generalized momentum + p.f = inverse(II)*state; +implementation_end; + plug Hout 984 496; + plug p1 984 304; + plug Hin 472 496; + plug p 472 304; + 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; + Ta00 600 416 + 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' 600 416 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0j 544 304 + 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 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 544 184 + 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 top + figures + text '1' 544 184 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => AdHik1\p1; + AdHij\p1 => Ta0j\p; + AdHik\p2 => Ta0k\p; + AdHik1\p2 => Ta0j\p; + Gravity\p => Ta00\p; + Hij\Hab -> AdHij\H; + Hij\output -> Hout; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => AdHij\p2; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hij\input; + Ta00\p => AdHi0\p1; + Ta0j\p => AdHik\p1; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + Base1 584 296 + description ' + + 4.8 +1 + False + True + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link.emx + 2020-7-16 14:21:54 +Base + +'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + parameters + real I[3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6] {N.m.s}; + real m = 0.00455 {kg}; + real COMdim[3,1] = [0.0; 0.025; 0.0] {m}; + real dim[3,1] = [0.0; 0.05; 0.0] {m}; + end; + icon bg bottom + figures + rectangle 552 224 616 368 color 0 fill 10025880; + text 'Link' 584 296 color 0; + terminals + p 552 256 fixed; + Hin 552 336 fixed; + p1 616 256 fixed; + Hout 616 336 fixed; + end; + implementation bg + submodels + AdHi0 664 416 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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' 664 416 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; + AdHij 816 304 + 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 top + figures + text 'MTF' 816 304 color 0 18 bold; + end; + implementation eq +equations + //Only rotations with respect to the inertial system matter! + + p1.e = transpose(Adjoint(H)) * p2.e; + p2.f = Adjoint(H) * p1.f; +implementation_end; + AdHik 664 248 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1 [6,1]; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + parameters + real COMdim[3,1] = [0.0; 0.025; 0.0]; + end; + icon bg left + figures + text 'TF' 664 248 color 0 18 bold; + end; + implementation eq +//Frame in joint connected to port 1 +//Principal inertial frame connected in port 2 +variables + real d[3]; //distance between frames + real R[3,3]; //rotation between frames + + real H[4,4]; //homogeneous matrix + real AdH[6,6]; //Adjoint of homogeneous matrix +equations + d = COMdim; //distance of 1 in z direction of frames + R = eye(3); //no rotation + + H = homogeneous(R,d); + AdH = Adjoint(H); + + p1.f = AdH * p2.f; + p2.e = transpose(AdH) * p1.e; +implementation_end; + AdHik1 664 360 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power out p1 [6,1]; + power in p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + parameters + real COMdim[3,1] = [0.0; 0.025; 0.0]; + end; + icon bg left + figures + text 'TF' 664 360 color 0 18 bold; + end; + implementation eq +//Principal inertial frame connected in port 2 +variables + real d[3]; //distance between frames + real R[3,3]; //rotation between frames + + real H[4,4]; //homogeneous matrix + real AdH[6,6]; //Adjoint of homogeneous matrix +equations + d = COMdim; //distance of 1 in z direction of frames + R = eye(3); //no rotation + + H = homogeneous(R,d); + AdH = Adjoint(H); + + p1.f = AdH * p2.f; + p2.e = transpose(AdH) * p1.e; +implementation_end; + EJS 728 184 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + parameters + real I[3,1] = [7.583e-7; 3.6458e-8; 7.364583e-7]; + real m = 0.0035; + end; + icon bg top + figures + text 'MGY' 728 184 color 0 18 bold; + end; + implementation eq +//EJS / Gyroscopic effects +variables + real II[6,6]; //Inertial tensor + real Q[6,6]; + real QI[6,6]; + real v[3]; + real omega[3]; +equations + II = [ I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + v[1:3] = p1.f[4:6]; + omega[1:3] = p1.f[1:3]; + + Q[1:3,1:3] = -skew(omega); + Q[1:3,4:6] = -skew(v); + Q[4:6,1:3] = [0,0,0;0,0,0;0,0,0];//matrix filled with zeros + Q[4:6,4:6] = -skew(omega); + QI = Q*II; + + p1.e = QI*p1.f;implementation_end; + Gravity 776 416 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + parameters + real m = 0.0035; + end; + icon bg bottom + figures + text 'Se' 776 416 color 0 18 bold; + end; + implementation eq +variables + real effort[6]; +equations + effort = [0;0;0;0;0;-9.8*m]; + p.e = effort; +implementation_end; + Hij 816 496 + description ' + 4.1 +1 + False + H.emx + 2010-9-21 15:03:50 +True +'; + type Gain + ports + signal in input [4,4]; + signal out output [4,4]; + signal out Hab [4,4]; + parameters + real dim[3,1] = [0.0; 0.05; 0.0]; + end; + icon bg bottom + figures + rectangle 800.1 480 831.9 512 color 0 fill 15132390; + text 'H' 816 496 color 16711680 16 bold; + end; + implementation eq +equations + Hab = homogeneous(eye(3),dim); + output = input * Hab; + implementation_end; + InertialTensor 600 184 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + parameters + real m = 0.0035; + real I[3,1] = [7.583e-7; 3.6458e-8; 7.364583e-7]; + end; + icon bg top + figures + text 'I' 600 184 color 0 18 bold; + end; + implementation eq +variables + real II[6,6]; //Inertial tensor +equations + II = [I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + + state = int(p.e); //state = generalized momentum + p.f = inverse(II)*state; +implementation_end; + plug Hout 896 496; + plug p1 904 304; + plug Hin 592 496; + plug p 592 304; + Splitter1 664 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 660.8 492.8 667.2 499.2 color -1 fill 0; + ellipse 659.7 491.7 668.3 500.3 color -1; + terminals + input 664 496 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Ta00 720 416 + 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' 720 416 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0j 664 304 + 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' 664 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 664 184 + 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 top + figures + text '1' 664 184 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => AdHik1\p2; + AdHik\p2 => Ta0k\p; + Gravity\p => Ta00\p; + Hij\Hab -> AdHij\H; + Hij\output -> Hout; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => AdHij\p2; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hij\input; + Ta00\p => AdHi0\p1; + Ta0j\p <= AdHij\p1; + Ta0j\p <= AdHik1\p1; + Ta0j\p => AdHik\p1; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + Base2 888 504 + description '4.81FalseTrueBond Graph\MR\center_of_mass.emx2020-7-17 13:52:18Baseparameters + real I [3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6] {N.m.s}; + real m = 0.00455 {kg};'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + end; + icon bg bottom + figures + rectangle 856 464 920 544 color 0 fill 255; + text 'COM' 888 488 color 0; + terminals + p 856 480 fixed; + Hin 856 528 fixed; + p1 920 480 fixed; + Hout 920 528 fixed; + end; + implementation bg + submodels + AdHi0 544 400 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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 256 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + end; + icon bg top + figures + text 'MGY' 616 256 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 616 400 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'Se' 616 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 480 256 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + end; + icon bg top + figures + text 'I' 480 256 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 472 496; + plug p1 752 304; + plug Hout 768 496; + plug p 472 304; + 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 304 + 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 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 544 256 + 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 top + figures + text '1' 544 256 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => Ta0j\p; + Gravity\p => AdHi0\p1; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => Ta0j\p; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hout; + Ta0j\p => Ta0k\p; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + Base3 544 504 + description ' + + 4.8 +1 + False + True + Bond Graph\MR\center_of_mass.emx + 2020-7-17 13:52:18 +Base + +'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + end; + icon bg bottom + figures + rectangle 512 464 576 544 color 0 fill 255; + text 'COM' 544 488 color 0; + terminals + p 512 480 fixed; + Hin 512 528 fixed; + p1 576 480 fixed; + Hout 576 528 fixed; + end; + implementation bg + submodels + AdHi0 544 400 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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 256 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + parameters + real I[3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6]; + real m = 0.00455; + end; + icon bg top + figures + text 'MGY' 616 256 color 0 18 bold; + end; + implementation eq +//EJS / Gyroscopic effects +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 616 400 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + parameters + real m = 0.00455; + end; + icon bg bottom + figures + text 'Se' 616 400 color 0 18 bold; + end; + implementation eq +variables + real effort[6]; +equations + effort = [0;0;0;0;0;-g_n*m]; + p.e = effort; +implementation_end; + InertialTensor 472 256 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + parameters + real m = 0.00455; + real I[3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6]; + end; + icon bg top + figures + text 'I' 472 256 color 0 18 bold; + end; + implementation eq +variables + real II[6,6]; //Inertial tensor +equations + II = [I[1],0, 0, 0, 0, 0; + 0, I[2],0, 0, 0, 0; + 0, 0, I[3],0, 0, 0; + 0, 0, 0, m, 0, 0; + 0, 0, 0, 0, m, 0; + 0, 0, 0, 0, 0, m]; + + state = int(p.e); //state = generalized momentum + p.f = inverse(II)*state; +implementation_end; + plug Hin 472 496; + plug p1 616 304; + plug Hout 616 496; + plug p 472 304; + 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 304 + 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 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 544 256 + 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 top + figures + text '1' 544 256 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => Ta0j\p; + Gravity\p => AdHi0\p1; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => Ta0j\p; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hout; + Ta0j\p => Ta0k\p; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + Constant 168 336 + description ' + 4.0 + 1 + False + Signal\Sources\Constant.emx + 2007-10-19 14:48:44 + True +'; + type Constant + ports + signal out output [4,4]; + end; + icon bg bottom + figures + rectangle 152.1 320 183.9 352 color 0 fill 15132390; + line 156.9 331.6 178.9 331.6 color 16711680 width 2; + line 154.2 342.7 179.9 342.7 color 0; + line 156.5 326.7 156.5 345 color 0; + end; + implementation eq +equations + output = eye(4); + implementation_end; + Constant1 296 48 + description '4.01False + Signal\Sources\Constant.emx + 2007-10-19 14:48:44 +'; + type Constant + ports + signal out output; + end; + icon bg bottom + figures + rectangle 280.1 32 311.9 64 color 0 fill 15132390; + line 284.9 43.6 306.9 43.6 color 16711680 width 2; + line 282.2 54.7 307.9 54.7 color 0; + line 284.5 38.7 284.5 57 color 0; + end; + implementation eq +parameters + real C = 1.0; // output value +equations + output = C; + implementation_end; + Constant2 480 688 + description '4.01False + Signal\Sources\Constant.emx + 2007-10-19 14:48:44 +'; + type Constant + ports + signal out output; + end; + icon bg bottom + figures + rectangle 464.1 672 495.9 704 color 0 fill 15132390; + line 468.9 683.6 490.9 683.6 color 16711680 width 2; + line 466.2 694.7 491.9 694.7 color 0; + line 468.5 678.7 468.5 697 color 0; + end; + implementation eq +parameters + real C = 1.0; // output value +equations + output = C; + implementation_end; + Joint 384.1 502 + description ' + + 4.8 +1 + False + True + Bond Graph\MR\joint-v2.emx + 2020-7-17 15:47:03 + +'; + type 'Submodel-rotz' + ports + power out p [6,1]; + power in p1; + power in p2 [6,1]; + signal in Hin [4,4]; + signal out Hout [4,4]; + end; + icon bg bottom + figures + rectangle 352.2 464 416 540 color 0 fill 14745599; + text 'Joint' 384 496 color 0; + terminals + p 352 480 fixed; + p1 384 464 fixed; + p2 416 480 fixed; + Hin 352 528 fixed; + Hout 416 528 fixed; + end; + implementation bg + submodels + AdHji 416 328 + 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' 416 328 color 0 18 bold; + end; + implementation eq +equations + p2.e = transpose(Adjoint(H)) * p1.e; + p1.f = Adjoint(H) * p2.f;implementation_end; + JointType 232 216 + description '4.81FalseTrueparameters + real joint = 3;'; + type Submodel + ports + mechanical in p1; + signal out output [4,4]; + power out p2 [6,1]; + end; + implementation bg + submodels + Integrate 320 272 + description ' + 4.0 + 1 + False + Signal\Block Diagram\Integrate.emx + 2007-9-26 12:3:23 + True +'; + type Integrate + ports + signal in input; + signal out output [4,4]; + parameters + real init = -2.9496; + end; + icon bg + figures + rectangle 304 256 336 288 color 0 fill 15132390; + text 'ò' 320 269.3 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +parameters + real global joint; +variables + real R[3,3]; + real p[3]; + real q; + real qa[6]; + real temp [4,4]; +initialequations + qa = 0; +equations +q = -int(input,init); +qa[joint] = q; +R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',qa); +output = homogeneous(R,qa[4:6]);implementation_end; + plug p1 240 188; + plug output 320 368; + plug p2 240 412; + OneJunction2 240 271.9 + description ' + + 4.2 +1 + False + Bond Graph\FlowSensor.emx + 2011-11-29 15:50:53 + +'; + knot FlowSensor + ports + mechanical knot in p1 [1]; + power knot out p2 [1]; + signal knot out flow [1]; + restrictions + causality constraint not_equal p1 p2; + end; + icon bg ellipse + figures + ellipse 233.1 264.8 246.9 279.1 color 0 fill 16777215; + text 'f' 240 271.2 color 0; + end; + implementation eq +equations + p2.f = p1.f; + p1.e = p2.e; + flow = p1.f; +implementation_end; + uTbai 240 328 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + causality fixed in p1; + causality fixed out p2; + parameters + real Cconstraint = 1.0e-4; + real Rconstraint = 1000.0; + end; + icon bg left + figures + text 'TF' 240 328 color 0 18 bold; + end; + implementation eq +parameters + real global joint; +variables + real i; + real state[6]; +equations + /*p2.e[1] = (Rconstraint*-p2.f[1] + int(-p2.f[1])/Cconstraint); + p2.e[2] = (Rconstraint*-p2.f[2] + int(-p2.f[2])/Cconstraint); + p2.e[3] = p1.e; + p2.e[4] = (Rconstraint*-p2.f[4] + int(-p2.f[4])/Cconstraint); + p2.e[5] = (Rconstraint*-p2.f[5] + int(-p2.f[5])/Cconstraint); + p2.e[6] = (Rconstraint*-p2.f[6] + int(-p2.f[6])/Cconstraint); + + p1.f = p2.f[3];*/ + state = int(p2.f); + for i = 1 to 6 do + if i == joint then + p1.f = p2.f[i]; + p2.e[i] = p1.e; + else + p2.e[i] = (Rconstraint*-p2.f[i] + -state[i]/Cconstraint); + end; + end; +implementation_end; + end; + connections + Integrate\output -> output; + OneJunction2\flow -> Integrate\input; + OneJunction2\p2 => uTbai\p1; + p1 => OneJunction2\p1; + uTbai\p2 => p2; + end; + implementation_end; + MatrixMul 312 480 + 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 296.1 464 327.9 496 color 0 fill 15132390; + text 'X' 312 480 color 16711680 16 bold; + end; + implementation eq +variables + real temp[4,4]; +equations + output = input2*input1; + temp = input2*input1; implementation_end; + plug p 104 328; + plug p1 232 88; + plug p2 488 328; + plug Hin 104 480; + plug Hout 496 480; + Splitter2 312 216 + 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 308.8 212.8 315.2 219.2 color -1 fill 0; + ellipse 307.7 211.7 316.3 220.3 color -1; + terminals + input 312 216 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Wbai 232 328 + 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' 232 328 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 + Hin -> MatrixMul\input2; + JointType\output -> Splitter2\input; + JointType\p2 => Wbai\p; + MatrixMul\output -> Hout; + p <= Wbai\p; + p1 => JointType\p1; + p2 => AdHji\p2; + Splitter2\output -> AdHji\H 416 216; + Splitter2\output -> MatrixMul\input1; + Wbai\p <= AdHji\p1; + end; + parameterrelations +EndstopMin\Rendstop = Rendstop; +EndstopMin\Cendstop = Cendstop; +EndstopMin\InitialPos = InitialPos; +EndstopMin\EndstopPos = MinEndstopPos; +EndstopMax\Rendstop = Rendstop; +EndstopMax\Cendstop = Cendstop; +EndstopMax\InitialPos = InitialPos; +EndstopMax\EndstopPos = MaxEndstopPos; +Rjoint\Rjoint= Rjoint; +Integrate\init = InitialPos; +uTbai\Rconstraint = Rconstraint; +uTbai\Cconstraint = Cconstraint; + +parameterrelations_end; + figures + text 'b = next link (body) +a = previous link (body) +i = Frame fixed in previous body, fixed in joint +j = Frame fixed in next body, fixed in joint + ' 672 392 color 0; + implementation_end; + Joint1 728.1 502 + description ' + + 4.8 +1 + False + True + Bond Graph\MR\joint-v2.emx + 2020-7-17 14:55:32 + +'; + type 'Submodel-rotz' + ports + power out p [6,1]; + power in p1; + power in p2 [6,1]; + signal in Hin [4,4]; + signal out Hout [4,4]; + signal out q; + end; + icon bg bottom + figures + rectangle 696.2 464 760 540 color 0 fill 14745599; + text 'Joint' 728 496 color 0; + terminals + p 696 480 fixed; + p1 728 464 fixed; + p2 760 480 fixed; + Hin 696 528 fixed; + Hout 760 528 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; + JointType 240 312 + description '4.81FalseTrueparameters + real joint = 3;'; + type Submodel + ports + mechanical in p1; + signal out output [4,4]; + power out p2 [6,1]; + signal out q; + end; + implementation bg + submodels + Integrate 320 272 + description ' + 4.0 + 1 + False + Signal\Block Diagram\Integrate.emx + 2007-9-26 12:3:23 + True +'; + type Integrate + ports + signal in input; + signal out output [4,4]; + signal out q; + parameters + real init = -2.9496; + end; + icon bg + figures + rectangle 304 256 336 288 color 0 fill 15132390; + text 'ò' 320 269.3 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +parameters + real global joint; +variables + real R[3,3]; + real p[3]; + real qa[6]; + real temp [4,4]; +initialequations + qa = 0; +equations +q = -int(input,init); +qa[joint] = q; +R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',qa); +output = homogeneous(R,qa[4:6]);implementation_end; + plug p1 240 188; + plug output 320 416; + plug p2 240 412; + plug q 320 184; + OneJunction2 240 271.9 + description ' + + 4.2 +1 + False + Bond Graph\FlowSensor.emx + 2011-11-29 15:50:53 + +'; + knot FlowSensor + ports + mechanical knot in p1 [1]; + power knot out p2 [1]; + signal knot out flow [1]; + restrictions + causality constraint not_equal p1 p2; + end; + icon bg ellipse + figures + ellipse 233.1 264.8 246.9 279.1 color 0 fill 16777215; + text 'f' 240 271.2 color 0; + end; + implementation eq +equations + p2.f = p1.f; + p1.e = p2.e; + flow = p1.f; +implementation_end; + uTbai 240 328 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + causality fixed in p1; + causality fixed out p2; + parameters + real Cconstraint = 1.0e-4; + real Rconstraint = 1000.0; + end; + icon bg left + figures + text 'TF' 240 328 color 0 18 bold; + end; + implementation eq +parameters + real global joint; +variables + real i; + real state[6]; +equations + /*p2.e[1] = (Rconstraint*-p2.f[1] + int(-p2.f[1])/Cconstraint); + p2.e[2] = (Rconstraint*-p2.f[2] + int(-p2.f[2])/Cconstraint); + p2.e[3] = p1.e; + p2.e[4] = (Rconstraint*-p2.f[4] + int(-p2.f[4])/Cconstraint); + p2.e[5] = (Rconstraint*-p2.f[5] + int(-p2.f[5])/Cconstraint); + p2.e[6] = (Rconstraint*-p2.f[6] + int(-p2.f[6])/Cconstraint); + + p1.f = p2.f[3];*/ + state = int(p2.f); + for i = 1 to 6 do + if i == joint then + p1.f = p2.f[i]; + p2.e[i] = p1.e; + else + p2.e[i] = (Rconstraint*-p2.f[i] + -state[i]/Cconstraint); + end; + end; +implementation_end; + end; + connections + Integrate\output -> output; + Integrate\q -> q; + OneJunction2\flow -> Integrate\input; + OneJunction2\p2 => uTbai\p1; + p1 => OneJunction2\p1; + uTbai\p2 => p2; + end; + 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 p 112 424; + plug p1 240 40; + plug p2 496 424; + plug Hin 112 576; + plug Hout 504 576; + plug q 112 312; + 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 240 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' 240 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 + Hin -> MatrixMul\input2; + JointType\output -> Splitter2\input; + JointType\p1 <= p1; + JointType\p2 => Wbai\p; + JointType\q -> q; + MatrixMul\output -> Hout; + p <= Wbai\p; + p2 => AdHji\p2; + Splitter2\output -> AdHji\H 424 312; + Splitter2\output -> MatrixMul\input1; + Wbai\p <= AdHji\p1; + end; + parameterrelations +EndstopMin\Rendstop = Rendstop; +EndstopMin\Cendstop = Cendstop; +EndstopMin\InitialPos = InitialPos; +EndstopMin\EndstopPos = MinEndstopPos; +EndstopMax\Rendstop = Rendstop; +EndstopMax\Cendstop = Cendstop; +EndstopMax\InitialPos = InitialPos; +EndstopMax\EndstopPos = MaxEndstopPos; +Rjoint\Rjoint= Rjoint; +Integrate\init = InitialPos; +uTbai\Rconstraint = Rconstraint; +uTbai\Cconstraint = Cconstraint; + +parameterrelations_end; + figures + text 'b = next link (body) +a = previous link (body) +i = Frame fixed in previous body, fixed in joint +j = Frame fixed in next body, fixed in joint + ' 680 488 color 0; + implementation_end; + JointBase1 488.2 296 + description ' + 4.1 +1 + False + True + Joint-roty.emx + 2011-1-18 17:30:05 +'; + type 'Submodel-roty' + ports + power out p [6,1]; + power in p1; + power in p2 [6,1]; + signal in Hin [4,4]; + signal out Hout [4,4]; + parameters + real Rconstraint = 1000.0; + real Cconstraint = 1.0e-4; + real Rendstop = 1000.0; + real Cendstop = 1.0e-4; + real InitialPos = -1.13; + real MaxEndstopPos = 1.57; + real MinEndstopPos = -1.131; + real Rjoint = 0.1; + end; + icon bg bottom + figures + rectangle 456.5 224 520 368 color 0 fill 14745599; + text 'Joint-roty' 488.5 299 color 0; + terminals + p 456 256 fixed; + p1 487.5 224 fixed; + p2 520 256 fixed; + Hin 456 336 fixed; + Hout 520 336 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; + Integrate 320 336 + description ' + 4.0 + 1 + False + Signal\Block Diagram\Integrate.emx + 2007-9-26 12:3:23 + True +'; + type Integrate + ports + signal in input; + signal out output [4,4]; + parameters + real init = -2.9496; + end; + icon bg + figures + rectangle 304 320 336 352 color 0 fill 15132390; + text 'ò' 320 333.3 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +variables + real R[3,3]; + real p[3]; + real q; +equations +q = -int(input,init); +R = [ cos(q), -sin(q), 0; + sin(q), cos(q), 0; + 0, 0, 1]; +p = [0;0;0]; +output = homogeneous(R,p); + + implementation_end; + MatrixMul 320 496 + 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 480 335.9 512 color 0 fill 15132390; + text 'X' 320 496 color 16711680 16 bold; + end; + implementation eq +equations + output = input2*input1; implementation_end; + plug p1 240 56; + plug p2 496 424; + plug Hin 112 496; + plug Hout 504 496; + plug p 112 424; + OneJunction 240 272 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 240 272 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Rjoint 192 272 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rjoint = 0.1; + end; + icon bg bottom + figures + text 'R' 192 272 color 0 18 bold; + end; + implementation eq +equations + p.e = Rjoint * p.f; +implementation_end; + Splitter2 320 368 + 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 364.8 323.2 371.2 color -1 fill 0; + ellipse 315.7 363.7 324.3 372.3 color -1; + terminals + input 320 368 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Tbai 240 384 + 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 left + figures + text '1' 240 384 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + uTbai 240 328 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + causality fixed in p1; + causality fixed out p2; + parameters + real Cconstraint = 1.0e-4; + real Rconstraint = 1000.0; + end; + icon bg left + figures + text 'TF' 240 328 color 0 18 bold; + end; + implementation eq + +equations + p2.e[1] = (Rconstraint*-p2.f[1] + int(-p2.f[1])/Cconstraint); + p2.e[2] = (Rconstraint*-p2.f[2] + int(-p2.f[2])/Cconstraint); + p2.e[3] = p1.e; + p2.e[4] = (Rconstraint*-p2.f[4] + int(-p2.f[4])/Cconstraint); + p2.e[5] = (Rconstraint*-p2.f[5] + int(-p2.f[5])/Cconstraint); + p2.e[6] = (Rconstraint*-p2.f[6] + int(-p2.f[6])/Cconstraint); + + p1.f = p2.f[3]; +implementation_end; + Wbai 240 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' 240 424 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction 240 104 + description '4.01False + Bond Graph\ZeroJunction.emx + 2007-9-27 9:51:43 +'; + knot ZeroJunction + ports + power knot duplicatable none p [1]; + signal knot out effort [1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 240 104 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 + Hin -> MatrixMul\input2; + Integrate\output -> Splitter2\input; + MatrixMul\output -> Hout; + OneJunction\flow -> Integrate\input 320 272; + OneJunction\p => Rjoint\p; + OneJunction\p => uTbai\p1; + p <= Wbai\p; + p1 => ZeroJunction\p; + p2 => AdHji\p2; + Splitter2\output -> AdHji\H 424 368; + Splitter2\output -> MatrixMul\input1; + Tbai\p => Wbai\p; + uTbai\p2 => Tbai\p; + Wbai\p <= AdHji\p1; + ZeroJunction\p => OneJunction\p; + end; + parameterrelations +EndstopMin\Rendstop = Rendstop; +EndstopMin\Cendstop = Cendstop; +EndstopMin\InitialPos = InitialPos; +EndstopMin\EndstopPos = MinEndstopPos; +EndstopMax\Rendstop = Rendstop; +EndstopMax\Cendstop = Cendstop; +EndstopMax\InitialPos = InitialPos; +EndstopMax\EndstopPos = MaxEndstopPos; +Rjoint\Rjoint= Rjoint; +Integrate\init = InitialPos; +uTbai\Rconstraint = Rconstraint; +uTbai\Cconstraint = Cconstraint;parameterrelations_end; + figures + text 'b = next link (body) +a = previous link (body) +i = Frame fixed in previous body, fixed in joint +j = Frame fixed in next body, fixed in joint + ' 744 400 color 0; + implementation_end; + JointBase2 296.2 296 + description ' + 4.1 +1 + False + True + Joint-roty.emx + 2011-1-18 17:30:05 +'; + type 'Submodel-roty' + ports + power out p [6,1]; + power in p1; + power in p2 [6,1]; + signal in Hin [4,4]; + signal out Hout [4,4]; + parameters + real Rconstraint = 1000.0; + real Cconstraint = 1.0e-4; + real Rendstop = 1000.0; + real Cendstop = 1.0e-4; + real InitialPos = 0.0; + real MaxEndstopPos = 1.57; + real MinEndstopPos = -1.131; + real Rjoint = 0.1; + end; + icon bg bottom + figures + rectangle 264.5 224 328 368 color 0 fill 14745599; + text 'Joint-roty' 296.5 299 color 0; + terminals + p 264 256 fixed; + p1 295.5 224 fixed; + p2 328 256 fixed; + Hin 264 336 fixed; + Hout 328 336 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; + Integrate 320 328 + description ' + 4.0 + 1 + False + Signal\Block Diagram\Integrate.emx + 2007-9-26 12:3:23 + True +'; + type Integrate + ports + signal in input; + signal out output [4,4]; + parameters + real init = -2.9496; + end; + icon bg + figures + rectangle 304 312 336 344 color 0 fill 15132390; + text 'ò' 320 325.3 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +variables + real R[3,3]; + real p[3]; + real q; +equations +q = -int(input,init); +R = [ cos(q), -sin(q), 0; + sin(q), cos(q), 0; + 0, 0, 1]; +p = [0;0;0]; +output = homogeneous(R,p); + + implementation_end; + MatrixMul 320 496 + 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 480 335.9 512 color 0 fill 15132390; + text 'X' 320 496 color 16711680 16 bold; + end; + implementation eq +equations + output = input2*input1; implementation_end; + plug p1 240 56; + plug p2 496 424; + plug Hin 112 496; + plug Hout 504 496; + plug p 112 424; + OneJunction 240 272 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 240 272 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Rjoint 192 272 + description ' + 4.0 + 1 + False + Bond Graph\R.emx + 2007-9-25 12:3:18 + True +'; + type R + ports + power in p; + parameters + real Rjoint = 0.1; + end; + icon bg bottom + figures + text 'R' 192 272 color 0 18 bold; + end; + implementation eq +equations + p.e = Rjoint * p.f; +implementation_end; + Splitter2 320 368 + 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 364.8 323.2 371.2 color -1 fill 0; + ellipse 315.7 363.7 324.3 372.3 color -1; + terminals + input 320 368 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Tbai 240 376 + 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 left + figures + text '1' 240 376 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + uTbai 240 328 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + causality fixed in p1; + causality fixed out p2; + parameters + real Cconstraint = 1.0e-4; + real Rconstraint = 1000.0; + end; + icon bg left + figures + text 'TF' 240 328 color 0 18 bold; + end; + implementation eq + +equations + p2.e[1] = (Rconstraint*-p2.f[1] + int(-p2.f[1])/Cconstraint); + p2.e[2] = (Rconstraint*-p2.f[2] + int(-p2.f[2])/Cconstraint); + p2.e[3] = p1.e; + p2.e[4] = (Rconstraint*-p2.f[4] + int(-p2.f[4])/Cconstraint); + p2.e[5] = (Rconstraint*-p2.f[5] + int(-p2.f[5])/Cconstraint); + p2.e[6] = (Rconstraint*-p2.f[6] + int(-p2.f[6])/Cconstraint); + + p1.f = p2.f[3]; +implementation_end; + Wbai 240 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' 240 424 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction 240 160 + description '4.01False + Bond Graph\ZeroJunction.emx + 2007-9-27 9:51:43 +'; + knot ZeroJunction + ports + power knot duplicatable none p [1]; + signal knot out effort [1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 240 160 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 + Hin -> MatrixMul\input2; + Integrate\output -> Splitter2\input; + MatrixMul\output -> Hout; + OneJunction\flow -> Integrate\input 320 272; + OneJunction\p => Rjoint\p; + OneJunction\p => uTbai\p1; + p <= Wbai\p; + p1 => ZeroJunction\p; + p2 => AdHji\p2; + Splitter2\output -> AdHji\H 424 368; + Splitter2\output -> MatrixMul\input1; + Tbai\p => Wbai\p; + uTbai\p2 => Tbai\p; + Wbai\p <= AdHji\p1; + ZeroJunction\p => OneJunction\p; + end; + parameterrelations +EndstopMin\Rendstop = Rendstop; +EndstopMin\Cendstop = Cendstop; +EndstopMin\InitialPos = InitialPos; +EndstopMin\EndstopPos = MinEndstopPos; +EndstopMax\Rendstop = Rendstop; +EndstopMax\Cendstop = Cendstop; +EndstopMax\InitialPos = InitialPos; +EndstopMax\EndstopPos = MaxEndstopPos; +Rjoint\Rjoint= Rjoint; +Integrate\init = InitialPos; +uTbai\Rconstraint = Rconstraint; +uTbai\Cconstraint = Cconstraint;parameterrelations_end; + figures + text 'b = next link (body) +a = previous link (body) +i = Frame fixed in previous body, fixed in joint +j = Frame fixed in next body, fixed in joint + ' 744 400 color 0; + implementation_end; + Link 464 504 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 432 464 496 544 color 0 fill 8454041; + text 'name' 464 488 color 0 'Clear Sans' 16; + terminals + Hin 432 528 fixed; + Hout 496 528 fixed; + Pin 496 480 fixed; + Pout 432 480 fixed; + end; + implementation eq +parameters + real offset[3]= [0.0; 0.0325; 0.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; + Link1 624 504 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 464 656 544 color 0 fill 8454041; + text 'name' 624 488 color 0 'Clear Sans' 16; + terminals + Hin 592 528 fixed; + Hout 656 528 fixed; + Pin 656 480 fixed; + Pout 592 480 fixed; + end; + implementation eq +parameters + real offset[3]= [0.0; 0.0325; 0.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; + Link2 808 504 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 776 464 840 544 color 0 fill 8454041; + text 'name' 808 488 color 0 'Clear Sans' 16; + terminals + Hin 776 528 fixed; + Hout 840 528 fixed; + Pin 840 480 fixed; + Pout 776 480 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 968 504 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 936 464 1000 544 color 0 fill 8454041; + text 'name' 968 488 color 0 'Clear Sans' 16; + terminals + Hin 936 528 fixed; + Hout 1000 528 fixed; + Pin 1000 480 fixed; + Pout 936 480 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; + new_joint1 672 592 + 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]; + signal out output; + 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_joint2 1064 528 + 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]; + signal out output; + 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; + OneJunction 232 256 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + 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' 232 256 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction1 304 480 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + 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' 304 480 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + ori_joint1 440 408 + 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]; + signal out output; + 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; + ori_joint2 760 336 + description '4.0 + Template\Submodel-Equation.emx +1 + False + 2007-11-1 22:32:1 + False +'; + type 'Submodel-Equation' + ports + signal in input [4,4]; + signal out output; + 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; + Sf 160 256 + description '4.01False + Bond Graph\3D\Sf-3.emx + 2007-9-25 12:11:58 +'; + type 'Sf-3' + ports + power out p [6,1]; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 160 256 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; + Sf1 256 480 + description '4.01False + Bond Graph\3D\Sf-3.emx + 2007-9-25 12:11:58 +'; + type 'Sf-3' + ports + power out p [6,1]; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 256 480 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 296 96 + 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 292.8 92.8 299.2 99.2 color -1 fill 0; + ellipse 291.7 91.7 300.3 100.3 color -1; + terminals + input 296 96 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter2 232 336 + description '4.0 + Signal\Block Diagram\Splitter.emx + 2008-01-17 11:28:29 +1 + False +'; + knot Splitter + ports + signal knot duplicatable out output [4,4]; + signal knot in input [4,4]; + end; + icon bg ellipse + figures + ellipse 228.8 332.8 235.2 339.2 color -1 fill 0; + ellipse 227.7 331.7 236.3 340.3 color -1; + terminals + input 232 336 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter3 480 640 + 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 476.8 636.8 483.2 643.2 color -1 fill 0; + ellipse 475.7 635.7 484.3 644.3 color -1; + terminals + input 480 640 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter4 232 528 + 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 228.8 524.8 235.2 531.2 color -1 fill 0; + ellipse 227.7 523.7 236.3 532.3 color -1; + terminals + input 232 528 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter5 440 336 + description '4.0 + Signal\Block Diagram\Splitter.emx + 2008-01-17 11:28:29 +1 + False +'; + knot Splitter + ports + signal knot duplicatable out output [4,4]; + signal knot in input [4,4]; + end; + icon bg ellipse + figures + ellipse 436.8 332.8 443.2 339.2 color -1 fill 0; + ellipse 435.7 331.7 444.3 340.3 color -1; + terminals + input 440 336 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter6 672 528 + 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 668.8 524.8 675.2 531.2 color -1 fill 0; + ellipse 667.7 523.7 676.3 532.3 color -1; + terminals + input 672 528 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Submodel1 296 144 + description ' + 4.8 + 1 + '; + type Submodel + ports + signal in input; + power out p2; + end; + implementation bg + submodels + Gain1 552 88 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 536.1 72 567.9 104 color 0 fill 15132390; + text 'K' 552 88 color 16711680 16 bold; + end; + implementation eq +parameters + real K = 12.0; // gain +equations + output = K * input; + implementation_end; + GY 624 184 + description ' + + 4.2 +1 + False + Bond Graph\GY.emx + 2011-11-29 15:53:45 + +'; + type GY + ports + power in p1; + power out p2; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'GY' 624 184 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.127; +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe 624 88 + 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' 624 88 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug input 424 88; + plug p2 624 220; + OneJunction2 624 136 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 624 136 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + R 664 136 + 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' 664 136 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.08; +equations + p.e = r * p.f; +implementation_end; + SignalLimiter2 488 88 + 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 472 72 504 104 color 0 fill 15132390; + line 487.9 76.5 487.9 101 color 0 fill 15132390; + line 475 88.2 500.7 88.2 color 0 fill 15132390; + spline 481.9 95.1 493.9 81.4 color 16711680 fill 15132390 width 2; + spline 493.3 82.2 501.9 81.8 color 16711680 fill 15132390 width 2; + spline 475 95.6 481.9 95.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 1; + real minimum = -1; +equations + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Gain1\output -> MSe\effort; + GY\p2 => p2; + input -> SignalLimiter2\input; + MSe\p => OneJunction2\p; + OneJunction2\p => GY\p1; + R\p <= OneJunction2\p; + SignalLimiter2\output -> Gain1\input; + end; + implementation_end; + Submodel2 488 96 + description ' + 4.8 + 1 + '; + type Submodel + ports + signal in input; + power out p2; + end; + implementation bg + submodels + Gain1 552 88 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 536.1 72 567.9 104 color 0 fill 15132390; + text 'K' 552 88 color 16711680 16 bold; + end; + implementation eq +parameters + real K = 12.0; // gain +equations + output = K * input; + implementation_end; + GY 624 184 + description ' + + 4.2 +1 + False + Bond Graph\GY.emx + 2011-11-29 15:53:45 + +'; + type GY + ports + power in p1; + power out p2; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'GY' 624 184 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.127; +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe 624 88 + 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' 624 88 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug input 424 88; + plug p2 624 220; + OneJunction2 624 136 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 624 136 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + R 664 136 + 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' 664 136 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.08; +equations + p.e = r * p.f; +implementation_end; + SignalLimiter2 488 88 + 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 472 72 504 104 color 0 fill 15132390; + line 487.9 76.5 487.9 101 color 0 fill 15132390; + line 475 88.2 500.7 88.2 color 0 fill 15132390; + spline 481.9 95.1 493.9 81.4 color 16711680 fill 15132390 width 2; + spline 493.3 82.2 501.9 81.8 color 16711680 fill 15132390 width 2; + spline 475 95.6 481.9 95.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 1; + real minimum = -1; +equations + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Gain1\output -> MSe\effort; + GY\p2 => p2; + input -> SignalLimiter2\input; + MSe\p => OneJunction2\p; + OneJunction2\p => GY\p1; + R\p <= OneJunction2\p; + SignalLimiter2\output -> Gain1\input; + end; + implementation_end; + Submodel4 384 640 + description ' + 4.8 + 1 + '; + type Submodel + ports + signal in input; + power out p2; + end; + implementation bg + submodels + Gain1 552 88 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 536.1 72 567.9 104 color 0 fill 15132390; + text 'K' 552 88 color 16711680 16 bold; + end; + implementation eq +parameters + real K = 12.0; // gain +equations + output = K * input; + implementation_end; + GY 624 184 + description ' + + 4.2 +1 + False + Bond Graph\GY.emx + 2011-11-29 15:53:45 + +'; + type GY + ports + power in p1; + power out p2; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'GY' 624 184 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.127; +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe 624 88 + 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' 624 88 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug input 424 88; + plug p2 624 220; + OneJunction2 624 136 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 624 136 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + R 664 136 + 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' 664 136 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.08; +equations + p.e = r * p.f; +implementation_end; + SignalLimiter2 488 88 + 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 472 72 504 104 color 0 fill 15132390; + line 487.9 76.5 487.9 101 color 0 fill 15132390; + line 475 88.2 500.7 88.2 color 0 fill 15132390; + spline 481.9 95.1 493.9 81.4 color 16711680 fill 15132390 width 2; + spline 493.3 82.2 501.9 81.8 color 16711680 fill 15132390 width 2; + spline 475 95.6 481.9 95.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 1; + real minimum = -1; +equations + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Gain1\output -> MSe\effort; + GY\p2 => p2; + input -> SignalLimiter2\input; + MSe\p => OneJunction2\p; + OneJunction2\p => GY\p1; + R\p <= OneJunction2\p; + SignalLimiter2\output -> Gain1\input; + end; + implementation_end; + Submodel5 728 640 + description ' + 4.8 + 1 + '; + type Submodel + ports + signal in input; + power out p2; + end; + implementation bg + submodels + Gain1 552 88 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 536.1 72 567.9 104 color 0 fill 15132390; + text 'K' 552 88 color 16711680 16 bold; + end; + implementation eq +parameters + real K = 12.0; // gain +equations + output = K * input; + implementation_end; + GY 624 184 + description ' + + 4.2 +1 + False + Bond Graph\GY.emx + 2011-11-29 15:53:45 + +'; + type GY + ports + power in p1; + power out p2; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'GY' 624 184 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.127; +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe 624 88 + 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' 624 88 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug input 424 88; + plug p2 624 220; + OneJunction2 624 136 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 624 136 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + R 664 136 + 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' 664 136 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.08; +equations + p.e = r * p.f; +implementation_end; + SignalLimiter2 488 88 + 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 472 72 504 104 color 0 fill 15132390; + line 487.9 76.5 487.9 101 color 0 fill 15132390; + line 475 88.2 500.7 88.2 color 0 fill 15132390; + spline 481.9 95.1 493.9 81.4 color 16711680 fill 15132390 width 2; + spline 493.3 82.2 501.9 81.8 color 16711680 fill 15132390 width 2; + spline 475 95.6 481.9 95.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 1; + real minimum = -1; +equations + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Gain1\output -> MSe\effort; + GY\p2 => p2; + input -> SignalLimiter2\input; + MSe\p => OneJunction2\p; + OneJunction2\p => GY\p1; + R\p <= OneJunction2\p; + SignalLimiter2\output -> Gain1\input; + end; + implementation_end; + Wtip0 760 256 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'Se' 760 256 color 0 18 bold; + end; + implementation eq +parameters + real effort = 0.0; +variables + real flow[6]; +equations + p.e = effort; + flow = p.f; +implementation_end; + Wtip1 1064 480 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'Se' 1064 480 color 0 18 bold; + end; + implementation eq +parameters + real effort = 0.0; +variables + real flow[6]; +equations + p.e = effort; + flow = p.f; +implementation_end; + end; + connections + Base\Hout -> Splitter5\input; + Base\p => JointBase2\p2; + Base1\Hout -> ori_joint2\input; + Base1\p => JointBase1\p2; + Base2\Hout -> Link3\Hin; + Base2\p1 <= Link3\Pout; + Base3\Hout -> Link1\Hin; + Base3\p1 <= Link1\Pout; + Constant\output -> Splitter2\input; + Constant1\output -> Splitter1\input; + Constant2\output -> Splitter3\input; + Joint\Hout -> Link\Hin; + Joint\p2 <= Link\Pout; + Joint1\Hout -> Link2\Hin; + Joint1\p2 <= Link2\Pout; + JointBase1\Hout -> Base1\Hin; + JointBase1\p => Base\p1; + JointBase2\Hout -> Base\Hin; + JointBase2\p => OneJunction\p; + Link\Hout -> Base3\Hin; + Link\Pin <= Base3\p; + Link1\Hout -> Splitter6\input; + Link1\Pin <= Joint1\p; + Link2\Hout -> Base2\Hin; + Link2\Pin <= Base2\p; + Link3\Hout -> new_joint2\input; + Link3\Pin <= Wtip1\p; + OneJunction\p <= Sf\p; + OneJunction1\p <= Joint\p; + OneJunction1\p <= Sf1\p; + Splitter1\output -> Submodel1\input; + Splitter1\output -> Submodel2\input; + Splitter2\output -> JointBase2\Hin; + Splitter2\output -> Splitter4\input; + Splitter3\output -> Submodel4\input; + Splitter3\output -> Submodel5\input; + Splitter4\output -> Joint\Hin; + Splitter5\output -> JointBase1\Hin; + Splitter5\output -> ori_joint1\input; + Splitter6\output -> Joint1\Hin; + Splitter6\output -> new_joint1\input; + Submodel1\p2 => JointBase2\p1; + Submodel2\p2 => JointBase1\p1; + Submodel4\p2 => Joint\p1; + Submodel5\p2 => Joint1\p1; + Wtip0\p => Base1\p1; + end; + implementation_end; +]]> + + + + + + + Experiment 1 + + + + 4.8 + + + + + + + + + + + Base1\InertialTensor\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + Base2\InertialTensor\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + Base3\InertialTensor\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + Base\InertialTensor\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + Joint1\JointType\uTbai\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + Joint\JointType\uTbai\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + new_state1_initial + 0 + + + new_state10_initial + 0 + + + new_state2_initial + 0 + + + new_state3_initial + 0 + + + new_state4_initial + 0 + + + new_state5_initial + 0 + + + new_state6_initial + 0 + + + new_state7_initial + 0 + + + new_state8_initial + 0 + + + new_state9_initial + 0 + + + Submodel4\R\p.f_initial + 0 + + + Submodel5\R\p.f_initial + 0 + + + + + + time + ori_joint1\position[1] + ori_joint1\position[2] + ori_joint1\position[3] + new_joint1\position[1] + new_joint1\position[2] + new_joint1\position[3] + ori_joint2\position[1] + ori_joint2\position[2] + ori_joint2\position[3] + ori_joint1\R[1,3] + ori_joint1\R[2,3] + ori_joint1\R[3,3] + ori_joint1\R[1,2] + ori_joint1\R[2,2] + ori_joint1\R[3,2] + ori_joint2\R[1,3] + ori_joint2\R[2,3] + ori_joint2\R[3,3] + ori_joint2\R[1,2] + ori_joint2\R[2,2] + ori_joint2\R[3,2] + new_joint2\position[1] + new_joint2\position[2] + new_joint2\position[3] + + + + 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 + true + false + + + 0.0 + 1.424742322143329 + true + 3 + + + + + + -0.1 + 0.1 + true + 1 + + + + -0.1 + 0.1 + true + 1 + + + + -0.1 + 0.1 + true + 1 + + + + -0.1 + 0.1 + true + 1 + + + + -0.1 + 0.1 + true + 1 + + + + -0.1 + 0.1 + true + 1 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + ori_joint1\position[1] + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + ori_joint1\position[2] + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + ori_joint1\position[3] + + + + 15086320 + 1 + 15086320 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + new_joint1\position[1] + + + + 15790150 + 1 + 15790150 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + new_joint1\position[2] + + + + 1696255 + 1 + 1696255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + new_joint1\position[3] + + + + + true + 0 + 16777215 + + + + D3DPlot + + 2 + false + 16777215 + true + + 3D Animation + 137 + true + false + 4294967295 + Gradients\BlueWhite.png + true + 1.0 + 1.0 + + + + + 1 + + + 1 + + + 1 + + + true + Reference Frame + + + + + + Bryant + + false + false + false + false + false + false + + + + + 1 + + + 1 + + + 1 + + + false + Default Lights and Cameras + + + + + + Bryant + + false + false + false + false + false + false + + + false + Ambient + + + + + + 1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0 + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + + 1 + + + 1 + + + 1 + + + true + + true + false + false + + + false + Parallel + + + -3 + + + 5 + + + 3 + + + + + + 0.457495710997814 + + + -0.762492851663023 + + + -0.457495710997814 + + + + + 0.235379601434674 + + + -0.392299335724456 + + + 0.889211827642101 + + + Direct3D + + false + false + false + false + false + false + + + 3 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.0 + + + 0.0 + + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 1 + + + -3 + + + -5 + + + 1 + + + + + + 0.50709255283711 + + + 0.845154254728517 + + + -0.169030850945703 + + + + + 0.0869656553478673 + + + 0.144942758913112 + + + 0.985610760609162 + + + Direct3D + + false + false + false + false + false + false + + + 2 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.0471975511965976 + + + 1.0471975511965976 + + 0.0 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 2 + + + 2 + + + -3 + + + -1 + + + + + + -0.534522483824849 + + + 0.801783725737273 + + + 0.267261241912424 + + + + + 0.14824986333222 + + + -0.22237479499833 + + + 0.963624111659432 + + + Direct3D + + false + false + false + false + false + false + + + 2 + + + + 1 + + + 1 + + + 1 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.5707963267948966 + + + 1.5707963267948966 + + 0.0 + + + + 1 + + + 1 + + + 1 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Camera Looking at Origin + + + 5.66443922345846 + + + -1.87918322175823 + + + 8.35361970698833 + + + + + + -0.551742297648959 + + + 0.183041043883461 + + + -0.813680780920319 + + + + + -0.77229119625168 + + + 0.256208355506313 + + + 0.581311953051802 + + + 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 + + + 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 + + + + + + + 10 + + + 10 + + + 10 + + + false + Scenery + + + + + + Bryant + + false + false + false + false + false + false + + + + + 1 + + + 1 + + + 1 + + + false + Reference Frame + + + + + + Bryant + + false + false + false + false + false + false + + + 5.0 + + + ori_joint1\position[1] + -0.05242625720312162 + + + ori_joint1\position[2] + 0.03842509018430717 + + + ori_joint1\position[3] + 0.0 + + + 15 + true + true + 0.1 + 15 + true + + + 0.1 + + + 0.1 + + + 0.0649999976158142 + + + true + + + 1 + + + 1 + + + 1 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Line + + + + + + -0.806557803124948 + + + 0.591155233604726 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + + + 1.0 + + + ori_joint2\position[1] + -0.10031667574147025 + + + ori_joint2\position[2] + 0.024054710501717216 + + + ori_joint2\position[3] + 0.0 + + + 15 + true + true + 0.1 + 15 + true + + + 0.1 + + + 0.1 + + + 0.0500000007450581 + + + true + + + 1 + + + 1 + + + 1 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Line + + + ori_joint1\position[1] + -0.05242625720312162 + + + ori_joint1\position[2] + 0.03842509018430717 + + + ori_joint1\position[3] + 0.0 + + + + + + -0.957808370766973 + + + -0.287407593651799 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + + + + + 1 + + + 1 + + + 1 + + + false + Reference Frame + + + ori_joint1\position[1] + -0.05242625720312162 + + + ori_joint1\position[2] + 0.03842509018430717 + + + ori_joint1\position[3] + 0.0 + + + + + + ori_joint1\R[1,3] + 0.0 + + + ori_joint1\R[2,3] + 0.0 + + + ori_joint1\R[3,3] + 1.0 + + + + + ori_joint1\R[1,2] + -0.806557803124948 + + + ori_joint1\R[2,2] + 0.5911552336047257 + + + ori_joint1\R[3,2] + 0.0 + + + Matrix + + false + false + false + false + false + false + + + + + + + 1 + + + 1 + + + 1 + + + false + Reference Frame + + + ori_joint2\position[1] + -0.10031667574147025 + + + ori_joint2\position[2] + 0.024054710501717216 + + + ori_joint2\position[3] + 0.0 + + + + + + ori_joint2\R[1,3] + 0.0 + + + ori_joint2\R[2,3] + 0.0 + + + ori_joint2\R[3,3] + 1.0 + + + + + ori_joint2\R[1,2] + -0.9578083707669727 + + + ori_joint2\R[2,2] + -0.2874075936517991 + + + ori_joint2\R[3,2] + 0.0 + + + Matrix + + false + false + false + false + false + false + + + + + + + + + + + + + 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 + 1.424742322143329 + true + 3 + + + + + + -0.25 + 0.25 + true + 2 + + + + -0.25 + 0.25 + true + 2 + + + + -0.25 + 0.25 + true + 2 + + + + -0.25 + 0.25 + true + 2 + + + + -0.25 + 0.25 + true + 2 + + + + -0.25 + 0.25 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + ori_joint2\position[1] + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + ori_joint2\position[2] + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + ori_joint2\position[3] + + + + 15086320 + 1 + 15086320 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + new_joint2\position[1] + + + + 15790150 + 1 + 15790150 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + new_joint2\position[2] + + + + 1696255 + 1 + 1696255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + new_joint2\position[3] + + + + + true + 0 + 16777215 + + + + + + 1 + true + Window 1 + 0 + + 1 + 3 + + Base + + + 2 + true + Window 2 + 0 + + 2 + + Base + + + + +0.200521 0.191667 0.840104 0.771296 + + +0.0859375 0.0712963 0.84375 0.833333 + + + + + + 0.0 + 10.0 + false + true + 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 + + 7 + + + + 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/03_motor/motor_physics.emx b/implementation/SCARA/03_motor/motor_physics.emx new file mode 100644 index 0000000..172735d --- /dev/null +++ b/implementation/SCARA/03_motor/motor_physics.emx @@ -0,0 +1,7272 @@ + + + + + + 4.8 +0 + False + C:\users\wouter\My Documents\studie\ma\mahd\implementation\SCARA\03_motor\motor_physics.emx + 2020-7-17 18:39:03 +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 + Base1 720 680 + description '4.81FalseTrueBond Graph\MR\center_of_mass.emx2020-7-17 15:37:54Baseparameters + real I [3,1] = [7.583333333333335e-7; 3.645833333333334e-8; 7.364583333333335e-7] {N.m.s}; + real m = 0.0035 {kg};'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + end; + icon bg bottom + figures + rectangle 688 640 752 720 color 0 fill 255; + text 'COM' 720 664 color 0; + terminals + p 688 656 fixed; + Hin 688 704 fixed; + p1 752 656 fixed; + Hout 752 704 fixed; + end; + implementation bg + submodels + AdHi0 544 400 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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 256 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + end; + icon bg top + figures + text 'MGY' 616 256 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 616 400 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'Se' 616 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 480 256 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + end; + icon bg top + figures + text 'I' 480 256 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 472 496; + plug p1 752 304; + plug Hout 768 496; + plug p 472 304; + 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 304 + 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 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 544 256 + 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 top + figures + text '1' 544 256 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => Ta0j\p; + Gravity\p => AdHi0\p1; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => Ta0j\p; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hout; + Ta0j\p => Ta0k\p; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + Base2 912 680 + description '4.81FalseTrueBond Graph\MR\center_of_mass.emx2020-7-17 15:37:54Baseparameters + real I [3,1] = [0;0;0] {N.m.s}; + real m = 0.015 {kg};'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + end; + icon bg bottom + figures + rectangle 880 640 944 720 color 0 fill 255; + text 'COM' 912 664 color 0; + terminals + p 880 656 fixed; + Hin 880 704 fixed; + p1 944 656 fixed; + Hout 944 704 fixed; + end; + implementation bg + submodels + AdHi0 544 400 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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 256 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + end; + icon bg top + figures + text 'MGY' 616 256 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 616 400 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'Se' 616 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 480 256 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + end; + icon bg top + figures + text 'I' 480 256 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 472 496; + plug p1 752 304; + plug Hout 768 496; + plug p 472 304; + 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 304 + 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 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 544 256 + 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 top + figures + text '1' 544 256 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => Ta0j\p; + Gravity\p => AdHi0\p1; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => Ta0j\p; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hout; + Ta0j\p => Ta0k\p; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + Base3 368 680 + description ' + + 4.8 +1 + False + True + Bond Graph\MR\center_of_mass.emx + 2020-7-17 15:37:54 +Base + + + parameters + real I [3,1] = [1.6399999999999998e-6; 4.7e-8; 1.61e-6] {N.m.s}; + real m = 0.00455 {kg}; + +'; + type Submodel + ports + power out p [6,1]; + signal in Hin [4,4]; + power in p1 [6,1]; + signal out Hout [4,4]; + end; + icon bg bottom + figures + rectangle 336 640 400 720 color 0 fill 255; + text 'COM' 368 664 color 0; + terminals + p 336 656 fixed; + Hin 336 704 fixed; + p1 400 656 fixed; + Hout 400 704 fixed; + end; + implementation bg + submodels + AdHi0 544 400 + description ' + 4.0 + 1 + False + Bond Graph\MTF.emx + 2007-9-25 12:3:3 + True +'; + 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 256 + description ' + 4.0 + 1 + False + Bond Graph\MGY.emx + 2007-10-31 11:43:6 + True +'; + type MGY + ports + power in p1 [6,1]; + end; + icon bg top + figures + text 'MGY' 616 256 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 616 400 + description ' + 4.0 + 1 + False + Bond Graph\Se.emx + 2007-9-25 12:3:26 + True +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'Se' 616 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 480 256 + description ' + 4.0 + 1 + False + Bond Graph\I.emx + 2007-9-25 12:2:12 + True +'; + type I + ports + power in p [6,1]; + signal out state [6,1]; + restrictions + causality preferred in p; + end; + icon bg top + figures + text 'I' 480 256 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 472 496; + plug p1 752 304; + plug Hout 768 496; + plug p 472 304; + 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 304 + 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 304 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Ta0k 544 256 + 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 top + figures + text '1' 544 256 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + AdHi0\p2 => Ta0j\p; + Gravity\p => AdHi0\p1; + Hin -> Splitter1\input; + p <= Ta0j\p; + p1 => Ta0j\p; + Splitter1\output -> AdHi0\H; + Splitter1\output -> Hout; + Ta0j\p => Ta0k\p; + Ta0k\p => EJS\p1; + Ta0k\p => InertialTensor\p; + end; + parameterrelations +InertialTensor\I = I; +InterialTensor\m = m; +EJS\I = I; +EJS\m = m; +AdHik\COMdim = COMdim; +AdHik1\COMdim = COMdim; +Hij\dim = dim; +Gravity\m=m;parameterrelations_end; + figures + text 'b = current link (body) +a = previous link (body) +i = Body fixed frame, fixed in joint with previous link +j = Body fixed frame, fixed in joint with next link +k = Body fixed frame, principal inertial frame +0 = inertial system + ' 288 280 color 0; + implementation_end; + COM1 424 584 + description '4.81parameters + real mass = 1 {kg};'; + type Submodel + ports + translation in p [2,1]; + signal in mass {kg} ; + end; + icon bg ellipse bottom + figures + ellipse 416 576 432 592 color 0 fill 15132390; + line 424 576 424 592 color 0 fill 15132390; + line 416 584 432 584 color 0 fill 15132390; + end; + implementation bg + submodels + Gain 368 408 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output [2,1]; + end; + icon bg bottom + figures + rectangle 352.1 392 383.9 424 color 0 fill 15132390; + text 'K' 368 408 color 16711680 16 bold; + end; + implementation eq +equations + output = [0;-g_n] * input; + implementation_end; + I 248 520 + description '4.01False + Bond Graph\2D\I-2.emx + 2007-9-25 12:7:37 +'; + type 'I-2' + ports + power in p [2,1]; + signal out state [2,1]; + signal in mass {kg} ; + restrictions + causality preferred in p; + end; + icon bg bottom + figures + text 'I' 248 520 color 0 18 bold; + end; + implementation eq +equations + state = int(p.e); + p.f = inverse ([mass,0;0,mass]) * state; +implementation_end; + plug p 304 468; + plug mass 208 408; + OneJunction2 304 520 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + knot OneJunction + ports + translation knot duplicatable none p [2,1]; + signal knot out flow [2,1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 304 520 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Sg 368 520 + description '4.01False + Bond Graph\2D\MSe-2.emx + 2007-9-25 12:7:58 +'; + type 'MSe-2' + ports + power out p [2,1]; + signal in effort [2,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'MSe' 368 520 color 0 18 bold; + end; + implementation eq +variables + real flow[2]; +equations + p.e = effort; + flow = p.f; +implementation_end; + Splitter1 248 408 + 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 244.8 404.8 251.2 411.2 color -1 fill 0; + ellipse 243.7 403.7 252.3 412.3 color -1; + terminals + input 248 408 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + end; + connections + Gain\output -> Sg\effort; + I\p <= OneJunction2\p; + mass -> Splitter1\input; + p => OneJunction2\p; + Sg\p => OneJunction2\p; + Splitter1\output -> Gain\input; + Splitter1\output -> I\mass; + end; + implementation_end; + COM2 824 584 + description '4.81parameters + real mass = 1 {kg};'; + type Submodel + ports + power in p [2,1]; + signal in mass {kg} ; + end; + icon bg ellipse + figures + ellipse 816 576 832 592 color 0 fill 15132390; + line 824 576 824 592 color 0 fill 15132390; + line 816 584 832 584 color 0 fill 15132390; + end; + implementation bg + submodels + Gain 368 408 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output [2,1]; + end; + icon bg bottom + figures + rectangle 352.1 392 383.9 424 color 0 fill 15132390; + text 'K' 368 408 color 16711680 16 bold; + end; + implementation eq +equations + output = [0;-g_n] * input; + implementation_end; + I 248 520 + description '4.01False + Bond Graph\2D\I-2.emx + 2007-9-25 12:7:37 +'; + type 'I-2' + ports + power in p [2,1]; + signal out state [2,1]; + signal in mass {kg} ; + restrictions + causality preferred in p; + end; + icon bg bottom + figures + text 'I' 248 520 color 0 18 bold; + end; + implementation eq +equations + state = int(p.e); + p.f = inverse ([mass,0;0,mass]) * state; +implementation_end; + plug p 304 468; + plug mass 208 408; + OneJunction2 304 520 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + 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' 304 520 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Sg 368 520 + description '4.01False + Bond Graph\2D\MSe-2.emx + 2007-9-25 12:7:58 +'; + type 'MSe-2' + ports + power out p [2,1]; + signal in effort [2,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'MSe' 368 520 color 0 18 bold; + end; + implementation eq +variables + real flow[2]; +equations + p.e = effort; + flow = p.f; +implementation_end; + Splitter1 248 408 + 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 244.8 404.8 251.2 411.2 color -1 fill 0; + ellipse 243.7 403.7 252.3 412.3 color -1; + terminals + input 248 408 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + end; + connections + Gain\output -> Sg\effort; + I\p <= OneJunction2\p; + mass -> Splitter1\input; + p => OneJunction2\p; + Sg\p => OneJunction2\p; + Splitter1\output -> Gain\input; + Splitter1\output -> I\mass; + end; + implementation_end; + COM3 984 584 + description '4.81parameters + real mass = 1 {kg};'; + type Submodel + ports + power in p [2,1]; + signal in mass {kg} ; + end; + icon bg ellipse + figures + ellipse 976 576 992 592 color 0 fill 15132390; + line 984 576 984 592 color 0 fill 15132390; + line 976 584 992 584 color 0 fill 15132390; + end; + implementation bg + submodels + Gain 368 408 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output [2,1]; + end; + icon bg bottom + figures + rectangle 352.1 392 383.9 424 color 0 fill 15132390; + text 'K' 368 408 color 16711680 16 bold; + end; + implementation eq +equations + output = [0;-g_n] * input; + implementation_end; + I 248 520 + description '4.01False + Bond Graph\2D\I-2.emx + 2007-9-25 12:7:37 +'; + type 'I-2' + ports + power in p [2,1]; + signal out state [2,1]; + signal in mass {kg} ; + restrictions + causality preferred in p; + end; + icon bg bottom + figures + text 'I' 248 520 color 0 18 bold; + end; + implementation eq +equations + state = int(p.e); + p.f = inverse ([mass,0;0,mass]) * state; +implementation_end; + plug p 304 468; + plug mass 208 408; + OneJunction2 304 520 + description '4.01False + Bond Graph\OneJunction.emx + 2007-9-27 9:51:18 +'; + 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' 304 520 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + Sg 368 520 + description '4.01False + Bond Graph\2D\MSe-2.emx + 2007-9-25 12:7:58 +'; + type 'MSe-2' + ports + power out p [2,1]; + signal in effort [2,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'MSe' 368 520 color 0 18 bold; + end; + implementation eq +variables + real flow[2]; +equations + p.e = effort; + flow = p.f; +implementation_end; + Splitter1 248 408 + 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 244.8 404.8 251.2 411.2 color -1 fill 0; + ellipse 243.7 403.7 252.3 412.3 color -1; + terminals + input 248 408 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + end; + connections + Gain\output -> Sg\effort; + I\p <= OneJunction2\p; + mass -> Splitter1\input; + p => OneJunction2\p; + Sg\p => OneJunction2\p; + Splitter1\output -> Gain\input; + Splitter1\output -> I\mass; + end; + implementation_end; + Constant 920 584 + description '4.01False + Signal\Sources\Constant.emx + 2007-10-19 14:48:44 +'; + type Constant + ports + signal out output; + end; + icon bg bottom + figures + rectangle 904.1 568 935.9 600 color 0 fill 15132390; + line 908.9 579.6 930.9 579.6 color 16711680 width 2; + line 906.2 590.7 931.9 590.7 color 0; + line 908.5 574.7 908.5 593 color 0; + end; + implementation eq +parameters + real C = 0.015 {kg}; // output value +equations + output = C; + implementation_end; + I 432 176 + description ' + + 4.2 +1 + False + Bond Graph\I.emx + 2011-11-29 15:55:55 + +'; + type I + ports + power in p; + signal out state; + signal in i; + restrictions + causality preferred in p; + end; + icon bg bottom + figures + text 'I' 432 176 color 0 18 bold; + end; + implementation eq +equations + state = int(p.e); + p.f = state / i; +implementation_end; + I1 824 176 + description ' + + 4.2 +1 + False + Bond Graph\I.emx + 2011-11-29 15:55:55 + +'; + type I + ports + power in p; + signal out state; + signal in i; + restrictions + causality preferred in p; + end; + icon bg bottom + figures + text 'I' 824 176 color 0 18 bold; + end; + implementation eq +equations + state = int(p.e); + p.f = state / i; +implementation_end; + Integrate 1040 512 + description ' + + 4.3 +1 + False + Signal\Block Diagram\Integrate.emx + 2013-3-8 14:47:42 + +'; + type Integrate + ports + signal in input [2,1]; + signal out output [2,1]; + end; + icon bg bottom + figures + rectangle 1024 496 1056 528 color 0 fill 15132390; + text '∫' 1040 512.3 color 16711680 'Lucida Sans' 21 italic; + end; + implementation eq +parameters + real initial[2] = [0.115;0]; // initial value +equations + output = int (input, initial); + implementation_end; + Integrate1 712 192 + 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 696 176 728 208 color 0 fill 15132390; + text '∫' 712 192.3 color 16711680 'Lucida Sans' 21 italic; + end; + implementation eq +parameters + real initial = 0; // initial value +equations + output = int (input, initial); + implementation_end; + inverse_kinematics 304 32 + description ' + + 4.8 + SCARA\inverse_kinematics_v1.emx +1 + False + 2020-7-10 12:26:18 +False + +'; + type 'Submodel-Equation' + ports + signal in input [2,1] {m} ; + signal out angle1 {rad} ; + signal out angle2 {rad} ; + signal out a {rad} ; + signal out b {rad} ; + signal out c {rad} ; + signal out phi {rad} ; + end; + implementation eq +parameters + real A_length = 0.065 {m}; // length of first arm + real B_length = 0.05 {m}; // length of second arm + real to_rad = 1 {rad}; +variables + real x {m}, y {m}; + real C_length {m}; // length to x and y. + real angle_sum {rad}; // test angle +equations + x = input[1]; + y = input[2]; + phi = atan2(y, x); + C_length = sqrt(x^2 + y^2); + a = arccos ((B_length^2 + C_length^2 - A_length^2) / (2 * B_length * C_length)); + b = arccos ((A_length^2 + C_length^2 - B_length^2) / (2 * A_length * C_length)); + c = arccos ((A_length^2 + B_length^2 - C_length^2) / (2 * A_length * B_length)); + angle1 = b + phi; + angle2 = angle1 - pi * to_rad + c; + + + + implementation_end; + inverse_kinematics1 392 864 + 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. + real angle_sum {rad}; // test angle +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; + Joint1 208.1 678 + description ' + + 4.8 +1 + False + True + Bond Graph\MR\joint-v2.emx + 2020-7-17 16:52:13 + +'; + type 'Submodel-rotz' + ports + power out p [6,1]; + power in p1; + power in p2 [6,1]; + signal in Hin [4,4]; + signal out Hout [4,4]; + signal out q; + end; + icon bg bottom + figures + rectangle 176.2 640 240 716 color 0 fill 14745599; + text 'Joint' 208 672 color 0; + terminals + p 176 656 fixed; + p1 208 640 fixed; + p2 240 656 fixed; + Hin 176 704 fixed; + Hout 240 704 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; + JointType 240 312 + description '4.81FalseTrueparameters + real joint = 1; + real initial = 0;'; + type Submodel + ports + mechanical in p1; + signal out output [4,4]; + power out p2 [6,1]; + signal out q; + end; + implementation bg + submodels + Integrate 320 272 + description ' + 4.0 + 1 + False + Signal\Block Diagram\Integrate.emx + 2007-9-26 12:3:23 + True +'; + type Integrate + ports + signal in input; + signal out output [4,4]; + signal out q; + end; + icon bg + figures + rectangle 304 256 336 288 color 0 fill 15132390; + text 'ò' 320 269.3 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +parameters + real global joint; + real global initial; +variables + real R[3,3]; + real p[3]; + real qa[6]; + real temp [4,4]; +initialequations + qa = 0; +equations +-q = int(input,initial); +qa[joint] = q; +R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',qa); +output = homogeneous(R,qa[4:6]);implementation_end; + plug p1 240 188; + plug output 320 416; + plug p2 240 412; + plug q 320 184; + OneJunction2 240 271.9 + description ' + + 4.2 +1 + False + Bond Graph\FlowSensor.emx + 2011-11-29 15:50:53 + +'; + knot FlowSensor + ports + mechanical knot in p1 [1]; + mechanical knot out p2 [1]; + signal knot out flow [1]; + restrictions + causality constraint not_equal p1 p2; + end; + icon bg ellipse + figures + ellipse 233.1 264.8 246.9 279.1 color 0 fill 16777215; + text 'f' 240 271.2 color 0; + end; + implementation eq +equations + p2.f = p1.f; + p1.e = p2.e; + flow = p1.f; +implementation_end; + uTbai 240 328 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + causality fixed in p1; + causality fixed out p2; + parameters + real Cconstraint = 1.0e-4; + real Rconstraint = 1000.0; + end; + icon bg left + figures + text 'TF' 240 328 color 0 18 bold; + end; + implementation eq +parameters + real global joint; +variables + real i; + real state[6]; +equations + state = int(p2.f); + for i = 1 to 6 do + if i == joint then + p1.f = p2.f[i]; + p2.e[i] = p1.e; + else + p2.e[i] = (Rconstraint*-p2.f[i] + -state[i]/Cconstraint); + end; + end; +implementation_end; + end; + connections + Integrate\output -> output; + Integrate\q -> q; + OneJunction2\flow -> Integrate\input; + OneJunction2\p2 => uTbai\p1; + p1 => OneJunction2\p1; + uTbai\p2 => p2; + end; + 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 p 112 424; + plug p1 240 40; + plug p2 496 424; + plug Hin 112 576; + plug Hout 504 576; + plug q 112 312; + 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 240 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' 240 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 + Hin -> MatrixMul\input2; + JointType\output -> Splitter2\input; + JointType\p1 <= p1; + JointType\p2 => Wbai\p; + JointType\q -> q; + MatrixMul\output -> Hout; + p <= Wbai\p; + p2 => AdHji\p2; + Splitter2\output -> AdHji\H 424 312; + Splitter2\output -> MatrixMul\input1; + Wbai\p <= AdHji\p1; + end; + parameterrelations +EndstopMin\Rendstop = Rendstop; +EndstopMin\Cendstop = Cendstop; +EndstopMin\InitialPos = InitialPos; +EndstopMin\EndstopPos = MinEndstopPos; +EndstopMax\Rendstop = Rendstop; +EndstopMax\Cendstop = Cendstop; +EndstopMax\InitialPos = InitialPos; +EndstopMax\EndstopPos = MaxEndstopPos; +Rjoint\Rjoint= Rjoint; +Integrate\init = InitialPos; +uTbai\Rconstraint = Rconstraint; +uTbai\Cconstraint = Cconstraint; + +parameterrelations_end; + figures + text 'b = next link (body) +a = previous link (body) +i = Frame fixed in previous body, fixed in joint +j = Frame fixed in next body, fixed in joint + ' 680 488 color 0; + implementation_end; + Joint2 560.1 678 + description ' + + 4.8 +1 + False + True + Bond Graph\MR\joint-v2.emx + 2020-7-17 16:52:13 + +'; + type 'Submodel-rotz' + ports + power out p [6,1]; + power in p1; + power in p2 [6,1]; + signal in Hin [4,4]; + signal out Hout [4,4]; + signal out q; + end; + icon bg bottom + figures + rectangle 528.2 640 592 716 color 0 fill 14745599; + text 'Joint' 560 672 color 0; + terminals + p 528 656 fixed; + p1 560 640 fixed; + p2 592 656 fixed; + Hin 528 704 fixed; + Hout 592 704 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; + JointType 240 312 + description '4.81FalseTrueparameters + real joint = 1; + real initial = 0;'; + type Submodel + ports + mechanical in p1; + signal out output [4,4]; + power out p2 [6,1]; + signal out q; + end; + implementation bg + submodels + Integrate 320 272 + description ' + 4.0 + 1 + False + Signal\Block Diagram\Integrate.emx + 2007-9-26 12:3:23 + True +'; + type Integrate + ports + signal in input; + signal out output [4,4]; + signal out q; + end; + icon bg + figures + rectangle 304 256 336 288 color 0 fill 15132390; + text 'ò' 320 269.3 color 16711680 'SymbolProp BT' 21 symbol; + end; + implementation eq +parameters + real global joint; + real global initial; +variables + real R[3,3]; + real p[3]; + real qa[6]; + real temp [4,4]; +initialequations + qa = 0; +equations +-q = int(input,initial); +qa[joint] = q; +R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',qa); +output = homogeneous(R,qa[4:6]);implementation_end; + plug p1 240 188; + plug output 320 416; + plug p2 240 412; + plug q 320 184; + OneJunction2 240 271.9 + description ' + + 4.2 +1 + False + Bond Graph\FlowSensor.emx + 2011-11-29 15:50:53 + +'; + knot FlowSensor + ports + mechanical knot in p1 [1]; + mechanical knot out p2 [1]; + signal knot out flow [1]; + restrictions + causality constraint not_equal p1 p2; + end; + icon bg ellipse + figures + ellipse 233.1 264.8 246.9 279.1 color 0 fill 16777215; + text 'f' 240 271.2 color 0; + end; + implementation eq +equations + p2.f = p1.f; + p1.e = p2.e; + flow = p1.f; +implementation_end; + uTbai 240 328 + description ' + 4.0 + 1 + False + Bond Graph\TF.emx + 2007-9-25 12:4:2 + True +'; + type TF + ports + power in p1; + power out p2 [6,1]; + restrictions + causality constraint not_equal p1 p2; + causality fixed in p1; + causality fixed out p2; + parameters + real Cconstraint = 1.0e-4; + real Rconstraint = 1000.0; + end; + icon bg left + figures + text 'TF' 240 328 color 0 18 bold; + end; + implementation eq +parameters + real global joint; +variables + real i; + real state[6]; +equations + state = int(p2.f); + for i = 1 to 6 do + if i == joint then + p1.f = p2.f[i]; + p2.e[i] = p1.e; + else + p2.e[i] = (Rconstraint*-p2.f[i] + -state[i]/Cconstraint); + end; + end; +implementation_end; + end; + connections + Integrate\output -> output; + Integrate\q -> q; + OneJunction2\flow -> Integrate\input; + OneJunction2\p2 => uTbai\p1; + p1 => OneJunction2\p1; + uTbai\p2 => p2; + end; + 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 p 112 424; + plug p1 240 40; + plug p2 496 424; + plug Hin 112 576; + plug Hout 504 576; + plug q 112 312; + 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 240 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' 240 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 + Hin -> MatrixMul\input2; + JointType\output -> Splitter2\input; + JointType\p1 <= p1; + JointType\p2 => Wbai\p; + JointType\q -> q; + MatrixMul\output -> Hout; + p <= Wbai\p; + p2 => AdHji\p2; + Splitter2\output -> AdHji\H 424 312; + Splitter2\output -> MatrixMul\input1; + Wbai\p <= AdHji\p1; + end; + parameterrelations +EndstopMin\Rendstop = Rendstop; +EndstopMin\Cendstop = Cendstop; +EndstopMin\InitialPos = InitialPos; +EndstopMin\EndstopPos = MinEndstopPos; +EndstopMax\Rendstop = Rendstop; +EndstopMax\Cendstop = Cendstop; +EndstopMax\InitialPos = InitialPos; +EndstopMax\EndstopPos = MaxEndstopPos; +Rjoint\Rjoint= Rjoint; +Integrate\init = InitialPos; +uTbai\Rconstraint = Rconstraint; +uTbai\Cconstraint = Cconstraint; + +parameterrelations_end; + figures + text 'b = next link (body) +a = previous link (body) +i = Frame fixed in previous body, fixed in joint +j = Frame fixed in next body, fixed in joint + ' 680 488 color 0; + implementation_end; + Link 288 680 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 640 320 720 color 0 fill 8454041; + text 'name' 288 664 color 0 'Clear Sans' 16; + terminals + Hin 256 704 fixed; + Hout 320 704 fixed; + Pin 320 656 fixed; + Pout 256 656 fixed; + end; + implementation eq +parameters + real offset[3]= [0; 0.0325; 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; + Link1 480 680 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 448 640 512 720 color 0 fill 8454041; + text 'name' 480 664 color 0 'Clear Sans' 16; + terminals + Hin 448 704 fixed; + Hout 512 704 fixed; + Pin 512 656 fixed; + Pout 448 656 fixed; + end; + implementation eq +parameters + real offset[3]= [0; 0.0325; 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; + Link2 640 680 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 608 640 672 720 color 0 fill 8454041; + text 'name' 640 664 color 0 'Clear Sans' 16; + terminals + Hin 608 704 fixed; + Hout 672 704 fixed; + Pin 672 656 fixed; + Pout 608 656 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 832 680 + description ' + + 4.8 + Z:\home\wouter\Documents\20-sim\library\Bond Graph\MR\link-v2.emx +1 + False + 2020-7-16 17:44:32 +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 800 640 864 720 color 0 fill 8454041; + text 'name' 832 664 color 0 'Clear Sans' 16; + terminals + Hin 800 704 fixed; + Hout 864 704 fixed; + Pin 864 656 fixed; + Pout 800 656 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; + MXTF 352.3 288 + description ' + + 4.8 +1 + False + Z:\home\wouter\Documents\20-sim\library\Bond Graph\2D\MXTF-2.emx + 2020-7-14 17:06:13 +True + +'; + type 'TF-2' + ports + power in p1; + power out p2 [2,1]; + signal in p [2,1]; + restrictions + causality constraint not_equal p1 p2; + causality fixed in p2; + causality fixed out p1; + end; + icon bg bottom + figures + text 'MXTF' 352.3 288 color 0 18 bold; + end; + implementation eq +variables + real r[2]; +equations + r = [-p[2];p[1]]; + p1.e = transpose (r) * p2.e; + p2.f = r * p1.f;implementation_end; + Negate1 224 800 + 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 208 784 240 816 color 0 fill 15132390; + text '-1' 224 800 color 16711680 16 bold; + end; + implementation eq +equations + output = - input; + implementation_end; + Negate2 592 800 + 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 784 608 816 color 0 fill 15132390; + text '-1' 592 800 color 16711680 16 bold; + end; + implementation eq +equations + output = - input; + implementation_end; + new_joint1 424 768 + 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]; + signal out output; + 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 776 768 + 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]; + signal out output; + 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 1040 704 + 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]; + signal out output; + 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; + OneJunction 424 368 + 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' 424 368 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction1 424 520 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + translation knot duplicatable none p [2,1]; + signal knot out flow [2,1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 424 520 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction10 824 232 + 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' 824 232 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction11 984 512 + 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' 984 512 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction12 704 368 + 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' 704 368 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction16 624 200 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + rotation knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 624 200 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction17 560 752 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 560 752 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction18 248 208 + 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' 248 208 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction2 128 656 + 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' 128 656 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction3 432 232 + 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' 432 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 272.3 368 + 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' 272.3 368 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction6 272 520 + 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' 272 520 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction7 824 368 + 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' 824 368 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction8 824 520 + 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' 824 520 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction9 984 368 + 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' 984 368 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + PID 248 88 + description ' + 4.0 + 1 + False + Signal\Control\PID Control\Continuous\PID.emx + 2008-1-17 10:49:30 +'; + type PID + ports + signal in error; + signal out output; + end; + icon bg bottom + figures + rectangle 232 72 264 104 color 0 fill 15132390; + text 'PID' 248 87.5 color 16711680 18 bold; + end; + implementation eq +parameters + real kp = 0.05 {}; // Proportional gain + real tauD = 1.0 {s}; // Derivative time constant: tauD > 0 + real beta = 0.001 {}; // Tameness constant: 0 < beta << 1 + real tauI = 0.05{s}; // Integral time constant: tauI > 0 +variables + real pdout, pdrate, pdstate; + real pirate, pistate; +equations + pdrate = (kp * error - pdout) / (beta * tauD); + pdstate = int (pdrate); + pdout = pdstate + (kp * error / beta); + pirate = pdout / tauI; + pistate = int (pirate); + output = pistate + pdout; + implementation_end; + PID1 624 88 + description ' + 4.0 + 1 + False + Signal\Control\PID Control\Continuous\PID.emx + 2008-1-17 10:49:30 +'; + type PID + ports + signal in error; + signal out output; + end; + icon bg bottom + figures + rectangle 608 72 640 104 color 0 fill 15132390; + text 'PID' 624 87.5 color 16711680 18 bold; + end; + implementation eq +parameters + real kp = 0.02 {}; // Proportional gain + real tauD = 1.0 {s}; // Derivative time constant: tauD > 0 + real beta = 0.001 {}; // Tameness constant: 0 < beta << 1 + real tauI = 0.05 {s}; // Integral time constant: tauI > 0 +variables + real pdout, pdrate, pdstate; + real pirate, pistate; +equations + pdrate = (kp * error - pdout) / (beta * tauD); + pdstate = int (pdrate); + pdout = pdstate + (kp * error / beta); + pirate = pdout / tauI; + pistate = int (pirate); + output = pistate + pdout; + implementation_end; + PID2 280 800 + description ' + 4.0 + 1 + False + Signal\Control\PID Control\Continuous\PID.emx + 2008-1-17 10:49:30 +'; + type PID + ports + signal in error; + signal out output; + end; + icon bg bottom + figures + rectangle 264 784 296 816 color 0 fill 15132390; + text 'PID' 280 799.5 color 16711680 18 bold; + end; + implementation eq +parameters + real kp = 0.05 {}; // Proportional gain + real tauD = 1.0 {s}; // Derivative time constant: tauD > 0 + real beta = 0.001 {}; // Tameness constant: 0 < beta << 1 + real tauI = 0.05{s}; // Integral time constant: tauI > 0 +variables + real pdout, pdrate, pdstate; + real pirate, pistate; +equations + pdrate = (kp * error - pdout) / (beta * tauD); + pdstate = int (pdrate); + pdout = pdstate + (kp * error / beta); + pirate = pdout / tauI; + pistate = int (pirate); + output = pistate + pdout; + implementation_end; + PID3 640 800 + description ' + 4.0 + 1 + False + Signal\Control\PID Control\Continuous\PID.emx + 2008-1-17 10:49:30 +'; + type PID + ports + signal in error; + signal out output; + end; + icon bg bottom + figures + rectangle 624 784 656 816 color 0 fill 15132390; + text 'PID' 640 799.5 color 16711680 18 bold; + end; + implementation eq +parameters + real kp = 0.02 {}; // Proportional gain + real tauD = 1.0 {s}; // Derivative time constant: tauD > 0 + real beta = 0.001 {}; // Tameness constant: 0 < beta << 1 + real tauI = 0.05 {s}; // Integral time constant: tauI > 0 +variables + real pdout, pdrate, pdstate; + real pirate, pistate; +equations + pdrate = (kp * error - pdout) / (beta * tauD); + pdstate = int (pdrate); + pdout = pdstate + (kp * error / beta); + pirate = pdout / tauI; + pistate = int (pirate); + output = pistate + pdout; + implementation_end; + PlusMinus1 584 400 + 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 576 392 592 408 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + PlusMinus2 304 88 + 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 296 80 312 96 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + PlusMinus3 552 88 + 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 544 80 560 96 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + PlusMinus4 328 800 + 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 320 792 336 808 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + PlusMinus5 688 800 + 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 680 792 696 808 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + R 240 752 + 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' 240 752 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.01; +equations + p.e = r * p.f; +implementation_end; + R1 592 752 + 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' 592 752 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.01; +equations + p.e = r * p.f; +implementation_end; + R2 200 208 + 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' 200 208 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.01; +equations + p.e = r * p.f; +implementation_end; + R3 584 200 + 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' 584 200 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.01; +equations + p.e = r * p.f; +implementation_end; + rectanglepath 64 32 + 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}; + real test1, test2, test3; +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; + RTF 424 456 + description ' + + 4.8 +1 + False + Bond Graph\2D\RTF-2.emx + 2020-7-14 12:43:04 + +'; + type 'TF-2' + ports + power in p1 [2,1]; + power out p2 [2,1]; + signal in angle {rad} ; + restrictions + causality constraint not_equal p1 p2; + end; + icon bg bottom + figures + text 'RTF' 424 456 color 0 18 bold; + end; + implementation eq +/* +2D rotation transformer. Takes an angle as input and then rotates the dimensions +*/ +variables + real r[2,2]; +equations + r = [cos(angle), -sin(angle); sin(angle), cos(angle)]; + p1.e = transpose (r) * p2.e; + p2.f = r * p1.f; +implementation_end; + RTF1 584 368 + description ' + + 4.8 +1 + False + Bond Graph\2D\RTF-2.emx + 2020-7-14 12:43:04 + +'; + type 'TF-2' + ports + power in p1 [2,1]; + power out p2 [2,1]; + signal in angle {rad} ; + restrictions + causality constraint not_equal p1 p2; + end; + icon bg bottom + figures + text 'RTF' 584 368 color 0 18 bold; + end; + implementation eq +/* +2D rotation transformer. Takes an angle as input and then rotates the dimensions +*/ +variables + real r[2,2]; +equations + r = [cos(angle), -sin(angle); sin(angle), cos(angle)]; + p1.e = transpose (r) * p2.e; + p2.f = r * p1.f; +implementation_end; + RTF2 272 432 + description ' + + 4.8 +1 + False + Bond Graph\2D\RTF-2.emx + 2020-7-14 12:43:04 + +'; + type 'TF-2' + ports + power in p1 [2,1]; + power out p2 [2,1]; + signal in angle {rad} ; + restrictions + causality constraint not_equal p1 p2; + end; + icon bg bottom + figures + text 'RTF' 272 432 color 0 18 bold; + end; + implementation eq +/* +2D rotation transformer. Takes an angle as input and then rotates the dimensions +*/ +variables + real r[2,2]; +equations + r = [cos(angle), -sin(angle); sin(angle), cos(angle)]; + p1.e = transpose (r) * p2.e; + p2.f = r * p1.f; +implementation_end; + RTF3 824 432 + description ' + + 4.8 +1 + False + Bond Graph\2D\RTF-2.emx + 2020-7-14 12:43:04 + +'; + type 'TF-2' + ports + power in p1 [2,1]; + power out p2 [2,1]; + signal in angle {rad} ; + restrictions + causality constraint not_equal p1 p2; + end; + icon bg bottom + figures + text 'RTF' 824 432 color 0 18 bold; + end; + implementation eq +/* +2D rotation transformer. Takes an angle as input and then rotates the dimensions +*/ +variables + real r[2,2]; +equations + r = [cos(angle), -sin(angle); sin(angle), cos(angle)]; + p1.e = transpose (r) * p2.e; + p2.f = r * p1.f; +implementation_end; + RTF4 984 424 + description ' + + 4.8 +1 + False + Bond Graph\2D\RTF-2.emx + 2020-7-14 12:43:04 + +'; + type 'TF-2' + ports + power in p1 [2,1]; + power out p2 [2,1]; + signal in angle {rad} ; + restrictions + causality constraint not_equal p1 p2; + end; + icon bg bottom + figures + text 'RTF' 984 424 color 0 18 bold; + end; + implementation eq +/* +2D rotation transformer. Takes an angle as input and then rotates the dimensions +*/ +variables + real r[2,2]; +equations + r = [cos(angle), -sin(angle); sin(angle), cos(angle)]; + p1.e = transpose (r) * p2.e; + p2.f = r * p1.f; +implementation_end; + Se 984 656 + description ' + + 4.2 +1 + False + Bond Graph\Se.emx + 2011-11-29 16:36:49 + +'; + type Se + ports + power out p [6,1]; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'Se' 984 656 color 0 18 bold; + end; + implementation eq +parameters + real effort[6] = 0; +variables + real flow[6]; +equations + p.e = effort; + flow = p.f; +implementation_end; + Sf 192 520 + description '4.01False + Bond Graph\2D\Sf-2.emx + 2007-9-25 12:7:5 +'; + type 'Sf-2' + ports + power out p [2,1]; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 192 520 color 0 18 bold; + end; + implementation eq +parameters + real flow[2,1] = [0.0; 0.0]; +variables + real effort [2]; +equations + p.f = flow; + effort = p.e; +implementation_end; + Sf1 152 232 + description ' + + 4.2 +1 + False + Bond Graph\Sf.emx + 2011-11-29 16:38:03 + +'; + type Sf + ports + power out p; + restrictions + causality fixed in p; + end; + icon bg bottom + figures + text 'Sf' 152 232 color 0 18 bold; + end; + implementation eq +parameters + real flow = 0; +variables + real effort; +equations + p.f = flow; + effort = p.e; +implementation_end; + Sf2 72 656 + 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' 72 656 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; + Sine 440 24 + description '4.01False + Signal\Sources\WaveGenerator-Sine.emx + 2007-9-27 16:12:6 +'; + type 'WaveGenerator-Sine' + ports + signal out output; + end; + icon bg bottom + figures + group + rectangle 424 8 456 40 color 0 fill 15132390; + line 428.5 14.4 428.5 33.6 color 0; + line 454.1 24 425.3 24 color 0; + spline 428.9 23.9 432.1 15.8 435.3 23.9 438.6 32 441.7 23.9 444.8 15.8 448.1 23.9 451.6 32.2 454.8 24.2 color 16711680; + end; + end; + implementation eq +parameters + real amplitude = 1.0; // amplitude of the wave + real omega = 1.0 {rad/s}; // angular frequency of the wave +variables + boolean hidden change; + real hidden half; +equations + "calculate at least 2 points per cycle to get a triangle" + half = pi / omega; + change = frequencyevent (half, half / 2); + + "calculate the sine wave" + output = amplitude * sin ( omega * time); +implementation_end; + Splitter1 384 400 + 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 380.8 396.8 387.2 403.2 color -1 fill 0; + ellipse 379.7 395.7 388.3 404.3 color -1; + terminals + input 384 400 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter2 800 400 + 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 796.8 396.8 803.2 403.2 color -1 fill 0; + ellipse 795.7 395.7 804.3 404.3 color -1; + terminals + input 800 400 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter3 304 400 + 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 300.8 396.8 307.2 403.2 color -1 fill 0; + ellipse 299.7 395.7 308.3 404.3 color -1; + terminals + input 304 400 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter4 632 400 + 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 628.8 396.8 635.2 403.2 color -1 fill 0; + ellipse 627.7 395.7 636.3 404.3 color -1; + terminals + input 632 400 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter5 776 704 + 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 772.8 700.8 779.2 707.2 color -1 fill 0; + ellipse 771.7 699.7 780.3 708.3 color -1; + terminals + input 776 704 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter6 424 704 + 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 420.8 700.8 427.2 707.2 color -1 fill 0; + ellipse 419.7 699.7 428.3 708.3 color -1; + terminals + input 424 704 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter7 160 32 + description '4.0 + Signal\Block Diagram\Splitter.emx + 2008-01-17 11:28:29 +1 + False +'; + knot Splitter + ports + signal knot duplicatable out output [2,1]; + signal knot in input [2,1]; + end; + icon bg ellipse + figures + ellipse 156.8 28.8 163.2 35.2 color -1 fill 0; + ellipse 155.7 27.7 164.3 36.3 color -1; + terminals + input 160 32 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Submodel1 248 168 + description ' + 4.8 + 1 + '; + type Submodel + ports + signal in input; + power out p2; + end; + implementation bg + submodels + Gain1 552 88 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 536.1 72 567.9 104 color 0 fill 15132390; + text 'K' 552 88 color 16711680 16 bold; + end; + implementation eq +parameters + real K = 12.0; // gain +equations + output = K * input; + implementation_end; + GY 624 184 + description ' + + 4.2 +1 + False + Bond Graph\GY.emx + 2011-11-29 15:53:45 + +'; + type GY + ports + power in p1; + power out p2; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'GY' 624 184 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.127; +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe 624 88 + 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' 624 88 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug input 424 88; + plug p2 624 220; + OneJunction2 624 136 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 624 136 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + R 664 136 + 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' 664 136 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.08; +equations + p.e = r * p.f; +implementation_end; + SignalLimiter2 488 88 + 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 472 72 504 104 color 0 fill 15132390; + line 487.9 76.5 487.9 101 color 0 fill 15132390; + line 475 88.2 500.7 88.2 color 0 fill 15132390; + spline 481.9 95.1 493.9 81.4 color 16711680 fill 15132390 width 2; + spline 493.3 82.2 501.9 81.8 color 16711680 fill 15132390 width 2; + spline 475 95.6 481.9 95.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 1; + real minimum = -1; +equations + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Gain1\output -> MSe\effort; + GY\p2 => p2; + input -> SignalLimiter2\input; + MSe\p => OneJunction2\p; + OneJunction2\p => GY\p1; + R\p <= OneJunction2\p; + SignalLimiter2\output -> Gain1\input; + end; + implementation_end; + Submodel2 144 800 + description ' + 4.8 + 1 + '; + type Submodel + ports + signal in input; + power out p2; + end; + implementation bg + submodels + Gain1 552 88 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 536.1 72 567.9 104 color 0 fill 15132390; + text 'K' 552 88 color 16711680 16 bold; + end; + implementation eq +parameters + real K = 12.0; // gain +equations + output = K * input; + implementation_end; + GY 624 184 + description ' + + 4.2 +1 + False + Bond Graph\GY.emx + 2011-11-29 15:53:45 + +'; + type GY + ports + power in p1; + power out p2; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'GY' 624 184 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.127; +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe 624 88 + 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' 624 88 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug input 424 88; + plug p2 624 220; + OneJunction2 624 136 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 624 136 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + R 664 136 + 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' 664 136 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.08; +equations + p.e = r * p.f; +implementation_end; + SignalLimiter2 488 88 + 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 472 72 504 104 color 0 fill 15132390; + line 487.9 76.5 487.9 101 color 0 fill 15132390; + line 475 88.2 500.7 88.2 color 0 fill 15132390; + spline 481.9 95.1 493.9 81.4 color 16711680 fill 15132390 width 2; + spline 493.3 82.2 501.9 81.8 color 16711680 fill 15132390 width 2; + spline 475 95.6 481.9 95.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 1; + real minimum = -1; +equations + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Gain1\output -> MSe\effort; + GY\p2 => p2; + input -> SignalLimiter2\input; + MSe\p => OneJunction2\p; + OneJunction2\p => GY\p1; + R\p <= OneJunction2\p; + SignalLimiter2\output -> Gain1\input; + end; + implementation_end; + Submodel3 352 480 + description '4.0 + Template\Submodel-Equation.emx +1 + False + 2007-11-1 22:32:1 + False +'; + type 'Submodel-Equation' + ports + signal in angle_velocity {rad/s} ; + signal out angle {rad} ; + signal in velocity [2,1] {m/s} ; + signal out position [2,1] {m} ; + signal out mass {kg} ; + signal out angular_momentum {N.m.s} ; + signal out joint1 [2,1]; + signal out joint2 [2,1]; + end; + implementation eq +/* Equation Submodel +Enter your equations here. You can use the Toolbar buttons at the top ( Add , f(x) etc. ). +*/ +parameters + real density = 1400 {kg/m3}; + real dimension[3] = [0.005;0.065;0.01] {m}; + real initial_position[2] = [0.0325;0] {m}; + real initial_angle = 0 {rad}; +variables + real body_angle[3]; + real body_position[3]; + real body_size[3]; + real moment[3]; +initialequations + mass = dimension[1] * dimension[2] * dimension[3] * density; + moment[1] = mass/12 * ( dimension[2]^2 + dimension[3]^2); + moment[2] = mass/12 * ( dimension[1]^2 + dimension[3]^2); + moment[3] = mass/12 * ( dimension[1]^2 + dimension[2]^2); + angular_momentum = moment[1]; +equations + angle = int(angle_velocity,initial_angle); + body_angle = [angle;0;0]; + position = int(velocity,initial_position); + body_position = [0; position[1];position[2]]; + joint1=[-dimension[2]/2;0]; + joint2=[dimension[2]/2;0]; + + implementation_end; + Submodel4 744 480 + description '4.0 + Template\Submodel-Equation.emx +1 + False + 2007-11-1 22:32:1 + False +'; + type 'Submodel-Equation' + ports + signal in angle_velocity {rad/s} ; + signal out angle {rad} ; + signal in velocity [2,1] {m/s} ; + signal out position [2,1] {m} ; + signal out mass {kg} ; + signal out angular_momentum {N.m.s} ; + signal out joint1 [2,1]; + signal out joint2 [2,1]; + end; + icon bg + figures + rectangle 704 464 784 496 color 0 fill 15132390; + text 'name' 744 480 color 0 16; + end; + implementation eq +/* Equation Submodel +Enter your equations here. You can use the Toolbar buttons at the top ( Add , f(x) etc. ). +*/ +parameters + real density = 1400 {kg/m3}; + real dimension[3] = [0.005;0.05;0.01] {m}; + real initial_position[2] = [0.09;0.0] {m}; + real initial_angle = 0.0 {rad}; +variables + real body_angle[3]; + real body_position[3]; + real body_size[3]; + real moment[3]; +initialequations + mass = dimension[1] * dimension[2] * dimension[3] * density; + moment[1] = mass/12 * ( dimension[2]^2 + dimension[3]^2); + moment[2] = mass/12 * ( dimension[1]^2 + dimension[3]^2); + moment[3] = mass/12 * ( dimension[1]^2 + dimension[2]^2); + angular_momentum = moment[1]; +equations + angle = int(angle_velocity,initial_angle); + body_angle = [angle;0;0]; + position = int(velocity,initial_position); + body_position = [0; position[1];position[2]]; + joint1=[-dimension[2]/2;0]; + joint2=[dimension[2]/2;0];implementation_end; + Submodel5 520 800 + description ' + 4.8 + 1 + '; + type Submodel + ports + signal in input; + power out p2; + end; + implementation bg + submodels + Gain1 552 88 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 536.1 72 567.9 104 color 0 fill 15132390; + text 'K' 552 88 color 16711680 16 bold; + end; + implementation eq +parameters + real K = 12.0; // gain +equations + output = K * input; + implementation_end; + GY 624 184 + description ' + + 4.2 +1 + False + Bond Graph\GY.emx + 2011-11-29 15:53:45 + +'; + type GY + ports + power in p1; + power out p2; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'GY' 624 184 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.127; +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe 624 88 + 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' 624 88 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug input 424 88; + plug p2 624 220; + OneJunction2 624 136 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 624 136 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + R 664 136 + 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' 664 136 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.08; +equations + p.e = r * p.f; +implementation_end; + SignalLimiter2 488 88 + 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 472 72 504 104 color 0 fill 15132390; + line 487.9 76.5 487.9 101 color 0 fill 15132390; + line 475 88.2 500.7 88.2 color 0 fill 15132390; + spline 481.9 95.1 493.9 81.4 color 16711680 fill 15132390 width 2; + spline 493.3 82.2 501.9 81.8 color 16711680 fill 15132390 width 2; + spline 475 95.6 481.9 95.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 1; + real minimum = -1; +equations + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Gain1\output -> MSe\effort; + GY\p2 => p2; + input -> SignalLimiter2\input; + MSe\p => OneJunction2\p; + OneJunction2\p => GY\p1; + R\p <= OneJunction2\p; + SignalLimiter2\output -> Gain1\input; + end; + implementation_end; + Submodel8 624 160 + description ' + 4.8 + 1 + '; + type Submodel + ports + signal in input; + power out p2; + end; + implementation bg + submodels + Gain1 552 88 + description '4.01False + Signal\Block Diagram\Gain.emx + 2007-9-26 12:15:12 +'; + type Gain + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 536.1 72 567.9 104 color 0 fill 15132390; + text 'K' 552 88 color 16711680 16 bold; + end; + implementation eq +parameters + real K = 12.0; // gain +equations + output = K * input; + implementation_end; + GY 624 192 + description ' + + 4.2 +1 + False + Bond Graph\GY.emx + 2011-11-29 15:53:45 + +'; + type GY + ports + power in p1; + power out p2; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'GY' 624 192 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.127; +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe 624 88 + 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' 624 88 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug input 424 88; + plug p2 624 280; + OneJunction2 624 144 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 624 144 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + R 672 144 + 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' 672 144 color 0 18 bold; + end; + implementation eq +parameters + real r = 0.08; +equations + p.e = r * p.f; +implementation_end; + SignalLimiter2 488 88 + 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 472 72 504 104 color 0 fill 15132390; + line 487.9 76.5 487.9 101 color 0 fill 15132390; + line 475 88.2 500.7 88.2 color 0 fill 15132390; + spline 481.9 95.1 493.9 81.4 color 16711680 fill 15132390 width 2; + spline 493.3 82.2 501.9 81.8 color 16711680 fill 15132390 width 2; + spline 475 95.6 481.9 95.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 1; + real minimum = -1; +equations + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Gain1\output -> MSe\effort; + GY\p2 => p2; + input -> SignalLimiter2\input; + MSe\p => OneJunction2\p; + OneJunction2\p => GY\p1; + R\p <= OneJunction2\p; + SignalLimiter2\output -> Gain1\input; + end; + implementation_end; + TF 504 288 + description ' + + 4.8 +1 + False + Z:\home\wouter\Documents\20-sim\library\Bond Graph\2D\MXTF-2.emx + 2020-7-14 16:54:28 +True + +'; + type 'TF-2' + ports + power in p1; + power out p2 [2,1]; + signal in p [2,1]; + restrictions + causality constraint not_equal p1 p2; + causality fixed in p2; + causality fixed out p1; + end; + icon bg bottom + figures + text 'MXTF' 504 288 color 0 18 bold; + end; + implementation eq +variables + real r[2]; +equations + r = [-p[2];p[1]]; + p1.e = transpose (r) * p2.e; + p2.f = r * p1.f;implementation_end; + TF2 904 288 + description ' + + 4.8 +1 + False + Z:\home\wouter\Documents\20-sim\library\Bond Graph\2D\MXTF-2.emx + 2020-7-14 17:06:13 +True + +'; + type 'TF-2' + ports + power in p1; + power out p2 [2,1]; + signal in p [2,1]; + restrictions + causality constraint not_equal p1 p2; + causality fixed in p2; + causality fixed out p1; + end; + icon bg bottom + figures + text 'MXTF' 904 288 color 0 18 bold; + end; + implementation eq +variables + real r[2]; +equations + r = [-p[2];p[1]]; + p1.e = transpose (r) * p2.e; + p2.f = r * p1.f;implementation_end; + TF3 808 288 + description ' + + 4.8 +1 + False + Z:\home\wouter\Documents\20-sim\library\Bond Graph\2D\MXTF-2.emx + 2020-7-14 16:54:28 +True + +'; + type 'TF-2' + ports + power in p1; + power out p2 [2,1]; + signal in p [2,1]; + restrictions + causality constraint not_equal p1 p2; + causality fixed in p2; + causality fixed out p1; + end; + icon bg bottom + figures + text 'MXTF' 808 288 color 0 18 bold; + end; + implementation eq +variables + real r[2]; +equations + r = [-p[2];p[1]]; + p1.e = transpose (r) * p2.e; + p2.f = r * p1.f;implementation_end; + Zero 80 704 + 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 64.1 688 95.9 720 color 0 fill 15132390; + text '0' 80 704 color 16711680 18 bold; + end; + implementation eq +equations + output = eye(4);implementation_end; + ZeroJunction 504 368 + description ' + + 4.2 +1 + False + Bond Graph\ZeroJunction.emx + 2011-11-29 16:45:16 + +'; + knot ZeroJunction + ports + power knot duplicatable none p [2,1]; + signal knot out effort [2,1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 504 368 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction1 352.3 368 + description ' + + 4.2 +1 + False + Bond Graph\ZeroJunction.emx + 2011-11-29 16:45:16 + +'; + knot ZeroJunction + ports + power knot duplicatable none p [2,1]; + signal knot out effort [2,1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 352.3 368 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction2 904 368 + description ' + + 4.2 +1 + False + Bond Graph\ZeroJunction.emx + 2011-11-29 16:45:16 + +'; + knot ZeroJunction + ports + power knot duplicatable none p [2,1]; + signal knot out effort [2,1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 904 368 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction3 752.3 368 + description ' + + 4.2 +1 + False + Bond Graph\ZeroJunction.emx + 2011-11-29 16:45:16 + +'; + knot ZeroJunction + ports + power knot duplicatable none p [2,1]; + signal knot out effort [2,1]; + restrictions + causality constraint one_in p; + end; + icon bg + figures + text '0' 752.3 368 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction4 624 232 + 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' 624 232 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction5 248 232 + 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' 248 232 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); +implementation_end; + ZeroJunction7 208 752 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 208 752 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + end; + connections + Base1\Hout -> Splitter5\input; + Base1\p1 <= Link3\Pout; + Base2\Hout -> new_joint3\input; + Base3\Hin <- Link\Hout; + Base3\Hout -> Splitter6\input; + Base3\p1 <= Link1\Pout; + Constant\output -> COM3\mass; + I\p <= OneJunction3\p; + I1\p <= OneJunction10\p; + inverse_kinematics\angle1 -> PlusMinus2\plus; + inverse_kinematics\angle2 -> PlusMinus3\plus; + inverse_kinematics1\angle1 -> PlusMinus4\plus; + inverse_kinematics1\angle2 -> PlusMinus5\plus 656 864; + Joint1\Hout -> Link\Hin; + Joint1\p => OneJunction2\p; + Joint1\p2 <= Link\Pout; + Joint1\q -> PlusMinus4\minus 280 752; + Joint2\Hout -> Link2\Hin; + Joint2\p2 <= Link2\Pout; + Joint2\q -> PlusMinus5\minus 608 752; + Link\Pin <= Base3\p; + Link1\Hout -> Joint2\Hin; + Link1\Pin <= Joint2\p; + Link2\Hout -> Base1\Hin; + Link2\Pin <= Base1\p; + Link3\Hout -> Base2\Hin; + Link3\Pin <= Base2\p; + MXTF\p2 => ZeroJunction1\p; + Negate1\output -> Submodel2\input; + Negate2\output -> Submodel5\input; + OneJunction\p => RTF\p1; + OneJunction\p => ZeroJunction\p; + OneJunction\p => ZeroJunction1\p; + OneJunction1\flow -> Submodel3\velocity 344 520; + OneJunction1\p => COM1\p; + OneJunction10\flow -> Submodel4\angle_velocity 728 288 728 424; + OneJunction10\p => TF2\p1; + OneJunction10\p => TF3\p1; + OneJunction11\flow -> Integrate\input; + OneJunction11\p => COM3\p; + OneJunction16\flow -> Integrate1\input; + OneJunction16\p => ZeroJunction4\p; + OneJunction17\p => Joint2\p1; + OneJunction18\p => ZeroJunction5\p; + OneJunction3\flow -> Submodel3\angle_velocity 328 264 328 440; + OneJunction3\p => MXTF\p1; + OneJunction3\p => TF\p1; + OneJunction3\p => ZeroJunction4\p; + OneJunction5\p => RTF2\p1; + OneJunction7\p => RTF3\p1; + OneJunction7\p => ZeroJunction2\p; + OneJunction7\p => ZeroJunction3\p; + OneJunction8\flow -> Submodel4\velocity 744 520; + OneJunction8\p => COM2\p; + OneJunction9\p => RTF4\p1; + PID\output -> Submodel1\input; + PID2\output -> Negate1\input; + PID3\output -> Negate2\input; + PlusMinus1\output -> RTF1\angle; + PlusMinus2\output -> PID\error; + PlusMinus3\output -> PID1\error; + PlusMinus4\output -> PID2\error; + PlusMinus5\output -> PID3\error; + R\p <= ZeroJunction7\p; + R1\p <= OneJunction17\p; + R2\p <= OneJunction18\p; + R3\p <= OneJunction16\p; + rectanglepath\output -> Splitter7\input; + RTF\p2 => OneJunction1\p; + RTF1\p2 => OneJunction12\p; + RTF2\p2 => OneJunction6\p; + RTF3\p2 => OneJunction8\p; + RTF4\p2 => OneJunction11\p; + Se\p => Base2\p1; + Sf\p => OneJunction6\p; + Sf1\p => ZeroJunction5\p; + Sf2\p => OneJunction2\p; + Splitter1\output -> PlusMinus1\plus; + Splitter1\output -> RTF\angle 400 416 400 432; + Splitter1\output -> Splitter3\input; + Splitter2\output -> RTF3\angle 800 408; + Splitter2\output -> RTF4\angle 952 400; + Splitter2\output -> Splitter4\input; + Splitter3\output -> PlusMinus2\minus 304 160; + Splitter3\output -> RTF2\angle 296 400; + Splitter4\output -> PlusMinus1\minus; + Splitter4\output -> PlusMinus3\minus 632 344 552 288; + Splitter5\output -> Link3\Hin; + Splitter5\output -> new_joint2\input; + Splitter6\output -> Link1\Hin; + Splitter6\output -> new_joint1\input; + Splitter7\output -> inverse_kinematics\input; + Splitter7\output -> inverse_kinematics1\input 32 680 32 864; + Submodel1\p2 => OneJunction18\p; + Submodel2\p2 => ZeroJunction7\p; + Submodel3\angle -> Splitter1\input 368 448 368 416; + Submodel3\angular_momentum -> I\i 320 440 320 264; + Submodel3\joint1 -> MXTF\p 392 320; + Submodel3\joint2 -> TF\p; + Submodel3\mass -> COM1\mass 336 528 416 528 416 568; + Submodel4\angle -> Splitter2\input; + Submodel4\angular_momentum -> I1\i 720 424 720 288; + Submodel4\joint1 -> TF3\p; + Submodel4\joint2 -> TF2\p; + Submodel4\mass -> COM2\mass 736 528 736 584; + Submodel5\p2 => OneJunction17\p; + Submodel8\input <- PID1\output; + Submodel8\p2 => OneJunction16\p; + TF\p2 => ZeroJunction\p; + TF2\p2 => ZeroJunction2\p; + TF3\p2 => ZeroJunction3\p; + Zero\output -> Joint1\Hin; + ZeroJunction\p => RTF1\p1; + ZeroJunction1\p => OneJunction5\p; + ZeroJunction2\p => OneJunction9\p; + ZeroJunction3\p => OneJunction12\p; + ZeroJunction4\p => OneJunction10\p; + ZeroJunction5\p => OneJunction3\p; + ZeroJunction7\p => Joint1\p1; + end; + implementation_end; +]]> + + + + + + + Experiment 1 + + + + 4.8 + + + + + + + + + + + + Base1\InertialTensor\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + Base3\InertialTensor\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + I1\state_initial + 0 + + + I\state_initial + 0 + + + Joint1\JointType\uTbai\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + Joint2\JointType\uTbai\state_initial + 6 + 1 + 0 0 0 0 0 0 + + + PID1\pdstate_initial + 0 + + + PID1\pistate_initial + 0 + + + PID2\pdstate_initial + 0 + + + PID2\pistate_initial + 0 + + + PID3\pdstate_initial + 0 + + + PID3\pistate_initial + 0 + + + PID\pdstate_initial + 0 + + + PID\pistate_initial + 0 + + + Base2\InertialTensor\p.e_initial + 6 + 1 + 0 0 0 0 0 0 + + + COM1\I\p.e_initial + 2 + 1 + 0 0 + + + COM2\I\p.e_initial + 2 + 1 + 0 0 + + + COM3\I\p.e_initial + 2 + 1 + 0 0 + + + R1\p.e_initial + 0 + + + R\p.e_initial + 0 + + + Submodel2\R\p.f_initial + 0 + + + Submodel5\R\p.f_initial + 0 + + + + + + time + Submodel3\body_position[1] + Submodel3\body_position[2] + Submodel3\body_position[3] + Submodel3\body_angle[1] + Submodel3\body_angle[2] + Submodel3\body_angle[3] + Submodel3\dimension[1] + Submodel3\dimension[2] + Submodel3\dimension[3] + Submodel4\dimension[1] + Submodel4\dimension[2] + Submodel4\dimension[3] + Submodel4\body_angle[1] + Submodel4\body_angle[2] + Submodel4\body_angle[3] + Submodel4\body_position[1] + Submodel4\body_position[2] + Submodel4\body_position[3] + PlusMinus2\output + PlusMinus3\output + Integrate\output[2] + Integrate\output[1] + MSe1\effort + MSe2\effort + MSe2\flow + MSe1\flow + 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] + PID2\error + PID3\error + new_joint3\position[3] + new_joint3\position[2] + + + + 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 + true + false + + + 0.0 + 2.0512133912317303 + true + 3 + + + + + + -0.009999999999999998 + 0.04 + true + 1 + + + + -0.25 + 0.25 + true + 1 + + + + -0.25 + 0.25 + true + 1 + + + + -0.25 + 0.25 + true + 1 + + + + + + + + 3355111 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + MSe1\effort + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + MSe2\effort + + + + 12553035 + 1 + 12553035 + 0 + false + 1 + 1 + 1 + true + + true + time + + + true + MSe2\flow + + + + 15086320 + 1 + 15086320 + 0 + false + 1 + 1 + 1 + true + + true + time + + + true + MSe1\flow + + + + + true + + 0.9024193548387097 + 0.0308411214953271 + + 0 + 16777215 + + + + GraphPlot + + 2 + 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.0512133912317303 + true + 3 + + + + + + -1.5 + 3.5 + true + 2 + + + + 0.0 + 235.918450873204 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + PlusMinus2\output + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + PlusMinus3\output + + + + + true + 0 + 16777215 + + + + D3DPlot + + 3 + 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 + + + 2.3432919923881 + + + 2.28068543057283 + + + 1.56751702352047 + + + + + + -0.646203434499504 + + + -0.628938588548313 + + + -0.432270023337152 + + + + + -0.309771185077498 + + + -0.301494918649692 + + + 0.901744213690389 + + + 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 + + + Submodel3\body_position[1] + 0.0 + + + Submodel3\body_position[2] + -0.01915326984592884 + + + Submodel3\body_position[3] + 0.02623393923392464 + + + + + + Submodel3\body_angle[1] + 2.2010448489940284 + + + Submodel3\body_angle[2] + 0.0 + + + Submodel3\body_angle[3] + 0.0 + + + Euler + + 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 + + + Submodel4\body_position[1] + 0.0 + + + Submodel4\body_position[2] + -0.013315183118204434 + + + Submodel4\body_position[3] + 0.05268450409359094 + + + + + + Submodel4\body_angle[1] + 0.008626014952555631 + + + Submodel4\body_angle[2] + 0.0 + + + Submodel4\body_angle[3] + 0.0 + + + Euler + + false + false + false + false + false + false + + +
+
+ + + + + 10 + + + 10 + + + 10 + + + false + Reference Frame + + + 0.5 + + + + + + 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.01914237844052437 + + + new_joint1\position[3] + 0.026264412189115294 + + + + + + new_joint1\R[1,3] + 0.0 + + + new_joint1\R[2,3] + -0.8081357596650859 + + + new_joint1\R[3,3] + -0.588996259708442 + + + + + new_joint1\R[1,2] + 0.0 + + + new_joint1\R[2,2] + -0.588996259708442 + + + new_joint1\R[3,2] + 0.8081357596650859 + + + 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.013304570144791548 + + + new_joint2\position[3] + 0.0515337009578849 + + + + + + new_joint2\R[1,3] + 0.0 + + + new_joint2\R[2,3] + 0.03980493681382746 + + + new_joint2\R[3,3] + 0.9992074694502875 + + + + + new_joint2\R[1,2] + 0.0 + + + new_joint2\R[2,2] + 0.9992074694502875 + + + new_joint2\R[3,2] + -0.03980493681382746 + + + Matrix + + false + false + false + false + false + false + + +
+
+ +
+ +
+ +
+
+ + GraphPlot + + 4 + 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.008778601272032657 + 0.115 + true + 3 + + + + + + -0.06 + 0.14 + true + 2 + + + + -0.06 + 0.14 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + Integrate\output[1] + + + true + Integrate\output[2] + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + new_joint3\position[2] + + + true + new_joint3\position[3] + + + + + true + 0 + 16777215 + + + + GraphPlot + + 5 + false + 16777215 + true + + + true + 15780518 + 12624260 + 0 + 10 + 10 + 10 + false + + 16777215 + true + 1 + Plot + true + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 10 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + true + true + false + + + 0.0 + 2.0512133912317303 + true + 3 + + + + + + -5.0 + 5.0 + true + 2 + + + + -1885.20460252739 + 0.0 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + PID2\error + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + PID3\error + + + + + true + 0 + 16777215 + + +
+ + + 1 + true + Window 1 + 0 + + 1 + 2 + 4 + + Base + + + 2 + true + Window 2 + 0 + + 3 + + Base + + + 3 + true + Window 3 + 0 + + 5 + + Base + + + + +-0.00208333 0.00462963 1.00208 1.0037 + + +0.138021 0.169444 0.777604 0.862963 + + +0.295833 0.327778 0.692187 0.765741 + + +
+ + + 0.0 + 10.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 + +
+
+
+