main.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * @Author: Dyyt587 67887002+Dyyt587@users.noreply.github.com
  3. * @Date: 2024-02-28 08:04:51
  4. * @LastEditors: Dyyt587 67887002+Dyyt587@users.noreply.github.com
  5. * @LastEditTime: 2024-05-15 16:31:48
  6. * @FilePath: \all_pid\example\main.c
  7. * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  8. */
  9. #include <stdio.h>
  10. #include "apid.h"
  11. int main(void)
  12. {
  13. printf("Hello all pid\r\n");
  14. apid_t pid;
  15. APID_Init(&pid, PID_POSITION, 3, 0.1, 0);
  16. APID_Enable(&pid); // 默认已经开启
  17. APID_Set_Target(&pid, 50);
  18. for (int i = 0; i < 16; ++i)
  19. {
  20. APID_Set_Present(&pid, 32);//用户定时更新当前值数据
  21. APID_Hander(&pid, 1);//cycle 如果不使用,建议设置为1,使用请输入两次调用的间隔单位ms
  22. printf("pid out %f\r\n", APID_Get_Out(&pid));
  23. }
  24. APID_Fuzzy_Fast_Init(&pid, &(APID_Fuzzy_Init_t){
  25. .maximum = 100,
  26. .minimum = -100,
  27. .maxdKp = 0.1,
  28. .mindKp = -0.1,
  29. .qKp = 0.1,
  30. .maxdKi = 0.1,
  31. .mindKi = -0.1,
  32. .qKi = 0.1,
  33. .maxdKd = 0.1,
  34. .mindKd = -0.1,
  35. .qKd = 0.1});
  36. APID_Set_Target(&pid, 50);
  37. for (int i = 0; i < 16; ++i)
  38. {
  39. APID_Set_Present(&pid, 32);//用户定时更新当前值数据
  40. APID_Hander(&pid, 1);//cycle 如果不使用,建议设置为1,使用请输入两次调用的间隔单位ms
  41. printf("pid out1 %f\r\n", APID_Get_Out(&pid));
  42. }
  43. static apid_auto_tune_ZNmode_t tuner;
  44. apid_auto_tune_ZNmode_init(&pid,&tuner,ZNModeLessOvershoot,300,-20000,20000,20);
  45. for (int i = 0; i < 16; ++i)
  46. {
  47. APID_Set_Present(&pid, 32);//用户定时更新当前值数据
  48. APID_Hander(&pid, 1);//cycle 如果不使用,建议设置为1,使用请输入两次调用的间隔单位ms
  49. printf("pid out1 %f\r\n", APID_Get_Out(&pid));
  50. }
  51. return 0;
  52. }