12570|22

32

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

SVPWM原理、实现、仿真分析 [复制链接]

 
本帖最后由 瓜弟 于 2019-12-27 19:18 编辑

    本贴主要介绍SVPWM的实现与仿真分析。

    在电机控制中,我们希望使用一个特定的空间磁场向量,来“拉”动转子,SVPWM技术使我们可以得到一个相对圆滑的旋转磁场向量。

    在I区,由基本向量合成目标向量如下图所示:

T_{S}为PWM的周期,T_{4}T_{6}分别为两个基础向量的作用时间,根据正弦定理可得:

\frac{U_{OUT}\ast T_{s}}{sin\left ( 2\pi /3 \right )}= \frac{U_{4}\ast T_{4}}{\sin \left ( \pi /3-\theta \right )}= \frac{U_{6}\ast T_{6}}{\sin \theta }

 

其中,U_{4}= U_{6}=\frac{2}{3}U_{DC} , U_{OUT}为目标向量的幅值,\theta为目标向量与基础向量的夹角,将上式化简后,得到:

\frac{T_{4}}{T_{s}}= \sqrt{3}\frac{U_{OUT}}{U_{DC}}\sin \left ( \pi /3-\theta \right )

 

\frac{T_{6}}{T_{s}}= \sqrt{3}\frac{U_{OUT}}{U_{DC}}\sin \left (\theta \right )

 

在八个基础向量中,还有两个零向量,合理分配两个零向量,使MOS桥上下桥臂负载均衡:

\frac{T_{0}}{T_{s}}=\frac{T_{7}}{T_{s}}=\left ( 1-\frac{T_{4}}{T_{s}}-\frac{T_{6}}{T_{s}} \right )/2

   

    通过以上推导,我们得到基本的占空比信号,但这并不能直接用于PWM信号生成,如下图所示,

在我们得到各个占空比后,在生成PWM时,我们需要关注这四个占空比信号与逆变桥的的PWM信号之间的关系,则:

逆变桥A相上半桥的占空比信号为t_{1}=\frac{T_{7}+T_{6}+T_{4}}{T_{s}}

逆变桥B相上半桥的占空比信号为t_{2}=\frac{T_{7}+T_{6}}{T_{s}}

逆变桥C相上半桥的占空比信号为t_{3}=\frac{T_{7}}{T_{s}}

 

    通过上述推导,我们得到了空间向量的模、角度与逆变器的PWM之间的关系,下面则是代码实现:

  • #include "SVPWM_generator.h"
  • #include "math.h"
  • #ifdef _USE_SIMULINK
  • long int Timer;
  • #endif
  • float PWM_Table[6]; //Atop,Abot,Btop,Bbot,Ctop,Cbot
  • /*
  • Btop Cbot
  • \ /
  • Abot------Atop
  • / \
  • Ctop Bbot
  • */
  • void SVPWM_generator(float TargetPhaseAngle, float TargetPhaseMoldRate) //
  • {
  • float t1,t2;
  • #ifdef _USE_SIMULINK
  • Timer ++;
  • if(Timer >= _SIMULIN_DIVIDE_COUNTER_THREHOLD)
  • {
  • Timer = 0;
  • #endif
  • if(( TargetPhaseAngle>=0 )&&(TargetPhaseAngle < 60))
  • {
  • TargetPhaseAngle = TargetPhaseAngle - 0;
  • t1 = 1.732 * TargetPhaseMoldRate * sin((60-TargetPhaseAngle)*PI/180);
  • t2 = 1.732 * TargetPhaseMoldRate * sin(TargetPhaseAngle*PI/180);
  • PWM_Table[0] = (1+t1+t2)/2;
  • PWM_Table[2] = (1-t1+t2)/2;
  • PWM_Table[4] = (1-t1-t2)/2;
  • }
  • else if(( TargetPhaseAngle>=60 )&&(TargetPhaseAngle < 120))
  • {
  • TargetPhaseAngle = TargetPhaseAngle - 60;
  • t1 = 1.732 * TargetPhaseMoldRate * sin((60-TargetPhaseAngle)*PI/180);
  • t2 = 1.732 * TargetPhaseMoldRate * sin(TargetPhaseAngle*PI/180);
  • PWM_Table[0] = (1+t1-t2)/2;
  • PWM_Table[2] = (1+t1+t2)/2;
  • PWM_Table[4] = (1-t1-t2)/2;
  • }
  • else if(( TargetPhaseAngle>=120 )&&(TargetPhaseAngle < 180))
  • {
  • TargetPhaseAngle = TargetPhaseAngle - 120;
  • t1 = 1.732 * TargetPhaseMoldRate * sin((60-TargetPhaseAngle)*PI/180);
  • t2 = 1.732 * TargetPhaseMoldRate * sin(TargetPhaseAngle*PI/180);
  • PWM_Table[0] = (1-t1-t2)/2;
  • PWM_Table[2] = (1+t1+t2)/2;
  • PWM_Table[4] = (1-t1+t2)/2;
  • }
  • else if(( TargetPhaseAngle>=180 )&&(TargetPhaseAngle < 240))
  • {
  • TargetPhaseAngle = TargetPhaseAngle - 180;
  • t1 = 1.732 * TargetPhaseMoldRate * sin((60-TargetPhaseAngle)*PI/180);
  • t2 = 1.732 * TargetPhaseMoldRate * sin(TargetPhaseAngle*PI/180);
  • PWM_Table[0] = (1-t1-t2)/2;
  • PWM_Table[2] = (1+t1-t2)/2;
  • PWM_Table[4] = (1+t1+t2)/2;
  • }
  • else if(( TargetPhaseAngle>=240 )&&(TargetPhaseAngle < 300))
  • {
  • TargetPhaseAngle = TargetPhaseAngle - 240;
  • t1 = 1.732 * TargetPhaseMoldRate * sin((60-TargetPhaseAngle)*PI/180);
  • t2 = 1.732 * TargetPhaseMoldRate * sin(TargetPhaseAngle*PI/180);
  • PWM_Table[0] = (1-t1+t2)/2;
  • PWM_Table[2] = (1-t1-t2)/2;
  • PWM_Table[4] = (1+t1+t2)/2;
  • }
  • else if(( TargetPhaseAngle>=300 )&&(TargetPhaseAngle < 360))
  • {
  • TargetPhaseAngle = TargetPhaseAngle - 300;
  • t1 = 1.732 * TargetPhaseMoldRate * sin((60-TargetPhaseAngle)*PI/180);
  • t2 = 1.732 * TargetPhaseMoldRate * sin(TargetPhaseAngle*PI/180);
  • PWM_Table[0] = (1+t1+t2)/2;
  • PWM_Table[2] = (1-t1-t2)/2;
  • PWM_Table[4] = (1+t1-t2)/2;
  • }
  • PWM_Table[0] = (PWM_Table[0] >= 0)? PWM_Table[0] : 0;
  • PWM_Table[2] = (PWM_Table[2] >= 0)? PWM_Table[2] : 0;
  • PWM_Table[4] = (PWM_Table[4] >= 0)? PWM_Table[4] : 0;
  • PWM_Table[0] = (PWM_Table[0] <= 1)? PWM_Table[0] : 1;
  • PWM_Table[2] = (PWM_Table[2] <= 1)? PWM_Table[2] : 1;
  • PWM_Table[4] = (PWM_Table[4] <= 1)? PWM_Table[4] : 1;
  • #ifdef _USE_SIMULINK
  • }
  • #endif
  • }

在SVPWM_generator.h文件中,主要定义了仿真步长、频率等参数,如下:

    在 SVPWM_generator(float TargetPhaseAngle, float TargetPhaseMoldRate) 中,TargetPhaseAngle为目标向量的相对于A相坐标轴的角度,单位为°, TargetPhaseMoldRate为目标向量的幅值与直流母线的电压的比值,根据SVPWM可知,当TargetPhaseMoldRate < \sqrt{3} / 3时,即目标向量的轨迹圆内切于六个基本向量所组成的正六边形,合成矢量的调制为线性调制。

 

    利用Simulink下的S-Function可以实现对以C语言实现的算法进行仿真分析,仿真框图如下图所示:

逆变桥与负载、测量

 

 

