/************************************************************************ Project: Welling Motor Control Paltform Filename: spdctrmode.c Partner Filename: spdctrmode.c Description: The header file of spdctrmode.c Complier: IAR Embedded Workbench for ARM 7.80, IAR Systems. CPU TYPE : GD32F3x0 ************************************************************************* Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd. All rights reserved. ************************************************************************* ************************************************************************* Revising History (ECL of this file): ************************************************************************/ /************************************************************************ Beginning of File, do not put anything above here except notes Compiler Directives: *************************************************************************/ #ifndef SPDCTRMODE_H #define SPDCTRMODE_H #include "spdctrFSM.h" #include "mathtool.h" #include "asr.h" #include "typedefine.h" typedef _Bool BOOL; /************************************************************************ Compiler Directives (N/A) *************************************************************************/ #ifdef _SPDCTRMODE_C_ #define _SPDCTRMODE_EXT #else #define _SPDCTRMODE_EXT extern #endif /************************************************************************ Definitions & Macros *************************************************************************/ #define LPF_OUT_DEFAULT \ { \ 0, 0 \ } // Default value of LPF_OUT /************************************************************************ TypeDefs & Structure defines (N/A) *************************************************************************/ /************************************************************************ Constant Table *************************************************************************/ /************************************************************************ Exported Function Call Prototypes *************************************************************************/ _SPDCTRMODE_EXT void scm_voSpdCtrMdInit(void); _SPDCTRMODE_EXT void scm_voSpdCtrMdCoef(void); _SPDCTRMODE_EXT void scm_voSpdCtrMdTbs(void); _SPDCTRMODE_EXT void scm_voSpdCtrMdUpTbc(void); _SPDCTRMODE_EXT void scm_voSpdCtrMdDownTbc(void); _SPDCTRMODE_EXT void scm_voTorqCtrMdTbs(void); /************************************************************************ Exported Variables *************************************************************************/ #ifdef _SPDCTRMODE_C_ _SPDCTRMODE_EXT SWORD swCurRefrompu = 0; _SPDCTRMODE_EXT SPD_STATE_HOOK curSpeed_state; _SPDCTRMODE_EXT UWORD scm_uwCradleEn = 0; _SPDCTRMODE_EXT SWORD scm_swCradleThetaPu = 0; _SPDCTRMODE_EXT SWORD scm_swCradleThetaCnt = 0; _SPDCTRMODE_EXT SWORD scm_swCradleThetaPuZ1 = 0; _SPDCTRMODE_EXT SWORD scm_swCradleThetaErrPu = 0; _SPDCTRMODE_EXT SLONG scm_slCradleThetaPu = 0; _SPDCTRMODE_EXT SLONG scm_slCradleSpdRef = 0; _SPDCTRMODE_EXT SWORD scm_swCradleTurns = 0; _SPDCTRMODE_EXT SWORD scm_swCradleTurns0 = 11; _SPDCTRMODE_EXT SWORD scm_swCradleTurns1 = 3; _SPDCTRMODE_EXT UWORD scm_uwCradleTheta0 = 0; _SPDCTRMODE_EXT UWORD scm_uwCradleTheta1 = 0; _SPDCTRMODE_EXT SLONG scm_slCradleTheta1Pu = 0; _SPDCTRMODE_EXT SWORD scm_swCradleDrumTheta = 0; _SPDCTRMODE_EXT SWORD scm_swCradleDrumThetaMax = -1000; _SPDCTRMODE_EXT SWORD scm_swCradleDrumThetaMin = 1000; _SPDCTRMODE_EXT SWORD scm_swCradleDrumTheta1 = 0; _SPDCTRMODE_EXT SWORD scm_swCradleDrumThetaAve = 0; _SPDCTRMODE_EXT UWORD scm_uwCradleCnt = 0; _SPDCTRMODE_EXT UWORD scm_uwCradleFlag = 0; _SPDCTRMODE_EXT SWORD scm_swCradleSpdRef = 0; _SPDCTRMODE_EXT UWORD scm_uwCradleStep = 0; _SPDCTRMODE_EXT UWORD scm_uwCradleCnt1 = 0; _SPDCTRMODE_EXT UWORD scm_uwAcrLimCof = 0x93CD; // Q15,Q15(2/(sqrt(3))-->0x93CD _SPDCTRMODE_EXT UWORD scm_uwUdcpLimCof = 18918; // 0x5555; //Q15,Q15(2/3)-->0x5555 _SPDCTRMODE_EXT UWORD scm_uwLqPu = 0; _SPDCTRMODE_EXT SWORD scm_swSpdRefPu = 0; _SPDCTRMODE_EXT SWORD scm_swUalphaPu = 0; // Q14 _SPDCTRMODE_EXT SWORD scm_swUbetaPu = 0; // Q14 _SPDCTRMODE_EXT LPF_OUT scm_stIqLoadLpf = LPF_OUT_DEFAULT; _SPDCTRMODE_EXT LPF_OUT scm_stIdFbkLpf = LPF_OUT_DEFAULT; // Id feedback LPF _SPDCTRMODE_EXT LPF_OUT scm_stIqFbkLpf = LPF_OUT_DEFAULT; // Iq feedback LPF _SPDCTRMODE_EXT LPF_OUT scm_stIqRefforDesat = LPF_OUT_DEFAULT; // Iq reference LPF _SPDCTRMODE_EXT LPF_OUT scm_stIqFbkforDesat = LPF_OUT_DEFAULT; // Iq feedback LPF _SPDCTRMODE_EXT SWORD scm_swIdFdbLpfPu = 0; _SPDCTRMODE_EXT SWORD scm_swIqFdbLpfPu = 0; _SPDCTRMODE_EXT SLONG scm_slIdRefPu = 0; // Q29 _SPDCTRMODE_EXT SLONG scm_slIqRefPu = 0; // Q29 _SPDCTRMODE_EXT SWORD scm_swIdRefPu = 0; // Q14 _SPDCTRMODE_EXT SWORD scm_swIqRefPu = 0; // Q14 _SPDCTRMODE_EXT UWORD scm_uwAngRefPu = 0; // Q15 _SPDCTRMODE_EXT UWORD scm_uwAngParkPu = 0; // Q15 _SPDCTRMODE_EXT UWORD scm_uwAngIParkPu = 0; // Q15 _SPDCTRMODE_EXT UWORD scm_uwAngIParkPu1 = 0; // Q15 _SPDCTRMODE_EXT SWORD scm_swRotateDir = 0; // Direction of motor rotate //Iq feedback LPF _SPDCTRMODE_EXT UWORD scm_uwAngManuPu = 0; // Q15, Angle given manually _SPDCTRMODE_EXT SLONG scm_slAngManuPu = 0; _SPDCTRMODE_EXT SLONG scm_slDragSpdPu = 0; // Q15, Drag speed _SPDCTRMODE_EXT SLONG scm_slDragSpdRefPu = 0; // Q29, intermediate Drag speed _SPDCTRMODE_EXT BOOL scm_blCurSwitchOvrFlg = FALSE; // Current switch over flag _SPDCTRMODE_EXT BOOL scm_blAngSwitchOvrFlg = FALSE; // Angle switch over flag _SPDCTRMODE_EXT UWORD scm_uwAngSwitchK = 0; // Angle switch weight value _SPDCTRMODE_EXT SWORD scm_swMotorPwrInWt = 0; // unit: w, Input power of motor _SPDCTRMODE_EXT BOOL scm_blCoefUpdateFlg = FALSE; // Coefficient update flag _SPDCTRMODE_EXT LPF_OUT scm_stSpdFbkLpf = LPF_OUT_DEFAULT; // Speed feedback LPF _SPDCTRMODE_EXT UWORD scm_uwSpdFbkLpfAbsPu = 0; // Q15, Speed feedback LPF absolute _SPDCTRMODE_EXT SWORD scm_swMotorPwrInPu = 0; // Q15, Input power of motor _SPDCTRMODE_EXT SWORD scm_swSystemPwrInPu = 0; // Q15, Input power of motor _SPDCTRMODE_EXT LPF_OUT scm_stMotoPwrInLpf = LPF_OUT_DEFAULT; // Input power of motor after LPF _SPDCTRMODE_EXT LPF_OUT scm_stPCBTempLpf= LPF_OUT_DEFAULT; _SPDCTRMODE_EXT LPF_OUT scm_stMotorTempLpf= LPF_OUT_DEFAULT; _SPDCTRMODE_EXT SWORD scm_swMotorPwrInLpfWt = 0; // unit: 0.1w, Input power of motor after LPF _SPDCTRMODE_EXT UWORD scm_uwMotorPwrInAvgPu = 0; // Q15, Input power of motor after average filter _SPDCTRMODE_EXT BOOL scm_blDtcEnFlg = FALSE; // Dead band compansation enable flag _SPDCTRMODE_EXT BOOL scm_blOobEnFlg = FALSE; // OOB calculate enable flag _SPDCTRMODE_EXT SWORD scm_swUdRefPu = 0; _SPDCTRMODE_EXT SWORD scm_swUqRefPu = 0; _SPDCTRMODE_EXT SWORD scm_swUalphaFbkPu = 0; _SPDCTRMODE_EXT SWORD scm_swUbetaFbkPu = 0; _SPDCTRMODE_EXT SWORD scm_swUalphaRefPu = 0; _SPDCTRMODE_EXT SWORD scm_swUbetaRefPu = 0; _SPDCTRMODE_EXT SWORD scm_swUalphaCompPu = 0; _SPDCTRMODE_EXT SWORD scm_swUbetaCompPu = 0; _SPDCTRMODE_EXT UWORD scm_uwHfiAngZ1Pu = 0; _SPDCTRMODE_EXT SLONG scm_slAngSumPu = 0; _SPDCTRMODE_EXT BOOL scm_blAngSumOvrFlg = FALSE; _SPDCTRMODE_EXT UWORD scm_uwStartMdSw = 0; _SPDCTRMODE_EXT UWORD scm_uwStartMd = 0; _SPDCTRMODE_EXT UWORD scm_uwInitPosMd = 0; _SPDCTRMODE_EXT UWORD scm_uwInitPosMdSw = 0; _SPDCTRMODE_EXT SWORD scm_swUdPu = 0; _SPDCTRMODE_EXT SWORD scm_swUqPu = 0; _SPDCTRMODE_EXT SWORD scm_swMcPgCW = 0; _SPDCTRMODE_EXT SWORD scm_swMcPgCWPre = 0; _SPDCTRMODE_EXT UWORD scm_uwZSAEn = 0; _SPDCTRMODE_EXT UWORD scm_uwStupThetaPu = 0; _SPDCTRMODE_EXT UWORD scm_uwHfiOvrCnt = 0; _SPDCTRMODE_EXT SWORD scm_swVsLimPu = 0; _SPDCTRMODE_EXT SWORD scm_swVsDcpLimPu = 0; _SPDCTRMODE_EXT SWORD scm_swVsDcpLimPu_Assist = 0; _SPDCTRMODE_EXT SWORD scm_swUdLimPu = 0; _SPDCTRMODE_EXT SWORD scm_swUqLimPu = 0; _SPDCTRMODE_EXT ULONG scm_ulCloseCt = 0; _SPDCTRMODE_EXT BOOL scm_blCVBFlg = FALSE; _SPDCTRMODE_EXT BOOL scm_blCVBIdFlg = FALSE; _SPDCTRMODE_EXT UWORD scm_uwRunMdSw = 0; _SPDCTRMODE_EXT ULONG scm_ulRunMdSwCt = 0; _SPDCTRMODE_EXT BOOL scm_StartUpOvrFlg = FALSE; // Start up over flag _SPDCTRMODE_EXT SWORD scm_swStopPWMOffFlag = 0; _SPDCTRMODE_EXT SLONG scm_slAngErrPu = 0; #else _SPDCTRMODE_EXT SWORD swCurRefrompu; _SPDCTRMODE_EXT SPD_STATE_HOOK curSpeed_state; _SPDCTRMODE_EXT UWORD scm_uwCradleEn; _SPDCTRMODE_EXT UWORD scm_uwLqPu; _SPDCTRMODE_EXT SWORD scm_swSpdRefPu; _SPDCTRMODE_EXT SWORD scm_swUalphaPu; _SPDCTRMODE_EXT SWORD scm_swUbetaPu; _SPDCTRMODE_EXT LPF_OUT scm_stIqLoadLpf; _SPDCTRMODE_EXT LPF_OUT scm_stIdFbkLpf; _SPDCTRMODE_EXT LPF_OUT scm_stIqFbkLpf; _SPDCTRMODE_EXT LPF_OUT scm_stIqRefforDesat; // Iq reference LPF _SPDCTRMODE_EXT LPF_OUT scm_stIqFbkforDesat; // Iq feedback LPF _SPDCTRMODE_EXT SWORD scm_swIdFdbLpfPu; _SPDCTRMODE_EXT SWORD scm_swIqFdbLpfPu; _SPDCTRMODE_EXT SLONG scm_slIdRefPu; _SPDCTRMODE_EXT SLONG scm_slIqRefPu; _SPDCTRMODE_EXT SWORD scm_swIdRefPu; _SPDCTRMODE_EXT SWORD scm_swIqRefPu; _SPDCTRMODE_EXT UWORD scm_uwAngRefPu; _SPDCTRMODE_EXT UWORD scm_uwAngParkPu; _SPDCTRMODE_EXT UWORD scm_uwAngIParkPu; _SPDCTRMODE_EXT UWORD scm_uwAngIParkPu1; _SPDCTRMODE_EXT SWORD scm_swRotateDir; _SPDCTRMODE_EXT ULONG scm_ulStatCt; _SPDCTRMODE_EXT UWORD scm_uwAngManuPu; _SPDCTRMODE_EXT SLONG scm_slAngManuPu; _SPDCTRMODE_EXT SLONG scm_slDragSpdPu; _SPDCTRMODE_EXT SLONG scm_slDragSpdRefPu; _SPDCTRMODE_EXT BOOL scm_blCurSwitchOvrFlg; _SPDCTRMODE_EXT BOOL scm_blAngSwitchOvrFlg; _SPDCTRMODE_EXT UWORD scm_uwAngSwitchK; _SPDCTRMODE_EXT SWORD scm_swMotorPwrInWt; _SPDCTRMODE_EXT BOOL scm_blCoefUpdateFlg; _SPDCTRMODE_EXT LPF_OUT scm_stSpdFbkLpf; _SPDCTRMODE_EXT UWORD scm_uwSpdFbkLpfAbsPu; _SPDCTRMODE_EXT SWORD scm_swMotorPwrInPu; _SPDCTRMODE_EXT SWORD scm_swSystemPwrInPu; _SPDCTRMODE_EXT LPF_OUT scm_stMotoPwrInLpf; _SPDCTRMODE_EXT LPF_OUT scm_stPCBTempLpf; _SPDCTRMODE_EXT LPF_OUT scm_stMotorTempLpf; _SPDCTRMODE_EXT SWORD scm_swMotorPwrInLpfWt; _SPDCTRMODE_EXT UWORD scm_uwMotorPwrInAvgPu; _SPDCTRMODE_EXT BOOL scm_blDtcEnFlg; _SPDCTRMODE_EXT BOOL scm_blOobEnFlg; _SPDCTRMODE_EXT SWORD scm_swUdRefPu; _SPDCTRMODE_EXT SWORD scm_swUqRefPu; _SPDCTRMODE_EXT SWORD scm_swUalphaFbkPu; _SPDCTRMODE_EXT SWORD scm_swUbetaFbkPu; _SPDCTRMODE_EXT SWORD scm_swUalphaRefPu; _SPDCTRMODE_EXT SWORD scm_swUbetaRefPu; _SPDCTRMODE_EXT SWORD scm_swUalphaCompPu; _SPDCTRMODE_EXT SWORD scm_swUbetaCompPu; _SPDCTRMODE_EXT UWORD scm_uwHfiAngZ1Pu; _SPDCTRMODE_EXT SLONG scm_slAngSumPu; _SPDCTRMODE_EXT BOOL scm_blAngSumOvrFlg; _SPDCTRMODE_EXT UWORD scm_uwStartMdSw; _SPDCTRMODE_EXT UWORD scm_uwStartMd; _SPDCTRMODE_EXT UWORD scm_uwInitPosMd; _SPDCTRMODE_EXT UWORD scm_uwInitPosMdSw; _SPDCTRMODE_EXT SWORD scm_swUdPu; _SPDCTRMODE_EXT SWORD scm_swUqPu; _SPDCTRMODE_EXT SWORD scm_swMcPgCW; _SPDCTRMODE_EXT SWORD scm_swMcPgCWPre; _SPDCTRMODE_EXT UWORD scm_uwZSAEn; _SPDCTRMODE_EXT UWORD scm_uwStupThetaPu; _SPDCTRMODE_EXT UWORD scm_uwHfiOvrCnt; _SPDCTRMODE_EXT SWORD scm_swVsLimPu; _SPDCTRMODE_EXT SWORD scm_swVsDcpLimPu; _SPDCTRMODE_EXT SWORD scm_swVsDcpLimPu_Assist; _SPDCTRMODE_EXT SWORD scm_swUdLimPu; _SPDCTRMODE_EXT SWORD scm_swUqLimPu; _SPDCTRMODE_EXT ULONG scm_ulCloseCt; _SPDCTRMODE_EXT BOOL scm_blCVBFlg; _SPDCTRMODE_EXT BOOL scm_blCVBIdFlg; _SPDCTRMODE_EXT BOOL scm_StartUpOvrFlg; // Start up over flag _SPDCTRMODE_EXT SWORD scm_swStopPWMOffFlag; #endif /************************************************************************ RAM ALLOCATION (N/A) *************************************************************************/ /************************************************************************ Local Function Call Prototypes (N/A) *************************************************************************/ /************************************************************************ Flag Define (N/A) *************************************************************************/ /***********************************************************************/ #endif /************************************************************************ Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd. All rights reserved. ************************************************************************* End of this File (EOF)! Do not put anything after this part! *************************************************************************/