|
|
@@ -438,52 +438,6 @@ void MC_Stop(void)
|
|
|
ClrBit(DRV_CR, FOCEN); //关闭FOC // disable FOC output and initial register
|
|
|
mcState = mcInit;
|
|
|
}
|
|
|
-
|
|
|
-/* -------------------------------------------------------------------------------------------------
|
|
|
- Function Name : void MotorControlInit(void)
|
|
|
- Description : 控制变量初始化清零,包括保护参数的初始化、电机状态初始化
|
|
|
- Input : 输入说明(详细)
|
|
|
- Output : 输出说明(详细)
|
|
|
- -------------------------------------------------------------------------------------------------*/
|
|
|
-void MotorcontrolInit(void)
|
|
|
-{
|
|
|
- memset(&Uartwatch, 0, sizeof(MCUART_watch));
|
|
|
- memset(&RealTempR, 0, sizeof(ADCRR));
|
|
|
- /***********保护******************/
|
|
|
- memset(&mcFaultDect, 0, sizeof(FaultVarible)); // FaultVarible变量清零
|
|
|
- /************保护次数*************/
|
|
|
- memset(&mcProtectTime, 0, sizeof(ProtectVarible)); // ProtectVarible保护次数清零
|
|
|
- /***********过流保护**************/
|
|
|
- memset(&mcCurVarible, 0, sizeof(CurrentVarible)); // 电流保护的变量清零
|
|
|
- memset(&Uart, 0, sizeof(MCUART));
|
|
|
- memset(&Fengji_FG, 0, sizeof(FENGFG));
|
|
|
- memset(&Time, 0, sizeof(TIMERTypeDef));
|
|
|
- memset(&bujindianji, 0, sizeof(BUJINDIAN)); //
|
|
|
- bujindianji.bujinsuss = 1;
|
|
|
- memset(&PFCFaultDect, 0, sizeof(PFCFaultVarible));
|
|
|
- memset(&ConTrolCmd, 0, sizeof(CONTROLCMDD));
|
|
|
- #if (PFCEnable==1)
|
|
|
- memset(&PFCSet, 0, sizeof(PFCValue));
|
|
|
- PFCCONTROL.FlagONOFF = 0;
|
|
|
- #endif
|
|
|
- /*****电机状态机时序变量***********/
|
|
|
- McStaSet.SetMode = 0;
|
|
|
- /*************外部控制环************/
|
|
|
- memset(&mcFocCtrl, 0, sizeof(FOCCTRL)); // mcFocCtrl变量清零
|
|
|
- mcFocCtrl.mcDcbus_chazhi = 32760;
|
|
|
- /******ADC采样滤波值*********/
|
|
|
- memset(&AdcSampleValue, 0, sizeof(ADCSample)); // ADCSample变量清零
|
|
|
- /**************************电流偏置校准变量**********************/
|
|
|
- memset(&mcCurOffset, 0, sizeof(CurrentOffset)); // mcCurOffset变量清零
|
|
|
- mcCurOffset.IuOffsetSum = 16383;
|
|
|
- mcCurOffset.IvOffsetSum = 16383;
|
|
|
- mcCurOffset.Iw_busOffsetSum = 16383;
|
|
|
- /*****速度环的响应***/
|
|
|
- memset(&mcSpeedRamp, 0, sizeof(MCRAMP)); // mcSpeedRamp变量清零
|
|
|
- mcSpeedRamp.IncValue = Motor_Speed_Inc;
|
|
|
- mcSpeedRamp.DecValue = Motor_Speed_Dec;
|
|
|
-}
|
|
|
-
|
|
|
/*---------------------------------------------------------------------------*/
|
|
|
/* Name : void VariablesPreInit(void)
|
|
|
/* Input : NO
|
|
|
@@ -522,38 +476,19 @@ void GetCurrentOffset(void)
|
|
|
|
|
|
while (ReadBit(ADC_CR, ADCBSY));
|
|
|
|
|
|
- #if (Shunt_Resistor_Mode == Single_Resistor) // 29.2ms 单电阻模式,上电验证硬件电路时,需观察mcCurOffset.IbusOffset是否为4096
|
|
|
- mcCurOffset.Iw_busOffsetSum += ((ADC4_DR & 0x7ff8));
|
|
|
- mcCurOffset.Iw_busOffset = mcCurOffset.Iw_busOffsetSum >> 4;
|
|
|
- mcCurOffset.Iw_busOffsetSum -= mcCurOffset.Iw_busOffset;
|
|
|
- #elif (Shunt_Resistor_Mode == Double_Resistor) //44ms 双电阻模式,上电验证硬件电路时,需观察mcCurOffset.IaOffset、mcCurOffset.IbOffset是否为4096
|
|
|
mcCurOffset.IuOffsetSum += ((ADC0_DR & 0x7ff8));
|
|
|
mcCurOffset.IuOffset = mcCurOffset.IuOffsetSum >> 4;
|
|
|
mcCurOffset.IuOffsetSum -= mcCurOffset.IuOffset;
|
|
|
mcCurOffset.IvOffsetSum += ((ADC1_DR & 0x7ff8));
|
|
|
mcCurOffset.IvOffset = mcCurOffset.IvOffsetSum >> 4;
|
|
|
mcCurOffset.IvOffsetSum -= mcCurOffset.IvOffset;
|
|
|
- mcCurOffset.Iw_busOffset = mcCurOffset.IvOffset; //
|
|
|
- // mcCurOffset.Iw_busOffsetSum += ((ADC4_DR& 0x7ff8));
|
|
|
- // mcCurOffset.Iw_busOffset = mcCurOffset.Iw_busOffsetSum >> 4;
|
|
|
- // mcCurOffset.Iw_busOffsetSum -= mcCurOffset.Iw_busOffset;
|
|
|
- #elif (Shunt_Resistor_Mode == Three_Resistor) //58.2ms 三电阻模式,上电验证硬件电路时,需观察mcCurOffset.IaOffset、mcCurOffset.IbOffset、mcCurOffset.IcOffset是否为4096
|
|
|
- mcCurOffset.IuOffsetSum += ((ADC0_DR & 0x7ff8));
|
|
|
- mcCurOffset.IuOffset = mcCurOffset.IuOffsetSum >> 4;
|
|
|
- mcCurOffset.IuOffsetSum -= mcCurOffset.IuOffset;
|
|
|
- mcCurOffset.IvOffsetSum += ((ADC1_DR & 0x7ff8));
|
|
|
- mcCurOffset.IvOffset = mcCurOffset.IvOffsetSum >> 4;
|
|
|
- mcCurOffset.IvOffsetSum -= mcCurOffset.IvOffset;
|
|
|
- mcCurOffset.Iw_busOffsetSum += ((ADC4_DR & 0x7ff8));
|
|
|
- mcCurOffset.Iw_busOffset = mcCurOffset.Iw_busOffsetSum >> 4;
|
|
|
- mcCurOffset.Iw_busOffsetSum -= mcCurOffset.Iw_busOffset;
|
|
|
- #endif
|
|
|
+ mcCurOffset.Iw_busOffset = mcCurOffset.IvOffset;
|
|
|
mcCurOffset.OffsetCount++;
|
|
|
|
|
|
if (mcCurOffset.OffsetCount > Calib_Time)
|
|
|
{
|
|
|
if (((mcCurOffset.IuOffset > 19959) || (mcCurOffset.IuOffset < 10107)) ||
|
|
|
- ((mcCurOffset.IvOffset > 19959) || (mcCurOffset.IvOffset < 10107)))//偏置电压不在正常范围内
|
|
|
+ ((mcCurOffset.IvOffset > 19959) || (mcCurOffset.IvOffset < 10107)))
|
|
|
{
|
|
|
mcFaultSource = FaultIbusOffset;//进入偏置电压错误保护
|
|
|
FaultProcess();
|