📄 aci.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 + -