在TI 给的28335的例程里,SVGENDQ_MACRO 中
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); \ } \
我没看明白这段程序,按照原理的话,扇区1的 T1=-Z,T2=X,扇区4就应该是T1=-X,T2=Z 而这里扇区1和4都是同样的Ta、Tb、Tc 值我就不太懂了,而且上文给出的tmp1、tmp2、tmp3 在原理中旧事X,Y,Z的值, 而Ta、Tb、Tc 在下面的程序中直接赋给比较寄存器当作PWM占空比了, 中间的关系应该是
v.Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2)); // tbon = (1-t1-t2)/2
v.Ta = v.Tb+t1; // taon = tbon+t1
v.Tc = v.Ta+t2; // tcon = taon+t2
(上面3行是2812程序里给的此步骤的例程,为什28335中没有这一步了呢?)
刚刚接触dsp和svpwm 没有人带,自己资质也低,问题要是问的太蠢请各位前辈见谅。感谢之前的前辈们热心的帮助!
Young Hu:
这个模块就直接用吧,把时间放在其他更重要的算法上
在TI 给的28335的例程里,SVGENDQ_MACRO 中
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); \ } \
我没看明白这段程序,按照原理的话,扇区1的 T1=-Z,T2=X,扇区4就应该是T1=-X,T2=Z 而这里扇区1和4都是同样的Ta、Tb、Tc 值我就不太懂了,而且上文给出的tmp1、tmp2、tmp3 在原理中旧事X,Y,Z的值, 而Ta、Tb、Tc 在下面的程序中直接赋给比较寄存器当作PWM占空比了, 中间的关系应该是
v.Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2)); // tbon = (1-t1-t2)/2
v.Ta = v.Tb+t1; // taon = tbon+t1
v.Tc = v.Ta+t2; // tcon = taon+t2
(上面3行是2812程序里给的此步骤的例程,为什28335中没有这一步了呢?)
刚刚接触dsp和svpwm 没有人带,自己资质也低,问题要是问的太蠢请各位前辈见谅。感谢之前的前辈们热心的帮助!
fred cong:
前辈,我的课题就是 一种新式svpwm的算法,我会按照新的算法对TI 的SVGEN 进行一点小改动,然后对比一下,这个问题部攻克,我改都没法改……
在TI 给的28335的例程里,SVGENDQ_MACRO 中
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); \ } \
我没看明白这段程序,按照原理的话,扇区1的 T1=-Z,T2=X,扇区4就应该是T1=-X,T2=Z 而这里扇区1和4都是同样的Ta、Tb、Tc 值我就不太懂了,而且上文给出的tmp1、tmp2、tmp3 在原理中旧事X,Y,Z的值, 而Ta、Tb、Tc 在下面的程序中直接赋给比较寄存器当作PWM占空比了, 中间的关系应该是
v.Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2)); // tbon = (1-t1-t2)/2
v.Ta = v.Tb+t1; // taon = tbon+t1
v.Tc = v.Ta+t2; // tcon = taon+t2
(上面3行是2812程序里给的此步骤的例程,为什28335中没有这一步了呢?)
刚刚接触dsp和svpwm 没有人带,自己资质也低,问题要是问的太蠢请各位前辈见谅。感谢之前的前辈们热心的帮助!
fred cong:
HI xiaoming liu :
请问您 扇区选择的部分我已经看懂了,但是时间计算上 我总觉得扇区2与4,1与5、3与6之间的 T1、T2是互换位置并取反,我无法从程序中找到相应的代码,还请您多指教!
在TI 给的28335的例程里,SVGENDQ_MACRO 中
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); \ } \
我没看明白这段程序,按照原理的话,扇区1的 T1=-Z,T2=X,扇区4就应该是T1=-X,T2=Z 而这里扇区1和4都是同样的Ta、Tb、Tc 值我就不太懂了,而且上文给出的tmp1、tmp2、tmp3 在原理中旧事X,Y,Z的值, 而Ta、Tb、Tc 在下面的程序中直接赋给比较寄存器当作PWM占空比了, 中间的关系应该是
v.Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2)); // tbon = (1-t1-t2)/2
v.Ta = v.Tb+t1; // taon = tbon+t1
v.Tc = v.Ta+t2; // tcon = taon+t2
(上面3行是2812程序里给的此步骤的例程,为什28335中没有这一步了呢?)
刚刚接触dsp和svpwm 没有人带,自己资质也低,问题要是问的太蠢请各位前辈见谅。感谢之前的前辈们热心的帮助!
xiaoming liu:
你用倒三角计数的公式去推导,就会发现。
在TI 给的28335的例程里,SVGENDQ_MACRO 中
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); \ } \
我没看明白这段程序,按照原理的话,扇区1的 T1=-Z,T2=X,扇区4就应该是T1=-X,T2=Z 而这里扇区1和4都是同样的Ta、Tb、Tc 值我就不太懂了,而且上文给出的tmp1、tmp2、tmp3 在原理中旧事X,Y,Z的值, 而Ta、Tb、Tc 在下面的程序中直接赋给比较寄存器当作PWM占空比了, 中间的关系应该是
v.Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2)); // tbon = (1-t1-t2)/2
v.Ta = v.Tb+t1; // taon = tbon+t1
v.Tc = v.Ta+t2; // tcon = taon+t2
(上面3行是2812程序里给的此步骤的例程,为什28335中没有这一步了呢?)
刚刚接触dsp和svpwm 没有人带,自己资质也低,问题要是问的太蠢请各位前辈见谅。感谢之前的前辈们热心的帮助!
fred cong:
回复 xiaoming liu:
xiaoming liu 前辈,您说的这个倒三角计数公式 我怎么没听过呢? 能指点一下吗?
在TI 给的28335的例程里,SVGENDQ_MACRO 中
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); \ } \
我没看明白这段程序,按照原理的话,扇区1的 T1=-Z,T2=X,扇区4就应该是T1=-X,T2=Z 而这里扇区1和4都是同样的Ta、Tb、Tc 值我就不太懂了,而且上文给出的tmp1、tmp2、tmp3 在原理中旧事X,Y,Z的值, 而Ta、Tb、Tc 在下面的程序中直接赋给比较寄存器当作PWM占空比了, 中间的关系应该是
v.Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2)); // tbon = (1-t1-t2)/2
v.Ta = v.Tb+t1; // taon = tbon+t1
v.Tc = v.Ta+t2; // tcon = taon+t2
(上面3行是2812程序里给的此步骤的例程,为什28335中没有这一步了呢?)
刚刚接触dsp和svpwm 没有人带,自己资质也低,问题要是问的太蠢请各位前辈见谅。感谢之前的前辈们热心的帮助!
user5283999:
回复 fred cong:
您好,前辈这段程序您看懂了吗?能不能帮忙解释一下,真的很急,看了很久了仍然看不懂,谢谢了