📄 curreg.c
字号:
#include "Cpu.h"
#include "Events.h"
#include "Curreg.h"
#include "Ipark.h"
#include "Svpwm.h"
extern int id; /* Q15 */
extern int iq; /* Q15 */
extern int idref; /* Q15 */
extern int iqref; /* Q15 */
extern int udout; /* Q6 */
extern int uqout; /* Q6 */
extern int ualfa; /* Q6 */
extern int ubeta; /* Q6 */
extern int d1; /* Q6 */
extern int q1; /* Q6 */
extern int alfa; /* Q6 */
extern int beta; /* Q6 */
extern int theta;
extern int sina[180];
extern int cosa[180];
extern bool negative;
extern int gujun;
extern int xdtemp0; /* Q6 */
extern int xqtemp0; /* Q6 */
void Curreg(void)
{
long int temp32;
long int temp33;
int errid; /* Id error */
int erriq; /* Iq error */
int kpd=512; /* Q8 */
int kid=128; /* Q8 */
int kcd=8192; /* Q0 */
int kpq=512; /* Q8 */
int kiq=128; /* Q8 */
int kcq=8192; /* Q0 */
int udmin=-2200; /* Q6 d axis min value */
int udmax=-2100; /* Q6 d axis max value */
int uqmin=-100; /* Q6 q axis min value */
int uqmax=100; /* Q6 q axis max value */
int udtemp; /* Q6 used to calculate ud */
int uqtemp; /* Q6 used to calculate uq */
/* d axis adjustment */
errid=idref-id; /* Q15 */
temp32=(L_mult(kpd,errid))>>18; /* Q6 */
udtemp=xdtemp0+(int)(temp32); /* Q6 */
if(udtemp>udmax) /* Q6 */
udout=udmax;
else if(udtemp<udmin) /* Q6 */
udout=udmin;
else
udout=udtemp; /* Q6 */
temp32=(L_mult(kid,errid))>>18; /* Q6 */
temp33=(L_mult(kcd,(udout-udtemp)))>>16; /* Q6 */
xdtemp0=xdtemp0+(int)(temp32+temp33); /* Q6 */
/* q axis adjustment */
erriq=iqref-iq; /* Q15 */
temp32=(L_mult(kpq,erriq))>>18; /* Q6 */
uqtemp=xqtemp0+(int)(temp32);
if(uqtemp>uqmax) /* Q6 */
uqout=uqmax;
else if(uqtemp<uqmin) /* Q6 */
uqout=uqmin;
else
uqout=uqtemp;
temp32=(L_mult(kiq,erriq))>>18; /* Q6 */
temp33=(L_mult(kcq,(uqout-uqtemp)))>>16; /* Q6 */
xqtemp0=xqtemp0+(int)(temp32+temp33); /* Q6 */
d1=udout; /* Q6 */
q1=uqout; /* Q6 */
Ipark();
ualfa=alfa; /* Q6 */
ubeta=beta; /* Q6 */
Svpwm();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -