controller.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef __CONTROLLER_H__
  2. #define __CONTROLLER_H__
  3. #include <rtthread.h>
  4. struct controller_pid_param
  5. {
  6. float kp;
  7. float ki;
  8. float kd;
  9. };
  10. struct controller_param
  11. {
  12. union
  13. {
  14. struct controller_pid_param pid;
  15. } data;
  16. };
  17. typedef struct controller_param *controller_param_t;
  18. struct controller
  19. {
  20. float target;
  21. float output;
  22. rt_uint16_t sample_time; // unit:ms
  23. int enable;
  24. rt_err_t (*update)(void *controller, float current_point);
  25. rt_err_t (*reset)(void *controller);
  26. rt_err_t (*destroy)(void *controller);
  27. rt_err_t (*set_param)(void *controller, controller_param_t param);
  28. };
  29. typedef struct controller *controller_t;
  30. controller_t controller_create(rt_size_t size, rt_uint16_t sample_time);
  31. rt_err_t controller_update(controller_t controller, float current_point);
  32. rt_err_t controller_destroy(controller_t controller);
  33. rt_err_t controller_enable(controller_t controller);
  34. rt_err_t controller_disable(controller_t controller);
  35. rt_err_t controller_reset(controller_t controller);
  36. rt_err_t controller_set_target(controller_t controller, rt_int16_t target);
  37. rt_err_t controller_set_sample_time(controller_t controller, rt_uint16_t sample_time);
  38. rt_err_t controller_set_param(controller_t controller, controller_param_t param);
  39. #endif // __CONTROLLER_H__