powerwindow_multi_rate_BASE.sa 1006 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import PowerWindowModel
  2. semantic adaptation window_sa
  3. for fmu window
  4. out rules {
  5. true -> { } --> { reaction_torque := -reaction_torque; };
  6. }
  7. semantic adaptation window_obstacle_sa_loop
  8. for fmu window_sa, obstacle
  9. // just for the sake of declaring this, look at algebraic loop iteration
  10. semantic adaptation window_obstacle_sa_multirate //with master // multi-rate for window and object
  11. for fmu window_obstacle_sa_loop
  12. input ports motor_speed
  13. output ports reaction_torque
  14. param init_motor_speed = 0;
  15. control {
  16. var h := H/10;
  17. var proposed_h := H;
  18. for (var iter in 0 .. 10) {
  19. var returned_h := do_step(window_obstacle_sa_loop, h);
  20. if (returned_h != h) { // for backtracking
  21. proposed_h := iter*h + returned_h;
  22. }
  23. }
  24. return proposed_h;
  25. }
  26. in var stored_motor_speed := init_motor_speed;
  27. in var linear_increment;
  28. in rules {
  29. true -> {
  30. linear_increment := (motor_speed - stored_motor_speed) / 10;
  31. stored_motor_speed := motor_speed;
  32. } --> {
  33. motor_speed := motor_speed + linear_increment;
  34. };
  35. }