TorqueCompensation.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #ifndef __TorqueCompensation_H_
  2. #define __TorqueCompensation_H_
  3. //#if (IQCOMPENSATEENBLE==1)
  4. typedef struct
  5. {
  6. //uint16 MotorStartHoldTime;//回油时间结束才启动转矩补偿判断
  7. int16 MotorCurrentSpeed;
  8. int16 MotorTargetSpeed;
  9. int16 MotorDeltaSpeed;
  10. int16 MotorDeltaSpeedFlt;
  11. int16 MotorDeltaSpeedFlt_LSB;
  12. int16 MachineDeltaTheta;
  13. int16 MachineTheta;
  14. int16 MotorDeltaSpeedAbs;
  15. int16 MotorDeltaSpeedAbsFlt;
  16. int16 MotorDeltaSpeedAbsFlt_LSB;
  17. int16 TorqueCompensateEnterSpeedValue;//进入转矩补偿转速
  18. int16 TorqueCompensateExitSpeedValue;//进入转矩补偿转速
  19. int16 TorqueCompensateTheta;
  20. int16 IqRef;
  21. int16 TorqueCompensateInitTheta;
  22. int16 TorqueCompensateCosTheta;
  23. int16 TorqueCompensateSinTheta;
  24. int16 TorqueCompensateInitTheta1;
  25. int16 TorqueCompensateD;
  26. int16 TorqueCompensateDFlt; //
  27. int16 TorqueCompensateDFlt_LSB;
  28. int16 TorqueCompensateC;
  29. int16 TorqueCompensateCFlt; //
  30. int16 TorqueCompensateCFlt_LSB;
  31. int16 TorqueCompensateIqCurrentPeakValue;//补偿电流的幅值
  32. int16 TorqueCompensateIqCurrentValue;//补偿电流随机械周期实时变化的值
  33. int16 TorqueCompensateMechDeltaThetaKValue;
  34. int16 TorqueCompensateCLpfFcKValue;
  35. int16 TorqueCompensateDLpfFcKValue;
  36. int16 TorqueCompensatePeakKValue;
  37. int16 TorqueCompensatePeakKValueRef;
  38. int16 TorqueCompensatePeakKValueInc;
  39. uint8 TorqueCompensatePeakKValueIncCycle;
  40. uint8 TorqueCompensatePeakKValueIncCycleCnt;
  41. int16 TorqueCompensateDeltaOmegaAbsLpfFcKValue;
  42. int16 TorqueCompensateDeltaOmegaLpfFcKValue;
  43. int16 TorqueCompensatePeakK;
  44. int16 TorqueCompensatePeakKStart0;
  45. }MCTorqueCompensation;
  46. typedef struct
  47. {
  48. int16 Err;
  49. int16 Err_last;
  50. int16 Uk;
  51. uint16 Kp;
  52. uint16 Ki;
  53. int16 outMax;
  54. int16 outMin;
  55. }PI_Typedef;
  56. #define TorqueCompensateMechDeltaThetaK _Q15(TPWM_VALUE * MOTOR_SPEED_BASE / 30.0)//转速标幺化后乘于该系数即可得到角度增量
  57. #define TorqueCompensateDeltaOmegaLpfFc (100.0)//HZ//1000
  58. #define TorqueCompensateDeltaOmegaLpfFc_K _Q15(_2PI * TPWM_VALUE * TorqueCompensateDeltaOmegaLpfFc)
  59. #define TorqueCompensateDeltaOmegaAbsLpfFc (2.0)//HZ 5
  60. #define TorqueCompensateDeltaOmegaAbsLpfFc_K _Q15(_2PI * TPWM_VALUE * TorqueCompensateDeltaOmegaAbsLpfFc)
  61. #define TorqueCompensateDLpfFc (100.0)//HZ1000
  62. #define TorqueCompensateDLpfFc_K _Q15(_2PI * TPWM_VALUE * TorqueCompensateDLpfFc)
  63. #define TorqueCompensateCLpfFc (5.0)//HZ 5.0
  64. #define TorqueCompensateCLpfFc_K _Q15(_2PI * TPWM_VALUE * TorqueCompensateCLpfFc)
  65. extern MCTorqueCompensation xdata mcTorqueCompensation;
  66. extern PI_Typedef xdata mcTorqueCompensationThetaPI;
  67. //extern PI_Typedef xdata SpeedPI;
  68. //extern void PI_Speed(PI_Typedef *PI);
  69. extern void MCTorqueCompensationCodeInit(void);
  70. extern void MCTorqueCompensationFunction(void);
  71. extern void PI_Increment(PI_Typedef *PI);
  72. extern void TorquePeakK(int16 power);
  73. //#endif
  74. #endif