Myproject.h 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. #ifndef __MYPROJECT_H_
  2. #define __MYPROJECT_H_
  3. #include <FU68xx_5.h>
  4. #include <FU68xx_5_Type.h>
  5. #include <Customer.h>
  6. #include <ProtectSet.h>
  7. // math.h包含算术运算的数学函数
  8. #include <math.h>
  9. #include <Definition.h>
  10. typedef enum
  11. {
  12. mcReady = 0,
  13. mcInit = 1,
  14. mcCharge = 2,
  15. mcTailWind = 3,
  16. mcPosiCheck = 4,
  17. mcAlign = 5,
  18. mcStart = 6,
  19. mcRun = 7,
  20. mcStop = 8,
  21. mcFault = 9,
  22. mcBrake = 10
  23. }MotStaType;
  24. typedef union
  25. {
  26. uint8 SetMode; // 整个配置模式使能位
  27. struct
  28. {
  29. uint8 AlignSetFlag :1; // 预定位配置标志位
  30. } SetFlag;
  31. }MotStaM;
  32. extern MotStaType mcState;
  33. extern MotStaM McStaSet;
  34. void CMP0_Init(void);
  35. void CMP3_Init(void);
  36. void CMP3_Interrupt_Init(void);
  37. void CMP5_Init(void);
  38. void Timer2_Init(void);
  39. void Timer3_Init(void);
  40. void Timer4_Init(void);
  41. void SPI_Init(void);
  42. void WatchDogConfig(uint32 value, uint8 Status);
  43. unsigned short CRC_Check(unsigned char start_sector , unsigned char offset_sector);
  44. extern void FOC_Init(void);
  45. extern void Motor_Open(void);
  46. extern void Motor_Align(void);
  47. #if (FiledWeakenCompEnable)
  48. typedef struct
  49. {
  50. uint16 FieldWeakenActualUS_Q15;
  51. uint16 FieldWeakenActualDcbus_Q15;
  52. int16 FieldWeakenIsTheta;
  53. int16 mcIqref;
  54. int16 mcIdref;
  55. }FieldWeakeningTypeDef;
  56. FieldWeakeningTypeDef xdata mcFieldWeaken;
  57. void GetFieldWeakenUsAndUdc_Q15(int16 Ud, int16 Uq , uint16 Dcbus);
  58. void GetFieldWeakenIdRefAndIqRef_Q15(int16 Is);
  59. void GetFieldWeakenIsTheta_Q15(void);
  60. int16 mcFieldWeakenPI(int16 feedbackvalue, int16 referencevalue);
  61. void FiledWeakenControl(int16 Ud, int16 Uq , uint16 Dcbusk,int16 Is);
  62. #endif
  63. #define P_Power(POWER) _Q15(POWER*2/HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE/1.5)
  64. #define DAC_OvercurrentValue (_Q8(I_ValueX(OverHardcurrentValue ))+0x7F)
  65. typedef struct
  66. {
  67. uint16 Max_ia; // IA的最大值
  68. uint16 Max_ib; // IB的最大值
  69. uint16 Max_ic; // IC的最大值
  70. uint16 Max_is;
  71. uint16 time;
  72. } CurrentVarible;
  73. typedef struct
  74. {
  75. int16 mcDcbusFlt; // 母线电压
  76. int16 mcDcbus_max; // 母线电压最大值
  77. int16 mcDcbus_min; // 母线电压最小值
  78. int16 mcDcbus_chazhi; // 母线电压最小值
  79. int16 Powerlpf; // 功率滤波后的值
  80. int16 UQFlt; // UQ滤波后的值
  81. int16 UDFlt; // UD滤波后的值
  82. uint16 ChargeStep; // 预充电的步骤
  83. uint16 State_Count; // 电机各个状态的时间计数
  84. uint8 CurrentAlignStatus;
  85. } FOCCTRL;
  86. extern CurrentVarible xdata mcCurVarible;
  87. extern FOCCTRL xdata mcFocCtrl;
  88. extern void Fault_Detection(void);
  89. extern void FaultProcess(void);
  90. extern void StarRampDealwith(void);
  91. uint32_t Abs_F32(int32_t Xn0);
  92. typedef enum
  93. {
  94. FaultNoSource = 0, // 无故障
  95. FaultHardOVCurrent = 1, // 硬件过流
  96. FaultSoftOVCurrent = 2, // 软件过流
  97. FaultUnderVoltage = 3, // 欠压保护
  98. FaultOverVoltage = 4, // 过压保护
  99. FaultLossPhase = 5, // 缺相保护
  100. FaultStall = 6, // 堵转保护
  101. FaultStart = 7, // 启动保护
  102. FaultIpmTemp = 9, // IPM温度保护
  103. FaultIbusOffset = 11, // pianzhi
  104. FaultshuruLoss = 14,
  105. } FaultStateType;
  106. typedef struct
  107. {
  108. uint16 SecondStartTimes; // 二次启动保护的次数
  109. uint16 StallTimes; // 堵转保护次数
  110. uint16 LossPHTimes; // 缺相保护次数
  111. uint16 CurrentPretectTimes; // 过流保护次数
  112. uint8 StartFlag; // 启动保护的标志位,用于判断哪个方法起作用
  113. uint8 StallFlag; // 堵转保护的标志位,用于判断哪个方法起作用
  114. uint8 IbusOffsetProtectTimes; //偏执电压保护次数
  115. uint8 shurulossTimes;
  116. }ProtectVarible;
  117. typedef struct
  118. {
  119. uint8 segment; // 分段执行
  120. //voltage protect
  121. uint16 OverVoltDetecCnt; // 过压检测计数
  122. uint16 UnderVoltDetecCnt; // 欠压检测计数
  123. uint16 VoltRecoverCnt; // 过压恢复计数
  124. uint16 OverTempDetecCnt; // 过温检测计数
  125. uint16 OverHuantempDetecCnt; // 过温检测计数
  126. uint16 OverGuantempDetecCnt; // 过温检测计数
  127. uint16 TempRecoverCnt; // 过温恢复计数
  128. uint16 HuantempRecoverCnt; // 过温恢复计数
  129. uint16 GuantempRecoverCnt; // 过温恢复计数
  130. uint32 CurrentRecoverCnt; // 过流保护恢复计数
  131. uint8 IbusOffsetRecoverCnt; ///偏执电压保护恢复次数
  132. //stall protect
  133. uint16 StallDelayCnt; // 堵转延迟判断计时
  134. uint16 StallDectEs; // method 1,与ES相关
  135. uint16 StallDectEs2; // method 1,与ES相关
  136. uint16 StallDectSpeed; // method 2,与速度相关
  137. uint32 StallReCount; // 堵转保护恢复计数
  138. //Loss Phase protect
  139. uint16 Lphasecnt; // 缺相保护计时
  140. uint16 AOpencnt ; // A缺相计数
  141. uint16 BOpencnt ; // B缺相计数
  142. uint16 COpencnt ; // C缺相计数
  143. uint16 mcLossPHRecCount; // 缺相恢复计数
  144. uint16 shurulossRecCount; // 缺相恢复计数
  145. int16 shurulossCnt;
  146. int32 CurrentASum;
  147. int32 CurrentBSum;
  148. int32 CurrentCSum;
  149. int16 CurrentAAlign;
  150. int16 CurrentBAlign;
  151. int16 CurrentCAlign;
  152. //start protect
  153. int16 StartESCount; // 启动保护判断ES的计数
  154. int16 StartEsCnt; // 启动保护判断ES的计时
  155. int16 StartDelay; // 启动保护判断ES的延迟
  156. int16 StartFocmode; // 启动保护判断FOCMODE状态的计时
  157. int16 StartSpeedCnt; // 启动保护判断速度和ES的计时
  158. uint32 commu_time;
  159. }FaultVarible;
  160. extern FaultStateType xdata mcFaultSource;
  161. extern ProtectVarible xdata mcProtectTime;
  162. extern FaultVarible idata mcFaultDect;
  163. extern void Fault_OverUnderVoltage(void);
  164. extern void Fault_Overcurrent(void);
  165. extern void Fault_OverCurrentRecover(void);
  166. extern void Fault_Stall(void);
  167. extern void Fault_phaseloss(void);
  168. extern void Fault_IPMOverTemp(void);
  169. extern void Fault_Detection(void);
  170. #endif