#include #if (FiledWeakenCompEnable) 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; // 计算弱磁角度 mcFieldWeaken.FieldWeakenIsTheta = HW_One_Calc(mcFieldWeaken.FieldWeakenActualDcbus_Q15 - mcFieldWeaken.FieldWeakenActualUS_Q15); //获取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的结果 } #endif