Browse Source

feat:测试

1.修改为启停测试模式
2.优化部分代码
3.校验码0xC424
Comment.Vivre 1 năm trước cách đây
mục cha
commit
b4de6b97f6

+ 4 - 4
User/Include/Customer.h

@@ -159,7 +159,7 @@
 
 // 启动ATO参数
 // 观测器带宽的滤波值,经典值为1.0-200.0
-#define ATO_BW_START                    (0.0)
+#define ATO_BW_START                    (10.0)
 #define ATO_BW_RUN1                     (20.0)
 #define ATO_BW_RUN2                     (40.0)
 #define ATO_BW_RUN3                     (80.0)
@@ -215,7 +215,7 @@
  * @param (NONEMODE)      直接给定值,不调速
  * @param (ONOFFTEST)     启停测试工具
  */
-#define SPEED_MODE                      (NONEMODE)              // 闭环方式选择  
+#define SPEED_MODE                      (ONOFFTEST)              // 闭环方式选择  
 
 /**
  * PWM调速 PWM极性选择
@@ -281,7 +281,7 @@
 #define TAILWIND_MODE                   (FOCMethod)             // 顺逆风检测方式
 #define DQKP_TailWind                   _Q12(3.0)               // FOC计算顺逆风检测电流环KP
 #define DQKI_TailWind                   _Q15(0.3)               // FOC计算顺逆风检测电流环KI
-#define TAILWIND_TIME                   (500)                   // (ms) 顺逆风检测时间 
+#define TAILWIND_TIME                   (300)                   // (ms) 顺逆风检测时间 
 #define ATO_BW_WIND                     (80)                    // 逆风判断观测器带宽的滤波值,经典值为8.0-100.0 
 #define SPD_BW_WIND                     (20.0)                  // 逆风判断速度带宽的滤波值,经典值为5.0-40.0 
 
@@ -340,7 +340,7 @@
  */
 #define ONOFFTEST_REF                   S_Value(1000)           // 测试给定,注意闭环方式不同给定值需要更改
 #define ONOFFTEST_ON_TIME               (3000)                  // (ms) 启动运行时间
-#define ONOFFTEST_OFF_TIME              (3000)                  // (ms) 停止时间
+#define ONOFFTEST_OFF_TIME              (8000)                  // (ms) 停止时间
 
 #endif // File End
 

+ 17 - 17
User/Include/Declaration.h

@@ -11,10 +11,10 @@
 #include <VaribleDef.h>
 
 /**
-	@brief 状态处理函数
+    @brief 状态处理函数
 */
-void MC_Control(void);
-uint8 Drv_SectionCheak(void);
+void FiniteStateManger(void);
+
 void VariablesPreInit(void);
 void GetCurrentOffset(void);
 void Motor_Ready (void);
@@ -60,7 +60,7 @@ void CMP0_Init(void);
 void CMP3_Init(void);
 void CMP3_Interrupt_Init(void);
 
-unsigned short CRC_Check(unsigned char start_sector , unsigned char offset_sector);
+unsigned short CRC_Check(unsigned char start_sector, unsigned char offset_sector);
 
 void Driver_Init(void);
 
@@ -69,7 +69,7 @@ void GPIO_Default_Init(void);
 void SPI_Init(void);
 
 /**
-	@brief 芯片温度检测
+    @brief 芯片温度检测
 */
 void TSD_Init(void);
 void TEMP_Check(void);
@@ -82,11 +82,11 @@ void PI3_Init(void);
 void UART1_Init(void);
 void UART2_Init(void);
 void put_char(unsigned char c);
-void put_string(unsigned char *str);
+void put_string(unsigned char * str);
 
 
 /**
-	@brief DMA相关
+    @brief DMA相关
 */
 typedef enum
 {
@@ -98,7 +98,7 @@ typedef enum
     DRAM_SPI   = DMACFG2 | DMACFG0,
     UART2_DRAM = DMACFG2 | DMACFG1,
     DRAM_UART2 = DMACFG2 | DMACFG1 | DMACFG0
-}eType_DMA_PIPE;
+} eType_DMA_PIPE;
 
 typedef enum
 {
@@ -106,19 +106,19 @@ typedef enum
     DMA_IRQ_L2 = 0x40,
     DMA_IRQ_L3 = 0x80,
     DMA_IRQ_L4 = 0xc0
-}eType_DMA_IRQ;
+} eType_DMA_IRQ;
 
 typedef enum
 {
     BIG_ENDIAN    = 0,
     LITTLE_ENDIAN = ENDIAN
-}eType_DMA_Endian;
+} eType_DMA_Endian;
 
 typedef enum
 {
     DMA_BSY = DMABSY,
     DMA_IRQ = DMAIF
-}eType_DMA_Statu;
+} eType_DMA_Statu;
 
 void SetPipe_DMA0(eType_DMA_PIPE ePipe);
 void SetPipe_DMA1(eType_DMA_PIPE ePipe);
@@ -135,7 +135,7 @@ void SetDbgData_DMA(unsigned short ulAddr);
 void Set_DBG_DMA(uint16 DMAAddr);
 
 /**
-	@brief 定时器
+    @brief 定时器
 */
 #define TIM3_Fre                       (750000.0)                                // TIM0计数频率750KHz
 #define TIM4_Fre                       (6000.0)                                  // TIM0计数频率6KHz
@@ -145,7 +145,7 @@ void Timer3_Init(void);
 
 /* ------------------------------------------- 功能 ------------------------------------------------------------- */
 /**
-	@brief RSD顺逆风
+    @brief RSD顺逆风
 */
 void RsdProcess(void);
 void RSDTailWindStart(void);
