/* --------------------------- (C) COPYRIGHT 2020 Fortiortech ShenZhen ----------------------------- File Name : AddFunction.h Author : Fortiortech Appliction Team Version : V1.0 Date : 2021-11-07 Description : This file contains all the common data types used for Motor Control. ---------------------------------------------------------------------------------------------------- All Rights Reserved ------------------------------------------------------------------------------------------------- */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __AddFunction_H_ #define __AddFunction_H_ /******************************************************************************/ #include /******************************************************************************/ /* Exported types ------------------------------------------------------------*/ typedef struct { uint32 Times; // 启停次数 uint16 TimeCnt; // 运行时间计数 uint8 State; // 启停状态 } debugONOFFTypeDef; typedef struct { uint16 LedCount; // 闪灯周期计数 uint16 Counttime; // 闪灯周期 uint16 Count; // 电平翻转计数 uint8 LedTimCot; // 闪灯次数计数 }MCLedDisplay; 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; //弱磁角度 uint16 sqrtUdq; uint16 Refcnt; uint8 ZeroFlag; // // !!!!!!!该结构体如需添加新变量,需放在该结构体最后添加 !!!!! uint8 ZeroLossFlag; // uint16 ZeroCnt; uint16 ZeroLossCnt; // !!!!!!!该结构体如需添加新变量,需放在该结构体最后添加 !!!!! int16 NTCValue; int16 NTCValueFlt; // !!!!!!!该结构体如需添加新变量,需放在该结构体最后添加 !!!!! uint8 NTCValueGatherFlag; uint16 NTCValueGatherCnt; // int16 SPIVar1; // int16 SPIVar2; // int16 SPIVar3; // // uint8 Undervoltage_flag; // !!!!!!!该结构体如需添加新变量,需放在该结构体最后添加 !!!!! }FOCCTRL; // !!!!!!!该结构体如需添加新变量,需放在该结构体最后添加 !!!!! typedef struct { int16 RefValue; float OutValue_float; float IncValue; float DecValue; }MCRAMP; 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; /* Exported variables ---------------------------------------------------------------------------*/ extern bit isCtrlPowOn; extern debugONOFFTypeDef xdata debug_ONOFFTest; extern FOCCTRL xdata mcFocCtrl; // !!!!!!!该结构体如需添加新变量,需放在该结构体最后添加 !!!!! extern PWMINPUTCAL xdata mcPwmInput; extern MCRAMP data mcRefRamp; /* Exported functions ---------------------------------------------------------------------------*/ extern void VariablesPreInit(void); extern void TargetRef_Process(void); extern void Speed_response(void); extern int16 Motor_Ramp(int16 ref); extern void VSPSample(void); extern void ONOFF_Starttest(void); extern void ATORamp(void); extern void TickCycle_1ms(void); extern void PWMInputCapture(void); extern void FGOutput(void); extern void Fault_GetCurrentOffset(void); extern uint32 Abs_F32(int32 value); extern void SinCal(int16 Ref, int16 Theta, int16 * Sin, int16 * Cos); extern uint16 SqrtUDQ(int16 sqrtUd, int16 sqrtUq); extern void LedDisplay(uint8 uLedMask);//uint8 LED1, uint8 LED2, uint8 LED3, uint8 LED4, uint8 LED5, uint8 LED6); extern void zeroLoss(void); /******* **********************/ #endif