Explorar o código

解决写入参数时导致力矩传感器零点被更新的问题。

dd hai 5 meses
pai
achega
7cd114f124

+ 1 - 1
.cproject

@@ -110,7 +110,7 @@
 						</toolChain>
 					</folderInfo>
 					<sourceEntries>
-						<entry excluding="2.MotorDrive/Lib/ebike_pack.lib|1.FrameLayer/Source/sys_task.c|1.FrameLayer/Source/sys_ctrl.c|2.MotorDrive/Lib/WLMCP_LIB.lib|empty.c|3.BasicFunction/Source/spi_master.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+						<entry excluding="1.FrameLayer/Source/sys_task.c|1.FrameLayer/Source/sys_ctrl.c|empty.c|3.BasicFunction/Source/spi_master.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
 					</sourceEntries>
 				</configuration>
 			</storageModule>

+ 1 - 1
1.FrameLayer/Source/TimeTask_Event.c

@@ -315,7 +315,7 @@ void  Event_200ms(void)
 
     //力矩零点自动更新
     if(cp_ulSystickCnt > 3000)
-        TorqueSensorOffSetAuto(0);
+        TorqueSensorOffSetAuto();
 
     if((cp_stControlPara.uwControlFunEN & 0xff) == 0xaa)
     {

+ 1 - 5
1.FrameLayer/Source/main.c

@@ -268,11 +268,7 @@ int  main(void)
      uwFlash_IRQ_Enble=1;
     // hw_voPWMOn();
      // DL_TimerG_setCaptureCompareValue(PWM_B_INST, 1000, GPIO_PWM_B_C1_IDX);
-#if 0 //开机自转
-     MC_WorkMode = 1;
-     MC_ControlCode.GearSt = 2;
-     MC_ControlCode.LightSwitch = 0xF1;
-#endif
+
     while (1)
     {
 //        DL_GPIO_togglePins(LED_PORT, LED_LED1_PIN);

BIN=BIN
2.MotorDrive/Lib/WLMCP_LIB.lib


BIN=BIN
2.MotorDrive/Lib/ebike_pack.lib


+ 5 - 5
3.BasicFunction/Include/AssistCurve.h

@@ -90,11 +90,11 @@
 
 #define TORQUE_ASSIST_DEFAULT             \
     {                                     \
-      TORQUR_CP(10), TORQUR_CP(40), TORQUR_CP(150), 100,\
-      TORQUR_CP(20), TORQUR_CP(60), TORQUR_CP(250), 100,\
-      TORQUR_CP(30), TORQUR_CP(80), TORQUR_CP(350), 100, \
-      TORQUR_CP(40), TORQUR_CP(100), TORQUR_CP(450), 100,\
-      TORQUR_CP(10), TORQUR_CP(60), TORQUR_CP(400), 100,\
+      TORQUR_CP(15), TORQUR_CP(50), TORQUR_CP(150), 100,\
+      TORQUR_CP(36), TORQUR_CP(120), TORQUR_CP(360), 100,\
+      TORQUR_CP(75), TORQUR_CP(250), TORQUR_CP(750), 100, \
+      TORQUR_CP(105), TORQUR_CP(350), TORQUR_CP(1050), 100,\
+      TORQUR_CP(36), TORQUR_CP(120), TORQUR_CP(1050), 100,\
       0, 0, 0, 0,\
       0, 0, 0, 0,\
       0, 0, 0, 0,\

+ 1 - 1
3.BasicFunction/Include/torquesensor.h

@@ -158,7 +158,7 @@ void torsensor_voTorADC(void);
 UWORD torsensor_uwTorqOffsetCal(SWORD Temp); 
 UWORD torsensor_uwTorqSencitiveCal(SWORD Temp, SWORD T0);
 void TorqueSensorRegFltCal(void);
-void TorqueSensorOffSetAuto(UBYTE SetFlag);
+void TorqueSensorOffSetAuto(void);
 
 #endif
 /************************************************************************

+ 1 - 1
3.BasicFunction/Source/AssistCurve.c

@@ -174,7 +174,7 @@ void AssitEEInit(void)
      
     ass_ParaSet.uwCadenceWeight = 1229;                            // Q12 percentage
     ass_ParaSet.uwTorWeight = Q12_1 ; // Q12 percentage
-    ass_ParaSet.uwTorAssAjstGain =4096;// 4096;                           // Q12 percentage
+    ass_ParaSet.uwTorAssAjstGain = 4096;// 4096         // Q12 percentage
     ass_ParaSet.uwCadenceAssAjstGain = 0;                       // Q12 percentage
     ass_ParaSet.uwAsssistSelectNum = 1;
 

+ 5 - 3
3.BasicFunction/Source/torquesensor.c

@@ -118,7 +118,7 @@ void torsensor_voTorSensorCof(void)
     }
 #elif (TORSENSOR_USEMOL == TORSENSOR_USEAUTOZERO)
     //分别读三个力矩传感器零点
-    TorqueSensorOffSetAuto(1);
+    TorqueSensorOffSetAuto();
     torsensor_stTorSensorCof.uwTorqueOffsetPowerUp = torsensor_stTorSensorCof.uwTorqueOffset;
     torsensor_stTorSensorCof.uwTorqueOffsetOrign = torsensor_stTorSensorCof.uwTorqueOffset;
     cp_stFlg.ParaSaveEEFlg = TRUE;
@@ -338,15 +338,17 @@ void TorqueSensorRegFltCal(void)
 }
 
 //零点更新
-void TorqueSensorOffSetAuto(UBYTE SetFlag)
+void TorqueSensorOffSetAuto()
 {
     SLONG SumTemp = 0;
+    static UBYTE SetFlag = 0;
     static BOOL OffSet_RefreshFlag = FALSE;
-    if(SetFlag == 1)
+    if(SetFlag == 0)
     {
         torsensor_stTorSensorCof.uwTorqueOffsetNow1 = TORQUEVOLREG1();
         torsensor_stTorSensorCof.uwTorqueOffsetNow2 = TORQUEVOLREG2();
         torsensor_stTorSensorCof.uwTorqueOffsetNow3 = TORQUEVOLREG3();
+        SetFlag = 1;
         OffSet_RefreshFlag = TRUE;
     }
     else

+ 12 - 12
4.BasicHardwSoftwLayer/2.BasicSoftwLayer/Include/user.h

@@ -43,7 +43,7 @@ Update Time
 *=======================================================================*/
 #define CADENCE_ASSIST 1
 #define TORQUE_ASSIST  2
-#define ASSIST_MODE    CADENCE_ASSIST
+#define ASSIST_MODE    TORQUE_ASSIST
 /*======================================================================*
    Motor Number Selection
 *=======================================================================*/
@@ -765,14 +765,14 @@ Update Time
 #define ALM_ADC_DETE_HIG_VAL 175 // unit: 0.01V, ADC offset Voltage max
 
 /* IPM over heat */
-#define ALM_IPM_OVR_HEAT_VAL        105 // unit: Ce, Threshold value
+#define ALM_IPM_OVR_HEAT_VAL        125 // unit: Ce, Threshold value
 #define ALM_IPM_OVR_TM              2   // unit: s, Time of duration(TBS)
-#define PWRLIM_START_THRESHOLD_TEMP 85  // Q0,Ce
+#define PWRLIM_START_THRESHOLD_TEMP 115  // Q0,Ce
 
 /* MOTOR over heat */
-#define ALM_MOTOR_OVR_HEAT_VAL            110 // unit: Ce, Threshold value
+#define ALM_MOTOR_OVR_HEAT_VAL            135 // unit: Ce, Threshold value
 #define ALM_MOTOR_OVR_TM                  2   // unit: s, Time of duration(TBS)
-#define PWRLIM_START_THRESHOLD_MOTOR_TEMP 95 // Q0,Ce
+#define PWRLIM_START_THRESHOLD_MOTOR_TEMP 120 // Q0,Ce
 
 /* Stop time of three phase short force  */
 #define ALM_THR_PHS_SHRT_FRC_TM 200 // unit: ms, Time of duration(TBC)
@@ -795,12 +795,12 @@ Update Time
 #define ALM_IPM_OC_REC_TM  1000//100 // unit: ms, Time of duration(TBC)
 
 /* Recover time & value of IPM over heat */
-#define ALM_IPM_OVR_HEAT_REC_VAL 85  // unit: Ce, Threshold value
+#define ALM_IPM_OVR_HEAT_REC_VAL 105  // unit: Ce, Threshold value
 #define ALM_IPM_OVR_REC_TM       60  // unit: s, Time of duration(TBC)
 #define ALM_IPM_OVR_REC_TM1      120 // unit: s, Time of duration(TBC)
 
 /* Recover time & value of MOTOR over heat */
-#define ALM_MOTOR_OVR_HEAT_REC_VAL 95 // unit: Ce, Threshold value
+#define ALM_MOTOR_OVR_HEAT_REC_VAL 115 // unit: Ce, Threshold value
 #define ALM_MOTOR_OVR_REC_TM       60  // unit: s, Time of duration(TBC)
 #define ALM_MOTOR_OVR_REC_TM1      120 // unit: s, Time of duration(TBC)
 
@@ -849,8 +849,8 @@ Update Time
 
 /* Drag speed & current */
 #define DRAG_CUR_AP         1000 // 1500          // 1500 //100 Huawei      // unit: 0.01A, Drag current value
-#define DRAG_VOL_AP         10   // 0.1v
-#define DRAG_SPD_HZ         20   // unit: Hz, Final speed of drag
+#define DRAG_VOL_AP         20   // 0.1v
+#define DRAG_SPD_HZ         10   // unit: Hz, Final speed of drag
 #define DRAG_SPD_RAMP_TM_MS 4000 // unit: ms, Time of speed from 0Hz to target Hz
 
 /* Open to close */
@@ -976,9 +976,9 @@ Update Time
 //#define PWRLIM_ERR    500  // unit: 0.1w, Start power limit when "VAL - ERR"
 
 #elif ((IPM_POWER_SEL == IPM_POWER_250W_6G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V))
-#define IDCLIMIQSTART (((ULONG)1200 << 14) / IBASE);
-#define IDCLIMIQEND   (((ULONG)1300 << 14) / IBASE);
-#define PWRLIM_VAL    (12*480+200) // unit: 0.1w, Power limit value
+#define IDCLIMIQSTART (((ULONG)1700 << 14) / IBASE);
+#define IDCLIMIQEND   (((ULONG)1800 << 14) / IBASE);
+#define PWRLIM_VAL    (17*480+200) // unit: 0.1w, Power limit value
 #define PWRLIM_ERR    500  // unit: 0.1w, Start power limit when "VAL - ERR"
 
 #elif ((IPM_POWER_SEL == IPM_POWER_350W_6G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V))