/************************************************************************ Project: Welling Motor Control Paltform Filename: glbcof.c Partner Filename: glbcof.h Description: The global coefficients 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 _GLBCOF_C_ #define _GLBCOF_C_ #endif /************************************************************************ Included File *************************************************************************/ #include "syspar.h" #include "user.h" /************************************************************************ Constant Table (N/A) *************************************************************************/ /************************************************************************* Exported Functions (N/A) *************************************************************************/ /*************************************************************** Function: cof_voSysInit; Description: global power on initialization Call by: Input Variables: N/A Output/Return Variables: N/A Subroutine Call: N/A; Reference: N/A ****************************************************************/ void cof_voSysInit(void) { /*======================================================================= Base value =======================================================================*/ cof_uwUbVt = VBASE; /* unit: 0.1V, Voltage base */ cof_uwIbAp = IBASE; /* unit: 0.01A, Current base */ cof_uwFbHz = FBASE; /* unit: Hz, Frequency base */ cof_uwTorqNm = TORQUEBASE; /* unit:0.1Nm, torque base */ cof_uwPairs = cp_stMotorPara.swMotrPolePairs; /* Pole pairs base */ cof_uwWebRadps = 2 * 31416 * cof_uwFbHz / 1000; /* unit: 0.1rad/s, Electrical radian frequency base */ cof_uwTbUs = 100000000 / cof_uwWebRadps; /* unit: 0.1us, Time base */ cof_uwRbOm = (UWORD)((ULONG)cof_uwUbVt * 100000 / cof_uwIbAp); /* unit: 0.1mOhm, Resistance base */ cof_uwLbHm = (UWORD)((ULONG)cof_uwRbOm * 100000 / cof_uwWebRadps); /* unit: 0.01uH, Inductance base */ cof_uwFluxbWb = (UWORD)((ULONG)cof_uwUbVt * 1000000 / cof_uwWebRadps); /* unit: 0.001mWb, Flux linkage base */ cof_uwPbWt = (UWORD)((ULONG)3 * cof_uwUbVt * cof_uwIbAp / 100 >> 1); /* unit: 0.1w, Power base */ cof_uwWmb = (UWORD)((ULONG)cof_uwWebRadps / cof_uwPairs); /* unit: 0.1rad/s, Mechanical radian frequency base */ cof_uwTbNm = (UWORD)((ULONG)cof_uwPbWt * 1000 / cof_uwWmb); /* unit: mNm, Torque base */ cof_uwJb = (UWORD)((ULONG)cof_uwTbNm * cof_uwTbUs * 10 / cof_uwWmb); /* unit: 10^-10*kg*m2, Rotational inertia base */ cof_uwVbRpm = (UWORD)((ULONG)cof_uwFbHz * 60 / cof_uwPairs); /* unit: rpm, Velocity base */ /*======================================================================= Pu value =======================================================================*/ cof_uwTCurCtrPu = 2 * 102944 * cof_uwFbHz / FTBC_HZ; /* Q15, Current control period Pu, pi(Q15)=102944 */ cof_uwTSpdCtrPu = 2 * 12868 * cof_uwFbHz / FTBS_HZ; /* Q12, Speed control period Pu, pi(Q12)=12868 */ cof_uwRsPu = (UWORD)(((ULONG)cp_stMotorPara.swRsOhm << 15) / cof_uwRbOm); /* Q15, Phase resistance */ cof_uwLdPu = (UWORD)(((ULONG)cp_stMotorPara.swLdmH << 10) / cof_uwLbHm); /* Q10, D axis inductance */ cof_uwLqPu = (UWORD)(((ULONG)cp_stMotorPara.swLqmH << 10) / cof_uwLbHm); /* Q10, Q axis inductance */ cof_uwFluxPu = (UWORD)(((ULONG)cp_stMotorPara.swFluxWb << 12) / cof_uwFluxbWb); /* Q12, Flux linkage */ cof_uwJmPu = (UWORD)(((ULONG)cp_stMotorPara.swJD * 1000) / cof_uwJb); /* Q0, Rotational inertia */ cof_swIdMinPu = (SWORD)(((SLONG)cp_stMotorPara.swIdMinA << 14) / (SWORD)cof_uwIbAp); /* Q14, Min d axis current (Charactoristic current) */ cof_swIdMaxPu = (SWORD)(((SLONG)cp_stMotorPara.swIdMaxA << 14) / (SWORD)cof_uwIbAp); /* Q14, Max d axis current */ cof_uwCurMaxPu = (UWORD)(((ULONG)cp_stMotorPara.swIpeakMaxA << 14) / cof_uwIbAp); /* Q14, Max phase current (peak value) */ cof_uwPwrMaxPu = (UWORD)(((ULONG)M_POWER_MAX_WT << 14) * 10 / cof_uwPbWt); /* Q14, Max power of motor input */ cof_uwLdMinPu = (UWORD)(((ULONG)M_LD_MIN_MH << 10) / cof_uwLbHm); /* Q10, D axis inductance */ cof_uwLqMinPu = (UWORD)(((ULONG)M_LQ_MIN_MH << 10) / cof_uwLbHm); /* Q10, Q axis inductance */ /*======================================================================= Time value =======================================================================*/ cof_ulTbc10MsCt = TBC_MS2CT(10); /* ms to count in TBC */ cof_ulTbc20MsCt = TBC_MS2CT(20); /* ms to count in TBC */ cof_ulTbc50MsCt = TBC_MS2CT(50); /* ms to count in TBC */ cof_ulTbc60MsCt = TBC_MS2CT(60); /* ms to count in TBC */ cof_ulTbc100MsCt = TBC_MS2CT(100); /* ms to count in TBC */ cof_ulTbc200MsCt = TBC_MS2CT(200); /* ms to count in TBC */ cof_ulTbc250MsCt = TBC_MS2CT(250); /* ms to count in TBC */ cof_ulTbc300MsCt = TBC_MS2CT(300); /* ms to count in TBC */ cof_ulTbc400MsCt = TBC_MS2CT(400); /* ms to count in TBC */ cof_ulTbc450MsCt = TBC_MS2CT(450); /* ms to count in TBC */ cof_ulTbc500MsCt = TBC_MS2CT(500); /* ms to count in TBC */ cof_ulTbc1SCt = TBC_S2CT(1); /* s to count in TBC */ cof_ulTbc2SCt = TBC_S2CT(2); /* s to count in TBC */ /*======================================================================= Angle value =======================================================================*/ cof_sl0DegreePu = ANG_DEG2PU(0); cof_sl30DegreePu = ANG_DEG2PU(30); cof_sl60DegreePu = ANG_DEG2PU(60); cof_sl90DegreePu = ANG_DEG2PU(90); cof_sl120DegreePu = ANG_DEG2PU(120); cof_sl150DegreePu = ANG_DEG2PU(150); cof_sl180DegreePu = ANG_DEG2PU(180); cof_sl210DegreePu = ANG_DEG2PU(210); cof_sl240DegreePu = ANG_DEG2PU(240); cof_sl270DegreePu = ANG_DEG2PU(270); cof_sl300DegreePu = ANG_DEG2PU(300); cof_sl330DegreePu = ANG_DEG2PU(330); cof_sl360DegreePu = ANG_DEG2PU(360); cof_sl720DegreePu = ANG_DEG2PU(720); /*======================================================================= Speed value =======================================================================*/ cof_uw100RpmPu = SPD_RPM2PU(100); cof_uw200RpmPu = SPD_RPM2PU(200); cof_uw300RpmPu = SPD_RPM2PU(300); cof_uw500RpmPu = SPD_RPM2PU(500); cof_uw1000RpmPu = SPD_RPM2PU(1000); cof_uw2000RpmPu = SPD_RPM2PU(2000); cof_uw3000RpmPu = SPD_RPM2PU(3000); cof_uw4000RpmPu = SPD_RPM2PU(4000); cof_uw5000RpmPu = SPD_RPM2PU(5000); cof_uw6000RpmPu = SPD_RPM2PU(6000); } /************************************************************************* Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd. All rights reserved. *************************************************************************/ #ifdef _GLBCOF_C_ #undef _GLBCOF_C_ /* parasoft-suppress MISRA2004-19_6 "本项目中无法更改,后续避免使用" */ #endif /************************************************************************* End of this File (EOF)! Do not put anything after this part! *************************************************************************/