rate.sa 750 B

1234567891011121314151617181920212223242526272829303132333435363738
  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 := 0.0;
  13. micro_step := H/RATE;
  14. var inner_time := t;
  15. for (var iter in 0 .. RATE) {
  16. do_step(loop_sa,inner_time,micro_step);
  17. inner_time := inner_time + micro_step;
  18. }
  19. previous_speed := current_speed;
  20. return H;
  21. }
  22. in var current_speed := 0;
  23. in rules {
  24. true -> {
  25. current_speed := speed;
  26. } --> {
  27. loop_sa.speed := previous_speed + (current_speed - previous_speed)*(dt + h);
  28. };
  29. }