|
@@ -21,7 +21,6 @@
|
|
|
#include "can.h"
|
|
|
#include "canAppl.h"
|
|
|
#include "flash_master.h"
|
|
|
-#include "queue.h"
|
|
|
#include "gd32f30x.h"
|
|
|
#include "string.h"
|
|
|
#include "syspar.h"
|
|
@@ -44,8 +43,7 @@ static SQWORD TimingTaskTimerTickTempOld = 0;
|
|
|
static SQWORD TimingTaskTimerTickPassed = 0;
|
|
|
static UWORD LoopServerExecutedFlag = 0;
|
|
|
static UWORD AssistCNT = 0;
|
|
|
-UWORD socTest = 100;
|
|
|
-BOOL tstMafClrFlg = FALSE;
|
|
|
+static BOOL tstMafClrFlg = FALSE;
|
|
|
/******************************
|
|
|
*
|
|
|
* Function
|
|
@@ -58,7 +56,6 @@ void Event_1ms(void)
|
|
|
FSM1st_Sys_state.Event_hook();
|
|
|
|
|
|
/* 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);
|
|
@@ -69,33 +66,31 @@ void Event_1ms(void)
|
|
|
/* Torque move average filter */
|
|
|
if (cadence_stFreGetOut.uwForwardCnt > 0)
|
|
|
{
|
|
|
- torsensor_voCadenceCnt();
|
|
|
cadence_stFreGetOut.uwForwardCnt = 0;
|
|
|
- maf_torque.value = torsensor_stTorSensorOut.uwTorquePu;
|
|
|
- MoveAverageFilter(&maf_torque);
|
|
|
+ ass_stTorqMafValue.value = torsensor_stTorSensorOut.uwTorquePu;
|
|
|
+ ass_voMoveAverageFilter(&ass_stTorqMafValue);
|
|
|
|
|
|
- //////Iqref maf test, dont add torq obs//////
|
|
|
- if(tstTorqPIFlg == 1)
|
|
|
+ /* Iqref maf test, dont add torq obs */
|
|
|
+ if(ass_CalOut.blTorqPIFlg)
|
|
|
{
|
|
|
- maf_uqlimit.value = ass_stTorqPIOut.swIRefPu;
|
|
|
- MoveAverageFilter(&maf_uqlimit);
|
|
|
+ ass_stUqLimMafValue.value = ass_stTorqPIOut.swIRefPu;
|
|
|
+ ass_voMoveAverageFilter(&ass_stUqLimMafValue);
|
|
|
tstMafClrFlg = FALSE;
|
|
|
}
|
|
|
- else if((tstTorqPIFlg == 0) && (tstMafClrFlg == FALSE))
|
|
|
+ else if((!ass_CalOut.blTorqPIFlg) && (tstMafClrFlg == FALSE))
|
|
|
{
|
|
|
- MoveAverageFilterClear(&maf_uqlimit);
|
|
|
+ ass_voMoveAverageFilterClear(&ass_stUqLimMafValue);
|
|
|
tstMafClrFlg = TRUE;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
/* Torque info update */
|
|
|
torsensor_voTorADC();
|
|
|
-// torsensor_voDynamicOffset();
|
|
|
-// torsensor_voTorADCwithTemp();
|
|
|
|
|
|
/* Torque assist calculation*/
|
|
|
-// ass_CalIn.swFlxIqLimit = MC_RunInfo.SOC;
|
|
|
- ass_CalIn.SOCValue = socTest;
|
|
|
+ //ass_CalIn.SOCValue = 100;
|
|
|
+ ass_CalIn.swFlxIqLimit = MC_RunInfo.SOC;
|
|
|
if(cp_stFlg.RunModelSelect == CityBIKE )
|
|
|
{
|
|
|
ass_CalIn.swDirection = -1;
|
|
@@ -119,45 +114,21 @@ void Event_1ms(void)
|
|
|
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.uwtorque = ass_stTorqMafValue.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();
|
|
|
+ ass_voAssist();
|
|
|
|
|
|
- uart_swTorqRefNm = Assist_torqueper;
|
|
|
+ uart_swTorqRefNm = ass_CalOut.swAssitCurRef;
|
|
|
|
|
|
- /////////test///////////
|
|
|
+ /////////Constant Current Control 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;
|
|
|
-//// }
|
|
|
+// uart_swTorqRefNm = ass_CalIn.swDirection * ass_ParaSet.uwSpeedAssistIMaxA;
|
|
|
//
|
|
|
// if(uart_swTorqRefNm != 0)
|
|
|
// {
|
|
@@ -170,7 +141,6 @@ void Event_1ms(void)
|
|
|
//
|
|
|
// }
|
|
|
|
|
|
-
|
|
|
/* Torque assist mode flag */
|
|
|
if (ass_CalCoef.blAssistflag == TRUE && cp_stFlg.RunPermitFlg == TRUE && cp_stFlg.SpiOffsetFirstSetFlg ==1)
|
|
|
{
|
|
@@ -188,24 +158,6 @@ void Event_1ms(void)
|
|
|
/* Speed assist mode flag */
|
|
|
if((cp_stFlg.RunModelSelect == CityBIKE) || (cp_stFlg.RunModelSelect == MountainBIKE))
|
|
|
{
|
|
|
- #if 0 // By throttle ADC signal
|
|
|
- if(bikethrottle_stBikeThrottleOut.uwThrottlePercent < 500)
|
|
|
- {
|
|
|
- AssistCNT ++;
|
|
|
- if(AssistCNT > 1000 && cp_stFlg.RunPermitFlg == TRUE)
|
|
|
- {
|
|
|
- signal_state.Assist = TRUE;
|
|
|
- AssistCNT = 1000;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- AssistCNT = 0;
|
|
|
- signal_state.Assist = FALSE;
|
|
|
- }
|
|
|
- #elif 0 // By walk assist GPIO signal
|
|
|
-
|
|
|
- #elif 1 //By can bus command code
|
|
|
if(cp_stBikeRunInfoPara.uwBikeGear == 0x22)
|
|
|
{
|
|
|
AssistCNT ++;
|
|
@@ -220,11 +172,10 @@ void Event_1ms(void)
|
|
|
AssistCNT = 0;
|
|
|
signal_state.Assist = FALSE;
|
|
|
}
|
|
|
- #endif
|
|
|
|
|
|
if(signal_state.Assist == TRUE)
|
|
|
{
|
|
|
- //6km/H = 100m/min 1.67m/s
|
|
|
+ //6km/H = 100m/min = 1.67m/s
|
|
|
if(cp_stFlg.RunModelSelect == CityBIKE)
|
|
|
{
|
|
|
uart_slSpdRefRpm = -(10000/(ass_ParaCong.uwWheelDiameter))*ass_ParaCong.uwNmBackChainring*ass_ParaCong.uwMechRationMotor/ass_ParaCong.uwNmFrontChainring;
|
|
@@ -260,6 +211,7 @@ void Event_1ms(void)
|
|
|
|
|
|
void Event_5ms(void)
|
|
|
{
|
|
|
+ /* Upper Computer Info Update */
|
|
|
Can_voMC_Run_5ms();
|
|
|
}
|
|
|
|
|
@@ -284,8 +236,9 @@ void Event_10ms(void)
|
|
|
uart_slSpdRefRpm = -((SLONG)MC_MotorSPD_rpm_Percent*5000)/100;
|
|
|
}
|
|
|
|
|
|
- /* bikespeed closeloop control */
|
|
|
-// bikemotorspdref();
|
|
|
+ /* Use Bike Speed PI */
|
|
|
+// bikespeed_voPuCal();
|
|
|
+// bikespeed_voPI(&bikespeed_stPIIn, &bikeSpdPIOut);
|
|
|
// ass_CalIn.swDirection =-1;
|
|
|
// uart_slSpdRefRpm = bikeSpdPIOut.swSpdRefRpm * ass_CalIn.swDirection;
|
|
|
|
|
@@ -293,7 +246,6 @@ void Event_10ms(void)
|
|
|
{
|
|
|
uart_slSpdRefRpm = 0;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/* Bike light control */
|
|
@@ -302,45 +254,34 @@ void Event_10ms(void)
|
|
|
|
|
|
/* Trip cal when open */
|
|
|
bikespeed_votempTripCal();
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
void Event_20ms(void)
|
|
|
{
|
|
|
+ /* MCU Self Check */
|
|
|
stl_voDoRunTimeChecks();
|
|
|
}
|
|
|
|
|
|
void Event_100ms(void)
|
|
|
{
|
|
|
+ /* Bike Speed LPF */
|
|
|
bikespeed_stFreGetOut.uwLPFFrequencyPu = (bikespeed_stFreGetOut.uwLPFFrequencyPu * bikespeed_stFreGetCof.uwBikeSpeedLPFGain +
|
|
|
bikespeed_stFreGetOut.uwFrequencyPu * (100 - bikespeed_stFreGetCof.uwBikeSpeedLPFGain)) /
|
|
|
100;
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-UWORD ReadorWrite = 2;
|
|
|
void Event_200ms(void)
|
|
|
{
|
|
|
-
|
|
|
- // SendData(ID_MC_BC, MODE_REPORT, 0x1020, (uint8_t *)&MC_RunInfo.BikeSpeed);
|
|
|
- if (ReadorWrite == 3)
|
|
|
- {
|
|
|
- stErrorLog.NotesInfo1 = 1;
|
|
|
- stErrorLog.NotesInfo2 = 2;
|
|
|
- stErrorLog.NotesInfo3 = 3;
|
|
|
- que_ubPushIn(&stFlashErrorLog, &stErrorLog, sizeof(stErrorLog));
|
|
|
- ReadorWrite = 2;
|
|
|
- }
|
|
|
-
|
|
|
+ /* Upper Computer Info Update */
|
|
|
Can_voMC_Run_200ms();
|
|
|
|
|
|
+ /* Bike Sesor Suply Voltage Fault Detect */
|
|
|
bikelight_voGetBikeLightError(adc_stUpOut.uwU6VPu);
|
|
|
display_voGetDisplayError(adc_stUpOut.uwU12VPu);
|
|
|
bikespeed_voGetBikeSpeedPwrError(adc_stUpOut.uwU5VPu);
|
|
|
|
|
|
- /* Bike faults 200ms detect */
|
|
|
+ /* Bike Sensor Faults Detect */
|
|
|
// if((cp_stFlg.RunModelSelect == MountainBIKE) || (cp_stFlg.RunModelSelect == CityBIKE))
|
|
|
// {
|
|
|
// alm_stBikeIn.uwTroqReg = torsensor_stTorSensorOut.uwTorqueReg;
|