Advertisement
Guest User

kOS pid loop

a guest
Jun 30th, 2015
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. //PID LOOP BASED ON THE github.com EXAMPLE.
  2.  
  3. SET run1 TO 1.
  4.  
  5. ON AG1 {
  6. SET run1 TO 0.
  7. PRINT "DONE".
  8. PRESERVE.
  9. }
  10.  
  11. LOCK P TO 50 - ALT:RADAR. //ERROR
  12.  
  13. SET I TO 0. //INTRODUCING THE "I" VARIABLE.
  14. SET D TO 0. //INTRODUCING THE "D" VARIABLE.
  15. SET P0 TO P. //DEFINING THE 2ND ERROR VARIABLE.
  16.  
  17. //PID GAINS:
  18. SET Kp TO 0.01.
  19. SET Ki TO 0.1.
  20. SET Kd TO 0.1.
  21.  
  22. LOCK dthrott TO Kp * P + Ki * I + Kd * D. //STANDARD PID CONTROLLER FORMULA
  23.  
  24.  
  25. SET thrott TO 1. //INTRODUCING THE "thrott" VARIABLE.
  26. LOCK THROTTLE to thrott. //LOCKING THE THROTTLE TO "thrott" SO THAT IT CAN BE MANIPULATED LATER ON.
  27.  
  28. UNTIL run1 = 0 { //IMPLEMETING THE 'RUNMODE' IDEA AND CEATING THE LOOP.
  29. SET dt TO 0.1. //SIMPLIFYING THE dt VALUE BY DEFINING A SET VALUE.
  30. IF dt > 0 { //IMPLEMENTING ANOTHER LOOP.
  31. SET I TO I + P * dt. //DEFAULT "I" VALUE FOR PID SCRIPT.
  32. SET D TO (P - P0) / dt. //DEFAULT "D" VALUE FOR PID SCRIPT.
  33.  
  34. IF Ki > 0 {
  35. SET I TO MIN(1.0/Ki, MAX(-1.0/Ki, I)). //FILTER FOR "I" VALUE.
  36. }
  37.  
  38. SET thrott to MIN(1, MAX(0, thrott + dthrott)). //LIMITING THROTTLE TO 0-1.
  39. SET P0 TO P. //RETURNING THE 2ND ERROR VALUE.
  40. }
  41. PRINT "RDR ALT:" + ALT:RADAR AT (0,10). //PRINTING THE TRUE RADAR ALTITUDE
  42. PRINT "ERROR :" + p AT (0,12). //PRINTING THE ERROR VALUE
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement