西莫电机圈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 2715|回复: 2

[原创] F2812 SVPWM程序IQmath版

[复制链接]

该用户从未签到

发表于 2012-5-7 14:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
F2812 SVPWM程序IQmath版 F2812 SVPWM程序IQmath版.rar (909 Bytes, 下载次数: 47)


  1. //======================================================================================================
  2. //IPark变换UD,UQ-->UALFA,UBETA获得给定信号
  3. //======================================================================================================
  4.   Ualfa = _IQmpy(Ud,Cosine) - _IQmpy(Uq,Sine);
  5.   Ubeta = _IQmpy(Uq,Cosine) + _IQmpy(Ud,Sine);
  6.    
  7. //======================================================================================================
  8. //通过UALFA,UBETA确定扇区Sector,根据扇区Sector计算Ta,Tb,Tc,SVPWM实现
  9. //======================================================================================================
  10.   B0=Ubeta;
  11.   B1=_IQmpy(_IQ(0.8660254),Ualfa)- _IQmpy(_IQ(0.5),Ubeta);// 0.8660254 = sqrt(3)/2
  12.   B2=_IQmpy(_IQ(-0.8660254),Ualfa)- _IQmpy(_IQ(0.5),Ubeta); // 0.8660254 = sqrt(3)/2
  13.   Sector=0;
  14.   if(B0>_IQ(0)) Sector =1;
  15.   if(B1>_IQ(0)) Sector =Sector +2;
  16.   if(B2>_IQ(0)) Sector =Sector +4;
  17.   X=Ubeta;
  18.   Y=_IQmpy(_IQ(0.8660254),Ualfa)+ _IQmpy(_IQ(0.5),Ubeta);// 0.8660254 = sqrt(3)/2
  19.   Z=_IQmpy(_IQ(-0.8660254),Ualfa)+ _IQmpy(_IQ(0.5),Ubeta); // 0.8660254 = sqrt(3)/2
  20.   if(Sector==0)
  21.   {
  22.    Ta=_IQ(0.5);
  23.    Tb=_IQ(0.5);
  24.    Tc=_IQ(0.5);
  25.   }
  26.   else if(Sector==1)
  27.   {
  28.    t1=Z;
  29.    t2=Y;
  30.    Tb=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));
  31.    Ta=Tb+t1;
  32.    Tc=Ta+t2;
  33.   }
  34.   else if(Sector==2)
  35.   {
  36.    t1=Y;
  37.    t2=-X;
  38.    Ta=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));
  39.    Tc=Ta+t1;
  40.    Tb=Tc+t2;
  41.    }
  42.   else if(Sector==3)
  43.       {
  44.    t1=-Z;
  45.    t2=X;
  46.    Ta=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));
  47.    Tb=Ta+t1;
  48.    Tc=Tb+t2;
  49.      }
  50.      else if(Sector==4)
  51.      {
  52.    t1=-X;
  53.    t2=Z;
  54.    Tc=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));
  55.    Tb=Tc+t1;
  56.    Ta=Tb+t2;
  57.      }
  58.      else if(Sector==5)
  59.      {
  60.    t1=X;
  61.    t2=-Y;
  62.    Tb=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));
  63.    Tc=Tb+t1;
  64.     Ta=Tc+t2;
  65.   }
  66.   else if(Sector==6)
  67.   {
  68.    t1=-Y;
  69.    t2=-Z;
  70.    Tc=_IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));
  71.    Ta=Tc+t1;
  72.    Tb=Ta+t2;
  73.   }
  74.   MfuncD1=_IQmpy(_IQ(2),(_IQ(0.5)-Ta));
  75.   MfuncD2=_IQmpy(_IQ(2),(_IQ(0.5)-Tb));
  76.   MfuncD3=_IQmpy(_IQ(2),(_IQ(0.5)-Tc));

  77.   MfuncF1=_IQtoF(MfuncD1);  //用于观察
  78.   MfuncF2=_IQtoF(MfuncD2);
  79.   MfuncF3=_IQtoF(MfuncD3);
  80. }
复制代码

评分

参与人数 1西莫币 -9 收起 理由
gellyares -9 广告贴!

查看全部评分

西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过

该用户从未签到

发表于 2012-5-11 09:30 | 显示全部楼层
不知道是不是正确的哦
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2013-1-30 23:50 | 显示全部楼层
看看是什么程序
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|西莫电机圈 ( 浙ICP备10025899号-3 浙公网安备:33028202000436号

GMT+8, 2024-5-18 19:23 , Processed in 0.160203 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表