/* --------------------------- (C) COPYRIGHT 2020 Fortiortech ShenZhen ----------------------------- File Name : FiledWeaken.c Author : Fortiortech Appliction Team Version : V1.0 Date : 2020-10-15 Description : This file contains flux_weakening function used for Motor Control. ---------------------------------------------------------------------------------------------------- All Rights Reserved ------------------------------------------------------------------------------------------------- */ #include "FU68xx_5.h" #include #if (FiledWeakenCompEnable==1) FieldWeakeningTypeDef xdata mcFieldWeaken; void FiledWeakenControl(int16 Ud, int16 Uq, uint16 Dcbusk, int16 Is) { //获取Us和Udc。 SCAT1_COS = Ud; SCAT1_SIN = Uq; SMDU_RunBlock(1, 5); mcFieldWeaken.FieldWeakenActualUS_Q15 = SCAT1_RES1; mcFieldWeaken.FieldWeakenActualDcbus_Q15 = Dcbusk; //获取Is的角度。 PI1_EK = mcFieldWeaken.FieldWeakenActualDcbus_Q15 - mcFieldWeaken.FieldWeakenActualUS_Q15; SMDU_RunBlock(1, 7); //调用MDU运算单元0中的PI模式(7) mcFieldWeaken.FieldWeakenIsTheta = PI1_UKH; //获取D轴电流和Q轴电流参考值。 SCAT1_COS = Is; SCAT1_THE = mcFieldWeaken.FieldWeakenIsTheta; SCAT1_SIN = 0; SMDU_RunBlock(1, 4); mcFieldWeaken.mcIdref = SCAT1_RES2 ;//sin的结果 mcFieldWeaken.mcIqref = SCAT1_RES1;//cos的结果 } ///* ------------------------------------------------------------------------------------------------- // Function Name : GetFieldWeakenUsAndUdc_Q15 // Description : 获取Us和Udc。 // Date : 2020-10-15 // Parameter : Ud: [输入] //** Uq: [输入] //** Dcbus: [输入] //------------------------------------------------------------------------------------------------- */ //void GetFieldWeakenUsAndUdc_Q15(int16 Ud, int16 Uq , uint16 Dcbus) //{ //// mcFieldWeaken.FieldWeakenRunUD = Ud; //// mcFieldWeaken.FieldWeakenRunUQ = Uq; //// mcFieldWeaken.FieldWeakenActualDcbus = Dcbus * mcFieldWeaken.FieldWeakenHwBoardVoltMax / 32767.0;//求出实际母线电压 //// //// // mcFieldWeaken.FieldWeakenRunUS = mcFieldWeaken.FieldWeakenRunUD* mcFieldWeaken.FieldWeakenRunUD + mcFieldWeaken.FieldWeakenRunUQ * mcFieldWeaken.FieldWeakenRunUQ;// //// mcFieldWeaken.FieldWeakenActualUS_Q15 = sqrt(mcFieldWeaken.FieldWeakenRunUD * mcFieldWeaken.FieldWeakenRunUD + mcFieldWeaken.FieldWeakenRunUQ * mcFieldWeaken.FieldWeakenRunUQ) * mcFieldWeaken.FieldWeakenActualDcbus / 1.732 / mcFieldWeaken.FieldWeakenHwBoardVoltageBase;// sqrt(mcFieldWeaken.FieldWeakenRunUS) / 1.732 / mcFieldWeaken.FieldWeakenHwBoardVoltageBase; //// //// mcFieldWeaken.FieldWeakenActualDcbus_Q15 = Dcbus * mcFieldWeaken.FieldWeakenDcbusK; // // SCAT2_COS = Ud; // SCAT2_SIN = Uq; // SMDU_RunBlock(2, 5); // mcFieldWeaken.FieldWeakenActualUS_Q15 = SCAT2_RES1; // mcFieldWeaken.FieldWeakenActualDcbus_Q15=DcbusK; // // //} ///* ------------------------------------------------------------------------------------------------- // Function Name : GetFieldWeakenUsAndUdc_Q15 // Description : 获取D轴电流和Q轴电流参考值。 // Date : 2020-10-15 // Parameter : Is: [输入] //------------------------------------------------------------------------------------------------- */ //void GetFieldWeakenIdRefAndIqRef_Q15(int16 Is) //{ //// mcFocCtrl.IqRef = Is * cos(mcFieldWeaken.FieldWeakenIsTheta); //// mcFocCtrl.IdRef = Is * sin(mcFieldWeaken.FieldWeakenIsTheta); // // SCAT3_COS = Is; // SCAT3_THE = mcFieldWeaken.FieldWeakenIsTheta; // SCAT3_SIN = 0; // SMDU_RunBlock(3,4); // mcFieldWeaken.mcIdref = SCAT3_RES2 ;//sin的结果 // mcFieldWeaken.mcIqref = SCAT3_RES1;//cos的结果 // //} ///* ------------------------------------------------------------------------------------------------- // Function Name : GetFieldWeakenIsTheta_Q15 // Description : 获取Is的角度。 // Date : 2020-10-15 // Parameter : None //------------------------------------------------------------------------------------------------- */ //void GetFieldWeakenIsTheta_Q15(void) //{ // mcFieldWeaken.FieldWeakenIsTheta = mcFieldWeakenPI(mcFieldWeaken.FieldWeakenActualUS_Q15 ,mcFieldWeaken.FieldWeakenActualDcbus_Q15) ; //} ///* ------------------------------------------------------------------------------------------------- // Function Name : mcFieldWeakenPI // Description : 功率环PI函数 // Date : 2020-09-16 // Parameter : feedbackvalue: [输入] //** referencevalue: [输入] //------------------------------------------------------------------------------------------------- */ //int16 mcFieldWeakenPI(int16 feedbackvalue, int16 referencevalue) //{ // PI1_EK = referencevalue - feedbackvalue; // SMDU_RunBlock(1 , 7); //调用MDU运算单元0中的PI模式(7) // return PI1_UKH; //} #endif