⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bldczc.h

📁 MC56F802BLDC 可以使用的算法 就是电机启动有点慢
💻 H
📖 第 1 页 / 共 2 页
字号:
    unsigned int Bit23 : 1;                  /* RESERVED */
    unsigned int Bit24 : 1;                  /* RESERVED */
    unsigned int Bit25 : 1;                  /* RESERVED */
    unsigned int Bit26 : 1;                  /* RESERVED */
    unsigned int Bit27 : 1;                  /* RESERVED */   
    unsigned int Bit28 : 1;                  /* RESERVED */
    unsigned int Bit29 : 1;                  /* RESERVED */    
    unsigned int Bit30 : 1;                  /* RESERVED */
    unsigned int Bit31 : 1;                  /* RESERVED */
   } B;
 UWord32 W32;
} bldczc_uCmdZCros;                         /* BldcZC Zero Crossing functions Commands,
                                                Requests, Status Flags variable */


typedef struct
{
    bldczc_uCmdZCros    Cmd_ZCros;           /* Zero Crossing Command variable */ 
    UWord16             Mask_ZCInp;          /* Zero Crossing Input Mask */
    UWord16             Mask_ZCInpNext;      /* Next step Zero Crossing Input Mask */
    UWord16             Expect_ZCInpNext;    /* Zero Crossing Next Expected Value */
    UWord16             Expect_ZCInp;        /* Zero Crossing Expecte Value */
    Word16              Cntr_ZCrosOK;        /* Counter OK Zero Crossing commutations */
    Word16              Min_ZCrosOKStart;    /* Minimal OK Zero Crossings to for Start mode */
    Word16              Cntr_ZCrosErr;       /* Counter succesive Error Zero Crossing commutations */
    Word16              Max_ZCrosErr;        /* Maximal Error Zero Crossing commutations */    
    UWord16             Index_ZC_Phase;      /* Zero Crossing phase Index */
    UWord16             Index_ZC_PhaseNext; 
                                             /* Mext Zero Crossing phase Index */    
} bldczc_sStateZCros;                        /* Zero state Variables */

typedef union
{
 struct  
   {
    unsigned int Comput_AlgoRqFlag : 1;      /* BldcZCComput Algorithm call Request Flag */
    unsigned int CmtServ_AlgoRqFlag : 1;     /* BldcZCCmtServ Algorithm call Request Flag */
    unsigned int ZCrosServ_AlgoRqFlag : 1;   /* BldcZCZcrosServ function call Request Flag */
        
    unsigned int Timer_DrvRqFlag : 1;        /* Setting Timer Driver Request Flag */
    unsigned int EndStartMode_HndlrCmdFlag : 1; /* End Start Mode Hndlr Command Flag*/
    
    unsigned int ToffComp_Timeout_InfoFlag : 1; 
                                             /* Toff period Computed 
                                                Information Flag */
    unsigned int StartMode_HndlrFlag : 1;    /* Start Mode Flag */
    unsigned int Cmt_TimedFlag : 1;          /* Commutation Timed Flag */
    unsigned int CmtPreset_TimedFlag : 1;    /* Commutation Preset (before Zero Crosing)
                                                Timed Flag */    
    unsigned int CmtProc_TimedFlag : 1;      /* Commutation Proceeding Timed Flag */
    unsigned int ZCToff_TimedFlag : 1;       /* Zero Crossing Time off Timed Flag */      
    unsigned int ZCPrepared_Timeout_InfoFlag : 1; 
                                             /* Zero Crossing for next commutation Prepared
                                                Information Flag */
    unsigned int StepPrepared_Timeout_InfoFlag : 1;
                                             /* Cmt_Step register for next commutation Prepared
                                                Information Flag */
    unsigned int CmtProcEnd_CmdFlag : 1;     /* Commutation Proceeding End Command Flag */
    unsigned int ZCToffEnd_CmdFlag : 1;      /* Zero Crossing Time off End Command Flag */
    unsigned int ZCToffTest_Hndlr_RqFlag : 1;
                                             /* Zero Crossing Toff passed Test
                                                (Toff Passed before Timer was set)
                                                Request Flag */
    unsigned int ZCToffStart_CmdFlag : 1;    /* Started Command Flag */
    unsigned int CmtTest_Hndlr_RqFlag : 1;   /* Commutation time Test handler Required Flag */
    unsigned int CmtTimedStart_CmdFlag : 1;  /* Commutation Timing Started Command Flag */
    unsigned int MaxZCrosErr_HndlrCmdFlag : 1; 
                                             /* Maximal successive 
                                                Zero Crossing Errors >= Max_ZCrosErr Command Flag */
    unsigned int Bit20 : 1;                  /* RESERVED */
    unsigned int Bit21 : 1;                  /* RESERVED */
    unsigned int Bit22 : 1;                  /* RESERVED */
    unsigned int Bit23 : 1;                  /* RESERVED */
    unsigned int Bit24 : 1;                  /* RESERVED */
    unsigned int Bit25 : 1;                  /* RESERVED */
    unsigned int Bit26 : 1;                  /* RESERVED */
    unsigned int Bit27 : 1;                  /* RESERVED */   
    unsigned int Bit28 : 1;                  /* RESERVED */
    unsigned int Bit29 : 1;                  /* RESERVED */
    unsigned int Bit30 : 1;                  /* RESERVED */
    unsigned int Bit31 : 1;                  /* RESERVED */
   } B;
 UWord16 W16;
} bldczc_uCmdGeneral;                       /* BldcZC General functions Commands,
                                               Requests, Status Flags variable */

typedef struct 
{
    bldczc_uCmdGeneral  Cmd_General;       /* General Command variable */
} bldczc_sStateGeneral;                    /* Bldc Timeout and Handler state Variables */


typedef struct 
{
      bldczc_sStateComput    State_Comput;
      bldczc_sStateCmt       State_Cmt;
      bldczc_sStateZCros     State_ZCros;
      bldczc_sStateGeneral   State_General;
} bldczc_sStates;	


typedef enum
{
 BLDCZC_SET_DEFAULT,
 BLDCZC_DO_NOT_EFFECT
} bldczc_eModeInit;

typedef enum
{
 BLDCZC_STARTING_M,
 BLDCZC_RUNNING_M
} bldczc_eStartingMode;

typedef enum
{
 BLDCZC_ACB,
 BLDCZC_ABC
} bldczc_eDirection;

typedef struct 
{
  UWord16 * pStateCmt;
} bldczc_sZCrosInit;                        /* Bldc Comput Init Variables */


typedef struct 
{
    UWord16             Const_PerProcCmt;    /* Maximal Period of Commutation Proceeding */
                                             /* time of motor coil reverse current */
    UWord16             Max_PerCmt;          /* Maximal Commutation Period */
 
    bldczc_eModeInit    Mode_CoefInit;       /* Set_Default/DoNotEffect Coef variables */

    Frac16              Coef_CmtPrecompLShft; /* Commutation time precomputation 
                                                  Coeficient Range */
    Frac16              Coef_CmtPrecompFrac; /* Commutation time precomputation Coeficient */
    Frac16              Coef_HlfCmt;         /* Half commutation Coeficient */
    Frac16              Coef_Toff;           /* Init Zero Crossing off time Coeficient */
    
    bldczc_eModeInit    Mode_StateComputInit; /* Set_Default/DoNotEffect State_Comput variables
                                                 at initialization */
    bldczc_eModeInit    Mode_TimesInit;      /* Set_Default variables Times
                                                from Per_CmtStart /DoNotEffect  */
    UWord16             Per_CmtStart;        /* Start Commutation periode */
    UWord16             Per_ToffStart;       /* period zero crossing Toff at start */

} bldczc_sComputInit;                        /* Bldc Comput Init Variables */

typedef Frac16 bldczc_fU_ZC3Phase[3];        /* 3 voltage phases for Zero Crossing measuring */

/* Functions Declarations */
Result bldczcHndlrInit ( bldczc_sStates *pStates,
                         bldczc_sTimes *pTimes,
                         UWord16 T_Actual,
                         UWord16 Start_PerProcCmt,
                         bldczc_eStartingMode Starting_Mode );
Result bldczcHndlr ( bldczc_sStates *pStates,
                     bldczc_sTimes *pTimes,
                     UWord16 T_Actual );
Result bldczcTimeoutIntAlg ( bldczc_sStates *pStates,
                             bldczc_sTimes *pTimes,
                             UWord16 T_Actual);
Result bldczcHndlrStop ( bldczc_sStates *pStates );
Result bldczcComputInit ( bldczc_sStateComput *pState_Comput,
                          bldczc_sTimes *pTimes,
                          UWord16 T_Actual,
                          bldczc_sComputInit *pComputInit );
Result bldczcComput (bldczc_sStateComput *pState_Comput, bldczc_sTimes *pTimes);
Result bldczcCmtInit ( bldczc_sStateCmt *pStateCmt,
                       UWord16 Start_Step_Cmt,
                       bldczc_eDirection Direction );
Result bldczcCmtServ ( bldczc_sStateCmt *pStateCmt );
                         
Result bldczcZCrosInit ( bldczc_sStateZCros *pState_ZCros,
                         bldczc_sStateCmt *pStateCmt, 
                         Word16 Min_ZCrosOKStart_Ini, 
                         Word16 Max_ZCrosErr_Ini );
                         
Result bldczcZCrosIntAlg (bldczc_sStateZCros *pState_ZCros,
                          UWord16 *T_ZCros,
                          UWord16 T_ZCSample,
                          UWord16 Sample_ZCInput);

Result bldczcZCrosEdgeIntAlg (bldczc_sStateZCros *pState_ZCros,
                              UWord16 *T_ZCros,
                              UWord16 T_ZCSample,
                            /*  volatile */ Frac16 U_ZCPhaseX);
                             
Result bldczcZCrosServ ( bldczc_sStateZCros *pState_ZCros, bldczc_sStateCmt *pStateCmt );
Result bldczcZCrosEdgeServ ( bldczc_sStateZCros *pState_ZCros,
                             bldczc_sStateCmt *pStateCmt,
                           /*  volatile */ Frac16 U_ZCPhaseX );

/* DEFINITION_END */

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -