📄 close.c
字号:
#include "Cpu.h"
#include "Events.h"
#include "Close.h"
#include "Smopos.h"
#include "Clarke.h"
#include "Iclarke.h"
#include "Park.h"
#include "Ipark.h"
#include "Filter.h"
#include "Curreg.h"
extern int Vbus;
extern int vsalfa;
extern int vsbeta;
extern int k;
extern int sina[180];
extern int cosa[180];
extern int alfa;
extern int beta;
extern int isalfa;
extern int isbeta;
extern int thetae;
extern int theta;
extern int d1;
extern int q1;
extern int id;
extern int iq;
extern int num;
extern int isalfae; /* Q15 alfa axis estimated current */
extern int isbetae; /* Q15 beta axis estimated current */
extern int istemp;
extern int gujun;
extern int thetabuf[5];
extern int nbuf;
extern bool filter1;
void Close(void)
{
long int temp32;
long int temp33;
long int temp34;
int temp=18919; /* Q15 represent 0.5774 */
int numv;
numv=num+1; /* modify the value to get better performance */
if(numv>=360)
numv=numv-360;
/* calculate the vsalfa and vsbeta */
temp32=(L_mult(Vbus,k))>>16; /* Q6 */
if(numv<180)
{
temp33=(L_mult(cosa[numv],temp))>>16; /* Q15 */
temp34=(L_mult((int)temp32,(int)temp33))>>16; /* Q6 */
vsalfa=(int)temp34;
temp33=(L_mult(sina[numv],temp))>>16; /* Q15 */
temp34=(L_mult((int)temp32,(int)temp33))>>16; /* Q6 */
vsbeta=(int)temp34;
}
else
{
temp33=(L_mult(cosa[360-numv],temp))>>16; /* Q15 */
temp34=(L_mult((int)temp32,(int)temp33))>>16; /* Q6 */
vsalfa=(int)temp34;
temp33=(L_mult(-sina[360-numv],temp))>>16; /* Q15 */
temp34=(L_mult((int)temp32,(int)temp33))>>16; /* Q6 */
vsbeta=(int)temp34;
}
/* calculate the rotor position */
Clarke(); /* Ia->alfa, Ib->beta */
isalfa=alfa; /* Q15 */
isbeta=beta; /* Q15 */
if(istemp==1)
{
isalfae=isalfa;
isbetae=isalfae;
istemp=0;
}
Smopos(); /* Rotor position calculate */
/* calculate the id and iq */
theta=thetae;
theta-=70; /* angle correction */
if(theta<0)
theta+=360;
Park();
id=d1; /* Q15 */
iq=q1; /* Q15 */
Curreg();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -