• TI Motor Control


    //======================================================================================================

    //IPark变换UD,UQ-->UALFA,UBETA获得给定信号

    //====================================================================================================== 

    Ualfa = _IQmpy(Ud,Cosine) - _IQmpy(Uq,Sine);

    Ubeta = _IQmpy(Uq,Cosine) + _IQmpy(Ud,Sine); 

        

    //======================================================================================================

    //通过UALFA,UBETA确定扇区Sector,根据扇区Sector计算Ta,Tb,Tc,SVPWM实现

    //====================================================================================================== 

    /*------------------------------------------------------------------------------------------------------

    空间电压矢量脉宽调制技术(SVPWM)DSP中的实现步骤:

    (1)获得SVPWM的输入信号UALFA,UBETA,Ud,Uq经过IPARK变换得到输入信号UALFA,UBETA;

    (2)利用输入信号UALFA,UBETA计算中间变量B0,B1,B2,确定扇区Sector

    (3)利用输入信号UALFA,UBETA计算中间变量X,Y,Z,再根据不同扇区利用中间变量X,Y,Z计算t1,t2;

    (4)利用t1,t2根据不同扇区计算Ta,Tb,Tc;

    (5)利用Ta,Tb,Tc计算占空比MfuncD1MfuncD2MfuncD3,之后再计算全比较器参数赋值CMPR1CMPR2CMPR3.

    -------------------------------------------------------------------------------------------------------*/

    B0=Ubeta;

    B1=_IQmpy(_IQ(0.8660254),Ualfa)- _IQmpy(_IQ(0.5),Ubeta);// 0.8660254 = sqrt(3)/2 

    B2=_IQmpy(_IQ(-0.8660254),Ualfa)- _IQmpy(_IQ(0.5),Ubeta); // 0.8660254 = sqrt(3)/2

     

    Sector=0;

    if(B0>_IQ(0)) Sector =1;

    if(B1>_IQ(0)) Sector =Sector +2;

    if(B2>_IQ(0)) Sector =Sector +4; 

     

    X=Ubeta;

    Y=_IQmpy(_IQ(0.8660254),Ualfa)+ _IQmpy(_IQ(0.5),Ubeta);// 0.8660254 = sqrt(3)/2 

    Z=_IQmpy(_IQ(-0.8660254),Ualfa)+ _IQmpy(_IQ(0.5),Ubeta); // 0.8660254 = sqrt(3)/2 

     

    if(Sector==0)

    {

    Ta=_IQ(0.5);

    Tb=_IQ(0.5);

    Tc=_IQ(0.5);

    else if(Sector==1)

    {

    t1=Z;

    t2=Y;

     

    Tb=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));

    Ta=Tb+t1;

    Tc=Ta+t2;

    }

    else if(Sector==2)

    {

    t1=Y;

    t2=-X;

     

    Ta=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));

    Tc=Ta+t1;

    Tb=Tc+t2;

    else if(Sector==3)

        {

    t1=-Z;

    t2=X;

     

    Ta=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));

    Tb=Ta+t1;

    Tc=Tb+t2;

        } 

        else if(Sector==4)

        {

    t1=-X;

    t2=Z;

     

    Tc=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));

    Tb=Tc+t1;

    Ta=Tb+t2;

        } 

        else if(Sector==5)

        {

    t1=X;

    t2=-Y;

     

    Tb=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));

    Tc=Tb+t1;

     Ta=Tc+t2;

    }

    else if(Sector==6)

    {

    t1=-Y;

    t2=-Z;

     

    Tc=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));

    Ta=Tc+t1;

    Tb=Ta+t2;

     

    Ta=_IQmpy(_IQ(2),(Ta-_IQ(0.5)));

    Tb=_IQmpy(_IQ(2),(Tb-_IQ(0.5)));

    Tc=_IQmpy(_IQ(2),(Tc-_IQ(0.5)));

     

  • 相关阅读:
    Android下加载GIF图片
    拍照、相册及裁剪的终极实现(一)——拍照及裁剪功能实现
    阿里巴巴矢量库
    ActiveAndroid 管理数据库
    利用box-shadow制作loading图
    适用于移动端的地址选择器
    常用的不易记忆的css自定义代码
    关于js中一个对象当做参数传递是按值传递还是按引用传递的个人看法
    JavaScript之函数柯里化
    CSS3实现图片渐入效果
  • 原文地址:https://www.cnblogs.com/linkfeel/p/2572991.html
Copyright © 2020-2023  润新知