|
@@ -8,6 +8,11 @@
|
|
|
* @copyright Copyright (c) 2021
|
|
|
*
|
|
|
*/
|
|
|
+/******************************
|
|
|
+ *
|
|
|
+ * Included File
|
|
|
+ *
|
|
|
+ ******************************/
|
|
|
#include "TimeTask_Event.h"
|
|
|
#include "AssistCurve.h"
|
|
|
#include "FSM_1st.h"
|
|
@@ -17,12 +22,9 @@
|
|
|
#include "canAppl.h"
|
|
|
#include "flash_master.h"
|
|
|
#include "queue.h"
|
|
|
-#include "spdctrmode.h"
|
|
|
#include "gd32f30x.h"
|
|
|
#include "string.h"
|
|
|
#include "syspar.h"
|
|
|
-#include "uart_appl.h"
|
|
|
-#include "uart_driver.h"
|
|
|
#include "user.h"
|
|
|
#include "STLmain.h"
|
|
|
/******************************
|
|
@@ -31,7 +33,7 @@
|
|
|
*
|
|
|
******************************/
|
|
|
_op_ Op[proc_cnt] = {{Event_5ms, EVE1MSCNT_5ms, EVE1MSCNT_5ms},
|
|
|
- {Event_10ms, EVE1MSCNT_20ms, EVE1MSCNT_20ms},
|
|
|
+ {Event_10ms, EVE1MSCNT_10ms, EVE1MSCNT_10ms},
|
|
|
{Event_20ms, EVE1MSCNT_20ms, EVE1MSCNT_20ms},
|
|
|
{Event_100ms, EVE1MSCNT_100ms, EVE1MSCNT_100ms},
|
|
|
{Event_200ms, EVE1MSCNT_200ms, EVE1MSCNT_200ms}};
|
|
@@ -42,86 +44,134 @@ static SQWORD TimingTaskTimerTickTempOld = 0;
|
|
|
static SQWORD TimingTaskTimerTickPassed = 0;
|
|
|
static UWORD LoopServerExecutedFlag = 0;
|
|
|
static UWORD AssistCNT = 0;
|
|
|
-UWORD AssistCNT1=0;
|
|
|
UWORD socTest = 100;
|
|
|
+BOOL tstMafClrFlg = FALSE;
|
|
|
+/******************************
|
|
|
+ *
|
|
|
+ * Function
|
|
|
+ *
|
|
|
+ ******************************/
|
|
|
void Event_1ms(void)
|
|
|
{
|
|
|
- AssistCNT1++;
|
|
|
- // 1st FSM control
|
|
|
+ /* 1st FSM control */
|
|
|
FSM_1st_Main();
|
|
|
FSM1st_Sys_state.Event_hook();
|
|
|
|
|
|
-
|
|
|
- // Power control
|
|
|
- //power_voPowerManagement(cp_stFlg.ParaHistorySaveEEFinishFlg, cp_stFlg.ParaSaveEEFlg);
|
|
|
+ /* Power control */
|
|
|
+// power_voPowerManagement(cp_stFlg.ParaHistorySaveEEFinishFlg, cp_stFlg.ParaSaveEEFlg);
|
|
|
power_voPowerManagement(ass_ParaCong.uwAutoPowerOffTime * 60, cp_ulSystickCnt, OBC_ButtonStatus.ulButtonSetTimeCnt, \
|
|
|
MC_RunInfo.Torque, MC_RunInfo.Cadence, MC_RunInfo.BikeSpeed, \
|
|
|
cp_stFlg.ParaHistorySaveEEFinishFlg, cp_stFlg.ParaSaveEEFlg);
|
|
|
|
|
|
- // cp_history info update
|
|
|
+ /* cp_history info update */
|
|
|
Can_voMC_Run_1ms();
|
|
|
|
|
|
+ /* Torque move average filter */
|
|
|
if (cadence_stFreGetOut.uwForwardCnt > 0)
|
|
|
{
|
|
|
torsensor_voCadenceCnt();
|
|
|
cadence_stFreGetOut.uwForwardCnt = 0;
|
|
|
maf_torque.value = torsensor_stTorSensorOut.uwTorquePu;
|
|
|
MoveAverageFilter(&maf_torque);
|
|
|
- }
|
|
|
-
|
|
|
- torsensor_voDynamicOffset();
|
|
|
- torsensor_voTorADCwithTemp();
|
|
|
-
|
|
|
- // Tor assist cal
|
|
|
- // ass_CalIn.swFlxIqLimit = MC_RunInfo.SOC;
|
|
|
- ass_CalIn.SOCValue = socTest;
|
|
|
- if(cp_stFlg.RunModelSelect == CityBIKE )
|
|
|
- {
|
|
|
- ass_CalIn.swDirection = -1;
|
|
|
- }
|
|
|
- else if(cp_stFlg.RunModelSelect == MountainBIKE)
|
|
|
+
|
|
|
+ //////Iqref maf test, dont add torq obs//////
|
|
|
+ if(tstTorqPIFlg == 1)
|
|
|
{
|
|
|
- ass_CalIn.swDirection = 1;
|
|
|
+ maf_uqlimit.value = ass_stTorqPIOut.swIRefPu;
|
|
|
+ MoveAverageFilter(&maf_uqlimit);
|
|
|
+ tstMafClrFlg = FALSE;
|
|
|
}
|
|
|
- else
|
|
|
+ else if((tstTorqPIFlg == 0) && (tstMafClrFlg == FALSE))
|
|
|
{
|
|
|
- ass_CalIn.swDirection = 1;
|
|
|
- }
|
|
|
- ass_CalIn.swFlxIqLimit = abs(flx_stCtrlOut.swIqLimPu);
|
|
|
- ass_CalIn.swPwrIqLimit = abs(pwr_stPwrLimOut2.swIqLimPu);
|
|
|
- ass_CalIn.uwbikespeed = bikespeed_stFreGetOut.uwLPFFrequencyPu;
|
|
|
- ass_CalIn.uwcadancelast = ass_CalIn.uwcadance;
|
|
|
- ass_CalIn.uwcadance = cadence_stFreGetOut.uwLPFFrequencyPu;
|
|
|
- ass_CalIn.uwcadancePer = cadence_stFreGetOut.uwFreqPercent;
|
|
|
- ass_CalIn.uwcadanceFWCnt = cadence_stFreGetOut.uwForwardCnt;
|
|
|
-
|
|
|
- ass_CalIn.uwGearSt = (cp_stBikeRunInfoPara.uwBikeGear <= 6) ? cp_stBikeRunInfoPara.uwBikeGear : 0;
|
|
|
- ass_CalIn.uwSpdFbkAbsPu = scm_uwSpdFbkLpfAbsPu;
|
|
|
- ass_CalIn.swSpdFbkPu = scm_stSpdFbkLpf.slY.sw.hi;
|
|
|
- ass_CalIn.uwBaseSpdrpm = cof_uwVbRpm;
|
|
|
- ass_CalIn.uwtorque = maf_torque.AverValue; // maf_torque.AverValue;//torsensor_stTorSensorOut.uwTorqueLPFPu;
|
|
|
- ass_CalIn.uwtorquelpf = torsensor_stTorSensorOut.uwTorqueLPFPu;
|
|
|
- ass_CalIn.uwtorquePer = torsensor_stTorSensorOut.uwTorquePu;
|
|
|
- ass_CalIn.swCurFdbPu = scm_swIqFdbLpfPu;
|
|
|
- ass_CalIn.swCurRefPu = scm_swIqRefPu;
|
|
|
- Assist();
|
|
|
+ MoveAverageFilterClear(&maf_uqlimit);
|
|
|
+ tstMafClrFlg = TRUE;
|
|
|
+ }
|
|
|
|
|
|
- uart_swTorqRefNm = Assist_torqueper;
|
|
|
-// if(cp_stFlg.RunModelSelect == CityBIKE )
|
|
|
-// {
|
|
|
-// uart_swTorqRefNm = -Assist_torqueper;
|
|
|
-// }
|
|
|
-// else if(cp_stFlg.RunModelSelect == MountainBIKE )
|
|
|
-// {
|
|
|
-// uart_swTorqRefNm = Assist_torqueper;
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-//
|
|
|
-// }
|
|
|
+ }
|
|
|
+ /* Torque info update */
|
|
|
+ torsensor_voTorADC();
|
|
|
+// torsensor_voDynamicOffset();
|
|
|
+// torsensor_voTorADCwithTemp();
|
|
|
|
|
|
- // 3rd FSM flag judge and set
|
|
|
- // torque assist model flg
|
|
|
+ /* Torque assist calculation*/
|
|
|
+// ass_CalIn.swFlxIqLimit = MC_RunInfo.SOC;
|
|
|
+ ass_CalIn.SOCValue = socTest;
|
|
|
+ if(cp_stFlg.RunModelSelect == CityBIKE )
|
|
|
+ {
|
|
|
+ ass_CalIn.swDirection = -1;
|
|
|
+ }
|
|
|
+ else if(cp_stFlg.RunModelSelect == MountainBIKE)
|
|
|
+ {
|
|
|
+ ass_CalIn.swDirection = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ass_CalIn.swDirection = 1;
|
|
|
+ }
|
|
|
+ ass_CalIn.swFlxIqLimit = abs(flx_stCtrlOut.swIqLimPu);
|
|
|
+ ass_CalIn.swPwrIqLimit = abs(pwr_stPwrLimOut2.swIqLimPu);
|
|
|
+ ass_CalIn.uwbikespeed = bikespeed_stFreGetOut.uwLPFFrequencyPu;
|
|
|
+ ass_CalIn.uwcadancelast = ass_CalIn.uwcadance;
|
|
|
+ ass_CalIn.uwcadance = cadence_stFreGetOut.uwLPFFrequencyPu;
|
|
|
+ ass_CalIn.uwcadancePer = cadence_stFreGetOut.uwFreqPercent;
|
|
|
+ ass_CalIn.uwcadanceFWCnt = cadence_stFreGetOut.uwForwardCnt;
|
|
|
+ ass_CalIn.uwGearSt = (cp_stBikeRunInfoPara.uwBikeGear <= 6) ? cp_stBikeRunInfoPara.uwBikeGear : 0;
|
|
|
+ ass_CalIn.uwSpdFbkAbsPu = scm_uwSpdFbkLpfAbsPu;
|
|
|
+ ass_CalIn.swSpdFbkPu = scm_stSpdFbkLpf.slY.sw.hi;
|
|
|
+ ass_CalIn.uwBaseSpdrpm = cof_uwVbRpm;
|
|
|
+ ass_CalIn.uwtorque = maf_torque.AverValue; // maf_torque.AverValue;//torsensor_stTorSensorOut.uwTorqueLPFPu;
|
|
|
+ ass_CalIn.uwtorquelpf = torsensor_stTorSensorOut.uwTorqueLPFPu;
|
|
|
+ ass_CalIn.uwtorquePer = torsensor_stTorSensorOut.uwTorquePu;
|
|
|
+ ass_CalIn.swCurFdbPu = scm_swIqFdbLpfPu;
|
|
|
+ ass_CalIn.swCurRefPu = scm_swIqRefPu;
|
|
|
+ Assist();
|
|
|
+
|
|
|
+ uart_swTorqRefNm = Assist_torqueper;
|
|
|
+
|
|
|
+ /////////test///////////
|
|
|
+// if((cp_stFlg.RunModelSelect == CityBIKE) || (cp_stFlg.RunModelSelect == MountainBIKE))
|
|
|
+// {
|
|
|
+//
|
|
|
+// ass_CalOut.swVoltLimitPu = scm_swVsDcpLimPu;
|
|
|
+// uart_swTorqRefNm = ass_CalIn.swDirection * ass_ParaSet.uwSpeedAssistIMaxA;
|
|
|
+//// if(MC_ControlCode.GearSt == 0x01)
|
|
|
+//// {
|
|
|
+//// uart_swTorqRefNm = ass_CalIn.swDirection * 546;
|
|
|
+//// }
|
|
|
+//// else if(MC_ControlCode.GearSt == 0x02)
|
|
|
+//// {
|
|
|
+//// uart_swTorqRefNm = ass_CalIn.swDirection * 546 * 2;
|
|
|
+//// }
|
|
|
+//// else if(MC_ControlCode.GearSt == 0x03)
|
|
|
+//// {
|
|
|
+//// uart_swTorqRefNm = ass_CalIn.swDirection * 546 * 3;
|
|
|
+//// }
|
|
|
+//// else if(MC_ControlCode.GearSt == 0x04)
|
|
|
+//// {
|
|
|
+//// uart_swTorqRefNm = ass_CalIn.swDirection * 546 * 4;
|
|
|
+//// }
|
|
|
+//// else if(MC_ControlCode.GearSt == 0x33 || MC_ControlCode.GearSt == 0x05)
|
|
|
+//// {
|
|
|
+//// uart_swTorqRefNm = ass_CalIn.swDirection * 546 * 5;
|
|
|
+//// }
|
|
|
+//// else
|
|
|
+//// {
|
|
|
+//// uart_swTorqRefNm = 0;
|
|
|
+//// }
|
|
|
+//
|
|
|
+// if(uart_swTorqRefNm != 0)
|
|
|
+// {
|
|
|
+// ass_CalCoef.blAssistflag = TRUE;
|
|
|
+// }
|
|
|
+// else
|
|
|
+// {
|
|
|
+// ass_CalCoef.blAssistflag = FALSE;
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+ /* Torque assist mode flag */
|
|
|
if (ass_CalCoef.blAssistflag == TRUE && cp_stFlg.RunPermitFlg == TRUE && cp_stFlg.SpiOffsetFirstSetFlg ==1)
|
|
|
{
|
|
|
signal_state.Sensor = TRUE;
|
|
@@ -135,7 +185,7 @@ void Event_1ms(void)
|
|
|
signal_state.Sensor = FALSE;
|
|
|
}
|
|
|
|
|
|
- // spd assist model flg
|
|
|
+ /* Speed assist mode flag */
|
|
|
if((cp_stFlg.RunModelSelect == CityBIKE) || (cp_stFlg.RunModelSelect == MountainBIKE))
|
|
|
{
|
|
|
#if 0 // By throttle ADC signal
|
|
@@ -205,11 +255,7 @@ void Event_1ms(void)
|
|
|
{
|
|
|
signal_state.Assist = FALSE;
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- // user code end here
|
|
|
-
|
|
|
-
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void Event_5ms(void)
|
|
@@ -295,23 +341,23 @@ void Event_200ms(void)
|
|
|
bikespeed_voGetBikeSpeedPwrError(adc_stUpOut.uwU5VPu);
|
|
|
|
|
|
/* Bike faults 200ms detect */
|
|
|
- if((cp_stFlg.RunModelSelect == MountainBIKE) || (cp_stFlg.RunModelSelect == CityBIKE))
|
|
|
- {
|
|
|
- alm_stBikeIn.uwTroqReg = torsensor_stTorSensorOut.uwTorqueReg;
|
|
|
- alm_stBikeIn.uwTroqPu = torsensor_stTorSensorOut.uwTorqueLPFPu;//torsensor_stTorSensorOut.uwTorquePu;
|
|
|
- alm_stBikeIn.blBikeSpdOvrFlg = bikespeed_stFreGetOut.blBikeSpeedSensorPwrErrorFlg;
|
|
|
- alm_stBikeIn.blCadenceFreqOvrFlg = cadence_stFreGetOut.blCadenceSensorErrorFlg;
|
|
|
- alm_stBikeIn.swMotorSpdDir = ass_CalIn.swDirection;
|
|
|
- alm_stBikeIn.swMotorSpdPu = scm_stSpdFbkLpf.slY.sw.hi;
|
|
|
- alm_stBikeIn.uwBikeSpdPu = bikespeed_stFreGetOut.uwFrequencyPu;
|
|
|
- alm_stBikeIn.uwCadenceFreqPu = cadence_stFreGetOut.uwFrequencyPu;
|
|
|
- alm_stBikeIn.uwMotorNTCReg = adc_stUpOut.MotorTempReg;
|
|
|
- alm_stBikeIn.uwPCBNTCReg = adc_stUpOut.PCBTempReg;
|
|
|
- alm_stBikeIn.uwThrottleReg = adc_stUpOut.uwThrottleReg;
|
|
|
- alm_stBikeIn.blThrottleExistFlg = FALSE;
|
|
|
- alm_stBikeIn.blMotorNTCExistFlg = FALSE;
|
|
|
- alm_voDetec200MS(&alm_stBikeIn, &alm_stDetect200MSCoef);
|
|
|
- }
|
|
|
+// if((cp_stFlg.RunModelSelect == MountainBIKE) || (cp_stFlg.RunModelSelect == CityBIKE))
|
|
|
+// {
|
|
|
+// alm_stBikeIn.uwTroqReg = torsensor_stTorSensorOut.uwTorqueReg;
|
|
|
+// alm_stBikeIn.uwTroqPu = torsensor_stTorSensorOut.uwTorqueLPFPu;//torsensor_stTorSensorOut.uwTorquePu;
|
|
|
+// alm_stBikeIn.blBikeSpdOvrFlg = bikespeed_stFreGetOut.blBikeSpeedSensorPwrErrorFlg;
|
|
|
+// alm_stBikeIn.blCadenceFreqOvrFlg = cadence_stFreGetOut.blCadenceSensorErrorFlg;
|
|
|
+// alm_stBikeIn.swMotorSpdDir = ass_CalIn.swDirection;
|
|
|
+// alm_stBikeIn.swMotorSpdPu = scm_stSpdFbkLpf.slY.sw.hi;
|
|
|
+// alm_stBikeIn.uwBikeSpdPu = bikespeed_stFreGetOut.uwFrequencyPu;
|
|
|
+// alm_stBikeIn.uwCadenceFreqPu = cadence_stFreGetOut.uwFrequencyPu;
|
|
|
+// alm_stBikeIn.uwMotorNTCReg = adc_stUpOut.MotorTempReg;
|
|
|
+// alm_stBikeIn.uwPCBNTCReg = adc_stUpOut.PCBTempReg;
|
|
|
+// alm_stBikeIn.uwThrottleReg = adc_stUpOut.uwThrottleReg;
|
|
|
+// alm_stBikeIn.blThrottleExistFlg = FALSE;
|
|
|
+// alm_stBikeIn.blMotorNTCExistFlg = FALSE;
|
|
|
+// alm_voDetec200MS(&alm_stBikeIn, &alm_stDetect200MSCoef);
|
|
|
+// }
|
|
|
|
|
|
if (switch_flg.SysFault_Flag == TRUE)
|
|
|
{
|
|
@@ -321,57 +367,46 @@ void Event_200ms(void)
|
|
|
|
|
|
void Signal_detect(void)
|
|
|
{
|
|
|
- SWORD sign;
|
|
|
- // SWORD sign=1;/*V2 -1 V3 1*/
|
|
|
-// uart_slSpdRefRpm = - ((SLONG)MC_MotorSPD_rpm_Percent*5500)/100;
|
|
|
-// if(abs(uart_slSpdRefRpm) < 300)
|
|
|
-// {
|
|
|
-// uart_slSpdRefRpm = 0;
|
|
|
-// }
|
|
|
+ SWORD sign;
|
|
|
+
|
|
|
if (MOTOR_ID_SEL == MOTOR_WELLING_MTB)
|
|
|
{
|
|
|
- sign = 1;
|
|
|
+ sign = 1;
|
|
|
}
|
|
|
else if(MOTOR_ID_SEL == MOTOR_WELLING_CITY)
|
|
|
{
|
|
|
- sign = -1;
|
|
|
+ sign = -1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sign=1;
|
|
|
- }
|
|
|
-
|
|
|
+ sign=1;
|
|
|
+ }
|
|
|
|
|
|
if(MC_ControlCode.GearSt == 0x01)
|
|
|
{
|
|
|
- uart_slSpdRefRpm = sign *785;
|
|
|
+ uart_slSpdRefRpm = sign *785;
|
|
|
}
|
|
|
else if(MC_ControlCode.GearSt == 0x02)
|
|
|
{
|
|
|
- //uart_slSpdRefRpm = sign *3088;
|
|
|
- uart_slSpdRefRpm = sign *1000;
|
|
|
+ uart_slSpdRefRpm = sign *1000;
|
|
|
}
|
|
|
else if(MC_ControlCode.GearSt == 0x03)
|
|
|
{
|
|
|
- uart_slSpdRefRpm = sign *3088;
|
|
|
-
|
|
|
+ uart_slSpdRefRpm = sign *3088;
|
|
|
}
|
|
|
else if(MC_ControlCode.GearSt == 0x04)
|
|
|
{
|
|
|
- uart_slSpdRefRpm = sign*3603;
|
|
|
-
|
|
|
+ uart_slSpdRefRpm = sign*3603;
|
|
|
}
|
|
|
else if(MC_ControlCode.GearSt == 0x33 || MC_ControlCode.GearSt == 0x05)
|
|
|
{
|
|
|
-// uart_slSpdRefRpm = sign *3500;
|
|
|
- uart_slSpdRefRpm = sign*4500;
|
|
|
+ uart_slSpdRefRpm = sign*4500;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- uart_slSpdRefRpm = 0;
|
|
|
+ uart_slSpdRefRpm = 0;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
}
|
|
|
|
|
|
void TimingTaskTimerServer(void)
|