rate_canonical.sa 930 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. semantic adaptation reactive moore RateSA rate_sa
  2. at "./path/to/RateSA.fmu"
  3. for inner fmu LoopSA loop_sa
  4. at "./test_input/single_folder_spec/rate/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
  9. param RATE := 10,
  10. INIT_LOOP_SA_TAU := 0.0;
  11. control var previous_speed := 0;
  12. control rules {
  13. var 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. }
  30. out var stored_loop_sa_tau := INIT_LOOP_SA_TAU;
  31. out rules {
  32. true -> {
  33. stored_loop_sa_tau := loop_sa.tau;
  34. } --> {
  35. rate_sa.tau := stored_loop_sa_tau;
  36. };
  37. }