@@ -153,20 +153,20 @@ void RSDDetectInit(void);
 MotStateType RSDStartProcess(void);
 
 /**
-	@brief FOC顺逆风
+    @brief FOC顺逆风
 */
 void FocDetectInit(void);
 void FOCCloseLoopStart(void);
 void FOC_TailWindDealwith(void);
 
 /**
-	@brief 弱磁
+    @brief 弱磁
 */
 void FiledWeakenInit(void);
 void FileWeakenControl(void);
 
 /**
-	@brief BMEF顺逆风
+    @brief BMEF顺逆风
 */
 void BEMFDetectInit(void);
 void BemfProcess(void);
@@ -174,7 +174,7 @@ void BEMFFOCCloseLoopStart(void);
 MotStateType Bemf_Start_Process(void);
 
 /**
-	@brief 电压补偿
+    @brief 电压补偿
 */
 void VoltageCompensation(uint8 VCCtrlMode, uint16 VCmcDcbusFlt);
 void BusAverageVoltage(void);

+ 3 - 3
User/Include/Protect.h

@@ -72,7 +72,7 @@
 
 /* 堵转保护参数设置值 */
 #define STALL_SPEED_MAX                     S_Value(3200)
-#define STALL_SPEED_MIN                     S_Value(300)
+#define STALL_SPEED_MIN                     S_Value(400)
 
 #define EsThresholdValueL                   (800.0)
 #define EsThresholdValueH                   (1200.0)
@@ -87,11 +87,11 @@
 /* -----NTC过温保护----- */
 #define TemperatureProtectTime          (1000)                                       // (ms)温度保护检测时间
 #define OVER_Temperature                Tempera_Value(1.0)                           // 过温保护阈值,根据NTC曲线设定,10K上拉电阻,80℃
-#define UNDER_Temperature           Tempera_Value(1.5)                           // 过温保护恢复阈值,根据NTC曲线设定,10K上拉电阻,70℃
+#define UNDER_Temperature				Tempera_Value(1.5)                           // 过温保护恢复阈值,根据NTC曲线设定,10K上拉电阻,70℃
 
 
 /* 限制功率 */
-#define POWERLPFLIMIT                 	 PROTECT_POWER(50.0)             			 ///< 
+#define POWERLPFLIMIT                 	 PROTECT_POWER(90.0)             			 ///< 
 
 /* 故障显示 */
 #define LED_ONTime                          (100)

+ 1 - 1
User/Source/AddFunction.c

@@ -225,7 +225,7 @@ void TargetRef_Process(void)
     {
         mcFocCtrl.PowerLimitValue = POWERLPFLIMIT;
         isCtrlPowOn = 1; // 开机
-        mcFocCtrl.Ref = S_Value(1500);
+        mcFocCtrl.Ref = S_Value(1650);
     }
     #elif (SPEED_MODE == ONOFFTEST)
     {

+ 10 - 14
User/Source/MotorControl.c

@@ -1,7 +1,7 @@
 /**
  * @copyright None
  * @file      MotorControl.c
- * @author    Comment Vivre 
+ * @author    Comment Vivre
  * @date      2024-08-26
  * @brief     电机状态机切换
  */
@@ -15,7 +15,7 @@ MotStaM McStaSet;
     @warning   电机的状态只能在电机状态控制中切换,禁止在其他地方切换电机状态
     @date      2022-07-14
 */
-void MC_Control(void)
+void FiniteStateManger(void)
 {
     // 故障下状态调整
     if (mcFaultSource != FaultNoSource)
@@ -87,9 +87,6 @@ void MC_Control(void)
         {
             Motor_Charge();
             #if (IPMTEST == Enable)
-            {
-                ;
-            }
             #else
             
             if (mcFocCtrl.State_Count == 0)
@@ -131,14 +128,13 @@ void MC_Control(void)
             Motor_Align();
             #if (ALIGN_MOME == ALIGN_TEST)
             
-            while (1)
-                ;
-                
+            while (1) ;
+            
             #else
-                
-            if (mcFocCtrl.State_Count == 0)
-            { mcState = mcStart; }
-                
+            {
+                if (mcFocCtrl.State_Count == 0)
+                { mcState = mcStart; }
+            }
             #endif
             break;
         }
@@ -217,7 +213,7 @@ void MC_Control(void)
         
         case mcFault:
         {
-			// 欠压保护处理函数
+            // 欠压保护处理函数
             if (mcFaultSource == FaultUnderVoltageDC)
             { UnderProcess(); }
             else
@@ -228,7 +224,7 @@ void MC_Control(void)
                 if (mcFaultSource == FaultNoSource)
                 { mcState = mcReady; }
             }
-			
+            
             break;
         }
         

+ 1 - 3
User/Source/MotorProtect.c

@@ -166,9 +166,7 @@ void Fault_Stall(void)
         fault.Stall.EsValue = mcFocCtrl.EMFsquare;
         
         if (fault.Stall.DectDealyCnt < 3000) /* Delay for a period of time to test */
-        {
-            fault.Stall.DectDealyCnt++;
-        }
+        { fault.Stall.DectDealyCnt++; }
         else
         {
             /* ****** 1 ****** */

+ 1 - 1
User/Source/main.c

@@ -154,7 +154,7 @@ void main(void)
         else
         {
             // 电机控制状态机
-            MC_Control();
+            FiniteStateManger();
             
             if (g_1mTick)
             {