/************************************************************************ Project: Welling Motor Control Paltform Filename: acr.h Partner Filename: acr.c Description: The header file of acr.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): Miaozhou create this file; ************************************************************************/ /************************************************************************ Beginning of File, do not put anything above here except notes Compiler Directives: *************************************************************************/ #ifndef ACR_H #define ACR_H #include "typedefine.h" #include "macroequ.h" /************************************************************************ Compiler Directives (N/A) *************************************************************************/ #ifdef _ACR_C_ #define _ACR_EXT #else #define _ACR_EXT extern #endif /************************************************************************ Definitions & Macros *************************************************************************/ #define ACR_CURPI_COF_DEFAULT \ { \ 0, 0, 0 \ } // Default value of ACR_CURPI_COF #define ACR_CURPI_OUT_DEFAULT \ { \ 0, 0, 0, 0 \ } // Default value of ACR_CURPI_OUT #define ACR_UDQDCP_COF_DEFAULT \ { \ 0, 0, 0 \ } // Default value of ACR_UDQDCP_COF #define ACR_UDQDCP_OUT_DEFAULT \ { \ 0, 0 \ } // Default value of ACR_UDQDCP_OUT /************************************************************************ TypeDefs & Structure Defines *************************************************************************/ typedef struct { // Input of " acr_voCurPI " SWORD swCurRefPu; // Q14, Current reference SWORD swCurFdbPu; // Q14, Current feedback SWORD swUmaxPu; // Q12, Voltage output maximum limit SWORD swUminPu; // Q12, Voltage output minimum limit } ACR_CURPI_IN; typedef struct { // Output of " acr_voCurPI " SWORD swURefPu; // Q14, Output voltage feedback SLONG slURefPu; // Q26, Output voltage feedback SWORD swErrZ1Pu; // Q14, Error recorder SLONG slURefRemPu; // Q26, Remainder Output } ACR_CURPI_OUT; typedef struct { // Input of " acr_voCurPI " UWORD uwKpPu; // Q12, Current coefficient of proportion UWORD uwKitPu; // Q15, Current coefficient of Integral UWORD uwRaPu; // Q15, Active Resistance } ACR_CURPI_COF; /*************************************************************************/ typedef struct { // Input of " acr_voCurPI " UWORD uwUbVt; // unit: 0.1V, Voltage base UWORD uwIbAp; // unit: 0.01A, Current base UWORD uwFbHz; // unit: Hz, Frequency base UWORD uwLHm; // unit: mH, Motor phase inductance UWORD uwMtRsOh; // unit: Ohm, Motor phase resistance UWORD uwFTbcHz; // TBC frequency UWORD uwRaCoef; // Coefficient of Active Resistance UWORD uwWicHz; // unit: Hz, Current loop frequency bandwidth } ACR_CURPI_COFIN; /************************************************************************/ typedef struct { // Input of "acr_voUdqDcp" SWORD swWsPu; // Q15, Stator electrical frequency SWORD swIdRefPu; // Q14, D axis current reference SWORD swIqRefPu; // Q14, Q axis current reference SWORD swUdqLimPu; // Q14, UDQ Limit } ACR_UDQDCP_IN; typedef struct { // Output of "acr_voUdqDcp" SWORD swUdPu; // Q12, D axis voltage SWORD swUqPu; // Q12, Q axis voltage } ACR_UDQDCP_OUT; typedef struct { // Input of "acr_voUdqDcp" UWORD uwLdPu; // Q10, D axis inductance UWORD uwLqPu; // Q10, Q axis inductance UWORD uwFluxFPu; // Q12, FluxF } ACR_UDQDCP_COF; /************************************************************************/ typedef struct { // Input of "acr_voUdqDcp" UWORD uwLdHm; // unit: 0.01mH, D axis inductance UWORD uwLqHm; // unit: 0.01mH, Q axis inductance UWORD uwMtFlxWb; // unit: 0.01mWb, FluxF UWORD uwUbVt; // unit: 0.1V, Voltage base UWORD uwFbHz; // unit: Hz, Frequency base UWORD uwIbAp; // unit: 0.01A, Current base } ACR_UDQDCP_COFIN; /*************************************************************************/ /************************************************************************ Exported Variables: *************************************************************************/ /************************************************************************ Exported Variables *************************************************************************/ #ifdef _ACR_C_ _ACR_EXT ACR_CURPI_OUT acr_stCurIdPIOut = ACR_CURPI_OUT_DEFAULT; _ACR_EXT ACR_CURPI_OUT acr_stCurIqPIOut = ACR_CURPI_OUT_DEFAULT; _ACR_EXT ACR_CURPI_COF acr_stCurIdPICoef = ACR_CURPI_COF_DEFAULT; _ACR_EXT ACR_CURPI_COF acr_stCurIqPICoef = ACR_CURPI_COF_DEFAULT; _ACR_EXT ACR_UDQDCP_OUT acr_stUdqDcpOut = ACR_UDQDCP_OUT_DEFAULT; _ACR_EXT ACR_UDQDCP_COF acr_stUdqDcpCoef = ACR_UDQDCP_COF_DEFAULT; #else _ACR_EXT ACR_CURPI_OUT acr_stCurIdPIOut; _ACR_EXT ACR_CURPI_OUT acr_stCurIqPIOut; _ACR_EXT ACR_CURPI_COF acr_stCurIdPICoef; _ACR_EXT ACR_CURPI_COF acr_stCurIqPICoef; _ACR_EXT ACR_UDQDCP_OUT acr_stUdqDcpOut; _ACR_EXT ACR_UDQDCP_COF acr_stUdqDcpCoef; #endif /************************************************************************ Ram Allocation *************************************************************************/ #define acr_stCurIdPIIn (*(ACR_CURPI_IN *)TBC_BUFFER) #define acr_stCurIqPIIn (*(ACR_CURPI_IN *)TBC_BUFFER) #define acr_stCurIdPICoefIn (*(ACR_CURPI_COFIN *)MN_BUFFER) #define acr_stCurIqPICoefIn (*(ACR_CURPI_COFIN *)MN_BUFFER) #define acr_stUdqDcpCoefIn (*(ACR_UDQDCP_COFIN *)MN_BUFFER) #define acr_stUdqDcpIn (*(ACR_UDQDCP_IN *)TBC_BUFFER) /************************************************************************ Exported Function Call Prototypes *************************************************************************/ #ifdef _ACR_C_ _ACR_EXT void acr_voCurPI(ACR_CURPI_IN *in, ACR_CURPI_COF *coef, ACR_CURPI_OUT *out); _ACR_EXT void acr_voCurPI22(ACR_CURPI_IN *in, ACR_CURPI_COF *coef, ACR_CURPI_OUT *out); _ACR_EXT void acr_voCurPICoef(ACR_CURPI_COFIN *in, ACR_CURPI_COF *out); _ACR_EXT void acr_voCurPIInit(void); _ACR_EXT void acr_voUdqDcp(ACR_UDQDCP_IN *in, ACR_UDQDCP_COF *coef, ACR_UDQDCP_OUT *out); _ACR_EXT void acr_voUdqDcpCoef(ACR_UDQDCP_COFIN *in, ACR_UDQDCP_COF *out); _ACR_EXT void acr_voUdqDcpInit(void); #else _ACR_EXT void acr_voCurPI(ACR_CURPI_IN *in, ACR_CURPI_COF *coef, ACR_CURPI_OUT *out); _ACR_EXT void acr_voCurPI22(ACR_CURPI_IN *in, ACR_CURPI_COF *coef, ACR_CURPI_OUT *out); _ACR_EXT void acr_voCurPICoef(ACR_CURPI_COFIN *in, ACR_CURPI_COF *out); _ACR_EXT void acr_voCurPIInit(void); _ACR_EXT void acr_voUdqDcp(ACR_UDQDCP_IN *in, ACR_UDQDCP_COF *coef, ACR_UDQDCP_OUT *out); _ACR_EXT void acr_voUdqDcpCoef(ACR_UDQDCP_COFIN *in, ACR_UDQDCP_COF *out); _ACR_EXT void acr_voUdqDcpInit(void); #endif /************************************************************************ 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! *************************************************************************/