diff --git a/implementation/SCARA/06_arm/arm_model.emx b/implementation/SCARA/06_arm/arm_model.emx index 8a3d39e..8bd8422 100644 --- a/implementation/SCARA/06_arm/arm_model.emx +++ b/implementation/SCARA/06_arm/arm_model.emx @@ -8,7 +8,7 @@ 0 False C:\users\wouter\My Documents\studie\ma\mahd\implementation\SCARA\06_arm\arm_model.emx - 2020-7-23 10:05:57 + 2020-7-23 11:32:46 '; type Mainmodel @@ -28,6 +28,8 @@ signal in input [4,4]; end; implementation eq +parameters + real dimension[3] = [0.005;0.01;0.065] {m}; variables real position[3]; real rotation[3]; @@ -37,7 +39,7 @@ equations rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input); //[input[3,2];input[1,3];input[2,1]]; R = input[1:3,1:3];implementation_end; - Body2 896 544 + Body2 792 544 description '4.0 Template\Submodel-Equation.emx 1 @@ -50,6 +52,8 @@ equations signal in input [4,4]; end; implementation eq +parameters + real dimension[3] = [0.005;0.025;0.01] {m}; variables real position[3]; real rotation[3]; @@ -72,6 +76,8 @@ equations signal in input [4,4]; end; implementation eq +parameters + real dimension[3] = [0.005;0.01;0.065] {m}; variables real position[3]; real rotation[3]; @@ -81,7 +87,7 @@ equations rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input); //[input[3,2];input[1,3];input[2,1]]; R = input[1:3,1:3];implementation_end; - Body4 368 152 + Body4 696 200 description '4.0 Template\Submodel-Equation.emx 1 @@ -94,6 +100,8 @@ equations signal in input [4,4]; end; implementation eq +parameters + real dimension[3] = [0.005;0.05;0.01] {m}; variables real position[3]; real rotation[3]; @@ -103,7 +111,7 @@ equations rotation = dll('EulerAngles.dll','EulXYZsFromHMatrix',input); //[input[3,2];input[1,3];input[2,1]]; R = input[1:3,1:3];implementation_end; - Body5 832 208 + Body5 920 232 description '4.0 Template\Submodel-Equation.emx 1 @@ -116,6 +124,8 @@ equations signal in input [4,4]; end; implementation eq +parameters + real dimension[3] = [0.005;0.025;0.01] {m}; variables real position[3]; real rotation[3]; @@ -1015,7 +1025,7 @@ implementation_end; ZeroJunction1\p => Ta0j\p; end; implementation_end; - COM_body5 960 136 + COM_body5 1064 136 description '4.81Bond Graph\MR\center_of_mass_v2.emx2020-7-21 12:24:38parameters real I [3,1] = [0.018;0.159;0.159] {mN.m.s}; real m = 0.015 {kg};'; @@ -1027,11 +1037,11 @@ implementation_end; end; icon bg bottom figures - rectangle 944 104 976 168 color 0 fill 139; - text 'COM' 960 136 color 0 'Clear Sans' 16; + rectangle 1048 104 1080 168 color 0 fill 139; + text 'COM' 1064 136 color 0 'Clear Sans' 16; terminals - Hin 944 152 fixed; - p 944 120 fixed; + Hin 1048 152 fixed; + p 1048 120 fixed; end; implementation bg submodels @@ -1235,7 +1245,7 @@ implementation_end; ZeroJunction1\p => Ta0j\p; end; implementation_end; - Ground 436 615.5 + Ground1 1052 711.5 description ' 4.8 @@ -1251,22 +1261,22 @@ implementation_end; end; icon bg bottom figures - line 400 608 416 624 color 0 fill 15132390; - line 408 608 424 624 color 0 fill 15132390; - line 392 608 408 624 color 0 fill 15132390; - line 432 624 416 608 color 0 fill 15132390; - line 440 624 424 608 color 0 fill 15132390; - line 448 624 432 608 color 0 fill 15132390; - line 464 624 448 608 color 0 fill 15132390; - line 456 624 440 608 color 0 fill 15132390; - line 472 624 456 608 color 0 fill 15132390; - line 480 624 464 608 color 0 fill 15132390; - line 392 608 480 608 color 0 fill 15132390 width 2; - line 472 608 480 616 color 0 fill 15132390; - line 392 616 400 624 color 0 fill 15132390; + line 1016 704 1032 720 color 0 fill 15132390; + line 1024 704 1040 720 color 0 fill 15132390; + line 1008 704 1024 720 color 0 fill 15132390; + line 1048 720 1032 704 color 0 fill 15132390; + line 1056 720 1040 704 color 0 fill 15132390; + line 1064 720 1048 704 color 0 fill 15132390; + line 1080 720 1064 704 color 0 fill 15132390; + line 1072 720 1056 704 color 0 fill 15132390; + line 1088 720 1072 704 color 0 fill 15132390; + line 1096 720 1080 704 color 0 fill 15132390; + line 1008 704 1096 704 color 0 fill 15132390 width 2; + line 1088 704 1096 712 color 0 fill 15132390; + line 1008 712 1016 720 color 0 fill 15132390; terminals - p 416 608 fixed; - output 448 608 fixed; + p 1032 704 fixed; + output 1064 704 fixed; end; implementation bg submodels @@ -1348,7 +1358,7 @@ equations Zero\output -> output; end; implementation_end; - Ground1 1052 727.5 + Ground2 436 623.5 description ' 4.8 @@ -1364,22 +1374,22 @@ equations end; icon bg bottom figures - line 1016 720 1032 736 color 0 fill 15132390; - line 1024 720 1040 736 color 0 fill 15132390; - line 1008 720 1024 736 color 0 fill 15132390; - line 1048 736 1032 720 color 0 fill 15132390; - line 1056 736 1040 720 color 0 fill 15132390; - line 1064 736 1048 720 color 0 fill 15132390; - line 1080 736 1064 720 color 0 fill 15132390; - line 1072 736 1056 720 color 0 fill 15132390; - line 1088 736 1072 720 color 0 fill 15132390; - line 1096 736 1080 720 color 0 fill 15132390; - line 1008 720 1096 720 color 0 fill 15132390 width 2; - line 1088 720 1096 728 color 0 fill 15132390; - line 1008 728 1016 736 color 0 fill 15132390; + line 400 616 416 632 color 0 fill 15132390; + line 408 616 424 632 color 0 fill 15132390; + line 392 616 408 632 color 0 fill 15132390; + line 432 632 416 616 color 0 fill 15132390; + line 440 632 424 616 color 0 fill 15132390; + line 448 632 432 616 color 0 fill 15132390; + line 464 632 448 616 color 0 fill 15132390; + line 456 632 440 616 color 0 fill 15132390; + line 472 632 456 616 color 0 fill 15132390; + line 480 632 464 616 color 0 fill 15132390; + line 392 616 480 616 color 0 fill 15132390 width 2; + line 472 616 480 624 color 0 fill 15132390; + line 392 624 400 632 color 0 fill 15132390; terminals - p 1032 720 fixed; - output 1064 720 fixed; + p 416 616 fixed; + output 448 616 fixed; end; implementation bg submodels @@ -1461,6 +1471,49 @@ equations Zero\output -> output; end; implementation_end; + inverse_kinematics 320 744 + description ' + + 4.8 + SCARA\inverse_kinematics_v1.emx +1 + False + 2020-7-10 12:26:18 +False + +'; + type 'Submodel-Equation' + ports + signal in input [2,1] {m} ; + signal out angle1 {rad} ; + signal out angle2 {rad} ; + signal out a {rad} ; + signal out b {rad} ; + signal out c {rad} ; + signal out phi {rad} ; + end; + implementation eq +parameters + real A_length = 0.065 {m}; // length of first arm + real B_length = 0.05 {m}; // length of second arm + real to_rad = 1 {rad}; +variables + real x {m}, y {m}; + real C_length {m}; // length to x and y. +equations + x = input[1]; + y = input[2]; + phi = atan2(y, x); + C_length = sqrt(x^2 + y^2); + a = arccos ((B_length^2 + C_length^2 - A_length^2) / (2 * B_length * C_length)); + b = arccos ((A_length^2 + C_length^2 - B_length^2) / (2 * A_length * C_length)); + c = arccos ((A_length^2 + B_length^2 - C_length^2) / (2 * A_length * B_length)); + angle1 = b + phi; + angle2 = angle1 - pi * to_rad + c; + + + + implementation_end; JointA 432 536 description ' @@ -1484,10 +1537,10 @@ equations rectangle 400 512 464 560 color 0 fill 14745599; text 'Joint' 432 536 color 0 'Clear Sans' 16; terminals - Pin 416 512 fixed; - Hin 448 560 fixed; - Hout 448 512 fixed; - Pout 416 560 fixed; + Pin 416 560 fixed; + Hin 448 512 fixed; + Hout 448 560 fixed; + Pout 416 512 fixed; end; implementation bg submodels @@ -1699,10 +1752,10 @@ implementation_end; rectangle 400 192 464 240 color 0 fill 14745599; text 'Joint' 432 216 color 0 'Clear Sans' 16; terminals - Pin 416 192 fixed; - Hin 448 240 fixed; - Hout 448 192 fixed; - Pout 416 240 fixed; + Pin 416 240 fixed; + Hin 448 192 fixed; + Hout 448 240 fixed; + Pout 416 192 fixed; end; implementation bg submodels @@ -1891,7 +1944,7 @@ implementation_end; Wbai\p => Pout; end; implementation_end; - JointC 928 616 + JointC 944 616 description ' 4.8 @@ -1911,13 +1964,13 @@ implementation_end; end; icon bg bottom figures - rectangle 904 584 952 648 color 0 fill 14745599; - text 'Joint' 928 616 color 0 'Clear Sans' 16; + rectangle 920 584 968 648 color 0 fill 14745599; + text 'Joint' 944 616 color 0 'Clear Sans' 16; terminals - Pin 904 632 fixed; - Hin 952 600 fixed; - Hout 904 600 fixed; - Pout 952 632 fixed; + Pin 920 632 fixed; + Hin 968 600 fixed; + Hout 920 600 fixed; + Pout 968 632 fixed; end; implementation bg submodels @@ -2751,7 +2804,7 @@ implementation_end; Wbai\p => Pout; end; implementation_end; - Joint_dynA 336 536 + Joint_dynA 320 536 description ' 4.8 1 @@ -2759,9 +2812,38 @@ implementation_end; type Submodel ports power out output [6,1]; + signal in angle {rad} ; end; implementation bg submodels + C 264 200 + description ' + + 4.2 +1 + False + Bond Graph\C.emx + 2011-11-29 15:58:35 + +'; + type C + ports + power in p; + signal out state; + restrictions + causality preferred out p; + end; + icon bg bottom + figures + text 'C' 264 200 color 0 18 bold; + end; + implementation eq +parameters + real c = 0.001; +equations + state = int(p.f); + p.e = state / c; +implementation_end; C1 191.8 216.2 description '4.01False Bond Graph\3D\C-3.emx @@ -2808,7 +2890,8 @@ equations state = int(p.f); p.e = inverse(c) *state; implementation_end; - plug output 396 216; + plug output 468 216; + plug angle 224 80; OneJunction5 239.8 232.2 description ' @@ -2863,7 +2946,7 @@ equations equal (collect (p.f)); flow = first (p.f); implementation_end; - OneJunction8 288 200 + OneJunction8 312 200 description ' 4.2 @@ -2875,14 +2958,14 @@ implementation_end; '; knot OneJunction ports - power knot duplicatable none p [1]; + rotation knot duplicatable none p [1]; signal knot out flow [1]; restrictions causality constraint one_out p; end; icon bg figures - text '1' 288 200 color 0 18 bold; + text '1' 312 200 color 0 18 bold; end; implementation eq equations @@ -2890,7 +2973,7 @@ equations equal (collect (p.f)); flow = first (p.f); implementation_end; - PowerMux 330 216 + PowerMux 402 216 specifications active 'rot_x' specification 'rot_x' description ' @@ -2916,14 +2999,14 @@ implementation_end; end; icon bg bottom figures - line 328 192 328 240 color 0 width 2; - rectangle 324 192 336 240 color -1; - text '1' 333 210 color 8421504 8; + line 400 192 400 240 color 0 width 2; + rectangle 396 192 408 240 color -1; + text '1' 405 210 color 8421504 8; terminals - input 328 200 fixed; - output 328 216 fixed; - input_rot2 328 232 fixed; - input_pos3 328 216 fixed; + input 400 200 fixed; + output 400 216 fixed; + input_rot2 400 232 fixed; + input_pos3 400 216 fixed; end; implementation eq equations @@ -3019,7 +3102,7 @@ equations output.f[4:6] = input_pos3.f;implementation_end; specification_end; end; - R 288 152 + R 312 152 description ' 4.2 @@ -3033,13 +3116,13 @@ specification_end; ports power in p; end; - icon bg top + icon bg bottom figures - text 'R' 288 152 color 0 18 bold; + text 'R' 312 152 color 0 18 bold; end; implementation eq parameters - real r = 0.01; + real r = 0.001; equations p.e = r * p.f; implementation_end; @@ -3081,79 +3164,228 @@ parameters equations p.e = r * p.f; implementation_end; - end; - connections - C1\p <= OneJunction7\p; - OneJunction5\p => C4\p; - OneJunction5\p => PowerMux\input_rot2; - OneJunction5\p => R4\p; - OneJunction7\p => PowerMux\input_pos3; - OneJunction7\p => R5\p; - OneJunction8\p => PowerMux\input; - PowerMux\output => output; - R\p <= OneJunction8\p; - end; - implementation_end; - Joint_dynB 336 216 - description ' - 4.8 - 1 - '; - type Submodel - ports - power out output [6,1]; - end; - implementation bg - submodels - C1 191.8 216.2 - description '4.01False - Bond Graph\3D\C-3.emx - 2007-9-25 12:12:8 -'; - type 'C-3' + stepper_model 360 80 + description '4.81Motor\stepper_model.emx2020-7-23 10:54:47parameters + real I_phase = 3.4 {mH}; + real R_phase = 2.9 {ohm}; + real u_max = 6 {V}; + real RotorInertia = 5.6e-6 {kg.m2}; + real StepperMass = 0.29 {kg}; + real angle_step = 1.8 {deg}; + real n_phase = 2 {none}; + real fluxLinkage = 0.0022 {Wb}; + real detentTorque = 0.01 {N.m}; +variables + real omega; + real p; // rotor division +initialequations + p = 2 * pi / (2 * n_phase * angle_step); + omega = 200;'; + type Submodel ports - power in p [3,1]; - signal out state [3,1]; - restrictions - causality preferred out p; - end; - icon bg top - figures - text 'C' 191.8 216.2 color 0 18 bold; + signal in angle; + rotation out p; end; - implementation eq + implementation bg + submodels + I 560 104 + description ' + + 4.2 +1 + False + Bond Graph\I.emx + 2011-11-29 15:55:55 + +'; + type I + ports + power in p; + signal out state; + restrictions + causality preferred in p; + end; + icon bg bottom + figures + text 'I' 560 104 color 0 18 bold; + end; + implementation eq parameters - real c[3,3] = [0.1, 0.0, 0.0; 0.0, 0.1, 0.0; 0.0, 0.0, 0.1] {mN/m}; + real global I_phase; equations - state = int(p.f); - p.e = inverse(c) *state; + state = int(p.e); + p.f = state / I_phase; implementation_end; - C4 191.8 232.2 - description '4.01False - Bond Graph\2D\C-2.emx - 2007-9-25 12:7:27 -'; - type 'C-2' - ports - power in p [2,1]; - signal out state [2,1]; - restrictions - causality preferred out p; - end; - icon bg bottom - figures - text 'C' 191.8 232.2 color 0 18 bold; - end; - implementation eq + I1 608 328 + description ' + + 4.2 +1 + False + Bond Graph\I.emx + 2011-11-29 15:55:55 + +'; + type I + ports + power in p; + signal out state; + restrictions + causality preferred in p; + end; + icon bg bottom + figures + text 'I' 608 328 color 0 18 bold; + end; + implementation eq parameters - real c[2,2] = [0.1, 0.0; 0.0, 0.1] {mN.m/rad}; + real global I_phase; equations - state = int(p.f); - p.e = inverse(c) *state; + state = int(p.e); + p.f = state / I_phase; implementation_end; - plug output 396 216; - OneJunction5 239.8 232.2 - description ' + I2 752 160 + description ' + + 4.2 +1 + False + Bond Graph\I.emx + 2011-11-29 15:55:55 + +'; + type I + ports + power in p; + signal out state; + restrictions + causality preferred in p; + end; + icon bg bottom + figures + text 'I' 752 160 color 0 18 bold; + end; + implementation eq +parameters + real global RotorInertia; +equations + state = int(p.e); + p.f = state / (RotorInertia); +implementation_end; + MGY_a 656 160 + description ' + + 4.2 +1 + False + Bond Graph\MGY.emx + 2011-11-29 16:03:53 + +'; + type MGY + ports + power in p1; + power out p2; + signal in r; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'MGY' 656 160 color 0 18 bold; + end; + implementation eq +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MGY_b 656 272 + description ' + + 4.2 +1 + False + Bond Graph\MGY.emx + 2011-11-29 16:03:53 + +'; + type MGY + ports + power in p1; + power out p2; + signal in r; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'MGY' 656 272 color 0 18 bold; + end; + implementation eq +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe_a 512 160 + description ' + + 4.2 +1 + False + Bond Graph\MSe.emx + 2011-11-29 16:12:33 + +'; + type MSe + ports + electric out p; + signal in effort; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'MSe' 512 160 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + MSe_b 512 272 + description ' + + 4.2 +1 + False + Bond Graph\MSe.emx + 2011-11-29 16:12:33 + +'; + type MSe + ports + electric out p; + signal in effort; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'MSe' 512 272 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug angle 200 216; + plug p 1472 216; + OneJunction1 840 216 + description ' 4.2 1 @@ -3162,25 +3394,25 @@ implementation_end; 2011-11-29 16:17:51 '; - knot OneJunction - ports - power knot duplicatable none p [2,1]; - signal knot out flow [2,1]; - restrictions - causality constraint one_out p; - end; - icon bg - figures - text '1' 239.8 232.2 color 0 18 bold; - end; - implementation eq + knot OneJunction + ports + rotation knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 840 216 color 0 18 bold; + end; + implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; - OneJunction7 239.8 216.2 - description ' + OneJunction2 584 160 + description ' 4.2 1 @@ -3189,25 +3421,25 @@ implementation_end; 2011-11-29 16:17:51 '; - knot OneJunction - ports - power knot duplicatable none p [3,1]; - signal knot out flow [3,1]; - restrictions - causality constraint one_out p; - end; - icon bg - figures - text '1' 239.8 216.2 color 0 18 bold; - end; - implementation eq + knot OneJunction + ports + electric knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 584 160 color 0 18 bold; + end; + implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; - OneJunction8 288 200 - description ' + OneJunction3 584 272 + description ' 4.2 1 @@ -3216,154 +3448,110 @@ implementation_end; 2011-11-29 16:17:51 '; - knot OneJunction - ports - power knot duplicatable none p [1]; - signal knot out flow [1]; - restrictions - causality constraint one_out p; - end; - icon bg - figures - text '1' 288 200 color 0 18 bold; - end; - implementation eq + knot OneJunction + ports + electric knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 584 272 color 0 18 bold; + end; + implementation eq equations sum (direct (p.e)) = 0; equal (collect (p.f)); flow = first (p.f); implementation_end; - PowerMux 330 216 - specifications active 'rot_x' - specification 'rot_x' - description ' + OneJunction4 752 216 + description ' - 4.8 - Bond Graph\MR\PowerMux-Rotation.emx - 2020-7-20 14:35:23 + 4.2 1 False - True - + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + '; - type 'PowerMux-Rotation' - ports - power in input; - power out output [6,1]; - power in input_rot2 [2,1]; - power in input_pos3 [3,1]; - restrictions - causality constraint not_equal input output; - causality constraint not_equal input_rot2 output; - causality constraint not_equal input_pos3 output; - end; - icon bg bottom - figures - line 328 192 328 240 color 0 width 2; - rectangle 324 192 336 240 color -1; - text '1' 333 210 color 8421504 8; - terminals - input 328 200 fixed; - output 328 216 fixed; - input_rot2 328 232 fixed; - input_pos3 328 216 fixed; - end; - implementation eq + knot OneJunction + ports + rotation knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 752 216 color 0 18 bold; + end; + implementation eq equations - output.e[1] = input.e; - output.e[2:3] = input_rot2.e; - output.e[4:6] = input_pos3.e; - output.f[1] = input.f; - output.f[2:3] = input_rot2.f; - output.f[4:6] = input_pos3.f;implementation_end; -specification_end; - specification 'rot_y' -description ' - 4.1 - Bond Graph\PowerMux.emx - 2011-3-4 15:12:50 + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + phase_control 512 216 + description '4.0 + Template\Submodel-Equation.emx 1 False - True + 2007-11-1 22:32:1 + False '; - type PowerMux - ports - power in input; - power out output [6,1]; - power in input_rot2 [2,1]; - power in input_pos3 [3,1]; - restrictions - causality constraint not_equal input output; - causality constraint not_equal input_rot2 output; - causality constraint not_equal input_pos3 output; - end; - icon bg bottom - figures - line 242 274 290 274 color 0 width 2; - rectangle 242 266 290 278 color -1; - text '1' 260 269 color 8421504 8; - terminals - input 250 274 fixed; - output 266 274 fixed; - input_rot2 282 274 fixed; - input_pos3 266 274 fixed; - end; - implementation eq + type Submodel + ports + signal in angle; + signal out a; + signal out b; + end; + icon bg + figures + rectangle 472 200 552 232 color 0 fill 15132390; + text 'name' 512 216 color 0 'Clear Sans' 16; + end; + implementation eq +parameters + real global u_max {V}; +variables + real global p; + boolean hidden eventa, eventb; equations - output.e[1] = input_rot2.e[1]; - output.e[2] = input.e; - output.e[3] = input_rot2.e[2]; - output.e[4:6] = input_pos3.e; - output.f[1] = input_rot2.f[1]; - output.f[2] = input.f; - output.f[3] = input_rot2.f[2]; - output.f[4:6] = input_pos3.f;implementation_end; -specification_end; - specification 'rot_z' -description ' + a = u_max * (cos (p*angle)); + eventa = event(a); + b = u_max * -(sin (p*angle)); + eventb = event(b); + + + + implementation_end; + R 608 104 + description ' - 4.8 - Bond Graph\MR\PowerMux-Rotation.emx - 2020-7-21 12:05:13 + 4.2 1 False - True - + Bond Graph\R.emx + 2011-11-29 16:35:37 + '; - type PowerMux - ports - power in input; - power out output [6,1]; - power in input_rot2 [2,1]; - power in input_pos3 [3,1]; - restrictions - causality constraint not_equal input output; - causality constraint not_equal input_rot2 output; - causality constraint not_equal input_pos3 output; - end; - icon bg bottom - figures - line 242 274 290 274 color 0 width 2; - rectangle 242 266 290 278 color -1; - text '1' 260 269 color 8421504 8; - terminals - input 250 274 fixed; - output 266 274 fixed; - input_rot2 282 274 fixed; - input_pos3 266 274 fixed; - end; - implementation eq + type R + ports + power in p; + end; + icon bg bottom + figures + text 'R' 608 104 color 0 18 bold; + end; + implementation eq +parameters + real global R_phase; equations - output.e[3] = input.e; - output.e[1:2] = input_rot2.e; - output.e[4:6] = input_pos3.e; - output.f[3] = input.f; - output.f[1:2] = input_rot2.f; - output.f[4:6] = input_pos3.f;implementation_end; -specification_end; - end; - R 288 152 - description ' + p.e = R_phase * p.f; +implementation_end; + R1 560 328 + description ' 4.2 1 @@ -3372,72 +3560,177 @@ specification_end; 2011-11-29 16:35:37 '; - type R - ports - power in p; - end; - icon bg top - figures - text 'R' 288 152 color 0 18 bold; - end; - implementation eq + type R + ports + power in p; + end; + icon bg bottom + figures + text 'R' 560 328 color 0 18 bold; + end; + implementation eq parameters - real r = 0.01; + real global R_phase; equations - p.e = r * p.f; + p.e = R_phase * p.f; implementation_end; - R4 239.8 288.2 - description '4.01False - Bond Graph\2D\R-2.emx - 2007-9-25 12:6:54 -'; - type 'R-2' - ports - power in p [2,1]; - end; - icon bg bottom - figures - text 'R' 239.8 288.2 color 0 18 bold; - end; - implementation eq + R2 824 264 + description ' + + 4.2 +1 + False + Bond Graph\R.emx + 2011-11-29 16:35:37 + +'; + type R + ports + power in p; + end; + icon bg bottom + figures + text 'R' 824 264 color 0 18 bold; + end; + implementation eq parameters - real r[2,2] = [1.0, 0.0; 0.0, 1.0] {kN.m.s/rad}; -equations + real r = 1.0e-3; +equations p.e = r * p.f; implementation_end; - R5 239.8 168.2 - description '4.01False - Bond Graph\3D\R-3.emx - 2007-9-25 12:11:54 + RotorAngle 656 216 + description '4.0 + Template\Submodel-Equation.emx +1 + False + 2007-11-1 22:32:1 + False '; - type 'R-3' + type Submodel + ports + signal out output_b; + signal out output_a; + signal in omega {rad/s} ; + signal out output_d; + end; + icon bg + figures + rectangle 616 200 696 232 color 0 fill 15132390; + text 'name' 656 216 color 0 'Clear Sans' 16; + end; + implementation eq +parameters + real global fluxLinkage; + real global detentTorque; +variables + real global p; + real angle {rad}; +equations + angle = int(omega,-1.65); + output_a = -p * fluxLinkage * sin(p * angle); + output_b = p * fluxLinkage * sin(p * angle - pi / 2); + output_d = detentTorque * sin(2 * p * angle); + implementation_end; + Se 752 272 + description ' + + 4.2 +1 + False + Bond Graph\MSe.emx + 2011-11-29 16:12:33 + +'; + type MSe + ports + power out p; + signal in effort; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'MSe' 752 272 color 0 18 bold; + end; + implementation eq + +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + end; + connections + angle -> phase_control\angle; + I2\p <= OneJunction4\p; + MGY_a\p2 => OneJunction4\p; + MGY_b\p2 => OneJunction4\p; + MSe_b\p => OneJunction3\p; + OneJunction1\p => p; + OneJunction2\p <= MSe_a\p; + OneJunction2\p => I\p; + OneJunction2\p => MGY_a\p1; + OneJunction2\p => R\p; + OneJunction3\p => I1\p; + OneJunction3\p => MGY_b\p1; + OneJunction3\p => R1\p; + OneJunction4\flow -> RotorAngle\omega; + OneJunction4\p => OneJunction1\p; + OneJunction4\p => R2\p; + phase_control\a -> MSe_a\effort; + phase_control\b -> MSe_b\effort; + RotorAngle\output_a -> MGY_a\r; + RotorAngle\output_b -> MGY_b\r; + RotorAngle\output_d -> Se\effort; + Se\p => OneJunction4\p; + end; + implementation_end; + ZeroJunction1 360 200 + description ' + + 4.2 +1 + False + Bond Graph\ZeroJunction.emx + 2011-11-29 16:45:16 + +'; + knot ZeroJunction ports - power in p [3,1]; + rotation knot duplicatable none p [1]; + signal knot out effort [1]; + restrictions + causality constraint one_in p; end; - icon bg top + icon bg figures - text 'R' 239.8 168.2 color 0 18 bold; + text '0' 360 200 color 0 18 bold; end; implementation eq -parameters - real r[3,3] = [1.0, 0.0, 0.0; 0.0, 1.0, 0.0; 0.0, 0.0, 1.0] {kN.s/m}; -equations - p.e = r * p.f; +equations + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); implementation_end; end; connections + angle -> stepper_model\angle; + C\p <= OneJunction8\p; C1\p <= OneJunction7\p; OneJunction5\p => C4\p; OneJunction5\p => PowerMux\input_rot2; OneJunction5\p => R4\p; OneJunction7\p => PowerMux\input_pos3; OneJunction7\p => R5\p; - OneJunction8\p => PowerMux\input; + OneJunction8\p => R\p; + PowerMux\input <= ZeroJunction1\p; PowerMux\output => output; - R\p <= OneJunction8\p; + ZeroJunction1\p <= OneJunction8\p; + ZeroJunction1\p <= stepper_model\p; end; implementation_end; - Joint_dynC 928 696 + Joint_dynB 336 216 description ' 4.8 1 @@ -3780,7 +4073,7 @@ implementation_end; R\p <= OneJunction8\p; end; implementation_end; - Joint_dynD 536 536 + Joint_dynC 944 696 description ' 4.8 1 @@ -4123,7 +4416,7 @@ implementation_end; R\p <= OneJunction8\p; end; implementation_end; - Joint_dynE 536 216 + Joint_dynD 528 536 description ' 4.8 1 @@ -4131,9 +4424,43 @@ implementation_end; type Submodel ports power out output [6,1]; + signal in angle {rad} ; + end; + icon bg + figures + rectangle 488 520 568 552 color 0 fill 15132390; + text 'name' 528 536 color 0 'Clear Sans' 16; end; implementation bg submodels + C 264 200 + description ' + + 4.2 +1 + False + Bond Graph\C.emx + 2011-11-29 15:58:35 + +'; + type C + ports + power in p; + signal out state; + restrictions + causality preferred out p; + end; + icon bg bottom + figures + text 'C' 264 200 color 0 18 bold; + end; + implementation eq +parameters + real c = 0.001; +equations + state = int(p.f); + p.e = state / c; +implementation_end; C1 191.8 216.2 description '4.01False Bond Graph\3D\C-3.emx @@ -4180,7 +4507,8 @@ equations state = int(p.f); p.e = inverse(c) *state; implementation_end; - plug output 396 216; + plug output 468 216; + plug angle 224 80; OneJunction5 239.8 232.2 description ' @@ -4235,7 +4563,7 @@ equations equal (collect (p.f)); flow = first (p.f); implementation_end; - OneJunction8 288 200 + OneJunction8 312 200 description ' 4.2 @@ -4247,14 +4575,14 @@ implementation_end; '; knot OneJunction ports - power knot duplicatable none p [1]; + rotation knot duplicatable none p [1]; signal knot out flow [1]; restrictions causality constraint one_out p; end; icon bg figures - text '1' 288 200 color 0 18 bold; + text '1' 312 200 color 0 18 bold; end; implementation eq equations @@ -4262,7 +4590,7 @@ equations equal (collect (p.f)); flow = first (p.f); implementation_end; - PowerMux 330 216 + PowerMux 402 216 specifications active 'rot_x' specification 'rot_x' description ' @@ -4288,14 +4616,14 @@ implementation_end; end; icon bg bottom figures - line 328 192 328 240 color 0 width 2; - rectangle 324 192 336 240 color -1; - text '1' 333 210 color 8421504 8; + line 400 192 400 240 color 0 width 2; + rectangle 396 192 408 240 color -1; + text '1' 405 210 color 8421504 8; terminals - input 328 200 fixed; - output 328 216 fixed; - input_rot2 328 232 fixed; - input_pos3 328 216 fixed; + input 400 200 fixed; + output 400 216 fixed; + input_rot2 400 232 fixed; + input_pos3 400 216 fixed; end; implementation eq equations @@ -4391,7 +4719,7 @@ equations output.f[4:6] = input_pos3.f;implementation_end; specification_end; end; - R 288 152 + R 312 152 description ' 4.2 @@ -4405,13 +4733,13 @@ specification_end; ports power in p; end; - icon bg top + icon bg bottom figures - text 'R' 288 152 color 0 18 bold; + text 'R' 312 152 color 0 18 bold; end; implementation eq parameters - real r = 0.01; + real r = 0.001; equations p.e = r * p.f; implementation_end; @@ -4453,58 +4781,584 @@ parameters equations p.e = r * p.f; implementation_end; - end; - connections - C1\p <= OneJunction7\p; - OneJunction5\p => C4\p; - OneJunction5\p => PowerMux\input_rot2; - OneJunction5\p => R4\p; - OneJunction7\p => PowerMux\input_pos3; - OneJunction7\p => R5\p; - OneJunction8\p => PowerMux\input; - PowerMux\output => output; - R\p <= OneJunction8\p; - end; - implementation_end; - Joint_dynF 792 56 - description ' - 4.8 - 1 - '; - type Submodel - ports - power out output [6,1]; - end; - implementation bg - submodels - C 264 200 + stepper_model 360 80 + description '4.81Motor\stepper_model.emx2020-7-23 10:54:47parameters + real I_phase = 3.4 {mH}; + real R_phase = 2.9 {ohm}; + real u_max = 6 {V}; + real RotorInertia = 5.6e-6 {kg.m2}; + real StepperMass = 0.29 {kg}; + real angle_step = 1.8 {deg}; + real n_phase = 2 {none}; + real fluxLinkage = 0.0022 {Wb}; + real detentTorque = 0.01 {N.m}; +variables + real omega; + real p; // rotor division +initialequations + p = 2 * pi / (2 * n_phase * angle_step); + omega = 200;'; + type Submodel + ports + signal in angle; + rotation out p; + end; + implementation bg + submodels + I 560 104 + description ' + + 4.2 +1 + False + Bond Graph\I.emx + 2011-11-29 15:55:55 + +'; + type I + ports + power in p; + signal out state; + restrictions + causality preferred in p; + end; + icon bg bottom + figures + text 'I' 560 104 color 0 18 bold; + end; + implementation eq +parameters + real global I_phase; +equations + state = int(p.e); + p.f = state / I_phase; +implementation_end; + I1 608 328 + description ' + + 4.2 +1 + False + Bond Graph\I.emx + 2011-11-29 15:55:55 + +'; + type I + ports + power in p; + signal out state; + restrictions + causality preferred in p; + end; + icon bg bottom + figures + text 'I' 608 328 color 0 18 bold; + end; + implementation eq +parameters + real global I_phase; +equations + state = int(p.e); + p.f = state / I_phase; +implementation_end; + I2 752 160 + description ' + + 4.2 +1 + False + Bond Graph\I.emx + 2011-11-29 15:55:55 + +'; + type I + ports + power in p; + signal out state; + restrictions + causality preferred in p; + end; + icon bg bottom + figures + text 'I' 752 160 color 0 18 bold; + end; + implementation eq +parameters + real i = 8e-5 {kg.m2}; + real global RotorInertia; +equations + state = int(p.e); + p.f = state / (RotorInertia); +implementation_end; + MGY_a 656 160 + description ' + + 4.2 +1 + False + Bond Graph\MGY.emx + 2011-11-29 16:03:53 + +'; + type MGY + ports + power in p1; + power out p2; + signal in r; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'MGY' 656 160 color 0 18 bold; + end; + implementation eq +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MGY_b 656 272 + description ' + + 4.2 +1 + False + Bond Graph\MGY.emx + 2011-11-29 16:03:53 + +'; + type MGY + ports + power in p1; + power out p2; + signal in r; + restrictions + causality constraint equal p1 p2; + end; + icon bg bottom + figures + text 'MGY' 656 272 color 0 18 bold; + end; + implementation eq +equations + p1.e = r * p2.f; + p2.e = r * p1.f; +implementation_end; + MSe_a 512 160 + description ' + + 4.2 +1 + False + Bond Graph\MSe.emx + 2011-11-29 16:12:33 + +'; + type MSe + ports + electric out p; + signal in effort; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'MSe' 512 160 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + MSe_b 512 272 + description ' + + 4.2 +1 + False + Bond Graph\MSe.emx + 2011-11-29 16:12:33 + +'; + type MSe + ports + electric out p; + signal in effort; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'MSe' 512 272 color 0 18 bold; + end; + implementation eq +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + plug angle 200 216; + plug p 1472 216; + OneJunction1 840 216 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + rotation knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 840 216 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction2 584 160 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + electric knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 584 160 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction3 584 272 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + electric knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 584 272 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction4 752 216 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + rotation knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 752 216 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + phase_control 512 216 + description '4.0 + Template\Submodel-Equation.emx +1 + False + 2007-11-1 22:32:1 + False +'; + type Submodel + ports + signal in angle; + signal out a; + signal out b; + end; + icon bg + figures + rectangle 472 200 552 232 color 0 fill 15132390; + text 'name' 512 216 color 0 'Clear Sans' 16; + end; + implementation eq +parameters + real global u_max {V}; +variables + real global p; + boolean hidden eventa, eventb; +equations + a = u_max * (cos (p*angle)); + eventa = event(a); + b = u_max * -(sin (p*angle)); + eventb = event(b); + + + + implementation_end; + R 608 104 + description ' + + 4.2 +1 + False + Bond Graph\R.emx + 2011-11-29 16:35:37 + +'; + type R + ports + power in p; + end; + icon bg bottom + figures + text 'R' 608 104 color 0 18 bold; + end; + implementation eq +parameters + real global R_phase; +equations + p.e = R_phase * p.f; +implementation_end; + R1 560 328 + description ' + + 4.2 +1 + False + Bond Graph\R.emx + 2011-11-29 16:35:37 + +'; + type R + ports + power in p; + end; + icon bg bottom + figures + text 'R' 560 328 color 0 18 bold; + end; + implementation eq +parameters + real global R_phase; +equations + p.e = R_phase * p.f; +implementation_end; + R2 824 264 + description ' + + 4.2 +1 + False + Bond Graph\R.emx + 2011-11-29 16:35:37 + +'; + type R + ports + power in p; + end; + icon bg bottom + figures + text 'R' 824 264 color 0 18 bold; + end; + implementation eq +parameters + real r = 1.0e-3; +equations + p.e = r * p.f; +implementation_end; + RotorAngle 656 216 + description '4.0 + Template\Submodel-Equation.emx +1 + False + 2007-11-1 22:32:1 + False +'; + type Submodel + ports + signal out output_b; + signal out output_a; + signal in omega {rad/s} ; + signal out output_d; + end; + icon bg + figures + rectangle 616 200 696 232 color 0 fill 15132390; + text 'name' 656 216 color 0 'Clear Sans' 16; + end; + implementation eq +parameters + real global fluxLinkage; + real global detentTorque; +variables + real global p; + real angle {rad}; +equations + angle = int(omega); + output_a = -p * fluxLinkage * sin(p * angle); + output_b = p * fluxLinkage * sin(p * angle - pi / 2); + output_d = detentTorque * sin(2 * p * angle); + implementation_end; + Se 752 272 + description ' + + 4.2 +1 + False + Bond Graph\MSe.emx + 2011-11-29 16:12:33 + +'; + type MSe + ports + power out p; + signal in effort; + restrictions + causality fixed out p; + end; + icon bg bottom + figures + text 'MSe' 752 272 color 0 18 bold; + end; + implementation eq + +variables + real flow; +equations + p.e = effort; + flow = p.f; +implementation_end; + end; + connections + angle -> phase_control\angle; + I2\p <= OneJunction4\p; + MGY_a\p2 => OneJunction4\p; + MGY_b\p2 => OneJunction4\p; + MSe_b\p => OneJunction3\p; + OneJunction1\p => p; + OneJunction2\p <= MSe_a\p; + OneJunction2\p => I\p; + OneJunction2\p => MGY_a\p1; + OneJunction2\p => R\p; + OneJunction3\p => I1\p; + OneJunction3\p => MGY_b\p1; + OneJunction3\p => R1\p; + OneJunction4\flow -> RotorAngle\omega; + OneJunction4\p => OneJunction1\p; + OneJunction4\p => R2\p; + phase_control\a -> MSe_a\effort; + phase_control\b -> MSe_b\effort; + RotorAngle\output_a -> MGY_a\r; + RotorAngle\output_b -> MGY_b\r; + RotorAngle\output_d -> Se\effort; + Se\p => OneJunction4\p; + end; + implementation_end; + ZeroJunction1 360 200 description ' 4.2 1 False - Bond Graph\C.emx - 2011-11-29 15:58:35 + Bond Graph\ZeroJunction.emx + 2011-11-29 16:45:16 '; - type C + knot ZeroJunction ports - power in p; - signal out state; + rotation knot duplicatable none p [1]; + signal knot out effort [1]; restrictions - causality preferred out p; + causality constraint one_in p; end; - icon bg bottom + icon bg figures - text 'C' 264 200 color 0 18 bold; + text '0' 360 200 color 0 18 bold; end; implementation eq -parameters - real c = 0.001; equations - state = int(p.f); - p.e = state / c; + sum (direct (p.f)) = 0; + equal (collect (p.e)); + effort = first (p.e); implementation_end; + end; + connections + angle -> stepper_model\angle; + C\p <= OneJunction8\p; + C1\p <= OneJunction7\p; + OneJunction5\p => C4\p; + OneJunction5\p => PowerMux\input_rot2; + OneJunction5\p => R4\p; + OneJunction7\p => PowerMux\input_pos3; + OneJunction7\p => R5\p; + OneJunction8\p => R\p; + PowerMux\input <= ZeroJunction1\p; + PowerMux\output => output; + ZeroJunction1\p <= OneJunction8\p; + ZeroJunction1\p <= stepper_model\p; + end; + implementation_end; + Joint_dynE 536 216 + description ' + 4.8 + 1 + '; + type Submodel + ports + power out output [6,1]; + end; + implementation bg + submodels C1 191.8 216.2 description '4.01False Bond Graph\3D\C-3.emx @@ -4606,7 +5460,7 @@ equations equal (collect (p.f)); flow = first (p.f); implementation_end; - OneJunction8 296 200 + OneJunction8 288 200 description ' 4.2 @@ -4625,7 +5479,7 @@ implementation_end; end; icon bg figures - text '1' 296 200 color 0 18 bold; + text '1' 288 200 color 0 18 bold; end; implementation eq equations @@ -4634,7 +5488,7 @@ equations flow = first (p.f); implementation_end; PowerMux 330 216 - specifications active 'rot_z' + specifications active 'rot_x' specification 'rot_x' description ' @@ -4720,7 +5574,7 @@ equations output.f[4:6] = input_pos3.f;implementation_end; specification_end; specification 'rot_z' - description ' +description ' 4.8 Bond Graph\MR\PowerMux-Rotation.emx @@ -4743,14 +5597,14 @@ specification_end; end; icon bg bottom figures - line 328 192 328 240 color 0 width 2; - rectangle 324 192 336 240 color -1; - text '1' 333 210 color 8421504 8; - terminals - input 328 200 fixed; - output 328 216 fixed; - input_rot2 328 232 fixed; - input_pos3 328 216 fixed; + line 242 274 290 274 color 0 width 2; + rectangle 242 266 290 278 color -1; + text '1' 260 269 color 8421504 8; + terminals + input 250 274 fixed; + output 266 274 fixed; + input_rot2 282 274 fixed; + input_pos3 266 274 fixed; end; implementation eq equations @@ -4762,7 +5616,7 @@ equations output.f[4:6] = input_pos3.f;implementation_end; specification_end; end; - R 296 152 + R 288 152 description ' 4.2 @@ -4778,11 +5632,11 @@ specification_end; end; icon bg top figures - text 'R' 296 152 color 0 18 bold; + text 'R' 288 152 color 0 18 bold; end; implementation eq parameters - real r = 1000; + real r = 0.01; equations p.e = r * p.f; implementation_end; @@ -4826,7 +5680,6 @@ equations implementation_end; end; connections - C\p <= OneJunction8\p; C1\p <= OneJunction7\p; OneJunction5\p => C4\p; OneJunction5\p => PowerMux\input_rot2; @@ -4838,163 +5691,584 @@ implementation_end; R\p <= OneJunction8\p; end; implementation_end; - Link1 704 136 - description ' - - 4.8 - Bond Graph\MR\link-v3.emx -1 - False - 2020-7-21 11:14:41 -False - -'; - type 'Submodel-Equation' + Joint_dynF 792 56 + description ' + 4.8 + 1 + '; + type Submodel 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 672 112 736 160 color 0 fill 8454041; - text 'Link' 704 136 color 0 'Clear Sans' 16; - terminals - Hin 672 152 fixed; - Hout 736 152 fixed; - Pin 736 120 fixed; - Pout 672 120 fixed; + power out output [6,1]; end; - implementation eq -parameters - real offset[6]= [0;0;0;0;0.025;0]; //coordinates of joint_1 -variables - real Hab[4,4]; - real AdHab[6,6]; - real R[3,3]; - real omega[3]; -initialequations - omega = offset[1:3]; - R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega); - Hab = homogeneous(R,offset[4:6]); - AdHab = Adjoint(Hab); -equations - Hout = Hin * Hab; - Pout.e = transpose(AdHab) * Pin.e; - Pin.f = AdHab * Pout.f; - - implementation_end; - Link2 544 136 - description ' + implementation bg + submodels + C 264 200 + description ' - 4.8 - Bond Graph\MR\link-v3.emx + 4.2 1 False - 2020-7-21 11:14:41 -False - + Bond Graph\C.emx + 2011-11-29 15:58:35 + '; - 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 512 112 576 160 color 0 fill 8454041; - text 'Link' 544 136 color 0 'Clear Sans' 16; - terminals - Hin 512 152 fixed; - Hout 576 152 fixed; - Pin 576 120 fixed; - Pout 512 120 fixed; - end; - implementation eq + type C + ports + power in p; + signal out state; + restrictions + causality preferred out p; + end; + icon bg bottom + figures + text 'C' 264 200 color 0 18 bold; + end; + implementation eq parameters - real offset[6]= [0;0;0;0;0.025;0]; //coordinates of joint_1 -variables - real Hab[4,4]; - real AdHab[6,6]; - real R[3,3]; - real omega[3]; -initialequations - omega = offset[1:3]; - R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega); - Hab = homogeneous(R,offset[4:6]); - AdHab = Adjoint(Hab); + real c = 0.001; equations - Hout = Hin * Hab; - Pout.e = transpose(AdHab) * Pin.e; - Pin.f = AdHab * Pout.f; - - implementation_end; - Link3 432 304 - description ' + state = int(p.f); + p.e = state / c; +implementation_end; + C1 191.8 216.2 + description '4.01False + Bond Graph\3D\C-3.emx + 2007-9-25 12:12:8 +'; + type 'C-3' + ports + power in p [3,1]; + signal out state [3,1]; + restrictions + causality preferred out p; + end; + icon bg top + figures + text 'C' 191.8 216.2 color 0 18 bold; + end; + implementation eq +parameters + real c[3,3] = [0.1, 0.0, 0.0; 0.0, 0.1, 0.0; 0.0, 0.0, 0.1] {mN/m}; +equations + state = int(p.f); + p.e = inverse(c) *state; +implementation_end; + C4 191.8 232.2 + description '4.01False + Bond Graph\2D\C-2.emx + 2007-9-25 12:7:27 +'; + type 'C-2' + ports + power in p [2,1]; + signal out state [2,1]; + restrictions + causality preferred out p; + end; + icon bg bottom + figures + text 'C' 191.8 232.2 color 0 18 bold; + end; + implementation eq +parameters + real c[2,2] = [0.1, 0.0; 0.0, 0.1] {mN.m/rad}; +equations + state = int(p.f); + p.e = inverse(c) *state; +implementation_end; + plug output 396 216; + OneJunction5 239.8 232.2 + description ' - 4.8 - Bond Graph\MR\link-v3.emx + 4.2 1 False - 2020-7-21 11:14:41 -False - + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + '; - 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 408 272 456 336 color 0 fill 8454041; - text 'Link' 432 304 color 0 'Clear Sans' 16; - terminals - Hin 448 336 fixed; - Hout 448 272 fixed; - Pin 416 272 fixed; - Pout 416 336 fixed; - end; - implementation eq -parameters - real offset[6]= [0;0;0;0;0.0325;0]; //coordinates of joint_1 -variables - real Hab[4,4]; - real AdHab[6,6]; - real R[3,3]; - real omega[3]; -initialequations - omega = offset[1:3]; - R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega); - Hab = homogeneous(R,offset[4:6]); - AdHab = Adjoint(Hab); + knot OneJunction + ports + power knot duplicatable none p [2,1]; + signal knot out flow [2,1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 239.8 232.2 color 0 18 bold; + end; + implementation eq equations - Hout = Hin * Hab; - Pout.e = transpose(AdHab) * Pin.e; - Pin.f = AdHab * Pout.f; - - implementation_end; - Link4 632 304 - description ' + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction7 239.8 216.2 + description ' - 4.8 - Bond Graph\MR\link-v3.emx + 4.2 1 False - 2020-7-21 11:14:41 -False - + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [3,1]; + signal knot out flow [3,1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 239.8 216.2 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction8 296 200 + description ' + + 4.2 +1 + False + Bond Graph\OneJunction.emx + 2011-11-29 16:17:51 + +'; + knot OneJunction + ports + power knot duplicatable none p [1]; + signal knot out flow [1]; + restrictions + causality constraint one_out p; + end; + icon bg + figures + text '1' 296 200 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + PowerMux 330 216 + specifications active 'rot_z' + specification 'rot_x' +description ' + + 4.8 + Bond Graph\MR\PowerMux-Rotation.emx + 2020-7-20 14:35:23 +1 + False + True + +'; + type 'PowerMux-Rotation' + ports + power in input; + power out output [6,1]; + power in input_rot2 [2,1]; + power in input_pos3 [3,1]; + restrictions + causality constraint not_equal input output; + causality constraint not_equal input_rot2 output; + causality constraint not_equal input_pos3 output; + end; + icon bg bottom + figures + line 328 192 328 240 color 0 width 2; + rectangle 324 192 336 240 color -1; + text '1' 333 210 color 8421504 8; + terminals + input 328 200 fixed; + output 328 216 fixed; + input_rot2 328 232 fixed; + input_pos3 328 216 fixed; + end; + implementation eq +equations + output.e[1] = input.e; + output.e[2:3] = input_rot2.e; + output.e[4:6] = input_pos3.e; + output.f[1] = input.f; + output.f[2:3] = input_rot2.f; + output.f[4:6] = input_pos3.f;implementation_end; +specification_end; + specification 'rot_y' +description ' + 4.1 + Bond Graph\PowerMux.emx + 2011-3-4 15:12:50 +1 + False + True +'; + type PowerMux + ports + power in input; + power out output [6,1]; + power in input_rot2 [2,1]; + power in input_pos3 [3,1]; + restrictions + causality constraint not_equal input output; + causality constraint not_equal input_rot2 output; + causality constraint not_equal input_pos3 output; + end; + icon bg bottom + figures + line 242 274 290 274 color 0 width 2; + rectangle 242 266 290 278 color -1; + text '1' 260 269 color 8421504 8; + terminals + input 250 274 fixed; + output 266 274 fixed; + input_rot2 282 274 fixed; + input_pos3 266 274 fixed; + end; + implementation eq +equations + output.e[1] = input_rot2.e[1]; + output.e[2] = input.e; + output.e[3] = input_rot2.e[2]; + output.e[4:6] = input_pos3.e; + output.f[1] = input_rot2.f[1]; + output.f[2] = input.f; + output.f[3] = input_rot2.f[2]; + output.f[4:6] = input_pos3.f;implementation_end; +specification_end; + specification 'rot_z' + description ' + + 4.8 + Bond Graph\MR\PowerMux-Rotation.emx + 2020-7-21 12:05:13 +1 + False + True + +'; + type PowerMux + ports + power in input; + power out output [6,1]; + power in input_rot2 [2,1]; + power in input_pos3 [3,1]; + restrictions + causality constraint not_equal input output; + causality constraint not_equal input_rot2 output; + causality constraint not_equal input_pos3 output; + end; + icon bg bottom + figures + line 328 192 328 240 color 0 width 2; + rectangle 324 192 336 240 color -1; + text '1' 333 210 color 8421504 8; + terminals + input 328 200 fixed; + output 328 216 fixed; + input_rot2 328 232 fixed; + input_pos3 328 216 fixed; + end; + implementation eq +equations + output.e[3] = input.e; + output.e[1:2] = input_rot2.e; + output.e[4:6] = input_pos3.e; + output.f[3] = input.f; + output.f[1:2] = input_rot2.f; + output.f[4:6] = input_pos3.f;implementation_end; +specification_end; + end; + R 296 152 + description ' + + 4.2 +1 + False + Bond Graph\R.emx + 2011-11-29 16:35:37 + +'; + type R + ports + power in p; + end; + icon bg top + figures + text 'R' 296 152 color 0 18 bold; + end; + implementation eq +parameters + real r = 1000; +equations + p.e = r * p.f; +implementation_end; + R4 239.8 288.2 + description '4.01False + Bond Graph\2D\R-2.emx + 2007-9-25 12:6:54 +'; + type 'R-2' + ports + power in p [2,1]; + end; + icon bg bottom + figures + text 'R' 239.8 288.2 color 0 18 bold; + end; + implementation eq +parameters + real r[2,2] = [1.0, 0.0; 0.0, 1.0] {kN.m.s/rad}; +equations + p.e = r * p.f; +implementation_end; + R5 239.8 168.2 + description '4.01False + Bond Graph\3D\R-3.emx + 2007-9-25 12:11:54 +'; + type 'R-3' + ports + power in p [3,1]; + end; + icon bg top + figures + text 'R' 239.8 168.2 color 0 18 bold; + end; + implementation eq +parameters + real r[3,3] = [1.0, 0.0, 0.0; 0.0, 1.0, 0.0; 0.0, 0.0, 1.0] {kN.s/m}; +equations + p.e = r * p.f; +implementation_end; + end; + connections + C\p <= OneJunction8\p; + C1\p <= OneJunction7\p; + OneJunction5\p => C4\p; + OneJunction5\p => PowerMux\input_rot2; + OneJunction5\p => R4\p; + OneJunction7\p => PowerMux\input_pos3; + OneJunction7\p => R5\p; + OneJunction8\p => PowerMux\input; + PowerMux\output => output; + R\p <= OneJunction8\p; + end; + implementation_end; + Link1 704 136 + description ' + + 4.8 + Bond Graph\MR\link-v3.emx +1 + False + 2020-7-21 11:14:41 +False + +'; + type 'Submodel-Equation' + ports + signal in Hin [4,4]; + signal out Hout [4,4]; + power in Pin [6,1]; + power out Pout [6,1]; + restrictions + causality constraint not_equal Pin Pout; + end; + icon bg bottom + figures + rectangle 672 112 736 160 color 0 fill 8454041; + text 'Link' 704 136 color 0 'Clear Sans' 16; + terminals + Hin 672 152 fixed; + Hout 736 152 fixed; + Pin 736 120 fixed; + Pout 672 120 fixed; + end; + implementation eq +parameters + real offset[6]= [0;0;0;0;0.025;0]; //coordinates of joint_1 +variables + real Hab[4,4]; + real AdHab[6,6]; + real R[3,3]; + real omega[3]; +initialequations + omega = offset[1:3]; + R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega); + Hab = homogeneous(R,offset[4:6]); + AdHab = Adjoint(Hab); +equations + Hout = Hin * Hab; + Pout.e = transpose(AdHab) * Pin.e; + Pin.f = AdHab * Pout.f; + + implementation_end; + Link10 872 136 + description ' + + 4.8 + Bond Graph\MR\link-v3.emx +1 + False + 2020-7-21 11:14:41 +False + +'; + type 'Submodel-Equation' + ports + signal in Hin [4,4]; + signal out Hout [4,4]; + power in Pin [6,1]; + power out Pout [6,1]; + restrictions + causality constraint not_equal Pin Pout; + end; + icon bg bottom + figures + rectangle 840 112 904 160 color 0 fill 8454041; + text 'Link' 872 136 color 0 'Clear Sans' 16; + terminals + Hin 840 152 fixed; + Hout 904 152 fixed; + Pin 904 120 fixed; + Pout 840 120 fixed; + end; + implementation eq +parameters + real offset[6]= [0;0;0;0;0.0125;0]; //coordinates of joint_1 +variables + real Hab[4,4]; + real AdHab[6,6]; + real R[3,3]; + real omega[3]; +initialequations + omega = offset[1:3]; + R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega); + Hab = homogeneous(R,offset[4:6]); + AdHab = Adjoint(Hab); +equations + Hout = Hin * Hab; + Pout.e = transpose(AdHab) * Pin.e; + Pin.f = AdHab * Pout.f; + + implementation_end; + Link2 544 136 + description ' + + 4.8 + Bond Graph\MR\link-v3.emx +1 + False + 2020-7-21 11:14:41 +False + +'; + type 'Submodel-Equation' + ports + signal in Hin [4,4]; + signal out Hout [4,4]; + power in Pin [6,1]; + power out Pout [6,1]; + restrictions + causality constraint not_equal Pin Pout; + end; + icon bg bottom + figures + rectangle 512 112 576 160 color 0 fill 8454041; + text 'Link' 544 136 color 0 'Clear Sans' 16; + terminals + Hin 576 152 fixed; + Hout 512 152 fixed; + Pin 512 120 fixed; + Pout 576 120 fixed; + end; + implementation eq +parameters + real offset[6]= [0;0;0;0;-0.025;0]; //coordinates of joint_1 +variables + real Hab[4,4]; + real AdHab[6,6]; + real R[3,3]; + real omega[3]; +initialequations + omega = offset[1:3]; + R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega); + Hab = homogeneous(R,offset[4:6]); + AdHab = Adjoint(Hab); +equations + Hout = Hin * Hab; + Pout.e = transpose(AdHab) * Pin.e; + Pin.f = AdHab * Pout.f; + + implementation_end; + Link3 432 448 + description ' + + 4.8 + Bond Graph\MR\link-v3.emx +1 + False + 2020-7-21 11:14:41 +False + +'; + type 'Submodel-Equation' + ports + signal in Hin [4,4]; + signal out Hout [4,4]; + power in Pin [6,1]; + power out Pout [6,1]; + restrictions + causality constraint not_equal Pin Pout; + end; + icon bg bottom + figures + rectangle 408 416 456 480 color 0 fill 8454041; + text 'Link' 432 448 color 0 'Clear Sans' 16; + terminals + Hin 448 416 fixed; + Hout 448 480 fixed; + Pin 416 480 fixed; + Pout 416 416 fixed; + end; + implementation eq +parameters + real offset[6]= [0;0;0;0;0;-0.0325]; //coordinates of joint_1 +variables + real Hab[4,4]; + real AdHab[6,6]; + real R[3,3]; + real omega[3]; +initialequations + omega = offset[1:3]; + R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',omega); + Hab = homogeneous(R,offset[4:6]); + AdHab = Adjoint(Hab); +equations + Hout = Hin * Hab; + Pout.e = transpose(AdHab) * Pin.e; + Pin.f = AdHab * Pout.f; + + implementation_end; + Link4 632 304 + description ' + + 4.8 + Bond Graph\MR\link-v3.emx +1 + False + 2020-7-21 11:14:41 +False + '; type 'Submodel-Equation' ports @@ -5017,7 +6291,7 @@ equations end; implementation eq parameters - real offset[6]= [0;0;0;0;0.0325;0]; //coordinates of joint_1 + real offset[6]= [0;0;0;0;0;0.0325]; //coordinates of joint_1 variables real Hab[4,4]; real AdHab[6,6]; @@ -5034,7 +6308,7 @@ equations Pin.f = AdHab * Pout.f; implementation_end; - Link5 848 616 + Link5 840 616 description ' 4.8 @@ -5056,17 +6330,17 @@ equations end; icon bg bottom figures - rectangle 816 592 880 640 color 0 fill 8454041; - text 'Link' 848 616 color 0 'Clear Sans' 16; + rectangle 808 592 872 640 color 0 fill 8454041; + text 'Link' 840 616 color 0 'Clear Sans' 16; terminals - Hin 880 600 fixed; - Hout 816 600 fixed; - Pin 816 632 fixed; - Pout 880 632 fixed; + Hin 872 600 fixed; + Hout 808 600 fixed; + Pin 808 632 fixed; + Pout 872 632 fixed; end; implementation eq parameters - real offset[6]= [0;0;0;0;0.0125;0]; //coordinates of joint_1 + real offset[6]= [0;0;0;0;-0.0125;0]; //coordinates of joint_1 variables real Hab[4,4]; real AdHab[6,6]; @@ -5083,7 +6357,7 @@ equations Pin.f = AdHab * Pout.f; implementation_end; - Link6 432 448 + Link6 432 304 description ' 4.8 @@ -5105,17 +6379,17 @@ equations end; icon bg bottom figures - rectangle 408 416 456 480 color 0 fill 8454041; - text 'Link' 432 448 color 0 'Clear Sans' 16; + rectangle 408 272 456 336 color 0 fill 8454041; + text 'Link' 432 304 color 0 'Clear Sans' 16; terminals - Hin 448 480 fixed; - Hout 448 416 fixed; - Pin 416 416 fixed; - Pout 416 480 fixed; + Hin 448 272 fixed; + Hout 448 336 fixed; + Pin 416 336 fixed; + Pout 416 272 fixed; end; implementation eq parameters - real offset[6]= [0;0;0;0;0.0325;0]; //coordinates of joint_1 + real offset[6]= [0;0;0;0;0;-0.0325]; //coordinates of joint_1 variables real Hab[4,4]; real AdHab[6,6]; @@ -5164,7 +6438,7 @@ equations end; implementation eq parameters - real offset[6]= [0;0;0;0;0.0125;0]; //coordinates of joint_1 + real offset[6]= [0;0;0;0;-0.0125;0]; //coordinates of joint_1 variables real Hab[4,4]; real AdHab[6,6]; @@ -5181,7 +6455,7 @@ equations Pin.f = AdHab * Pout.f; implementation_end; - Link8 880 136 + Link8 976 136 description ' 4.8 @@ -5203,17 +6477,17 @@ equations end; icon bg bottom figures - rectangle 848 112 912 160 color 0 fill 8454041; - text 'Link' 880 136 color 0 'Clear Sans' 16; + rectangle 944 112 1008 160 color 0 fill 8454041; + text 'Link' 976 136 color 0 'Clear Sans' 16; terminals - Hin 848 152 fixed; - Hout 912 152 fixed; - Pin 912 120 fixed; - Pout 848 120 fixed; + Hin 944 152 fixed; + Hout 1008 152 fixed; + Pin 1008 120 fixed; + Pout 944 120 fixed; end; implementation eq parameters - real offset[6]= [0;0;0;0;0.025;0]; //coordinates of joint_1 + real offset[6]= [0;0;0;0;0.0125;0]; //coordinates of joint_1 variables real Hab[4,4]; real AdHab[6,6]; @@ -5262,7 +6536,7 @@ equations end; implementation eq parameters - real offset[6]= [0;0;0;0;0.0325;0]; //coordinates of joint_1 + real offset[6]= [0;0;0;0;0;0.0325]; //coordinates of joint_1 variables real Hab[4,4]; real AdHab[6,6]; @@ -5279,6 +6553,25 @@ equations Pin.f = AdHab * Pout.f; implementation_end; + Negate1 320 672 + 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 304 656 336 688 color 0 fill 15132390; + text '-1' 320 672 color 16711680 16 bold; + end; + implementation eq +equations + output = - input; + implementation_end; OneJunction1 760 632 description ' @@ -5329,65 +6622,291 @@ implementation_end; end; implementation eq equations - sum (direct (p.e)) = 0; - equal (collect (p.f)); - flow = first (p.f); + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction3 616 120 + 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' 616 120 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction4 616 392 + 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' 616 392 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + OneJunction5 416 584 + 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' 416 584 color 0 18 bold; + end; + implementation eq +equations + sum (direct (p.e)) = 0; + equal (collect (p.f)); + flow = first (p.f); +implementation_end; + rectanglepath 152 744 + 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 = 1 {s}; + real origin[2] = [0.01,0.03]{m}; +variables + real v {m/s}; + real t_w {s}; + real t_h {s}; + real period {s}; +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; + Splitter1 792 600 + 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 788.8 596.8 795.2 603.2 color -1 fill 0; + ellipse 787.7 595.7 796.3 604.3 color -1; + terminals + input 792 600 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter2 448 360 + 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 444.8 356.8 451.2 363.2 color -1 fill 0; + ellipse 443.7 355.7 452.3 364.3 color -1; + terminals + input 448 360 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter3 648 360 + 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 644.8 356.8 651.2 363.2 color -1 fill 0; + ellipse 643.7 355.7 652.3 364.3 color -1; + terminals + input 648 360 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter4 648 152 + 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 644.8 148.8 651.2 155.2 color -1 fill 0; + ellipse 643.7 147.7 652.3 156.3 color -1; + terminals + input 648 152 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter5 448 152 + 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 444.8 148.8 451.2 155.2 color -1 fill 0; + ellipse 443.7 147.7 452.3 156.3 color -1; + terminals + input 448 152 fixed; + end; + implementation eq +equations + collect (output) = input; implementation_end; - OneJunction3 616 120 - description ' - - 4.2 + Splitter6 896 600 + description '4.0 + Signal\Block Diagram\Splitter.emx + 2008-01-17 11:28:29 1 - False - Bond Graph\OneJunction.emx - 2011-11-29 16:17:51 - -'; - knot OneJunction + False +'; + knot Splitter ports - power knot duplicatable none p [6,1]; - signal knot out flow [6,1]; - restrictions - causality constraint one_out p; + signal knot duplicatable out output [4,4]; + signal knot in input [4,4]; end; - icon bg + icon bg ellipse figures - text '1' 616 120 color 0 18 bold; + ellipse 892.8 596.8 899.2 603.2 color -1 fill 0; + ellipse 891.7 595.7 900.3 604.3 color -1; + terminals + input 896 600 fixed; end; implementation eq equations - sum (direct (p.e)) = 0; - equal (collect (p.f)); - flow = first (p.f); + collect (output) = input; implementation_end; - OneJunction4 616 392 - description ' - - 4.2 + Splitter7 648 496 + description '4.0 + Signal\Block Diagram\Splitter.emx + 2008-01-17 11:28:29 1 - False - Bond Graph\OneJunction.emx - 2011-11-29 16:17:51 - -'; - knot OneJunction + False +'; + knot Splitter ports - power knot duplicatable none p [6,1]; - signal knot out flow [6,1]; - restrictions - causality constraint one_out p; + signal knot duplicatable out output [4,4]; + signal knot in input [4,4]; end; - icon bg + icon bg ellipse figures - text '1' 616 392 color 0 18 bold; + ellipse 644.8 492.8 651.2 499.2 color -1 fill 0; + ellipse 643.7 491.7 652.3 500.3 color -1; + terminals + input 648 496 fixed; end; implementation eq equations - sum (direct (p.e)) = 0; - equal (collect (p.f)); - flow = first (p.f); + collect (output) = input; implementation_end; - Splitter1 792 600 + Splitter8 448 496 description '4.0 Signal\Block Diagram\Splitter.emx 2008-01-17 11:28:29 @@ -5401,16 +6920,16 @@ implementation_end; end; icon bg ellipse figures - ellipse 788.8 596.8 795.2 603.2 color -1 fill 0; - ellipse 787.7 595.7 796.3 604.3 color -1; + ellipse 444.8 492.8 451.2 499.2 color -1 fill 0; + ellipse 443.7 491.7 452.3 500.3 color -1; terminals - input 792 600 fixed; + input 448 496 fixed; end; implementation eq equations collect (output) = input; implementation_end; - Splitter2 448 360 + Splitter9 920 152 description '4.0 Signal\Block Diagram\Splitter.emx 2008-01-17 11:28:29 @@ -5424,218 +6943,641 @@ implementation_end; end; icon bg ellipse figures - ellipse 444.8 356.8 451.2 363.2 color -1 fill 0; - ellipse 443.7 355.7 452.3 364.3 color -1; + ellipse 916.8 148.8 923.2 155.2 color -1 fill 0; + ellipse 915.7 147.7 924.3 156.3 color -1; terminals - input 448 360 fixed; + input 920 152 fixed; end; implementation eq equations collect (output) = input; implementation_end; - Splitter3 648 360 - description '4.0 + stepper_control 320 608 + description ' + + 4.8 +1 + Motor\stepper_control.emx + 2020-7-23 10:55:26 + +'; + type Submodel + ports + signal in setpoint {rad} ; + signal out output {rad} ; + end; + icon bg bottom + figures + rectangle 264 592 376 624 color 0 fill 15132390; + text 'name' 320 608 color 0 'Clear Sans' 16; + end; + implementation bg + submodels + Acceleration_int 648 336 + description ' + + 4.3 +1 + False + Signal\Block Diagram\Integrate.emx + 2013-3-8 14:47:42 + +'; + type Integrate + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 632 320 664 352 color 0 fill 15132390; + text '∫' 648 336.3 color 16711680 'Lucida Sans' 21 italic; + end; + implementation eq +parameters + real initial = 0; // initial value +equations + output = int (input, initial); + implementation_end; + Acceleration_limit 568 336 + description '4.01False + Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx + 2007-9-26 12:47:40 +'; + type 'SignalLimiter-Limit' + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + group + rectangle 552 320 584 352 color 0 fill 15132390; + line 567.9 324.5 567.9 349 color 0 fill 15132390; + line 555 336.2 580.7 336.2 color 0 fill 15132390; + spline 561.9 343.1 573.9 329.4 color 16711680 fill 15132390 width 2; + spline 573.3 330.2 581.9 329.8 color 16711680 fill 15132390 width 2; + spline 555 343.6 561.9 343.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 20; + real minimum = -20; +equations + output = limit (input, minimum, maximum); + implementation_end; + plug setpoint 136 336; + plug output 791 336; + PlusMinus1 240 336 + description '4.01False + Signal\Block Diagram\PlusMinus.emx + 2007-9-27 10:15:13 +'; + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse + figures + ellipse 232 328 248 344 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + PlusMinus2 432 336 + description '4.01False + Signal\Block Diagram\PlusMinus.emx + 2007-9-27 10:15:13 +'; + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse + figures + ellipse 424 328 440 344 color 0 fill 16777215; + end; + implementation eq +equations + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + Position_control 296 336 + description ' + 4.0 + 1 + False + Signal\Control\PID Control\Continuous\PD.emx + 2008-1-17 10:49:7 +'; + type PD + ports + signal in error; + signal out output; + end; + icon bg bottom + figures + rectangle 280 320 312 352 color 0 fill 15132390; + text 'PD' 296.5 336.1 color 16711680 18 bold; + end; + implementation eq +parameters + real kp = 4 {}; // Proportional gain + real tauD = 100 {s}; // Derivative time constant: tauD > 0 + real beta = 0.4 {}; // Tameness constant: 0 < beta << 1 +variables + real state, rate; +equations + rate = (kp * error - output) / (beta * tauD); + state = int (rate); + output = state + kp * error / beta; + implementation_end; + Splitter3 688 336 + description '4.0 + Signal\Block Diagram\Splitter.emx + 2008-01-17 11:28:29 +1 + False +'; + knot Splitter + ports + signal knot duplicatable out output [1]; + signal knot in input [1]; + end; + icon bg ellipse + figures + ellipse 684.8 332.8 691.2 339.2 color -1 fill 0; + ellipse 683.7 331.7 692.3 340.3 color -1; + terminals + input 688 336 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter4 752 336 + description '4.0 Signal\Block Diagram\Splitter.emx 2008-01-17 11:28:29 1 False '; - knot Splitter - ports - signal knot duplicatable out output [4,4]; - signal knot in input [4,4]; - end; - icon bg ellipse - figures - ellipse 644.8 356.8 651.2 363.2 color -1 fill 0; - ellipse 643.7 355.7 652.3 364.3 color -1; - terminals - input 648 360 fixed; - end; - implementation eq + knot Splitter + ports + signal knot duplicatable out output [1]; + signal knot in input [1]; + end; + icon bg ellipse + figures + ellipse 748.8 332.8 755.2 339.2 color -1 fill 0; + ellipse 747.7 331.7 756.3 340.3 color -1; + terminals + input 752 336 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Velocity_control 480 336 + description ' + 4.0 + 1 + False + Signal\Control\PID Control\Continuous\PD.emx + 2008-1-17 10:49:7 +'; + type PD + ports + signal in error; + signal out output; + end; + icon bg bottom + figures + rectangle 464 320 496 352 color 0 fill 15132390; + text 'PD' 480.5 336.1 color 16711680 18 bold; + end; + implementation eq +parameters + real kp = 12 {}; // Proportional gain + real tauD = 10 {s}; // Derivative time constant: tauD > 0 + real beta = 0.4 {}; // Tameness constant: 0 < beta << 1 +variables + real state, rate; +equations + rate = (kp * error - output) / (beta * tauD); + state = int (rate); + output = state + kp * error / beta; + implementation_end; + Velocity_int 720 336 + description ' + + 4.3 +1 + False + Signal\Block Diagram\Integrate.emx + 2013-3-8 14:47:42 + +'; + type Integrate + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 704 320 736 352 color 0 fill 15132390; + text '∫' 720 336.3 color 16711680 'Lucida Sans' 21 italic; + end; + implementation eq +parameters + real initial = -1.65; // initial value +equations + output = int (input, initial); + implementation_end; + Velocity_limit 376 336 + description '4.01False + Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx + 2007-9-26 12:47:40 +'; + type 'SignalLimiter-Limit' + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + group + rectangle 360 320 392 352 color 0 fill 15132390; + line 375.9 324.5 375.9 349 color 0 fill 15132390; + line 363 336.2 388.7 336.2 color 0 fill 15132390; + spline 369.9 343.1 381.9 329.4 color 16711680 fill 15132390 width 2; + spline 381.3 330.2 389.9 329.8 color 16711680 fill 15132390 width 2; + spline 363 343.6 369.9 343.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 25; + real minimum = -25; +equations + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Acceleration_int\output -> Splitter3\input; + Acceleration_limit\output -> Acceleration_int\input; + PlusMinus1\output -> Position_control\error; + PlusMinus2\output -> Velocity_control\error; + Position_control\output -> Velocity_limit\input; + setpoint -> PlusMinus1\plus; + Splitter3\output -> PlusMinus2\minus 688 288 432 288; + Splitter3\output -> Velocity_int\input; + Splitter4\output -> output; + Splitter4\output -> PlusMinus1\minus 752 400 240 400; + Velocity_control\output -> Acceleration_limit\input; + Velocity_int\output -> Splitter4\input; + Velocity_limit\output -> PlusMinus2\plus; + end; + implementation_end; + stepper_control1 528 744 + description ' + + 4.8 +1 + Motor\stepper_control.emx + 2020-7-22 15:25:26 + +'; + type Submodel + ports + signal in setpoint {rad} ; + signal out output {rad} ; + end; + implementation bg + submodels + Acceleration_int 648 336 + description ' + + 4.3 +1 + False + Signal\Block Diagram\Integrate.emx + 2013-3-8 14:47:42 + +'; + type Integrate + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 632 320 664 352 color 0 fill 15132390; + text '∫' 648 336.3 color 16711680 'Lucida Sans' 21 italic; + end; + implementation eq +parameters + real initial = 0; // initial value +equations + output = int (input, initial); + implementation_end; + Acceleration_limit 568 336 + description '4.01False + Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx + 2007-9-26 12:47:40 +'; + type 'SignalLimiter-Limit' + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + group + rectangle 552 320 584 352 color 0 fill 15132390; + line 567.9 324.5 567.9 349 color 0 fill 15132390; + line 555 336.2 580.7 336.2 color 0 fill 15132390; + spline 561.9 343.1 573.9 329.4 color 16711680 fill 15132390 width 2; + spline 573.3 330.2 581.9 329.8 color 16711680 fill 15132390 width 2; + spline 555 343.6 561.9 343.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 80; + real minimum = -80; +equations + output = limit (input, minimum, maximum); + implementation_end; + plug setpoint 136 336; + plug output 791 336; + PlusMinus1 240 336 + description '4.01False + Signal\Block Diagram\PlusMinus.emx + 2007-9-27 10:15:13 +'; + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse + figures + ellipse 232 328 248 344 color 0 fill 16777215; + end; + implementation eq equations - collect (output) = input; -implementation_end; - Splitter4 648 152 - description '4.0 - Signal\Block Diagram\Splitter.emx - 2008-01-17 11:28:29 -1 - False + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + PlusMinus2 432 336 + description '4.01False + Signal\Block Diagram\PlusMinus.emx + 2007-9-27 10:15:13 '; - knot Splitter - ports - signal knot duplicatable out output [4,4]; - signal knot in input [4,4]; - end; - icon bg ellipse - figures - ellipse 644.8 148.8 651.2 155.2 color -1 fill 0; - ellipse 643.7 147.7 652.3 156.3 color -1; - terminals - input 648 152 fixed; - end; - implementation eq + knot PlusMinus + ports + signal knot duplicatable in plus [1]; + signal knot duplicatable in minus [1]; + signal knot out output [1]; + end; + icon bg ellipse + figures + ellipse 424 328 440 344 color 0 fill 16777215; + end; + implementation eq equations - collect (output) = input; -implementation_end; - Splitter5 448 496 - description '4.0 - Signal\Block Diagram\Splitter.emx - 2008-01-17 11:28:29 -1 + output = sum (collect (plus)) - sum (collect (minus)); + implementation_end; + Position_control 296 336 + description ' + 4.0 + 1 False + Signal\Control\PID Control\Continuous\PD.emx + 2008-1-17 10:49:7 '; - knot Splitter - ports - signal knot duplicatable out output [4,4]; - signal knot in input [4,4]; - end; - icon bg ellipse - figures - ellipse 444.8 492.8 451.2 499.2 color -1 fill 0; - ellipse 443.7 491.7 452.3 500.3 color -1; - terminals - input 448 496 fixed; - end; - implementation eq + type PD + ports + signal in error; + signal out output; + end; + icon bg bottom + figures + rectangle 280 320 312 352 color 0 fill 15132390; + text 'PD' 296.5 336.1 color 16711680 18 bold; + end; + implementation eq +parameters + real kp = 4 {}; // Proportional gain + real tauD = 100 {s}; // Derivative time constant: tauD > 0 + real beta = 0.4 {}; // Tameness constant: 0 < beta << 1 +variables + real state, rate; equations - collect (output) = input; -implementation_end; - Splitter6 896 600 - description '4.0 + rate = (kp * error - output) / (beta * tauD); + state = int (rate); + output = state + kp * error / beta; + implementation_end; + Splitter3 688 336 + description '4.0 Signal\Block Diagram\Splitter.emx 2008-01-17 11:28:29 1 False '; - knot Splitter - ports - signal knot duplicatable out output [4,4]; - signal knot in input [4,4]; - end; - icon bg ellipse - figures - ellipse 892.8 596.8 899.2 603.2 color -1 fill 0; - ellipse 891.7 595.7 900.3 604.3 color -1; - terminals - input 896 600 fixed; - end; - implementation eq + knot Splitter + ports + signal knot duplicatable out output [1]; + signal knot in input [1]; + end; + icon bg ellipse + figures + ellipse 684.8 332.8 691.2 339.2 color -1 fill 0; + ellipse 683.7 331.7 692.3 340.3 color -1; + terminals + input 688 336 fixed; + end; + implementation eq equations collect (output) = input; implementation_end; - Splitter7 648 496 - description '4.0 + Splitter4 752 336 + description '4.0 Signal\Block Diagram\Splitter.emx 2008-01-17 11:28:29 1 False '; - knot Splitter - ports - signal knot duplicatable out output [4,4]; - signal knot in input [4,4]; - end; - icon bg ellipse - figures - ellipse 644.8 492.8 651.2 499.2 color -1 fill 0; - ellipse 643.7 491.7 652.3 500.3 color -1; - terminals - input 648 496 fixed; - end; - implementation eq + knot Splitter + ports + signal knot duplicatable out output [1]; + signal knot in input [1]; + end; + icon bg ellipse + figures + ellipse 748.8 332.8 755.2 339.2 color -1 fill 0; + ellipse 747.7 331.7 756.3 340.3 color -1; + terminals + input 752 336 fixed; + end; + implementation eq equations collect (output) = input; implementation_end; - Splitter8 448 152 - description '4.0 - Signal\Block Diagram\Splitter.emx - 2008-01-17 11:28:29 -1 + Velocity_control 480 336 + description ' + 4.0 + 1 False + Signal\Control\PID Control\Continuous\PD.emx + 2008-1-17 10:49:7 '; - knot Splitter - ports - signal knot duplicatable out output [4,4]; - signal knot in input [4,4]; - end; - icon bg ellipse - figures - ellipse 444.8 148.8 451.2 155.2 color -1 fill 0; - ellipse 443.7 147.7 452.3 156.3 color -1; - terminals - input 448 152 fixed; - end; - implementation eq + type PD + ports + signal in error; + signal out output; + end; + icon bg bottom + figures + rectangle 464 320 496 352 color 0 fill 15132390; + text 'PD' 480.5 336.1 color 16711680 18 bold; + end; + implementation eq +parameters + real kp = 12 {}; // Proportional gain + real tauD = 10 {s}; // Derivative time constant: tauD > 0 + real beta = 0.4 {}; // Tameness constant: 0 < beta << 1 +variables + real state, rate; equations - collect (output) = input; -implementation_end; - Splitter9 832 152 - description '4.0 - Signal\Block Diagram\Splitter.emx - 2008-01-17 11:28:29 + rate = (kp * error - output) / (beta * tauD); + state = int (rate); + output = state + kp * error / beta; + implementation_end; + Velocity_int 720 336 + description ' + + 4.3 1 - False + False + Signal\Block Diagram\Integrate.emx + 2013-3-8 14:47:42 + +'; + type Integrate + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + rectangle 704 320 736 352 color 0 fill 15132390; + text '∫' 720 336.3 color 16711680 'Lucida Sans' 21 italic; + end; + implementation eq +parameters + real initial = 0; // initial value +equations + output = int (input, initial); + implementation_end; + Velocity_limit 376 336 + description '4.01False + Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx + 2007-9-26 12:47:40 '; - knot Splitter - ports - signal knot duplicatable out output [4,4]; - signal knot in input [4,4]; - end; - icon bg ellipse - figures - ellipse 828.8 148.8 835.2 155.2 color -1 fill 0; - ellipse 827.7 147.7 836.3 156.3 color -1; - terminals - input 832 152 fixed; - end; - implementation eq + type 'SignalLimiter-Limit' + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + group + rectangle 360 320 392 352 color 0 fill 15132390; + line 375.9 324.5 375.9 349 color 0 fill 15132390; + line 363 336.2 388.7 336.2 color 0 fill 15132390; + spline 369.9 343.1 381.9 329.4 color 16711680 fill 15132390 width 2; + spline 381.3 330.2 389.9 329.8 color 16711680 fill 15132390 width 2; + spline 363 343.6 369.9 343.1 color 16711680 fill 15132390 width 2; + end; + end; + implementation eq +parameters + real maximum = 25; + real minimum = -25; equations - collect (output) = input; -implementation_end; + output = limit (input, minimum, maximum); + implementation_end; + end; + connections + Acceleration_int\output -> Splitter3\input; + Acceleration_limit\output -> Acceleration_int\input; + PlusMinus1\output -> Position_control\error; + PlusMinus2\output -> Velocity_control\error; + Position_control\output -> Velocity_limit\input; + setpoint -> PlusMinus1\plus; + Splitter3\output -> PlusMinus2\minus 688 288 432 288; + Splitter3\output -> Velocity_int\input; + Splitter4\output -> output; + Splitter4\output -> PlusMinus1\minus 752 400 240 400; + Velocity_control\output -> Acceleration_limit\input; + Velocity_int\output -> Splitter4\input; + Velocity_limit\output -> PlusMinus2\plus; + end; + implementation_end; end; connections COM_body3\p => OneJunction4\p; COM_body4\p => OneJunction3\p; COM_body5\p => Link8\Pin; - Ground\output -> JointA\Hin; - Ground\p <= JointA\Pout; Ground1\output -> JointC\Hin 1064 600; Ground1\p <= JointC\Pout 1032 632; + inverse_kinematics\angle1 -> Negate1\input; + inverse_kinematics\angle2 -> stepper_control1\setpoint; + inverse_kinematics\input <- rectanglepath\output; Joint_dynB\output => JointB\Pdiff; Joint_dynC\output => JointC\Pdiff; Joint_dynD\output => JointD\Pdiff; Joint_dynE\output => JointE\Pdiff; Joint_dynF\output => JointF\Pdiff; - JointA\Hout -> Splitter5\input; JointA\Pdiff <= Joint_dynA\output; - JointA\Pin <= Link6\Pout; - JointB\Hout -> Splitter8\input; - JointB\Pin <= Link2\Pout 416 120; + JointA\Pin <= OneJunction5\p; + JointA\Pout => Link3\Pin; + JointB\Hin <- Splitter5\output; + JointB\Hout -> Link6\Hin; + JointB\Pin <= Link6\Pout; + JointB\Pout => Link2\Pin 416 120; JointC\Hout -> Splitter6\input; JointC\Pin <= Link5\Pout; JointD\Hin <- Link7\Hout 648 600; JointD\Hout -> Splitter7\input; JointD\Pin <= Link9\Pout; JointD\Pout => Link7\Pin 616 632; + JointE\Hout -> Splitter4\input; JointE\Pout => Link4\Pin; - JointF\Hout -> Splitter9\input; + JointF\Hout -> Link10\Hin; JointF\Pout => Link1\Pin; Link1\Hout -> JointF\Hin; - Link2\Hout -> Splitter4\input; - Link2\Pin <= OneJunction3\p; - Link3\Hout -> JointB\Hin; - Link3\Pin <= JointB\Pout; + Link10\Hout -> Splitter9\input; + Link10\Pout => JointF\Pin; + Link2\Pout => OneJunction3\p; + Link3\Hout -> Splitter8\input; Link4\Hout -> JointE\Hin; Link5\Hout -> Splitter1\input; Link5\Pin <= OneJunction1\p; Link6\Hout -> Splitter2\input; Link6\Pin <= OneJunction2\p; Link8\Hout -> COM_body5\Hin; - Link8\Pout => JointF\Pin; + Link8\Pout => Link10\Pin; Link9\Hout -> Splitter3\input; Link9\Pin <= OneJunction4\p; + Negate1\output -> stepper_control\setpoint; OneJunction1\p <= COM_body2\p; OneJunction1\p <= Link7\Pout; OneJunction2\p <= COM_body1\p; @@ -5643,24 +7585,28 @@ implementation_end; OneJunction3\p <= Link1\Pout; OneJunction3\p => JointE\Pin; OneJunction4\p <= Link4\Pout; + OneJunction5\p => Ground2\p; + Splitter1\output -> Body2\input; Splitter1\output -> COM_body2\Hin; Splitter1\output -> Link7\Hin; Splitter2\output -> COM_body1\Hin; Splitter2\output -> Link3\Hin; Splitter3\output -> COM_body3\Hin; Splitter3\output -> Link4\Hin; + Splitter4\output -> Body4\input; Splitter4\output -> COM_body4\Hin; Splitter4\output -> Link1\Hin; - Splitter5\output -> Body1\input; - Splitter5\output -> Link6\Hin; - Splitter6\output -> Body2\input; + Splitter4\output -> Link2\Hin; + Splitter5\input <- Link2\Hout; Splitter6\output -> Link5\Hin; Splitter7\output -> Body3\input; Splitter7\output -> Link9\Hin; - Splitter8\output -> Body4\input; - Splitter8\output -> Link2\Hin 448 152; + Splitter8\output -> Body1\input; + Splitter8\output -> JointA\Hin; Splitter9\output -> Body5\input; Splitter9\output -> Link8\Hin; + stepper_control\output -> Joint_dynA\angle; + stepper_control1\output -> Joint_dynD\angle; end; implementation_end; ]]> @@ -5683,6 +7629,12 @@ implementation_end; + + COM_body1\InertialTensor\state_initial + 6 + 1 + 0 0 0 0 0 0 + COM_body2\InertialTensor\state_initial 6 @@ -5696,23 +7648,35 @@ implementation_end; 0 0 0 0 0 0 - COM_body5\InertialTensor\state_initial + COM_body4\InertialTensor\state_initial 6 1 0 0 0 0 0 0 - COM_body1\InertialTensor\state_initial + COM_body5\InertialTensor\state_initial 6 1 0 0 0 0 0 0 + + JointA\Hmatrix\p_initial + 3 + 1 + 0 0 0 + JointB\Hmatrix\p_initial 3 1 0 0 0 + + JointC\Hmatrix\p_initial + 3 + 1 + 0 0 0 + JointD\Hmatrix\p_initial 3 @@ -5720,37 +7684,65 @@ implementation_end; 0 0 0 - JointA\Hmatrix\p_initial - 3 - 1 - 0 0 0 + JointE\Hmatrix\p_initial + 3 + 1 + 0 0 0 + + + JointF\Hmatrix\p_initial + 3 + 1 + 0 0 0 + + + Joint_dynA\C1\state_initial + 3 + 1 + 0 0 0 + + + Joint_dynA\C4\state_initial + 2 + 1 + 0 0 + + + Joint_dynA\C\state_initial + 0 + + + Joint_dynA\stepper_model\I1\state_initial + 0 + + + Joint_dynA\stepper_model\I2\state_initial + 0 - JointC\Hmatrix\p_initial - 3 - 1 - 0 0 0 + Joint_dynA\stepper_model\I\state_initial + 0 - JointF\Hmatrix\p_initial + Joint_dynB\C1\state_initial 3 1 0 0 0 - JointE\Hmatrix\p_initial - 3 + Joint_dynB\C4\state_initial + 2 1 - 0 0 0 + 0 0 - Joint_dynE\C1\state_initial + Joint_dynC\C1\state_initial 3 1 0 0 0 - Joint_dynE\C4\state_initial + Joint_dynC\C4\state_initial 2 1 0 0 @@ -5768,25 +7760,34 @@ implementation_end; 0 0 - Joint_dynA\C1\state_initial - 3 - 1 - 0 0 0 + Joint_dynD\C\state_initial + 0 - Joint_dynA\C4\state_initial - 2 - 1 - 0 0 + Joint_dynD\stepper_model\I1\state_initial + 0 - Joint_dynC\C1\state_initial + Joint_dynD\stepper_model\I2\state_initial + 0 + + + Joint_dynD\stepper_model\I\state_initial + 0 + + + Joint_dynD\stepper_model\RotorAngle\angle_initial + rad + 0 + + + Joint_dynE\C1\state_initial 3 1 0 0 0 - Joint_dynC\C4\state_initial + Joint_dynE\C4\state_initial 2 1 0 0 @@ -5808,28 +7809,92 @@ implementation_end; 0 - Joint_dynB\C1\state_initial - 3 - 1 - 0 0 0 + stepper_control1\Position_control\state_initial + 0 - Joint_dynB\C4\state_initial - 2 - 1 - 0 0 + stepper_control1\Velocity_control\state_initial + 0 - Link1\Pin.e_initial - 6 - 1 - 0 0 0 0 0 0 + stepper_control\Position_control\state_initial + 0 + + + stepper_control\Velocity_control\state_initial + 0 time + Body1\position[1] + Body1\position[2] + Body1\position[3] + Body1\R[1,3] + Body1\R[2,3] + Body1\R[3,3] + Body1\R[1,2] + Body1\R[2,2] + Body1\R[3,2] + Body1\dimension[1] + Body1\dimension[2] + Body1\dimension[3] + Body2\dimension[1] + Body2\dimension[2] + Body2\dimension[3] + Body2\position[1] + Body2\position[2] + Body2\position[3] + Body2\R[1,3] + Body2\R[2,3] + Body2\R[3,3] + Body2\R[1,2] + Body2\R[2,2] + Body2\R[3,2] + Body3\dimension[1] + Body3\dimension[2] + Body3\dimension[3] + Body3\position[1] + Body3\position[2] + Body3\position[3] + Body3\R[1,3] + Body3\R[2,3] + Body3\R[3,3] + Body3\R[1,2] + Body3\R[2,2] + Body3\R[3,2] + Body4\dimension[1] + Body4\dimension[2] + Body4\dimension[3] + Body4\R[1,3] + Body4\R[2,3] + Body4\R[3,3] + Body4\R[1,2] + Body4\R[2,2] + Body4\R[3,2] + Body4\position[1] + Body4\position[2] + Body4\position[3] + Body5\dimension[1] + Body5\dimension[2] + Body5\dimension[3] + Body5\position[1] + Body5\position[2] + Body5\position[3] + Body5\R[1,3] + Body5\R[2,3] + Body5\R[3,3] + Body5\R[1,2] + Body5\R[2,2] + Body5\R[3,2] + stepper_control\setpoint + Joint_dynA\stepper_model\angle + Joint_dynA\stepper_model\RotorAngle\angle + stepper_control1\setpoint + Joint_dynD\angle + Joint_dynD\stepper_model\RotorAngle\angle @@ -5853,7 +7918,7 @@ implementation_end; 16777215 true 1 - model + StepperA true @@ -5903,19 +7968,1667 @@ implementation_end; 0.0 - 10.0 + 5.823613498640715 true 3 + + -2.8 + -0.8 + true + 2 + + + + -4.08637499341765 + 0.0 + true + 2 + + + + -4.08637499341765 + 0.0 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + stepper_control\setpoint + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Joint_dynA\stepper_model\angle + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Joint_dynA\stepper_model\RotorAngle\angle + + + + + true + 0 + 16777215 + + + + D3DPlot + + 2 + false + 16777215 + true + + 3D Animation + 137 + true + false + 4294967295 + Gradients\BlueWhite.png + true + 1.0 + 1.0 + + + + + 1 + + + 1 + + + 1 + + + true + Reference Frame + + + + + + Bryant + + false + false + false + false + false + false + + + + + 1 + + + 1 + + + 1 + + + false + Default Lights and Cameras + + + + + + Bryant + + false + false + false + false + false + false + + + false + Ambient + + + + + + 1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0 + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + + 1 + + + 1 + + + 1 + + + true + + true + false + false + + + false + Parallel + + + -3 + + + 5 + + + 3 + + + + + + 0.457495710997814 + + + -0.762492851663023 + + + -0.457495710997814 + + + + + 0.235379601434674 + + + -0.392299335724456 + + + 0.889211827642101 + + + Direct3D + + false + false + false + false + false + false + + + 3 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.0 + + + 0.0 + + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 1 + + + -3 + + + -5 + + + 1 + + + + + + 0.50709255283711 + + + 0.845154254728517 + + + -0.169030850945703 + + + + + 0.0869656553478673 + + + 0.144942758913112 + + + 0.985610760609162 + + + Direct3D + + false + false + false + false + false + false + + + 2 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.0471975511965976 + + + 1.0471975511965976 + + 0.0 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 2 + + + 2 + + + -3 + + + -1 + + + + + + -0.534522483824849 + + + 0.801783725737273 + + + 0.267261241912424 + + + + + 0.14824986333222 + + + -0.22237479499833 + + + 0.963624111659432 + + + Direct3D + + false + false + false + false + false + false + + + 2 + + + + 1 + + + 1 + + + 1 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.5707963267948966 + + + 1.5707963267948966 + + 0.0 + + + + 1 + + + 1 + + + 1 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Camera Looking at Origin + + + 0.159539928254181 + + + 0.0210195694587388 + + + 0.0764390770931449 + + + + + + -0.966527083347675 + + + -0.12682364469163 + + + -0.223027263585795 + + + + + -0.221131710235122 + + + -0.0290159788919472 + + + 0.974812207400704 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 0.003926990816987242 + 45.0 + -10.0 + 10.0 + 10.0 + -10.0 + true + + + -0.000627364166602552 + + + 3.08669776184333e-006 + + + 0.0394802856014185 + + + true + + + 1 + + + true + true + true + + + false + Front(XY)-Camera + + + 10 + + + + + + -1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 9.999999999999998 + 45.0 + -9.999999999999998 + 9.999999999999998 + 9.999999999999998 + -9.999999999999998 + true + + + true + + + 1 + + + true + false + false + + + false + Side(YZ)-Camera + + + 10 + + + + + + -1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 9.999999999999998 + 45.0 + -9.999999999999998 + 9.999999999999998 + 9.999999999999998 + -9.999999999999998 + true + + + true + + + 1 + + + true + false + false + + + false + Top(XZ)-Camera + + + 10 + + + + + + -1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 9.999999999999998 + 45.0 + -9.999999999999998 + 9.999999999999998 + 9.999999999999998 + -9.999999999999998 + true + + + true + + + 1 + + + true + false + false + + + + + + + 1 + + + 1 + + + 1 + + + false + Scenery + + + + + + Bryant + + false + false + false + false + false + false + + +
Bottom
+ 1.0 + true + 4 + + + Body1\dimension[1] + 0.005 + + + Body1\dimension[2] + 0.01 + + + Body1\dimension[3] + 0.065 + + + true + + + 0 + + + 0.501960784313725 + + + 0.501960784313725 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Block + + + Body1\position[1] + 0.0 + + + Body1\position[2] + -0.05 + + + Body1\position[3] + 0.0 + + + + + + Body1\R[1,3] + 0.0 + + + Body1\R[2,3] + 0.0 + + + Body1\R[3,3] + 1.0 + + + + + Body1\R[1,2] + 0.0 + + + Body1\R[2,2] + 1.0 + + + Body1\R[3,2] + 0.0 + + + Matrix + + false + false + false + false + false + false + + +
+ +
Bottom
+ 1.0 + true + 4 + + + Body2\dimension[1] + 0.005 + + + Body2\dimension[2] + 0.025 + + + Body2\dimension[3] + 0.01 + + + true + + + 1 + + + 0.501960784313725 + + + 0 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Block + + + Body2\position[1] + 0.0 + + + Body2\position[2] + -0.0125 + + + Body2\position[3] + 0.0 + + + + + + Body2\R[1,3] + 0.0 + + + Body2\R[2,3] + 0.0 + + + Body2\R[3,3] + 1.0 + + + + + Body2\R[1,2] + 0.0 + + + Body2\R[2,2] + 1.0 + + + Body2\R[3,2] + 0.0 + + + Matrix + + false + false + false + false + false + false + + +
+ +
Bottom
+ 1.0 + true + 4 + + + Body3\dimension[1] + 0.005 + + + Body3\dimension[2] + 0.01 + + + Body3\dimension[3] + 0.065 + + + true + + + 0.501960784313725 + + + 0.501960784313725 + + + 1 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Block + + + Body3\position[1] + 0.0 + + + Body3\position[2] + -0.025 + + + Body3\position[3] + 0.0 + + + + + + Body3\R[1,3] + 0.0 + + + Body3\R[2,3] + 0.0 + + + Body3\R[3,3] + 1.0 + + + + + Body3\R[1,2] + 0.0 + + + Body3\R[2,2] + 1.0 + + + Body3\R[3,2] + 0.0 + + + Matrix + + false + false + false + false + false + false + + +
+ +
Center
+ 1.0 + true + 4 + + + Body4\dimension[1] + 0.005 + + + Body4\dimension[2] + 0.05 + + + Body4\dimension[3] + 0.01 + + + true + + + 0.501960784313725 + + + 0 + + + 0 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Block + + + Body4\position[1] + 0.0 + + + Body4\position[2] + -0.025 + + + Body4\position[3] + 0.065 + + + + + + Body4\R[1,3] + 0.0 + + + Body4\R[2,3] + 0.0 + + + Body4\R[3,3] + 1.0 + + + + + Body4\R[1,2] + 0.0 + + + Body4\R[2,2] + 1.0 + + + Body4\R[3,2] + 0.0 + + + Matrix + + false + false + false + false + false + false + + +
+ +
Center
+ 1.0 + true + 4 + + + Body5\dimension[1] + 0.005 + + + Body5\dimension[2] + 0.025 + + + Body5\dimension[3] + 0.01 + + + true + + + 0.501960784313725 + + + 0 + + + 0 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Block + + + Body5\position[1] + 0.0 + + + Body5\position[2] + 0.0125 + + + Body5\position[3] + 0.065 + + + + + + Body5\R[1,3] + 0.0 + + + Body5\R[2,3] + 0.0 + + + Body5\R[3,3] + 1.0 + + + + + Body5\R[1,2] + 0.0 + + + Body5\R[2,2] + 1.0 + + + Body5\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 + StepperD + 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 + 5.823613498640715 + true + 3 + + + + + + -2.0 + 3.0 + true + 2 + + + + -0.944547877949926 + 0.0 true 2 - + + + + -0.944547877949926 + 0.0 + true + 2 + @@ -5935,6 +9648,48 @@ implementation_end; true time + + true + stepper_control1\setpoint + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Joint_dynD\angle + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Joint_dynD\stepper_model\RotorAngle\angle + @@ -5952,10 +9707,29 @@ implementation_end; 0 1 + 3 + + Base + + + 2 + true + Window 2 + 0 + + 2 Base + + +0 0.0259259 1 0.968519 + + +0.09375 0.134259 0.892708 0.89537 + +
@@ -6100,6 +9874,9 @@ implementation_end; + + 1.0 +