| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463 |
- /**
- * @copyright None
- * @file VaribleDef.h
- * @author Comment Vivre
- * @date 2024-08-26
- * @brief None
- */
- #ifndef __VARIBLE_DEF_H_
- #define __VARIBLE_DEF_H_
- /* ------------------------------------------- 运行 ------------------------------------------------------------- */
- /**
- @brief 电机运行状态定义
- */
- typedef enum
- {
- mcReady = 0, ///< 准备状态,该状态电机空闲,等待控制命令
- mcInit = 1, ///< 初始化,该状态进行启动前的变量初始化
- mcCharge = 2, ///< 预充电,电机启动前给自举电容充电,一般用于高压驱动,低压驱动一般不需要
- mcTailWind = 3, ///< 顺逆风检测,该状态下电机进行顺逆风检测
- mcPosiCheck = 4, ///< 初始位置检测
- mcAlign = 5, ///< 预定位
- mcStart = 6, ///< 启动,用于配置启动代码
- mcRun = 7, ///< 运行,
- mcStop = 8, ///< 停止
- mcFault = 9, ///< 故障状态
- mcBrake = 10, ///< 刹车
- } MotStateType;
- /**
- @brief 配置相关标志位定义
- */
- typedef union
- {
- uint8 SetMode; ///< 整个配置模式使能位
- struct
- {
- uint8 CalibFlag : 1; ///< 电流校准的标志位
- uint8 ChargeSetFlag : 1; ///< 预充电配置标志位
- uint8 AlignSetFlag : 1; ///< 预定位配置标志位
- uint8 TailWindSetFlag : 1; ///< 顺逆风配置标志位
- uint8 StartSetFlag : 1; ///< 启动配置标志位
- uint8 PosiCheckSetFlag : 1; ///< 位置检测配置标志位
- uint8 Break : 1; ////</ 刹车配置标志位
- } SetFlag;
- } MotStaM;
- extern MotStateType data mcState;
- extern MotStaM McStaSet;
- /**
- @brief 偏置电压定义
- */
- typedef struct
- {
- int16 IuOffset; //Iu的偏置电压
- int32 IuOffsetSum; //Iu的偏置电压总和
- int16 IvOffset; //Iv的偏置电压
- int32 IvOffsetSum; //Iv的偏置电压总和
- int16 Iw_busOffset; //Iw或Ibus的偏置电压
- int32 Iw_busOffsetSum;//Iw或Ibus的偏置电压总和
- int16 OffsetCount; //偏置电压采集计数
- int8 OffsetFlag; //偏置电压结束标志位
- } CurrentOffset;
- extern CurrentOffset xdata mcCurOffset;
- /* ------------------------------------------- 功能 ------------------------------------------------------------- */
- /**
- @brief RSD定义
- */
- typedef struct
- {
- uint16 StepTime[4]; ///< 一个脉冲的周期值
- uint8 Times; ///< 进入RSD中断次数
-
- uint16 Period; ///< 电周期值,除数不能超过16位
- int16 Count; ///< 当前脉冲数
- int16 CountPre; ///< 上一个状态脉冲数
- int16 State; ///< RSD的状态
- int16 Speed; ///< RSD的速度
-
- uint8 SpeedUpdate; ///< 速度更新标志
- uint8 HighSpdStart;
-
-
- uint32 RSDSpeedBase; ///< RSD的速度基准
- uint16 RSDCCWSBRCnt; ///< RSD反转后启动前刹车计数
- uint8 RSDStep; ///< 速度捕获计数
-
- uint8 SetFR;
- uint8 Status;
- uint8 ArrCnt;
-
- } MotorRSDTypeDef;
- extern MotorRSDTypeDef mcRsd;
- #define RSDSpeedCalBase (uint32)(32767*TIM2_Fre*15/Pole_Pairs/MOTOR_SPEED_BASE)
- #define RSDSpeedCalMaxSpeed (uint16)(TIM2_Fre*15/Pole_Pairs/MOTOR_SPEED_BASE)+1
- #define FORWARD (1)
- #define REVERSE (2)
- #define STATIC (3)
- #define DETECTING (0)
- /**
- @brief BMEF顺逆风
- */
- #define BEMF_FR_CCW (0xA0)
- #define BEMF_FR_CW (0xB0)
- #define BEMF_FR_ERR (0xC0)
- #define BEMF_FORWARD (1)
- #define BEMF_REVERSE (2)
- #define BEMF_STATIC (3)
- #define BEMF_DETECTING (0)
- #define BEMFSpeedCalBase (int32)(32767.0 / 8.0 * (TIM2_Fre * 60 / Pole_Pairs / MOTOR_SPEED_BASE))
- #define BEMFSpeedCalMinPeriod (int32)(1.0/8.0 * (TIM2_Fre * 60 / Pole_Pairs / MOTOR_SPEED_BASE)) + 1
- //定义使用BEMF启动时ATO_BW值
- #define ATO_BW_BEMF_START (400.0)
- #define OBSW_KP_GAIN_BEMF_START _Q12(2 * _2PI * ATT_COEF * ATO_BW_BEMF_START / BASE_FREQ)
- #define OBSW_KI_GAIN_BEMF_START _Q12(_2PI * ATO_BW_BEMF_START * ATO_BW_BEMF_START * TPWM_VALUE / BASE_FREQ)
- //定义使用BEMF启动时DKI QKI值
- #define DKI_BEMF_START _Q12(1.0)
- #define QKI_BEMF_START _Q12(1.0)
- //定义使用BEMF启动最低转速,ROM
- #define BEMFMotorStartSpeed _Q15(2500.0 / MOTOR_SPEED_BASE)
- #define BEMFMotorStartSpeedHigh _Q15(12000.0 / MOTOR_SPEED_BASE)
- typedef struct
- {
- int16 BEMFSpeed; //反电动势检测的速度
- uint32 BEMFSpeedBase; //反电动势检测的速度基准
- uint8 Status; // bemf检测状态
-
-
- uint8 FR_SET;
- uint8 FR ; // 当前转向
- uint8 FRPre; // 上一次转向
- int8 FRCount; // 正确转向计数,正数为CW,负数为CCW
-
- uint8 SpeedUpdate; ///< 速度更新标志
- uint8 HighSpdStart;
-
- uint16 PeriodTime; //转一圈的周期计数值/8,因除数只能是16位的
- uint16 SectorTime[6]; // 60度扇区时间
-
- } BEMFDetect_TypeDef;
- extern BEMFDetect_TypeDef xdata mcBemf;
- /**
- @brief 弱磁
- */
- typedef struct
- {
- int16 WeakenRunUq;
- int16 WeakenRunUd;
- uint16 WeakenUsRef;
- uint16 WeakenUsFed;
- int16 ThetaOutmin;
- int16 ThetaOutmax;
- int16 WeakenTheta;
- int16 udFlt;
- int16 uqFlt;
- int16 mcIsref;
- int16 IdRef;
- int16 IqRef;
-
- } FieldWeakeningTypeDef;
- extern FieldWeakeningTypeDef xdata mcFiledWeaken;
- /**
- @brief 电压补偿
- */
- typedef union
- {
- int32 s32;
- int16 s16[2];
- } s32tos16;
- typedef struct
- {
- uint16 mcDcbusFlt1;
- uint16 AverageVoltageValue;
- uint16 AverageVoltageValue1;
- s32tos16 mcDcbusFlt2Sum;
- s32tos16 UQVALUESum;
- s32tos16 UDVALUESum;
- int16 UQVALUEAVERAGE;
- int16 UDVALUEAVERAGE;
- uint16 mcDcbusFlt2cnt;
- uint16 cpscnt;
- uint16 Uqcps;
- uint16 Udcps;
- uint16 testUq;
- uint16 testUq1;
- uint16 testUq2;
- uint16 testUq3;
- int16 testUq4;
- int16 testUd;
- uint16 testUd2;
- int16 testUd3;
- uint16 testUd4;
- uint8 segmentationcnt;
-
- int16 SPIVar1;
- int16 SPIVar2;
- int16 SPIVar3;
-
- uint8 Undervoltage_flag;
-
- uint16 IncVoltage;
- int16 LineAngel;
- int16 LineAngelMax;
- int16 LineAngelMin;
- uint16 VCDelayCnt;
- int16 UdValueAveragehigh;
- uint16 ADC22222;
- } VOLCOMP;
- extern VOLCOMP data VoltageComp;
- /* ------------------------------------------- 保护 ------------------------------------------------------------- */
- /**
- @brief 故障定义
- */
- typedef enum
- {
- FaultNoSource = 0, ///< 无故障
- FaultHardOVCurrent = 1, ///< 硬件过流
- FaultSoftOVCurrent = 2, ///< 软件过流
- FaultOverVoltageDC = 3, ///< 过压
- FaultUnderVoltageDC = 4, ///< 欠压
- FaultPhaseLost = 5, ///< 缺相
- FaultStall = 6, ///< 堵转
- FaultNtcOTErr = 7, ///< NTC过温
- FaultMotorOTErr = 8, ///< 电机过温
- FaultTSD = 9, ///< MCU内部过温
- FaultOTWarning = 10, ///< IPM高温预警
- FaultUartLost = 11, ///< 通信丢失
- FaultPOST = 12, ///< FCT自检故障
- FaultLVW = 13, ///< LVW
- FaultGetOffset = 14, // 偏置电压保护
- FaultOverPowerErr = 15, ///<功率保护
- } FaultStateType;
- extern FaultStateType data mcFaultSource;
- typedef struct
- {
- uint8 SWOC_DectTimeCnt;
- int16 Is;
- uint8 HWOC_Times;
- uint8 HWOC_DectTimeCnt;
- } FaultCurrentVarible;
- typedef struct
- {
- uint16 DetecCnt;
- uint16 WarningDetecCnt;
- uint8 WarningFlag;
- } FaultTemperatureVarible;
- typedef struct
- {
- uint16 DectDealyCnt;
- uint16 DectCycleCnt;
- uint16 ALossCnt ;
- uint16 BLossCnt ;
- uint16 CLossCnt ;
- uint16 ABCLossCnt;
- uint16 mcLossPHRecCount;
-
- uint16 Max_ia;
- uint16 Max_ib;
- uint16 Max_ic;
- } FaultPhaseLossVarible;
- typedef struct
- {
- uint16 OverVoltDetecCnt;
- uint16 UnderVoltDetecCnt;
- uint16 VoltRecoverCnt;
- uint16 BusVoltDetecCnt;
- uint16 DectDealyCnt;
- uint16 VoltDetecBraketCount;
- uint8 FlagBrakeInit;
- uint16 VoltDetecBraketDuty;
- } FaultVoltageVarible;
- typedef struct
- {
- uint16 EsValue;
-
- uint16 Mode0DectCnt;
-
- int16 SpeedErr;
- uint16 DeviSpeedCnt;
-
- uint16 EsDectCnt;
- uint16 SpeedDectCnt;
- uint16 SpeedMinCnt;
-
- uint16 DectDealyCnt;
- uint8 Type;
- } FaultStallTypedef;
- typedef struct
- {
- uint16 OverPowerDetecCnt; ///< 过功率检测次数
- } FaultOverPower;
- typedef struct
- {
- uint16 DC_DelayTcnt;
- uint16 LP_DelayTcnt;
- uint16 OT_DelayTcnt;
- uint16 SWOC_DelayTcnt;
- uint16 Stall_DealyTcnt;
- uint16 OverPower_DealyTcnt;
- uint8 OV_Times;
- uint8 OT_Times;
- uint8 LP_Times;
- uint8 SWOC_Times;
- uint8 Stall_Times;
- uint8 OverPower_Times;
- } FaultRecoverTypedef;
- typedef struct
- {
- FaultCurrentVarible Current;
- FaultPhaseLossVarible PhaseLoss;
- FaultVoltageVarible Voltage;
- FaultStallTypedef Stall;
- FaultTemperatureVarible Temperature;
- FaultOverPower Power;
- } FaultVarible;
- typedef struct
- {
- uint8 CheckCount; //
- uint8 TSD_Enable_Flag; // 温度检测使能标志位
- uint8 TSD_Trigger_Flag; // 温度检测触发标志位
- uint8 ActualTemper; //
- uint16 Trigger_Value; //
- uint16 TSD_Dec_Time; // 温度检测时间计数
-
- }MCUTemperature;
- extern MCUTemperature xdata TSDTemperature;
- extern uint8 xdata mcPOSTErrSource;
- extern FaultVarible xdata fault;
- extern FaultCurrentVarible idata mcCurVarible;
- extern FaultRecoverTypedef xdata Restart;
- typedef struct
- {
- uint16 mcDcbusFlt; // 母线电压
- uint8 CtrlMode; // 控制模式
- uint16 mcADCCurrentbus; // 母线电流
-
- int16 Power; // 当前功率
- int16 PowerFlt; // 功率滤波后的值
- int16 SpeedFlt; // 当前速度滤波后的值
- int16 UqFlt; // Q轴电压
- int16 UdFlt; // D轴电压
-
- uint8 ChargeStep; // 预充电的步骤
- uint8 Start_Mode; // 启动方式
-
- int16 Max_ia;
- int16 Max_ib;
- int16 Max_ic;
-
- uint8 FR_SET;
- uint8 FR;
- uint8 Flg_ATORampEnd;
-
- int16 Ref; // 控制目标给定
- int16 IqRef; // Q轴给定电流
- int16 IdRef; // D轴给定电流
- int16 IqSpeedRef; // Q轴速度给定电流
- int16 IqADCCurrentRef; // Q轴母线电流给定电流
-
- int16 ExtDec;
- int16 LimitIqOut; // 限制功率输出
- uint16 PowerLimitValue; // 功率限制的值
-
- uint8 Mode0HoldCnt; // MODE0切MODE1延迟时间计数
- uint16 EMFsquare; // 当前FOC_ESQU滤波后的值
- uint16 RunStateCnt; // 运行状态计数
- uint8 LoopTime; // 外环控制周期计数
- uint16 State_Count; // 电机各个状态的时间计数
- int16 mcPosCheckAngle;// 位置检测的角度
- uint8 MCU_TEMP; //MCU超过70°后,读取当前温度值
- int16 Angle; //弱磁角度
-
- int16 NTCValue;
- int16 NTCValueFlt;
- } FOCCTRL;
- extern FOCCTRL xdata mcFocCtrl;
- /**
- @brief 环路输入参数爬坡定义
- */
- typedef struct
- {
- int16 RefValue;
- float OutValue_float;
- float IncValue;
- float DecValue;
- } MCRAMP;
- extern MCRAMP data mcRefRamp;
- /**
- @brief 脉宽计算定义
- */
- typedef struct
- {
- uint16 Compare; // 比较值
- uint16 Period; // 周期值
- uint16 TimerDR;
- uint16 TimerDROld;
- uint16 TimerARR; // 周期值
- uint16 TimerARROld; // 周期值
- uint16 Duty; // PWM占空比,Q15格式
- uint16 Freq; // PWM频率
- uint8 isUpdate; // PWM新的duty更新
- } PWMINPUTCAL;
- extern PWMINPUTCAL xdata mcPwmInput;
- extern bit isCtrlPowOn;
- /**
- @brief 启停定义
- */
- typedef struct
- {
- uint32 Times; // 启停次数
- uint16 TimeCnt; // 运行时间计数
- uint8 State; // 启停状态
- } debugONOFFTypeDef;
- extern debugONOFFTypeDef xdata debug_ONOFFTest;
- #endif
|