rate.sa 730 B

12345678910111213141516171819202122232425262728293031323334353637
  1. semantic adaptation reactive moore RateSA rate_sa
  2. at "./path/to/RateSA.fmu"
  3. for inner fmu LoopSA loop_sa
  4. at "./path/to/LoopSA.fmu"
  5. with input ports displacement (rad), speed (rad/s)
  6. with output ports tau (N.m)
  7. input ports speed
  8. output ports tau <- loop_sa.tau
  9. param RATE := 10;
  10. control var previous_speed := 0;
  11. control rules {
  12. var micro_step := H/RATE;
  13. var inner_time := t;
  14. for (var iter in 0 .. RATE) {
  15. do_step(loop_sa,inner_time,micro_step);
  16. inner_time := inner_time + micro_step;
  17. }
  18. previous_speed := current_speed;
  19. return H;
  20. }
  21. in var current_speed := 0;
  22. in rules {
  23. true -> {
  24. current_speed := speed;
  25. } --> {
  26. loop_sa.speed := previous_speed + (current_speed - previous_speed)*(dt + h);
  27. };
  28. }