⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aci.c

📁 伺服控制数学模型
💻 C
字号:
/*=====================================================================================
 File name:        ACI.C                   
                    
 Originator:	Digital Control Systems Group
			Texas Instruments

 Description:  Emulated Induction Motor in the Stationary Reference Frame                 

=====================================================================================
 History:
-------------------------------------------------------------------------------------
 04-15-2005	Version 3.20
-------------------------------------------------------------------------------------*/

#include "dmctype.h"
#include "aci.h"

void aci_calc(ACI *v)
{	

	float32 PredictedPsiAlpha, PredictedPsiBeta, PredictedIalpha, PredictedIbeta;
	float32 DPredictedPsiAlpha, DPredictedPsiBeta, DPredictedIalpha, DPredictedIbeta;
	float32 DPsiAlpha, DPsiBeta, DIalpha, DIbeta;
	float32 PredictedWr, DPredictedWr, DWr;

// Rotor flux/Stator current calculation
   // Predictor
   PredictedPsiBeta = v->PsiBeta - v->K1*v->PsiBeta + v->K2*v->Wr*v->PsiAlpha + v->K3*v->Ibeta;  
   PredictedPsiAlpha = v->PsiAlpha - v->K1*v->PsiAlpha - v->K2*v->Wr*v->PsiBeta + v->K3*v->Ialpha;
   PredictedIbeta = v->Ibeta + v->K4*v->PsiBeta - v->K5*v->Wr*v->PsiAlpha - v->K6*v->Ibeta + v->K7*v->Ubeta;  
   PredictedIalpha = v->Ialpha + v->K4*v->PsiAlpha + v->K5*v->Wr*v->PsiBeta - v->K6*v->Ialpha + v->K7*v->Ualpha;

   // Corrector
   DPredictedPsiBeta = - v->K1*PredictedPsiBeta + v->K2*v->Wr*PredictedPsiAlpha + v->K3*PredictedIbeta;  
   DPredictedPsiAlpha = - v->K1*PredictedPsiAlpha - v->K2*v->Wr*PredictedPsiBeta + v->K3*PredictedIalpha;
   DPredictedIbeta = v->K4*PredictedPsiBeta - v->K5*v->Wr*PredictedPsiAlpha - v->K6*PredictedIbeta + v->K7*v->Ubeta;  
   DPredictedIalpha = v->K4*PredictedPsiAlpha + v->K5*v->Wr*PredictedPsiBeta - v->K6*PredictedIalpha + v->K7*v->Ualpha;

   
   DPsiBeta = PredictedPsiBeta - v->PsiBeta;  
   DPsiAlpha = PredictedPsiAlpha - v->PsiAlpha;  
   DIbeta = PredictedIbeta - v->Ibeta;  
   DIalpha = PredictedIalpha - v->Ialpha; 

   /*
   DPsiBeta = - v->K1*v->PsiBeta + v->K2*v->Wr*v->PsiAlpha + v->K3*v->Ibeta;  
   DPsiAlpha = - v->K1*v->PsiAlpha - v->K2*v->Wr*v->PsiBeta + v->K3*v->Ialpha;
   DIbeta = v->K4*v->PsiBeta - v->K5*v->Wr*v->PsiAlpha - v->K6*v->Ibeta + v->K7*v->Ubeta;  
   DIalpha = v->K4*v->PsiAlpha + v->K5*v->Wr*v->PsiBeta - v->K6*v->Ialpha + v->K7*v->Ualpha;
   */
	   
   v->PsiBeta = v->PsiBeta + 0.5*((1+v->Alpha)*DPredictedPsiBeta + (1-v->Alpha)*DPsiBeta);
   v->PsiAlpha = v->PsiAlpha + 0.5*((1+v->Alpha)*DPredictedPsiAlpha + (1-v->Alpha)*DPsiAlpha);
   
   v->Ibeta = v->Ibeta + 0.5*((1+v->Alpha)*DPredictedIbeta + (1-v->Alpha)*DIbeta);
   v->Ialpha = v->Ialpha + 0.5*((1+v->Alpha)*DPredictedIalpha + (1-v->Alpha)*DIalpha);
    
// Electromagnetic Torque calculation 
   v->Torque = v->K8*(v->PsiAlpha*v->Ibeta - v->PsiBeta*v->Ialpha);
   
// Rotor speed calculation
   PredictedWr = v->Wr - v->K9*v->Wr + v->K10*(v->Torque - v->LoadTorque);

   DPredictedWr = - v->K9*PredictedWr + v->K10*(v->Torque - v->LoadTorque);
   
   DWr = PredictedWr - v->Wr;
   // DWr = - v->K9*v->Wr + v->K10*(v->Torque - v->LoadTorque);

   v->Wr = v->Wr + 0.5*((1+v->Alpha)*DPredictedWr + (1-v->Alpha)*DWr);
   v->WrRpm = v->Wr*v->BaseRpm;

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -