close.c
来自「用freescale公司的DSP56F8013芯片实现的PMSM的SVPWM 驱」· C语言 代码 · 共 97 行
C
97 行
#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 + =
减小字号Ctrl + -
显示快捷键?