powerwindow_multi_rate_BASE.sa 1.2 KB

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