TI中文支持网
TI专业的中文技术问题搜集分享网站

SVPWM算法的问题

我改写SVPWM例程。

原来程序:

Ub   = _IQsinPU(v->Angle);

我看头文件:

#ifndef   GLOBAL_Q
#define   GLOBAL_Q       16
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。

#if GLOBAL_Q == 16
#define   _IQsinPU(A)  _IQ16sinPU(A)
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#define   _IQ16sinPU(A)       sin((A)*6.283185307)

可是我改写成Ub   = sin((v->Angle)*6.283185307);

电机不转。为什么?我观察计算后的值,也不一样。

奇了怪了。请高手解惑。谢谢!

 

Bruce Wei:

楼主你看的哪个程序,截个工程的图。

我改写SVPWM例程。

原来程序:

Ub   = _IQsinPU(v->Angle);

我看头文件:

#ifndef   GLOBAL_Q
#define   GLOBAL_Q       16
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。

#if GLOBAL_Q == 16
#define   _IQsinPU(A)  _IQ16sinPU(A)
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#define   _IQ16sinPU(A)       sin((A)*6.283185307)

可是我改写成Ub   = sin((v->Angle)*6.283185307);

电机不转。为什么?我观察计算后的值,也不一样。

奇了怪了。请高手解惑。谢谢!

 

ccb bcc:

回复 Bruce Wei:

好!

不是controlSUITE里的,那里面的太难懂。

我改写SVPWM例程。

原来程序:

Ub   = _IQsinPU(v->Angle);

我看头文件:

#ifndef   GLOBAL_Q
#define   GLOBAL_Q       16
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。

#if GLOBAL_Q == 16
#define   _IQsinPU(A)  _IQ16sinPU(A)
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#define   _IQ16sinPU(A)       sin((A)*6.283185307)

可是我改写成Ub   = sin((v->Angle)*6.283185307);

电机不转。为什么?我观察计算后的值,也不一样。

奇了怪了。请高手解惑。谢谢!

 

Bruce Wei:

楼主,你的代码的改写是基于 #ifndef   GLOBAL_Q,如多其他地方 define 了 GLOBAL_Q 而且 不是16,就会出现你说的情况。

我改写SVPWM例程。

原来程序:

Ub   = _IQsinPU(v->Angle);

我看头文件:

#ifndef   GLOBAL_Q
#define   GLOBAL_Q       16
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。

#if GLOBAL_Q == 16
#define   _IQsinPU(A)  _IQ16sinPU(A)
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#define   _IQ16sinPU(A)       sin((A)*6.283185307)

可是我改写成Ub   = sin((v->Angle)*6.283185307);

电机不转。为什么?我观察计算后的值,也不一样。

奇了怪了。请高手解惑。谢谢!

 

ccb bcc:

回复 Bruce Wei:

#include "RotateVector.h"#include "iqmathlib.h"

不是的。头文件就两个。

 GLOBAL_Q  16是在#include "iqmathlib.h"定义的。

#include "RotateVector.h"如下;

#include "IQMATHLIB.H"#ifndef __RotateVector_H__#define __RotateVector_H__

#define PI _IQ(3.1415926)

typedef struct{    void (*calc)(void *);    //输入    _iq Angle;  //旋转的角度  -1 ~ 1    _iq k;   //输出电压乘的系数  0~1    //输出    _iq  Ualpha;    // Input: reference alpha-axis phase voltage     _iq  Ubeta;   // Input: reference beta-axis phase voltage    }ROTATEVECTOR;

#define ROTATEVECTOR_DEFAULTS {(void (*)(void *))RotateVecotr_calc, \       0,0,0,0 }

typedef ROTATEVECTOR *RotateVecotr_Handle;

void RotateVecotr_calc(RotateVecotr_Handle);

#endif

我改写SVPWM例程。

原来程序:

Ub   = _IQsinPU(v->Angle);

我看头文件:

#ifndef   GLOBAL_Q
#define   GLOBAL_Q       16
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。

#if GLOBAL_Q == 16
#define   _IQsinPU(A)  _IQ16sinPU(A)
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#define   _IQ16sinPU(A)       sin((A)*6.283185307)

可是我改写成Ub   = sin((v->Angle)*6.283185307);

电机不转。为什么?我观察计算后的值,也不一样。

奇了怪了。请高手解惑。谢谢!

 

ccb bcc:

回复 ccb bcc:

顶,不能沉了啊!

我改写SVPWM例程。

原来程序:

Ub   = _IQsinPU(v->Angle);

我看头文件:

#ifndef   GLOBAL_Q
#define   GLOBAL_Q       16
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。

#if GLOBAL_Q == 16
#define   _IQsinPU(A)  _IQ16sinPU(A)
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#define   _IQ16sinPU(A)       sin((A)*6.283185307)

可是我改写成Ub   = sin((v->Angle)*6.283185307);

电机不转。为什么?我观察计算后的值,也不一样。

奇了怪了。请高手解惑。谢谢!

 

ccb bcc:

回复 ccb bcc:

extern    long _IQ16sinPU(long A);

还有一句这个,越发的看不懂了。

我改写SVPWM例程。

原来程序:

Ub   = _IQsinPU(v->Angle);

我看头文件:

#ifndef   GLOBAL_Q
#define   GLOBAL_Q       16
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。

#if GLOBAL_Q == 16
#define   _IQsinPU(A)  _IQ16sinPU(A)
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#define   _IQ16sinPU(A)       sin((A)*6.283185307)

可是我改写成Ub   = sin((v->Angle)*6.283185307);

电机不转。为什么?我观察计算后的值,也不一样。

奇了怪了。请高手解惑。谢谢!

 

ccb bcc:

回复 ccb bcc:

Ub   = _IQ16sinPU(v->Angle);

当v->Angle=49时,Ub=307.怎么也算不出这个数来。

我改写SVPWM例程。

原来程序:

Ub   = _IQsinPU(v->Angle);

我看头文件:

#ifndef   GLOBAL_Q
#define   GLOBAL_Q       16
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。

#if GLOBAL_Q == 16
#define   _IQsinPU(A)  _IQ16sinPU(A)
#endif

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#define   _IQ16sinPU(A)       sin((A)*6.283185307)

可是我改写成Ub   = sin((v->Angle)*6.283185307);

电机不转。为什么?我观察计算后的值,也不一样。

奇了怪了。请高手解惑。谢谢!

 

ccb bcc:

回复 ccb bcc:

再顶,期待高手出现。

赞(0)
未经允许不得转载:TI中文支持网 » SVPWM算法的问题
分享到: 更多 (0)