<?xml version="1.0" encoding="UTF-8"?>
<Document>
 <Icons>
    <Icon size="256" bpp="32" format="png">
<![CDATA[89504e470d0a1a0a0000000d49484452000001000000010008060000005c72a86600000006624b474400ff00ff00ffa0bda793000000097048597300000ec400000ec401952b0e1b0000079349444154789ceddd3168546b1ec6e17f96ab82828888902210b08c8520110291adbc82a08210502c8418b1176c4c8a2d924a4c61ab132c04ad44ed3458884a1644b03060255c04ad049b146b335bc80c192789b9ee3a89becfd338993333e773707ee73b5f8e4c5fb3d92c20d33f367a00c0c61100082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c1040082090004130008260010ec8fd536f4f5f5fdb39703017eba7f379bcdff2cbfa3afd96caef8c8bebebe953700bfaac166b3f9d7f23b9c0240b0554f015a3e7efc583b77eeecc558809f60c78e1dab6efb6e009acd66ad769a00fcda9c0240300180600200c1ac0140303300082600104c0020980040308b8010cc0c0082090004130008660d0082990140300180600200c1ac0140303300082600104c0020980040308b8010cc0c0082090004130008660d0082990140b0efce00f8f92e5fbedcfe73efdebdf5ead5ab7afaf4697dfcf8b1fd9893274fd6e8e868d773dfbf7f5f2f5fbeac8585858efbfbfbfb6b7070b08687876b606060cd7deed8b1a31e3d7ad4f11a23232375ead4a9f6cfcf9f3faf070f1eacbafddb313d79f2a41617173bc673e8d0a115ff0e6c1c01d8241a8d461d3972a4e6e7e7abd1685455d5f9f3e7dbb71b8d46ddbd7bb7fefcf3cff673eeddbb57131313edc72e373d3dddbefdecd9b31a1a1afa5bfb6cfd3c3a3a5ab76fdf6ebfdeb7dbbf8dc0e2e2621d3e7cb8fdd8fefefeaafafa2dd3274e9ca8a9a9a9ba74e9d28fbc45fc0402b0899c3e7dbace9f3f5f376fdeace1e1e1dabd7b774d4e4ed6fdfbf7ebd2a54b353f3fdf1180e1e1e19a9a9a5af1c83a393959737373353d3d5db76eddaaab57afaeb9cf870f1fd6fefdfb6bcb962d35323252131313353131d10ecb4adb1716163a02b0b4b454b76eddaaaaaaf9f9f93a78f060c7b6fefefe9a9e9eaec1c1c155670ff496006c22b3b3b3353636d6f57dee636363ede9f4d2d2527bfbc0c0c0aa47d35dbb76d5c58b17dba711cb9fb7dccd9b37ebf8f1e3b565cb96f67d478f1e6d1fe9878686bac674ead4a95a5858a846a351939393b56bd7aeaaaa7af1e245351a8d9a9d9dedf8f0577dfd8efab1b1b19a9e9eee0a071bc722e02672ecd8b1153fa4adfb1a8d462d2d2dadfbf5d6f3bcd1d1d18e0ffff2e7ad35a6962f5fbeb46fbf79f3a6aabece4c56323030d075aac2c63203f80d2c2d2dd5dbb76febd3a74fed0f61ebc8df3a57ef85d63e5ba7012b698da7b5e0c9c612805fdce3c78fbb16f15a5a0b70bdb6d67ea7a6a6aaaa6aebd6adbd1a0e6b7021d026d07a7fd77aaf577acce3c78febcc9933555575e7ce9d3a70e040d751f5c3870f353737d7f5dadfdbe78f6c6ffd79f6ecd9751dddfdbbda786600bfb0f9f9f9aafa1a826f17dd3642ebc8fffefd7bd3fb5f8445c0dfc04a17fa547dbd4e606e6eae67e3181c1cacaaaaa74f9ff66c9ffc6f04e017d63ae2debe7dbb63957f7171b1666767ebc2850b3d1dcfd1a3476b7c7cbc666666eadebd7b5dbf7978fefc79cdceced6e7cf9f7b3a2e56670d601359cf7bbdfc31274e9ca89999999a9999e9b86c786e6eaec6c7c7ebf5ebd775fdfaf515d700d6bbcfbfb37dfbf6ed75eedcb9aaaaba70e1428d8f8f773cb6351b191a1aeab8a0898d630d6093f8f6c3b29ec7ecdbb7af5ebf7edd75ddfdfdfbf73bae0c5cedb5bfb7cf1fd93e34345457ae5ca9919191aeff9f70eddab51a1d1dad7dfbf6adf9baf44edf6a75efebeb6b5655bd7bf7ae76eedcd9d34101ff3f7bf6ec69dd1c6c369b7f2ddf660d0082590380606600104c002098004030018060ebba0ec02220fc9ecc0020980040300180602e0482606600104c0020980040306b0010cc0c0082090004130008260010cc222004330380600200c104008259038060df0dc08d1b376adbb66dbd180bd063dffd6620e0b7d1f5cd406bcd00fef573c702f458d7d732af3a03007e7f7e0b00c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c10400820900041300082600104c0020980040300180600200c1040082fd17c1b44392c12ac9420000000049454e44ae426082]]>
   </Icon>
