打印

作用是什么?

[复制链接]
443|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shimx|  楼主 | 2016-9-17 10:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

/*=====================================================================================
File name:        SVGEN_DQ.C            
Description:  空间矢量PWM产生函数                  

=====================================================================================*/

#include "IQmathLib.h"        
#include "dmctype.h"
#include "svgen_dq.h"

void svgendq_calc(SVGENDQ *v)
{        

        _iq Va,Vb,Vc,t1,t2;
        Uint32 Sector = 0;  
                                                                                                                                       
// 反CLARK变换
    Va = v->Ubeta;
    Vb = _IQmpy(_IQ(-0.5),v->Ubeta) + _IQmpy(_IQ(0.8660254),v->Ualpha);  // 0.8660254 = sqrt(3)/2
    Vc = _IQmpy(_IQ(-0.5),v->Ubeta) - _IQmpy(_IQ(0.8660254),v->Ualpha);  // 0.8660254 = sqrt(3)/2

//用Sector判断所在扇区
    if (Va>_IQ(0))
       Sector = 1;
    if (Vb>_IQ(0))
       Sector = Sector + 2;
    if (Vc>_IQ(0))   
       Sector = Sector + 4;
      
// X,Y,Z (Va,Vb,Vc) 计算
    Va = v->Ubeta;                                                       // X = Va
    Vb = _IQmpy(_IQ(0.5),v->Ubeta) + _IQmpy(_IQ(0.8660254),v->Ualpha);   // Y = Vb
    Vc = _IQmpy(_IQ(0.5),v->Ubeta) - _IQmpy(_IQ(0.8660254),v->Ualpha);   // Z = Vc
   
    if (Sector==0)  // Sector 0: 当(Ualpha,Ubeta) = (0,0)
    {
       v->Ta = _IQ(0.5);
       v->Tb = _IQ(0.5);
       v->Tc = _IQ(0.5);
    }
    if (Sector==1)  // Sector 1: t1=Z and t2=Y (abc ---> Tb,Ta,Tc)
    {
       t1 = Vc;
       t2 = Vb;
       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
    }
    else if (Sector==2)  // Sector 2: t1=Y and t2=-X (abc ---> Ta,Tc,Tb)
    {
       t1 = Vb;
       t2 = -Va;
       v->Ta = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      // taon = (1-t1-t2)/2
       v->Tc = v->Ta+t1;                             // tcon = taon+t1
       v->Tb = v->Tc+t2;                             // tbon = tcon+t2
    }      
    else if (Sector==3)  // Sector 3: t1=-Z and t2=X (abc ---> Ta,Tb,Tc)
    {
       t1 = -Vc;
       t2 = Va;
       v->Ta = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      // taon = (1-t1-t2)/2
       v->Tb = v->Ta+t1;                             // tbon = taon+t1
       v->Tc = v->Tb+t2;                             // tcon = tbon+t2
    }   
    else if (Sector==4)  // Sector 4: t1=-X and t2=Z (abc ---> Tc,Tb,Ta)
    {
       t1 = -Va;
       t2 = Vc;
       v->Tc = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      // tcon = (1-t1-t2)/2
       v->Tb = v->Tc+t1;                             // tbon = tcon+t1
       v->Ta = v->Tb+t2;                             // taon = tbon+t2
    }   
    else if (Sector==5)  // Sector 5: t1=X and t2=-Y (abc ---> Tb,Tc,Ta)
    {
       t1 = Va;
       t2 = -Vb;
       v->Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      // tbon = (1-t1-t2)/2
       v->Tc = v->Tb+t1;                             // tcon = tbon+t1
       v->Ta = v->Tc+t2;                             // taon = tcon+t2
    }   
    else if (Sector==6)  // Sector 6: t1=-Y and t2=-Z (abc ---> Tc,Ta,Tb)
    {
       t1 = -Vb;
       t2 = -Vc;
       v->Tc = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      // tcon = (1-t1-t2)/2
       v->Ta = v->Tc+t1;                             // taon = tcon+t1
       v->Tb = v->Ta+t2;                             // tbon = taon+t2
    }
   
// 转换无符号全局Q格式(0,1)为有符号全局Q格式 (-1,1)
    v->Ta = _IQmpy(_IQ(2.0),(v->Ta-_IQ(0.5)));
    v->Tb = _IQmpy(_IQ(2.0),(v->Tb-_IQ(0.5)));
    v->Tc = _IQmpy(_IQ(2.0),(v->Tc-_IQ(0.5)));        

}
作用是什么?

相关帖子

沙发
shimx|  楼主 | 2016-9-17 10:08 | 只看该作者
为什么要将无符号全局Q格式,换为有符号的全局Q格式.??谢谢了!

使用特权

评论回复
板凳
午夜粪车| | 2016-9-17 10:10 | 只看该作者

高精度乘法, _IQmpy这个函数在TI 的IQmath库里面的

使用特权

评论回复
地板
shimx|  楼主 | 2016-9-17 10:11 | 只看该作者
这个我知道,我想知道的是整个式子的含义

使用特权

评论回复
5
午夜粪车| | 2016-9-17 10:12 | 只看该作者
这个我也不是很清楚

使用特权

评论回复
6
zhaoxqi| | 2016-9-17 10:17 | 只看该作者
这个要和 PWM_MACRO 对应起来看。

使用特权

评论回复
7
yszong| | 2016-9-17 10:19 | 只看该作者

这里 无符号全局Q格式(0,1)->有符号全局Q格式 (-1,1)

PWM_MACRO 里面 再反转过来。

使用特权

评论回复
8
yszong| | 2016-9-17 10:22 | 只看该作者
具体目的不明

使用特权

评论回复
9
jlyuan| | 2016-9-17 10:23 | 只看该作者
PWM_MACRO 里面 再反转过来,这个什么意思啊,我也恰好看到这,LZ怎么理解的?

使用特权

评论回复
10
yszong| | 2016-9-17 10:24 | 只看该作者
PWM _MACRO是什么呀?

使用特权

评论回复
11
shimx|  楼主 | 2016-9-17 10:26 | 只看该作者
搞定了,呵呵,犯了低级错误……结贴啦,多谢各位

使用特权

评论回复
12
baimiaocun2015| | 2016-9-18 21:55 | 只看该作者
这个程序是干什么用的?作用啥的?

使用特权

评论回复
13
isseed| | 2016-9-18 22:42 | 只看该作者
哪个作用的?

使用特权

评论回复
14
isseed| | 2016-9-18 22:42 | 只看该作者
这不是转换代码吗

使用特权

评论回复
15
vibra2016| | 2016-9-19 22:13 | 只看该作者
这个还真看不出来的

使用特权

评论回复
16
Garen2| | 2016-9-20 19:19 | 只看该作者
这整个式子的含义是什么啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

857

主题

10661

帖子

5

粉丝