VaribleDef.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494
  1. /**
  2. * @copyright None
  3. * @file VaribleDef.h
  4. * @author Comment Vivre
  5. * @date 2024-08-26
  6. * @brief None
  7. */
  8. #ifndef __VARIBLE_DEF_H_
  9. #define __VARIBLE_DEF_H_
  10. /* ------------------------------------------- 运行 ------------------------------------------------------------- */
  11. /**
  12. @brief 电机运行状态定义
  13. */
  14. typedef enum
  15. {
  16. mcReady = 0, ///< 准备状态,该状态电机空闲,等待控制命令
  17. mcInit = 1, ///< 初始化,该状态进行启动前的变量初始化
  18. mcCharge = 2, ///< 预充电,电机启动前给自举电容充电,一般用于高压驱动,低压驱动一般不需要
  19. mcTailWind = 3, ///< 顺逆风检测,该状态下电机进行顺逆风检测
  20. mcPosiCheck = 4, ///< 初始位置检测
  21. mcAlign = 5, ///< 预定位
  22. mcStart = 6, ///< 启动,用于配置启动代码
  23. mcRun = 7, ///< 运行,
  24. mcStop = 8, ///< 停止
  25. mcFault = 9, ///< 故障状态
  26. mcBrake = 10, ///< 刹车
  27. } MotStateType;
  28. /**
  29. @brief 配置相关标志位定义
  30. */
  31. typedef union
  32. {
  33. uint8 SetMode; ///< 整个配置模式使能位
  34. struct
  35. {
  36. uint8 CalibFlag : 1; ///< 电流校准的标志位
  37. uint8 ChargeSetFlag : 1; ///< 预充电配置标志位
  38. uint8 AlignSetFlag : 1; ///< 预定位配置标志位
  39. uint8 TailWindSetFlag : 1; ///< 顺逆风配置标志位
  40. uint8 StartSetFlag : 1; ///< 启动配置标志位
  41. uint8 PosiCheckSetFlag : 1; ///< 位置检测配置标志位
  42. uint8 Break : 1; ////</ 刹车配置标志位
  43. } SetFlag;
  44. } MotStaM;
  45. extern MotStateType data mcState;
  46. extern MotStaM McStaSet;
  47. /**
  48. @brief 偏置电压定义
  49. */
  50. typedef struct
  51. {
  52. int16 IuOffset; //Iu的偏置电压
  53. int32 IuOffsetSum; //Iu的偏置电压总和
  54. int16 IvOffset; //Iv的偏置电压
  55. int32 IvOffsetSum; //Iv的偏置电压总和
  56. int16 Iw_busOffset; //Iw或Ibus的偏置电压
  57. int32 Iw_busOffsetSum;//Iw或Ibus的偏置电压总和
  58. int16 OffsetCount; //偏置电压采集计数
  59. int8 OffsetFlag; //偏置电压结束标志位
  60. } CurrentOffset;
  61. extern CurrentOffset xdata mcCurOffset;
  62. /* ------------------------------------------- 功能 ------------------------------------------------------------- */
  63. /**
  64. @brief RSD定义
  65. */
  66. typedef struct
  67. {
  68. uint16 StepTime[4]; ///< 一个脉冲的周期值
  69. uint8 Times; ///< 进入RSD中断次数
  70. uint16 Period; ///< 电周期值,除数不能超过16位
  71. int16 Count; ///< 当前脉冲数
  72. int16 CountPre; ///< 上一个状态脉冲数
  73. int16 State; ///< RSD的状态
  74. int16 Speed; ///< RSD的速度
  75. uint8 SpeedUpdate; ///< 速度更新标志
  76. uint8 HighSpdStart;
  77. uint32 RSDSpeedBase; ///< RSD的速度基准
  78. uint16 RSDCCWSBRCnt; ///< RSD反转后启动前刹车计数
  79. uint8 RSDStep; ///< 速度捕获计数
  80. uint8 SetFR;
  81. uint8 Status;
  82. uint8 ArrCnt;
  83. } MotorRSDTypeDef;
  84. extern MotorRSDTypeDef mcRsd;
  85. #define RSDSpeedCalBase (uint32)(32767*TIM2_Fre*15/Pole_Pairs/MOTOR_SPEED_BASE)
  86. #define RSDSpeedCalMaxSpeed (uint16)(TIM2_Fre*15/Pole_Pairs/MOTOR_SPEED_BASE)+1
  87. #define FORWARD (1)
  88. #define REVERSE (2)
  89. #define STATIC (3)
  90. #define DETECTING (0)
  91. /**
  92. @brief BMEF顺逆风
  93. */
  94. #define BEMF_FR_CCW (0xA0) //
  95. #define BEMF_FR_CW (0xB0) //
  96. #define BEMF_FR_ERR (0xC0) //
  97. #define BEMF_FORWARD (1)
  98. #define BEMF_REVERSE (2)
  99. #define BEMF_STATIC (3)
  100. #define BEMF_DETECTING (0)
  101. #define BEMFSpeedCalBase (int32)(32767.0 / 8.0 * (TIM2_Fre * 60 / Pole_Pairs / MOTOR_SPEED_BASE))
  102. #define BEMFSpeedCalMinPeriod (int32)(1.0/8.0 * (TIM2_Fre * 60 / Pole_Pairs / MOTOR_SPEED_BASE)) + 1
  103. //定义使用BEMF启动时ATO_BW值
  104. #define ATO_BW_BEMF_START (400.0)
  105. #define OBSW_KP_GAIN_BEMF_START _Q12(2 * _2PI * ATT_COEF * ATO_BW_BEMF_START / BASE_FREQ)
  106. #define OBSW_KI_GAIN_BEMF_START _Q12(_2PI * ATO_BW_BEMF_START * ATO_BW_BEMF_START * TPWM_VALUE / BASE_FREQ)
  107. //定义使用BEMF启动时DKI QKI值
  108. #define DKI_BEMF_START _Q12(1.0)
  109. #define QKI_BEMF_START _Q12(1.0)
  110. //定义使用BEMF启动最低转速,ROM
  111. #define BEMFMotorStartSpeed _Q15(2500.0 / MOTOR_SPEED_BASE)
  112. #define BEMFMotorStartSpeedHigh _Q15(12000.0 / MOTOR_SPEED_BASE)
  113. typedef struct
  114. {
  115. int16 BEMFSpeed; //反电动势检测的速度
  116. uint32 BEMFSpeedBase; //反电动势检测的速度基准
  117. uint8 Status; // bemf检测状态
  118. uint8 FR_SET;
  119. uint8 FR ; // 当前转向
  120. uint8 FRPre; // 上一次转向
  121. int8 FRCount; // 正确转向计数,正数为CW,负数为CCW
  122. uint8 SpeedUpdate; ///< 速度更新标志
  123. uint8 HighSpdStart;
  124. uint16 PeriodTime; //转一圈的周期计数值/8,因除数只能是16位的
  125. uint16 SectorTime[6]; // 60度扇区时间
  126. } BEMFDetect_TypeDef;
  127. extern BEMFDetect_TypeDef xdata mcBemf;
  128. /**
  129. @brief 弱磁
  130. */
  131. typedef struct
  132. {
  133. int16 WeakenRunUq;
  134. int16 WeakenRunUd;
  135. uint16 WeakenUsRef;
  136. uint16 WeakenUsFed;
  137. int16 ThetaOutmin;
  138. int16 ThetaOutmax;
  139. int16 WeakenTheta;
  140. int16 udFlt;
  141. int16 uqFlt;
  142. int16 mcIsref;
  143. int16 IdRef;
  144. int16 IqRef;
  145. } FieldWeakeningTypeDef;
  146. extern FieldWeakeningTypeDef xdata mcFiledWeaken;
  147. /**
  148. @brief 按键定义
  149. */
  150. typedef struct
  151. {
  152. uint8 Key1Value;
  153. uint8 Key2Value;
  154. uint8 Key3Value;
  155. uint16 Key1PressCnt;
  156. uint16 Key2PressCnt;
  157. uint16 Key2PressCnt2;
  158. uint16 Key3PressCnt;
  159. uint16 Key3releaseCnt;
  160. uint16 KeyADCValue;
  161. uint8 KeyValuetotal;
  162. uint8 OldKeyValuetotal;
  163. uint8 ChangeKeyFlg;
  164. uint8 TwoCarrierCnt;
  165. uint8 ColdHotFlag;
  166. uint16 ONOFFCNT;
  167. uint8 ONOFFFlag;
  168. } KeyScanParam_TypeDef;
  169. extern KeyScanParam_TypeDef xdata KS;
  170. /**
  171. @brief 电压补偿
  172. */
  173. typedef union
  174. {
  175. int32 s32;
  176. int16 s16[2];
  177. } s32tos16;
  178. typedef struct
  179. {
  180. uint16 mcDcbusFlt1;
  181. uint16 AverageVoltageValue;
  182. uint16 AverageVoltageValue1;
  183. s32tos16 mcDcbusFlt2Sum;
  184. s32tos16 UQVALUESum;
  185. s32tos16 UDVALUESum;
  186. int16 UQVALUEAVERAGE;
  187. int16 UDVALUEAVERAGE;
  188. uint16 mcDcbusFlt2cnt;
  189. uint16 cpscnt;
  190. uint16 Uqcps;
  191. uint16 Udcps;
  192. uint16 testUq;
  193. uint16 testUq1;
  194. uint16 testUq2;
  195. uint16 testUq3;
  196. int16 testUq4;
  197. int16 testUd;
  198. uint16 testUd2;
  199. int16 testUd3;
  200. uint16 testUd4;
  201. uint8 segmentationcnt;
  202. int16 SPIVar1;
  203. int16 SPIVar2;
  204. int16 SPIVar3;
  205. uint8 Undervoltage_flag;
  206. uint16 IncVoltage;
  207. int16 LineAngel;
  208. int16 LineAngelMax;
  209. int16 LineAngelMin;
  210. uint16 VCDelayCnt;
  211. int16 UdValueAveragehigh;
  212. uint16 ADC22222;
  213. } VOLCOMP;
  214. extern VOLCOMP data VoltageComp;
  215. /* ------------------------------------------- 保护 ------------------------------------------------------------- */
  216. /**
  217. @brief 故障定义
  218. */
  219. typedef enum
  220. {
  221. FaultNoSource = 0, ///< 无故障
  222. FaultHardOVCurrent = 1, ///< 硬件过流
  223. FaultSoftOVCurrent = 2, ///< 软件过流
  224. FaultOverVoltageDC = 3, ///< 过压
  225. FaultUnderVoltageDC = 4, ///< 欠压
  226. FaultPhaseLost = 5, ///< 缺相
  227. FaultStall = 6, ///< 堵转
  228. FaultNtcOTErr = 7, ///< NTC过温
  229. FaultMotorOTErr = 8, ///< 电机过温
  230. FaultTSD = 9, ///< MCU内部过温
  231. FaultOTWarning = 10, ///< IPM高温预警
  232. FaultUartLost = 11, ///< 通信丢失
  233. FaultPOST = 12, ///< FCT自检故障
  234. FaultLVW = 13, ///< LVW
  235. FaultGetOffset = 14, // 偏置电压保护
  236. FaultOverPowerErr = 15, ///<功率保护
  237. } FaultStateType;
  238. extern FaultStateType data mcFaultSource;
  239. typedef struct
  240. {
  241. uint8 SWOC_DectTimeCnt;
  242. int16 Is;
  243. uint8 HWOC_Times;
  244. uint8 HWOC_DectTimeCnt;
  245. } FaultCurrentVarible;
  246. typedef struct
  247. {
  248. uint16 DetecCnt;
  249. uint16 WarningDetecCnt;
  250. uint8 WarningFlag;
  251. } FaultTemperatureVarible;
  252. typedef struct
  253. {
  254. uint16 DectDealyCnt;
  255. uint16 DectCycleCnt;
  256. uint16 ALossCnt ;
  257. uint16 BLossCnt ;
  258. uint16 CLossCnt ;
  259. uint16 ABCLossCnt;
  260. uint16 mcLossPHRecCount;
  261. uint16 Max_ia;
  262. uint16 Max_ib;
  263. uint16 Max_ic;
  264. } FaultPhaseLossVarible;
  265. typedef struct
  266. {
  267. uint16 OverVoltDetecCnt;
  268. uint16 UnderVoltDetecCnt;
  269. uint16 VoltRecoverCnt;
  270. uint16 BusVoltDetecCnt;
  271. uint16 DectDealyCnt;
  272. uint16 VoltDetecBraketCount;
  273. uint8 FlagBrakeInit;
  274. uint16 VoltDetecBraketDuty;
  275. } FaultVoltageVarible;
  276. typedef struct
  277. {
  278. uint16 EsValue;
  279. uint16 Mode0DectCnt;
  280. int16 SpeedErr;
  281. uint16 DeviSpeedCnt;
  282. uint16 EsDectCnt;
  283. uint16 SpeedDectCnt;
  284. uint16 SpeedMinCnt;
  285. uint16 DectDealyCnt;
  286. uint8 Type;
  287. } FaultStallTypedef;
  288. typedef struct
  289. {
  290. uint16 OverPowerDetecCnt; ///< 过功率检测次数
  291. } FaultOverPower;
  292. typedef struct
  293. {
  294. uint16 DC_DelayTcnt;
  295. uint16 LP_DelayTcnt;
  296. uint16 OT_DelayTcnt;
  297. uint16 SWOC_DelayTcnt;
  298. uint16 Stall_DealyTcnt;
  299. uint16 OverPower_DealyTcnt;
  300. uint8 OV_Times;
  301. uint8 OT_Times;
  302. uint8 LP_Times;
  303. uint8 SWOC_Times;
  304. uint8 Stall_Times;
  305. uint8 OverPower_Times;
  306. } FaultRecoverTypedef;
  307. typedef struct
  308. {
  309. FaultCurrentVarible Current;
  310. FaultPhaseLossVarible PhaseLoss;
  311. FaultVoltageVarible Voltage;
  312. FaultStallTypedef Stall;
  313. FaultTemperatureVarible Temperature;
  314. FaultOverPower Power;
  315. } FaultVarible;
  316. extern uint8 xdata mcPOSTErrSource;
  317. extern FaultVarible xdata fault;
  318. extern FaultCurrentVarible idata mcCurVarible;
  319. extern FaultRecoverTypedef xdata Restart;
  320. typedef struct
  321. {
  322. uint16 mcDcbusFlt; // 母线电压
  323. uint8 CtrlMode; // 控制模式
  324. uint16 mcADCCurrentbus; // 母线电流
  325. int16 Power; // 当前功率
  326. int16 PowerFlt; // 功率滤波后的值
  327. int16 SpeedFlt; // 当前速度滤波后的值
  328. int16 UqFlt; // Q轴电压
  329. int16 UdFlt; // D轴电压
  330. uint8 ChargeStep; // 预充电的步骤
  331. uint8 Start_Mode; // 启动方式
  332. int16 Max_ia;
  333. int16 Max_ib;
  334. int16 Max_ic;
  335. uint8 FR_SET;
  336. uint8 FR;
  337. uint8 Flg_ATORampEnd;
  338. int16 Ref; // 控制目标给定
  339. int16 IqRef; // Q轴给定电流
  340. int16 IdRef; // D轴给定电流
  341. int16 IqSpeedRef; // Q轴速度给定电流
  342. int16 IqADCCurrentRef; // Q轴母线电流给定电流
  343. int16 ExtDec;
  344. int16 LimitIqOut; // 限制功率输出
  345. uint16 PowerLimitValue; // 功率限制的值
  346. uint8 Mode0HoldCnt; // MODE0切MODE1延迟时间计数
  347. uint16 EMFsquare; // 当前FOC_ESQU滤波后的值
  348. uint16 RunStateCnt; // 运行状态计数
  349. uint8 LoopTime; // 外环控制周期计数
  350. uint16 State_Count; // 电机各个状态的时间计数
  351. int16 mcPosCheckAngle;// 位置检测的角度
  352. uint8 MCU_TEMP; //MCU超过70°后,读取当前温度值
  353. int16 Angle; //弱磁角度
  354. uint16 sqrtUdq;
  355. uint16 Refcnt;
  356. uint8 ZeroFlag;
  357. uint8 ZeroLossFlag;
  358. uint16 ZeroCnt;
  359. uint16 ZeroLossCnt;
  360. int16 NTCValue;
  361. int16 NTCValueFlt;
  362. uint8 NTCValueGatherFlag;
  363. uint16 NTCValueGatherCnt;
  364. } FOCCTRL;
  365. extern FOCCTRL xdata mcFocCtrl;
  366. /**
  367. @brief 环路输入参数爬坡定义
  368. */
  369. typedef struct
  370. {
  371. int16 RefValue;
  372. float OutValue_float;
  373. float IncValue;
  374. float DecValue;
  375. } MCRAMP;
  376. extern MCRAMP data mcRefRamp;
  377. /**
  378. @brief 脉宽计算定义
  379. */
  380. typedef struct
  381. {
  382. uint16 Compare; // 比较值
  383. uint16 Period; // 周期值
  384. uint16 TimerDR;
  385. uint16 TimerDROld;
  386. uint16 TimerARR; // 周期值
  387. uint16 TimerARROld; // 周期值
  388. uint16 Duty; // PWM占空比,Q15格式
  389. uint16 Freq; // PWM频率
  390. uint8 isUpdate; // PWM新的duty更新
  391. } PWMINPUTCAL;
  392. extern PWMINPUTCAL xdata mcPwmInput;
  393. extern bit isCtrlPowOn;
  394. /**
  395. @brief 启停定义
  396. */
  397. typedef struct
  398. {
  399. uint32 Times; // 启停次数
  400. uint16 TimeCnt; // 运行时间计数
  401. uint8 State; // 启停状态
  402. } debugONOFFTypeDef;
  403. extern debugONOFFTypeDef xdata debug_ONOFFTest;
  404. #endif