</Icons>
 <Model version="4.8" build="4.8.2.10124">
    <Sidops>
<![CDATA[stepper_control 704 592
 description '<Information>
 <Description>
    <Version>4.8</Version>
<IsMainModel>1</IsMainModel>
    <LibraryPath>Z:\home\wouter\Documents\studie\ma\mahd\implementation\library\Motor\stepper_control.emx</LibraryPath>
  <TimeStamp>2020-7-23 13:09:57</TimeStamp>
</Description>
 <Attributes>
  <GlobalRelations>parameters
	real max_acceleration = 100 {rad/s2};
	real max_velocity = 25 {rad/s};
	real initial_velocity = 0 {rad/s};
	real initial_angle = 0 {rad};</GlobalRelations>
 </Attributes>
</Information>';
 type Submodel
  ports
   signal in setpoint {rad} ;
   signal out output {rad} ;
 end;
 icon bg bottom
  figures
   rectangle 648 576 760 608 color 0 fill 15132390;
   text 'name' 704 592 color 0 'Clear Sans' 16;
 end;
 implementation bg
  submodels
   Acceleration_int 648 336
    description '<Information>
 <Description>
    <Version>4.3</Version>
<IsMainModel>1</IsMainModel>
  <KeepParameterValues>False</KeepParameterValues>
    <LibraryPath>Signal\Block Diagram\Integrate.emx</LibraryPath>
  <TimeStamp>2013-3-8 14:47:42</TimeStamp>
</Description>
</Information>';
    type Integrate
     ports
      signal in input;
      signal out output;
    end;
    icon bg bottom
     figures
      rectangle 632 320 664 352 color 0 fill 15132390;
      text '∫' 648 336.3 color 16711680 'Lucida Sans' 21 italic;
    end;
    implementation eq
parameters
	real global initial_velocity;		// initial value
equations
	output = int (input, initial_velocity);
     implementation_end;
   Acceleration_limit 568 336
    description '<Description><Version>4.0</Version><IsMainModel>1</IsMainModel><KeepParameterValues>False</KeepParameterValues>
   <LibraryPath>Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx</LibraryPath>
  <TimeStamp>2007-9-26 12:47:40</TimeStamp>
</Description>';
    type 'SignalLimiter-Limit'
     ports
      signal in input;
      signal out output;
    end;
    icon bg bottom
     figures
      group
       rectangle 552 320 584 352 color 0 fill 15132390;
       line 567.9 324.5 567.9 349 color 0 fill 15132390;
       line 555 336.2 580.7 336.2 color 0 fill 15132390;
       spline 561.9 343.1 573.9 329.4 color 16711680 fill 15132390 width 2;
       spline 573.3 330.2 581.9 329.8 color 16711680 fill 15132390 width 2;
       spline 555 343.6 561.9 343.1 color 16711680 fill 15132390 width 2;
      end;
    end;
    implementation eq
parameters
	real global max_acceleration {rad/s2};
equations
	output = limit (input, -max_acceleration, max_acceleration);
  implementation_end;
   plug setpoint 136 336;
   plug output 791 336;
   PlusMinus1 240 336
    description '<Description><Version>4.0</Version><IsMainModel>1</IsMainModel><KeepParameterValues>False</KeepParameterValues>
   <LibraryPath>Signal\Block Diagram\PlusMinus.emx</LibraryPath>
  <TimeStamp>2007-9-27 10:15:13</TimeStamp>
</Description>';
    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 '<Description><Version>4.0</Version><IsMainModel>1</IsMainModel><KeepParameterValues>False</KeepParameterValues>
   <LibraryPath>Signal\Block Diagram\PlusMinus.emx</LibraryPath>
  <TimeStamp>2007-9-27 10:15:13</TimeStamp>
</Description>';
    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 '<Description>
 <Version>4.0</Version>
 <IsMainModel>1</IsMainModel>
 <KeepParameterValues>False</KeepParameterValues>
   <LibraryPath>Signal\Control\PID Control\Continuous\PD.emx</LibraryPath>
  <TimeStamp>2008-1-17 10:49:7</TimeStamp>
</Description>';
    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 '<Description><Version>4.0</Version>
   <LibraryPath>Signal\Block Diagram\Splitter.emx</LibraryPath>
  <TimeStamp>2008-01-17 11:28:29</TimeStamp>
<IsMainModel>1</IsMainModel>
 <KeepParameterValues>False</KeepParameterValues>
</Description>';
    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 '<Description><Version>4.0</Version>
   <LibraryPath>Signal\Block Diagram\Splitter.emx</LibraryPath>
  <TimeStamp>2008-01-17 11:28:29</TimeStamp>
<IsMainModel>1</IsMainModel>
 <KeepParameterValues>False</KeepParameterValues>
</Description>';
    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 '<Description>
 <Version>4.0</Version>
 <IsMainModel>1</IsMainModel>
 <KeepParameterValues>False</KeepParameterValues>
   <LibraryPath>Signal\Control\PID Control\Continuous\PD.emx</LibraryPath>
  <TimeStamp>2008-1-17 10:49:7</TimeStamp>
</Description>';
    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 '<Information>
 <Description>
    <Version>4.3</Version>
<IsMainModel>1</IsMainModel>
  <KeepParameterValues>False</KeepParameterValues>
    <LibraryPath>Signal\Block Diagram\Integrate.emx</LibraryPath>
  <TimeStamp>2013-3-8 14:47:42</TimeStamp>
</Description>
</Information>';
    type Integrate
     ports
      signal in input;
      signal out output;
    end;
    icon bg bottom
     figures
      rectangle 704 320 736 352 color 0 fill 15132390;
      text '∫' 720 336.3 color 16711680 'Lucida Sans' 21 italic;
    end;
    implementation eq
parameters
	real global initial_angle;		// initial value
equations
	output = int (input, initial_angle);
     implementation_end;
   Velocity_limit 376 336
    description '<Description><Version>4.0</Version><IsMainModel>1</IsMainModel><KeepParameterValues>False</KeepParameterValues>
   <LibraryPath>Signal\Block Diagram Non-Linear\SignalLimiter-Limit.emx</LibraryPath>
  <TimeStamp>2007-9-26 12:47:40</TimeStamp>
</Description>';
    type 'SignalLimiter-Limit'
     ports
      signal in input;
      signal out output;
    end;
    icon bg bottom
     figures
      group
       rectangle 360 320 392 352 color 0 fill 15132390;
       line 375.9 324.5 375.9 349 color 0 fill 15132390;
       line 363 336.2 388.7 336.2 color 0 fill 15132390;
       spline 369.9 343.1 381.9 329.4 color 16711680 fill 15132390 width 2;
       spline 381.3 330.2 389.9 329.8 color 16711680 fill 15132390 width 2;
       spline 363 343.6 369.9 343.1 color 16711680 fill 15132390 width 2;
      end;
    end;
    implementation eq
parameters
	real global max_velocity {rad/s};
equations
	output = limit (input, -max_velocity, max_velocity);
  implementation_end;
  end;
  connections
   Acceleration_int\output -> Splitter3\input;
   Acceleration_limit\output -> Acceleration_int\input;
   PlusMinus1\output -> Position_control\error;
   PlusMinus2\output -> Velocity_control\error;
   Position_control\output -> Velocity_limit\input;
   setpoint -> PlusMinus1\plus;
   Splitter3\output -> PlusMinus2\minus 688 288 432 288;
   Splitter3\output -> Velocity_int\input;
   Splitter4\output -> output;
   Splitter4\output -> PlusMinus1\minus 752 400 240 400;
   Velocity_control\output -> Acceleration_limit\input;
   Velocity_int\output -> Splitter4\input;
   Velocity_limit\output -> PlusMinus2\plus;
  end;
 implementation_end;
]]>
  </Sidops>
</Model>
</Document>
