TI的例程中关于SVPWM,给出了如下算法:
#define SVGENDQ_MACRO(v) \
v.tmp1= v.Ubeta; \
v.tmp2= _IQdiv2(v.Ubeta) + (_IQmpy(_IQ(0.866),v.Ualpha)); \
v.tmp3= v.tmp2 – v.tmp1; \
\
v.VecSector=3; \
v.VecSector=(v.tmp2> 0)?( v.VecSector-1):v.VecSector; \
v.VecSector=(v.tmp3> 0)?( v.VecSector-1):v.VecSector; \
v.VecSector=(v.tmp1< 0)?(7-v.VecSector) :v.VecSector; \
\
if (v.VecSector==1 || v.VecSector==4) \
{ v.Ta= v.tmp2; \
v.Tb= v.tmp1-v.tmp3; \
v.Tc=-v.tmp2; \
} \
\
else if(v.VecSector==2 || v.VecSector==5) \
{ v.Ta= v.tmp3+v.tmp2; \
v.Tb= v.tmp1; \
v.Tc=-v.tmp1; \
} \
\
else \
{ v.Ta= v.tmp3; \
v.Tb=-v.tmp3; \
v.Tc=-(v.tmp1+v.tmp2); \
} \
尝试着推导了一下这段代码跟传统七段式SVPWM的关系,没有推出来,不知道过来人怎么理解这段代码的,感觉这里的扇区跟传统七段式的分法也不太一样。
求指教。
Eric Ma:
尝试着推导了一下这段代码跟传统七段式SVPWM的关系,没有推出来,不知道过来人怎么理解这段代码的,感觉这里的扇区跟传统七段式的分法也不太一样。
ERIC:
前两个文档是TI产品线发的,第三个是controlSUITE 自带的,里面也有一些理论介绍,如SVPWM_MF。
另外,我看到motorware软件用到的SVPWM也不一样,
The SVM technique used with InstaSPIN is discussed in the following reference:
Advanced Electric Drives, Analysis, Control and Modeling using Simulink, by Ned Mohan, MNPERE Press, Minneapolis, MN 55414, 2001, ISBN# 0-9715292-0-5
This technique was selected because it seamlessly transitions into the overmodulation region of operation by simply increasing the amplitude of the voltage variables from the Inverse Park Transform. A natural clipping effect occurs which causes the waveforms to change from sinusoidal to trapezoidal.
You can replace the SVM module with a more conventional technique if you desire. But you must then manage the overmodulation yourself.
TI的例程中关于SVPWM,给出了如下算法:
#define SVGENDQ_MACRO(v) \
v.tmp1= v.Ubeta; \
v.tmp2= _IQdiv2(v.Ubeta) + (_IQmpy(_IQ(0.866),v.Ualpha)); \
v.tmp3= v.tmp2 – v.tmp1; \
\
v.VecSector=3; \
v.VecSector=(v.tmp2> 0)?( v.VecSector-1):v.VecSector; \
v.VecSector=(v.tmp3> 0)?( v.VecSector-1):v.VecSector; \
v.VecSector=(v.tmp1< 0)?(7-v.VecSector) :v.VecSector; \
\
if (v.VecSector==1 || v.VecSector==4) \
{ v.Ta= v.tmp2; \
v.Tb= v.tmp1-v.tmp3; \
v.Tc=-v.tmp2; \
} \
\
else if(v.VecSector==2 || v.VecSector==5) \
{ v.Ta= v.tmp3+v.tmp2; \
v.Tb= v.tmp1; \
v.Tc=-v.tmp1; \
} \
\
else \
{ v.Ta= v.tmp3; \
v.Tb=-v.tmp3; \
v.Tc=-(v.tmp1+v.tmp2); \
} \
尝试着推导了一下这段代码跟传统七段式SVPWM的关系,没有推出来,不知道过来人怎么理解这段代码的,感觉这里的扇区跟传统七段式的分法也不太一样。
求指教。
user5283999:您好,请问这个问题解决了吗?
TI的例程中关于SVPWM,给出了如下算法:
#define SVGENDQ_MACRO(v) \
v.tmp1= v.Ubeta; \
v.tmp2= _IQdiv2(v.Ubeta) + (_IQmpy(_IQ(0.866),v.Ualpha)); \
v.tmp3= v.tmp2 – v.tmp1; \
\
v.VecSector=3; \
v.VecSector=(v.tmp2> 0)?( v.VecSector-1):v.VecSector; \
v.VecSector=(v.tmp3> 0)?( v.VecSector-1):v.VecSector; \
v.VecSector=(v.tmp1< 0)?(7-v.VecSector) :v.VecSector; \
\
if (v.VecSector==1 || v.VecSector==4) \
{ v.Ta= v.tmp2; \
v.Tb= v.tmp1-v.tmp3; \
v.Tc=-v.tmp2; \
} \
\
else if(v.VecSector==2 || v.VecSector==5) \
{ v.Ta= v.tmp3+v.tmp2; \
v.Tb= v.tmp1; \
v.Tc=-v.tmp1; \
} \
\
else \
{ v.Ta= v.tmp3; \
v.Tb=-v.tmp3; \
v.Tc=-(v.tmp1+v.tmp2); \
} \
尝试着推导了一下这段代码跟传统七段式SVPWM的关系,没有推出来,不知道过来人怎么理解这段代码的,感觉这里的扇区跟传统七段式的分法也不太一样。
求指教。
Hoo Asnow:
回复 user5283999:
还没有。。。