1
0

AddFunction.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #include <MyProject.h>
  2. FOCCTRL xdata mcFocCtrl;
  3. /**
  4. @brief 对变量取16位的绝对值
  5. @param[in] value
  6. @return 绝对值
  7. @date 2022-07-13
  8. */
  9. uint16_t Abs_F16(int16_t value)
  10. {
  11. if (value < 1)
  12. { return (-value); }
  13. else
  14. { return (value); }
  15. }
  16. /**
  17. @brief 启动ATO爬坡函数,用于静止启动时候对ATO进行爬坡,提高启动可靠性
  18. @date 2022-07-14
  19. */
  20. void ATORamp(void)
  21. {
  22. if (mcFocCtrl.State_Count == (ATO_RAMP_PERIOD << 2))
  23. {
  24. FOC_EKP = OBSW_KP_GAIN_RUN1; // 估算器里的PI的KP
  25. FOC_EKI = OBSW_KI_GAIN_RUN1; // 估算器里的PI的KI
  26. }
  27. else if (mcFocCtrl.State_Count == ((ATO_RAMP_PERIOD << 1) + ATO_RAMP_PERIOD))
  28. {
  29. FOC_EKP = OBSW_KP_GAIN_RUN2; // 估算器里的PI的KP
  30. FOC_EKI = OBSW_KI_GAIN_RUN2; // 估算器里的PI的KI
  31. }
  32. else if (mcFocCtrl.State_Count == (ATO_RAMP_PERIOD << 1))
  33. {
  34. FOC_EKP = OBSW_KP_GAIN_RUN3; // 估算器里的PI的KP
  35. FOC_EKI = OBSW_KI_GAIN_RUN3; // 估算器里的PI的KI
  36. }
  37. else if (mcFocCtrl.State_Count <= ATO_RAMP_PERIOD && mcFocCtrl.Flg_ATORampEnd == 0)
  38. {
  39. FOC_EKP = OBSW_KP_GAIN_RUN4; // 估算器里的PI的KP
  40. FOC_EKI = OBSW_KI_GAIN_RUN4; // 估算器里的PI的KI
  41. mcFocCtrl.Flg_ATORampEnd = 1; // ATO 爬坡结束
  42. }
  43. }