SVPWM、PWM信号生成

    在由SVPWM信号生成PWM信号过程中,需要注意:三项逆变桥的六个PWM波必须是中心对称的。

 

    如何验证算法的正确?SVPWM的目标是生成一个在空间中匀速旋转的矢量,我们可将SVPWM信号进行ABC坐标系到Alpha-Beta坐标系的转换,并用x-y示波器显示出来,检查目标向量轨迹是否为圆。同理,我们也可以将逆变桥的输出电压进行上述变换,检查其输出向量的轨迹。

    

    当TargetPhaseMoldRate = \sqrt{3} / 3时,仿真图形如下:

 

    1、SVPWM输出的马鞍波:

    2、SVPWM的输出经过坐标变换得到的圆:


    3、逆变桥的输出电压波形

    4、逆变桥的输出的电压经过坐标变换得到的目标向量轨迹:

 

  
此内容由EEWORLD论坛网友瓜弟原创,如需转载或用于商业用途需征得作者同意并注明出处

author:nblianyan@qq.com

查看精华帖全部内容,请登录或者注册

image.png (43.34 KB, 下载次数: 5)

image.png
此帖出自电机控制论坛

最新回复

U4=U6=2/3UDC是什么意思?一个公式卡一下,真难受   详情 回复 发表于 2022-5-23 01:10

赞赏

2

查看全部赞赏

点赞(3) 关注(7)
 
 

回复
举报

295

帖子

1

TA的资源

版主

沙发
 

matlab也可以共享出来让大伙学习学习

此帖出自电机控制论坛
 
 
 

回复

6037

帖子

195

TA的资源

版主

板凳
 

写的太好了,学习了!

此帖出自电机控制论坛
 
 
 

回复

7713

帖子

2

TA的资源

五彩晶圆(高级)

4
 

卧槽,瓜弟弟,大作。完全看不懂,有没有办法5分钟精通的?

此帖出自电机控制论坛
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

32

帖子

1

TA的资源

一粒金砂(中级)

5
 
freebsder 发表于 2020-1-9 17:28 卧槽,瓜弟弟,大作。完全看不懂,有没有办法5分钟精通的?

今晚来我房间?我手把手教你?

此帖出自电机控制论坛

点评

学知识如何能挑剔时间地点?来吧现在的,露天的,把你的知识注入给我。。。  详情 回复 发表于 2020-1-16 17:58
 
 
 

回复

32

帖子

1

TA的资源

一粒金砂(中级)

6
 
hotsauce1861 发表于 2019-12-29 22:35 matlab也可以共享出来让大伙学习学习

见附件

ErLevel_SanPhase_InverterBridge_Simulink.zip

398.79 KB, 下载次数: 220

此帖出自电机控制论坛

点评

赞  详情 回复 发表于 2020-1-17 07:59
 
 
 

回复

7713

帖子

2

TA的资源

五彩晶圆(高级)

7
 
瓜弟 发表于 2020-1-15 18:38 今晚来我房间?我手把手教你?

学知识如何能挑剔时间地点?来吧现在的,露天的,把你的知识注入给我。。。

此帖出自电机控制论坛
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

295

帖子

1

TA的资源

版主

8
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 

大赞,感谢楼主分享干货资料

此帖出自电机控制论坛
 
 
 

回复

45

帖子

0

TA的资源

一粒金砂(中级)

10
 

大赞,必须竖大拇指,厉害了!

此帖出自电机控制论坛
 
 
 

回复

28

帖子

3

TA的资源

一粒金砂(初级)

11
 

谢谢楼主分享!

此帖出自电机控制论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

12
 

真的是好東西,感謝分享,是干貨沒錯。

此帖出自电机控制论坛
 
 
 

回复

2万

帖子

342

TA的资源

版主

13
 

很好的仿真讲解

此帖出自电机控制论坛
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

14
 

还带仿真,感谢楼主分享干货资料

此帖出自电机控制论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

15
 

学习了!

此帖出自电机控制论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

16
 
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

17
 

绝对干货啊,赞

此帖出自电机控制论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

18
 

感激不尽,正需要呢

此帖出自电机控制论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

19
 
freebsder 发表于 2020-1-16 17:58 学知识如何能挑剔时间地点?来吧现在的,露天的,把你的知识注入给我。。。

一个敢开车,一个敢夺方向盘……

可以的

此帖出自电机控制论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(中级)

20
 

好资料大赞,非常感谢楼主分享干货资料,值得拥有,谢谢

此帖出自电机控制论坛
 
 
 

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

猜你喜欢
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表