main.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # include "my_lib.h"
  2. # include "studio_pid_c.h"
  3. int main()
  4. {
  5. double ini = 2, goal = 50, p = 0.5, i = 0.001, d = 0.6;
  6. studio_pid pid;
  7. // 初始化PID
  8. init_pid(&pid, ini, goal, p, i, d, 100, 200);
  9. // 第一阶段控制到 50
  10. double current_value = ini;
  11. for (int i = 0; i < 20; ++i)
  12. {
  13. double output = compute_pid(&pid, current_value);
  14. current_value += output; // 积分项和微分项会影响下一次计算
  15. printf("Step %d: 目标=%.2f, 当前值=%.2f, 输出=%.2f\n", i + 1, get_goal(&pid), current_value, output);
  16. }
  17. printf("到达目标值,开始第二阶段控制\n");
  18. // 改变目标值并重置PID状态
  19. set_goal(&pid, 100);
  20. // 第二阶段控制到 100
  21. for (int i = 0; i < 20; ++i)
  22. {
  23. double output = compute_pid(&pid, current_value);
  24. current_value += output; // 积分项和微分项会影响下一次计算
  25. printf("Step %d: 目标=%.2f, 当前值=%.2f, 输出=%.2f\n", i + 1, get_goal(&pid), current_value, output);
  26. }
  27. return 0;
  28. }