Myproject.h 6.5 KB

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