MyProject.h 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. #ifndef __MYPROJECT_H_
  2. #define __MYPROJECT_H_
  3. #include "FU6522_72.h"
  4. #include <Definition.h>
  5. #include <Customer.h>
  6. #include <Parameter.h>
  7. #include <Protect.h>
  8. #include <FU6522_72_MDU.h>
  9. #define S_Value(SpeedValue) _Q15(SpeedValue/MOTOR_SPEED_BASE)
  10. typedef struct
  11. {
  12. int16 IuOffset; //Iu的偏置电压
  13. int32 IuOffsetSum; //Iu的偏置电压总和
  14. int16 IvOffset; //Iv的偏置电压
  15. int32 IvOffsetSum; //Iv的偏置电压总和
  16. int16 Iw_busOffset; //Iw或Ibus的偏置电压
  17. int32 Iw_busOffsetSum;//Iw或Ibus的偏置电压总和
  18. int16 IbusOffset; //Ibus的偏置电压
  19. int32 IbusOffsetSum;//IIbus的偏置电压总和
  20. int16 OffsetCount; //偏置电压采集计数
  21. int8 OffsetFlag; //偏置电压结束标志位
  22. } CurrentOffset;
  23. extern CurrentOffset xdata mcCurOffset;
  24. extern int16 idata Power_Currt;
  25. extern uint8 Drv_SectionCheak(void);
  26. extern void GetCurrentOffset(void);
  27. extern void Motor_Ready (void);
  28. extern void Motor_Init (void);
  29. extern void FOC_Init(void);
  30. extern void Motor_Charge(void);
  31. extern void MC_Stop(void);
  32. extern void MC_Break(void);
  33. extern void Motor_Static_Open(void);
  34. extern void Motor_Align(void);
  35. typedef enum
  36. {
  37. mcReady = 0, ///< 准备状态,该状态电机空闲,等待控制命令
  38. mcInit = 1, ///< 初始化,该状态进行启动前的变量初始化
  39. mcCharge = 2, ///< 预充电,电机启动前给自举电容充电,一般用于高压驱动,低压驱动一般不需要
  40. mcTailWind = 3, ///< 顺逆风检测,该状态下电机进行顺逆风检测
  41. mcPosiCheck = 4, ///< 初始位置检测
  42. mcAlign = 5, ///< 预定位
  43. mcStart = 6, ///< 启动,用于配置启动代码
  44. mcRun = 7, ///< 运行,
  45. mcStop = 8, ///< 停止
  46. mcFault = 9, ///< 故障状态
  47. mcBrake = 10, ///< 刹车
  48. } MotStateType;
  49. typedef union
  50. {
  51. uint8 SetMode; ///< 整个配置模式使能位
  52. struct
  53. {
  54. uint8 CalibFlag : 1; ///< 电流校准的标志位
  55. uint8 ChargeSetFlag : 1; ///< 预充电配置标志位
  56. uint8 AlignSetFlag : 1; ///< 预定位配置标志位
  57. uint8 TailWindSetFlag : 1; ///< 顺逆风配置标志位
  58. uint8 StartSetFlag : 1; ///< 启动配置标志位
  59. uint8 PosiCheckSetFlag : 1; ///< 位置检测配置标志位
  60. uint8 Break : 1; ////</ 刹车配置标志位
  61. } SetFlag;
  62. } MotStaM;
  63. extern MotStateType data mcState;
  64. extern MotStaM McStaSet;
  65. extern void MC_Control(void);
  66. typedef struct
  67. {
  68. uint16 mcDcbusFlt; // 母线电压
  69. uint16 mcADCCurrentbus; // 母线电流
  70. int16 NTCTempFlt; // NTC电压值
  71. uint16 PowerCal;
  72. uint32 PowerFlt; // 功率滤波后的值
  73. int16 SpeedFlt; // 当前速度滤波后的值
  74. uint8 ChargeStep; // 预充电的步骤
  75. uint8 CtrlMode; // 控制模式
  76. int16 Max_ia;
  77. int16 Max_ib;
  78. int16 Max_ic;
  79. uint8 Flg_ATORampEnd;
  80. uint16 Ref; // 控制目标给定
  81. uint16 IqRef; // Q轴给定电流
  82. uint16 IdRef; // D轴给定电流
  83. uint16 IqSpeedRef; // Q轴速度给定电流
  84. uint8 Mode0HoldCnt; // MODE0切MODE1延迟时间计数
  85. uint16 EMFsquare; // 当前FOC_ESQU滤波后的值
  86. uint32 RunStateCnt; // 运行状态计数
  87. uint8 LoopTime; // 外环控制周期计数
  88. uint16 State_Count; // 电机各个状态的时间计数
  89. int16 mcPosCheckAngle; // 位置检测的角度
  90. uint8 CurrentAlignStatus; // 预定位状态
  91. float AngleProcess;
  92. int16 AngleStart;
  93. } FOCCTRL;
  94. typedef struct
  95. {
  96. uint16 RefValue;
  97. float OutValue_float;
  98. float IncValue;
  99. float DecValue;
  100. } MCRAMP;
  101. extern bool isCtrlPowOn;
  102. extern FOCCTRL xdata mcFocCtrl;
  103. extern MCRAMP xdata mcRefRamp;
  104. extern void HardwareInit(void);
  105. extern void SoftwareInit(void);
  106. extern void TargetRef_Process(void);
  107. extern void Speed_response(void);
  108. extern int16 Motor_Ramp(int16 ref);
  109. extern void ATORamp(void);
  110. extern void TickCycle_1ms(void);
  111. extern void Fault_GetCurrentOffset(void);
  112. extern uint32 Abs_F32(int32 value);
  113. extern uint16 Abs_F16(int16 value);
  114. extern int16 PowerSpeedLimit(int16 speedref);
  115. #define TIM3_Fre (750000.0) // TIM0计数频率750KHz
  116. #define TIM4_Fre (12000000.0) // TIM4计数频率
  117. /*************************************************************************************///External Function
  118. extern void Timer1_Init(void);
  119. extern void Timer2_Init(void);
  120. extern void Timer3_Init(void);
  121. extern void Timer4_Init(void);
  122. extern void TIM4_Init_RF(void);
  123. extern void PI_Init(void);
  124. extern void PI2_Init(void);
  125. extern void PI3_Init(void);
  126. void TSD_Init(void);
  127. void ADC_Init(void);
  128. void AMP_Init(void);
  129. void CMP3_Init(void);
  130. void CMP3_Interrupt_Init(void);
  131. unsigned short CRC_Check(unsigned char start_sector, unsigned char offset_sector);
  132. void Driver_Init(void);
  133. void GPIO_Init(void);
  134. typedef enum
  135. {
  136. FaultNoSource = 0, ///< 无故障
  137. FaultHardOVCurrent = 1, ///< 硬件过流
  138. FaultSoftOVCurrent = 2, ///< 软件过流
  139. FaultOverVoltageDC = 3, ///< 过压
  140. FaultUnderVoltageDC = 4, ///< 欠压
  141. FaultPhaseLost = 5, ///< 缺相
  142. FaultStall = 6, ///< 堵转
  143. FaultStart = 7, ///< 启动保护
  144. FaultFan = 8, ///< 风机保护
  145. FaultOverHeat = 9, ///< 电机过热保护
  146. FaultOverTemperature = 10, ///< NTC过温保护
  147. FaultOverPower = 11, ///<过功率
  148. FaultLVW = 12, ///< LVW
  149. FaultGetOffset = 13, ///< 偏置电压保护
  150. FaultOverSpeed = 14,
  151. FaultOverLSensor = 15,
  152. FaultOverRSensor = 16,
  153. FaultUartLost = 17,
  154. FaultFan1 = 18,
  155. FaultE = 18,
  156. } FaultStateType;
  157. extern FaultStateType data mcFaultSource;
  158. #endif