1
0

control.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /**
  2. @copyright None
  3. @file control.c
  4. @author Comment Vivre
  5. @date 2025-12-29
  6. @brief None
  7. */
  8. #include <MyProject.h>
  9. Start_Test_t xdata startTest;
  10. /**
  11. @function Motor_Start_Test
  12. @brief 电机启动测试
  13. @date 2025-12-23
  14. */
  15. void Motor_Start_Test(void)
  16. {
  17. // 有故障 结束测试
  18. if (FaultSource != SYS_NO_FAULT)
  19. {
  20. startTest.State = TEST_FAULT;
  21. isCtrlPowOn = false;
  22. startTest.RunTime = 0;
  23. startTest.StopTime = 0;
  24. }
  25. switch (startTest.State)
  26. {
  27. // 停止
  28. case TEST_MOTOR_STOP:
  29. isCtrlPowOn = false;
  30. loopCtrl.TargetRef = 0;
  31. if (++startTest.StopTime > MOTOR_STOP_TIME)
  32. {
  33. startTest.StopTime = 0;
  34. startTest.State = TEST_MOTOR_START;
  35. }
  36. break;
  37. // 启动
  38. case TEST_MOTOR_START:
  39. isCtrlPowOn = true;
  40. loopCtrl.TargetRef = MOTOR_START_TEST_SPEED;
  41. if (++startTest.RunTime > MOTOR_RUN_TIME)
  42. {
  43. startTest.RunTime = 0;
  44. startTest.State = TEST_MOTOR_STOP;
  45. }
  46. break;
  47. case TEST_FAULT:
  48. break;
  49. }
  50. }
  51. /**
  52. @function Get_Target_Ref
  53. @brief 速度给定
  54. @date 2025-11-01
  55. */
  56. void Get_Target_Ref(void)
  57. {
  58. #if (SPEED_MODE == NONEMODE)
  59. isCtrlPowOn = true;
  60. loopCtrl.TargetRef = _Q15(3500.0 / MOTOR_SPEED_BASE);
  61. #elif (SPEED_MODE == PWMMODE)
  62. Input_Capture_Calc();
  63. #elif (SPEED_MODE == STARTTEST)
  64. Motor_Start_Test();
  65. #endif
  66. }