SVPWM趣味概述

作者:超神约
链接:https://www.zhihu.com/question/26858454/answer/266275376
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

PWM波是一个“神器”...

它实现了直流电与交流电的等效转化...

使电压“逆变”具有可操作性...

然而...

作为“矢量控制”这个控制系统的“执行”环节...

我们怎么把直流电压转化为三相交流电压...

而且还拥有较高的电压利用率呢?

打个不恰当的比方...

如果我们想吃“蒜薹肉丝”这道菜...

而猪肉是一整块的...

所以...

首先要把肉块切成肉丝...

但是...

在这个过程中...

一斤的肉块如果切成了半斤的肉丝...

那就造成浪费了...

所以...

想吃到美味而且有嚼劲的肉丝...

好的刀法是关键...

一方面要切出完美的肉丝...

不能是肉片...

也不能是肉泥...

一方面尽可能的减少下刀次数...

这样黏在刀锋上的肉屑(损耗)就会减少...

这样一斤的猪肉可能会吃到八两的肉丝...

这个不外传的厨艺绝学...

就是传说中的“SVPWM”

<img src="https://pic4.zhimg.com/50/v2-655caa0b6dc80ee42be2b4a9e661d998_hd.gif" data-caption="" data-size="normal" data-rawwidth="194" data-rawheight="194" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/dcecd7998501386a15a2e2ea9f59ee2f.jpeg" class="content_image" width="194">

不管什么样的教科书...

说起SVPWM...

都是满满的计算公式...

以及各种状态表、扇区、持续时间的确定...

霍金他老人家说过...

每多写一个公式就吓跑一半读者...

<img src="https://pic4.zhimg.com/50/v2-c7e241df85f26d560e29e92766ba7a4b_hd.gif" data-caption="" data-size="normal" data-rawwidth="248" data-rawheight="201" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/650917acf68b3425d8c41f063a45c914.jpeg" class="content_image" width="248">

好吧...

为了多留读者...

小神试试不写公式...

能不能把SVPWM说明白...

 

<img src="https://pic2.zhimg.com/50/v2-e17746029e3b9505aad4257fac87eecc_hd.jpg" data-caption="" data-size="normal" data-rawwidth="735" data-rawheight="316" class="origin_image zh-lightbox-thumb" width="735" data-original="https://pic2.zhimg.com/v2-e17746029e3b9505aad4257fac87eecc_r.jpg">

 

先看上图...

通过这个经典的三相逆变桥式电路...

我们经过周密复杂的计算和推导...

可以得出这样的结论...

上桥和下桥的开关(IGBT)是不能同时导通的(短路)...

<img src="https://pic3.zhimg.com/50/v2-611c220327d8b402dd19e099c211b67e_hd.gif" data-caption="" data-size="normal" data-rawwidth="424" data-rawheight="289" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/30301b562d368cd80dd5eb0e948dffb0.jpeg" class="origin_image zh-lightbox-thumb" width="424" data-original="https://pic3.zhimg.com/v2-611c220327d8b402dd19e099c211b67e_r.jpg">

好吧...

我们简单点...

来点初中物理学的知识...

这个直流母线的电压值我们假定为Ud...

三路上下桥开关同时关断的情况先不考虑...

上桥开通下桥关断定义为状态0...

上桥关断下桥开通定义为状态1...

这样...

这三路开关状态两两拼凑组合...

就变成了八种开关状态...

 

<img src="https://pic3.zhimg.com/50/v2-e429376e9b17cebfc6caa449826752b3_hd.jpg" data-caption="" data-size="normal" data-rawwidth="684" data-rawheight="54" class="origin_image zh-lightbox-thumb" width="684" data-original="https://pic3.zhimg.com/v2-e429376e9b17cebfc6caa449826752b3_r.jpg">

但是...

不管组合有多少种...

输出去三相ABC中两辆引线的电压值...

在这八种开关状态下...

不是Ud就是-Ud...

或者就是0...

也就是说...

电机的线电压值在某一时刻只能有Ud、-Ud和0三种状态...

是没有中间状态的...

那么...

电机的相电压是多少呢?

<img src="https://pic4.zhimg.com/50/v2-670b923f9601292684e69f3ef4588a54_hd.gif" data-caption="" data-size="normal" data-rawwidth="352" data-rawheight="265" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/728a31dd918af360a52f31573b021d0c.jpeg" class="content_image" width="352">

显然不能这样算...

相电压的定义是该相与“中性点”之间的电压...

而“中性点”我们还不知道选在哪里...

不过我们可以把三个相电压用未知数的形式假设出来...

根据基尔霍夫电流定律(KCL)...

列个方程组...

来求出相电压的值...

这个算法很简单...

小神就不多说了...

最大值就是传说中的2/3Ud...

OK...

我们可以动手画这八个开关状态的电压矢量图了...

 

<img src="https://pic3.zhimg.com/50/v2-a2b51050bd43a55a19a4fc03f1d62a3f_hd.jpg" data-caption="" data-size="normal" data-rawwidth="354" data-rawheight="277" class="content_image" width="354">

 

咦?

为什么不是圆形?

是个六边形!!!

因为相电压只能在这六个状态(向量)...

出现这个最大值2/3Ud...

其他角度的电压矢量是靠这六个状态合成出来的...

是达不到这个最大值的...

那么...

为什么是六个顶点呢?(八个开关状态啊)

因为000和111这两个开关状态...

ABC三相不管哪两路的线电压都是0...

所以...

只能“龟缩”在原点了...

 

<img src="https://pic4.zhimg.com/50/v2-bbd0187c83b06a2f28064993a258c974_hd.jpg" data-caption="" data-size="normal" data-rawwidth="695" data-rawheight="585" class="origin_image zh-lightbox-thumb" width="695" data-original="https://pic4.zhimg.com/v2-bbd0187c83b06a2f28064993a258c974_r.jpg">

 

 

别着急,精彩继续...

 

三相正弦交流是可以合成一个旋转矢量的...

同样...

三相正弦电压也是可以合成一个旋转的矢量Us的...

期望电流Id和Iq通过PI调节器得到Ud和Uq...

位置检测装置(旋转变压器)又给了转子位置θ...

Ud和Uq就华丽的蜕变成Uα和Uβ...(帕克变换)...

Us²又恰好等于Uα²+Uβ²...

So...

Us就成为了已知量...

好了...

Us我们知道了...

Us旋转的范围界限(六边形)我们也知道了...

接下来...

挥舞你的菜刀(IGBT)...

尽情的演绎你的厨艺(SVPWM)吧...

<img src="https://pic3.zhimg.com/50/v2-34fa2205ba3c1fe30525a72442588e2e_hd.gif" data-caption="" data-size="normal" data-rawwidth="299" data-rawheight="216" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/9fefaed406ce914858169c1855703e28.jpeg" class="content_image" width="299">

这个世界是一个连续的世界...

然而...

你眼睛里的世界...

却可能是离散的...

在看电影时...

如果把时间缩小到足够小...

画面就会一帧一帧的播放...

但你却认为画面的场景是“连续”的...

<img src="https://pic4.zhimg.com/50/v2-6b20a9c7c15262fd454c85a8a4cc6d95_hd.gif" data-caption="" data-size="normal" data-rawwidth="411" data-rawheight="232" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/f0461015261edd0751b4390d3a188c74.jpeg" class="content_image" width="411">

不不不...

不要在意这些细节...

再来个比喻...

一个电灯泡...

只能处于“亮”和“不亮”的状态...

但你嫌灯泡太亮了...

想让它处于“较亮”的状态...

怎么办?
选一个10ms的时间周期...

前5ms让它处于“亮”的状态...

后5ms让它处于“不亮”的状态...

因为时间足够短...

在你眼中呈现的状态...

就是“较亮”...

<img src="https://pic2.zhimg.com/50/v2-aaf04ee0a3ce63afd8ed0f5d5d44dbca_hd.gif" data-caption="" data-size="normal" data-rawwidth="650" data-rawheight="650" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/764f55444b7374f5de7d6c6b1aa82d12.jpeg" class="origin_image zh-lightbox-thumb" width="650" data-original="https://pic2.zhimg.com/v2-aaf04ee0a3ce63afd8ed0f5d5d44dbca_r.jpg">

调制一个Us也是同样的道理...

六边形可以划分成六个扇区...

为了减小电压谐波...

这个调制合成电压Us的旋转范围会留一些余量...

是这个多边形的内切圆...

<img src="https://pic3.zhimg.com/50/v2-5684a245bc3c2685bceacb95a0e91f25_hd.jpg" data-caption="" data-size="normal" data-rawwidth="519" data-rawheight="316" class="origin_image zh-lightbox-thumb" width="519" data-original="https://pic3.zhimg.com/v2-5684a245bc3c2685bceacb95a0e91f25_r.jpg">

或略小于这个内切圆(IGBT的死区影响)...

当Us的相位和幅值确定以后...

我们就能确定Us的起始位置在哪个扇区...

这样就知道用哪两个相邻的边(开关状态)来合成...

然后...

再把这个圆分成有限个(R个)、足够小的等面积小扇区...

这个R其实就是所设定的载波频率...

也就是Us旋转这个动作的“分辨率”...

像灯泡一样...

在一个载波周期内...

通过两个开关状态的先后顺序...

每个状态持续一定时间(占空比)...

再配上000和111的这种全部关断的0矢量状态...

<img src="https://i-blog.csdnimg.cn/blog_migrate/44013673bad8c048d505898dfba526fa.gif" data-caption="" data-size="normal" data-rawwidth="233" data-rawheight="221" data-thumbnail="https://pic4.zhimg.com/50/v2-0f14be86f33c37f35c74979a0c3862cb_hd.jpg" class="content_image" width="233">

最终合成Us的起始状态.

当Us旋转至下一个位置时...

就是下一个载波周期...

同样开关状态的占空比就会稍微校正一下...

来合成下一个步长的Us...

如果Us旋转的位置跨越了大扇区...

两个相邻的边(开关状态)就会切换...

当然这种切换也是有规则的...

为了保证每次状态切换只开通和关闭一个管子...

就形成了传说中的“七段式SVPWM”...

比如Us在扇区I...

那就必须用100和110的开关状态来合成电压矢量...

加上零矢量状态(111、000)...

会拆分成七次切换来满足合成矢量...

<img src="https://pic3.zhimg.com/50/v2-a83e19e8df6bd93ebb515bed10c76431_hd.jpg" data-caption="" data-size="normal" data-rawwidth="392" data-rawheight="188" class="content_image" width="392">

这种调制出来的Us...

经过之前所讲的逆Clark、Park变换...

分解出的三相电压正弦度还是很高的...

当然...

这个相电压是PWM正弦波...

<img src="https://pic2.zhimg.com/50/v2-0933ba04aa8e56ad7218622cbd4d93c7_hd.gif" data-caption="" data-size="normal" data-rawwidth="320" data-rawheight="180" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/70cc465ec9186ff2db208b26d67f89d4.jpeg" class="content_image" width="320">

然而...

把本来是四种开关状态(相邻两边开关状态、000、111)...

分成了七段...

你的“下刀”次数还是太多...

不免还是有些损耗...

所以就有了五段式SVPWM...

也就是传说中的DPWM技术...

<img src="https://pic4.zhimg.com/50/v2-c99ce19398d11e7f6a5e94c2b686ae80_hd.jpg" data-caption="" data-size="normal" data-rawwidth="501" data-rawheight="271" class="origin_image zh-lightbox-thumb" width="501" data-original="https://pic4.zhimg.com/v2-c99ce19398d11e7f6a5e94c2b686ae80_r.jpg">

开关损耗减小了30%有木有....

不过....

调制出的电压正弦度反而不怎么高了...

谐波会大量提升...

<img src="https://pic4.zhimg.com/50/v2-943d6ed79546efb1f76fdea52855701f_hd.jpg" data-caption="" data-size="normal" data-rawwidth="667" data-rawheight="265" class="origin_image zh-lightbox-thumb" width="667" data-original="https://pic4.zhimg.com/v2-943d6ed79546efb1f76fdea52855701f_r.jpg">

控制器的效率提升了...

电机的效率却下降了...

拆了东墙补了西墙...

So...

一般人不这么干...

所以七段式SVPWM还是比较广泛的...

当然...

有的吃瓜群众会问...

Us旋转的 "分辨率"(载波频率)是死的...

旋转的速度确是跟电压的频率(电机的转速)有关的.....

电机高速时你的"分辨率"就低了...

低速时你的"分辨率"就有可能高了...

那岂不是高速时谐波多...

低速时控制性能好吗?

<img src="https://pic3.zhimg.com/50/v2-af7f15752a415ce77f0e551fa36059cf_hd.gif" data-caption="" data-size="normal" data-rawwidth="273" data-rawheight="237" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/97ca54b769478b6921dcbac74e3fb0ba.jpeg" class="content_image" width="273">

所以就诞生了变载频算法...

低速载频可以低一点...

高速载频高一些...

也是提升电机系统效率的手段嘛...

又一个围观群众发问了...

为什么Us的旋转范围不能是外接圆?

进一步提升调制出来的电机相电压...

这样...

电机在弱磁区的弱磁电流就会小一些...

电机的损耗就变小了....

这不就是提升电机系统效率的手段嘛...

 

<img src="https://pic3.zhimg.com/50/v2-27ebb7b5a85e0e020d83ce6e07f9a429_hd.gif" data-caption="" data-size="normal" data-rawwidth="150" data-rawheight="101" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/b1a123a8603d8adda19e21f4b1ecf507.jpeg" class="content_image" width="150">

好吧...

这就是传说中的过调制算法...

毕竟六边形是能力...

外接圆是期望...

如果Us的旋转超出了六边形的区域...

还是得采用一定手段(算法)让它收收心...

把Us“勒”回到六边形的边长上的...

<img src="https://pic2.zhimg.com/50/v2-47e0271a4a51618b08a9b18ca2e651e7_hd.gif" data-caption="" data-size="normal" data-rawwidth="400" data-rawheight="225" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/c3729244c20030f103c4042f228ea392.jpeg" class="content_image" width="400">

好了...

小神今天码的有点多...

算作弥补更新时间长的愧疚了...

SVPWM算法再看不懂...

那你的智商只能去翻教科书了...

至于Us起始位置的扇区确定...

开关状态的时间计算...

IGBT的死区补偿...

电流采样的误差校正...

这些书上都有套路公式...

网上也有编程模板...

这些没有“技术含量”的东东...

小神就不在赘述了...

最后...

小神再解释一下...

为什么那么多教科书(甚至百度百科)....

都写了SVPWM的电压利用率比SPWM提升了15%...

因为...

根据电压利用率的定义(“调制”出来的交流电的线电压与直流电压之比)...

SVPWM使电机的线电压幅值达到了Udc...

而SPWM调制的三相相电压幅值最多达到Udc/2...

那么..

它的线电压幅值就是Udc/2 * √3 = 0.866Udc...

比一下...

1/0.866就是1.15...

就是这样提升了15%...

就酱...

<img src="https://pic4.zhimg.com/50/v2-f77761e4b34b1b6c1882212636ad2ffc_hd.gif" data-caption="" data-size="normal" data-rawwidth="350" data-rawheight="159" data-thumbnail="https://i-blog.csdnimg.cn/blog_migrate/af45797c0f8a664c47776cec1bd240c9.jpeg" class="content_image" width="350">

 

参考资料:

1. 《svpwm的仿真实现》;

2. 部分图片来源于百度;

3. 部分GIF制作于SooGif,如有侵权,请联系我删除。

 

微信公众号:超神约

电机学也是一种艺术...

转载于:https://www.cnblogs.com/ly0019/p/9053875.html

<think>好的,我现在需要帮用户编译一份关于SVPWM原理概述及仿真分析的实验报告,并且指导如何使用MATLAB或其他工具来完成。首先,我得回顾一下用户提供的引用内容,看看有哪些关键点需要涵盖。 根据引用[1]和[2],SVPWM在电机控制中的作用是连接逆变器和电机控制,将控制目标转化为实际的电压或电流输出。原理部分需要提到六个基本电压矢量和两个零矢量,以及如何合成这些矢量来逼近圆形磁链,这点在引用[4]里也有提到。引用[3]提到用户可能对SVPWM的输入输出、实际作用有疑问,所以需要明确说明这些内容。 接下来,实验报告的结构应该包括原理概述、仿真步骤和结果分析。用户可能需要知道如何在Simulink中搭建模型,如何配置模块,比如三相逆变器、PMSM模型、SVPWM模块等。引用[3]和[4]都提到了Matlab建模和仿真,所以需要详细说明步骤,包括参数设置和波形观察。 用户可能需要具体的仿真步骤,比如如何生成PWM波形,如何测量线电压和相电流。引用[2]指出SVPWM矢量控制的基础,所以可能需要涉及与矢量控制的结合。此外,引用[1]提到C语言实现,但用户这次的问题是关于实验报告和MATLAB仿真,所以这部分可能暂时不需要,但可以作为扩展内容。 需要注意用户可能对仿真中的子模块不太清楚,比如坐标变换模块(Clark变换、Park变换),这部分需要简要解释,但重点在SVPWM的实现。还要考虑如何展示仿真结果,比如波形图和磁链轨迹,验证是否接近圆形。 用户的问题还包括生成相关问题,我需要根据实验报告的内容提出相关问题,比如优化方法、与SPWM的比较、仿真中的常见问题等,这有助于用户深入思考。 最后,确保回答结构清晰,分步骤指导,引用正确,比如引用[1]到[4]中的内容,并在适当的地方添加引用标识。同时,检查LaTeX格式是否正确,数学表达式用$...$,独立公式用$$...$$,并正确使用代码块展示Simulink模型和可能的MATLAB代码。</think>### SVPWM原理概述及仿真分析实验报告编写指南 #### 一、实验报告结构设计 1. **原理概述** - SVPWM通过逆变器输出的六个非零基本电压矢量和两个零矢量合成目标电压矢量,控制电机磁链轨迹逼近圆形[^1][^4] - 坐标变换体系:Clark变换将三相坐标系转换为两相静止坐标系 - 矢量作用时间计算: $$ T_1 = \frac{\sqrt{3} T_s}{U_{dc}} U_{ref} \sin(60° - θ) $$ $$ T_2 = \frac{\sqrt{3} T_s}{U_{dc}} U_{ref} \sinθ $$ ($T_s$为开关周期,$U_{dc}$为直流母线电压) 2. **仿真分析步骤** **MATLAB/Simulink实现流程:** ```text 1. 搭建三相逆变器模型 2. 创建PMSM电机模型 3. 构建SVPWM模块: - 矢量扇区判断 - 作用时间计算 - PWM波形生成 4. 添加示波器观测线电压、相电流波形 5. 设置仿真参数(步长1e-6,仿真时间0.1s) ``` ![SVPWM仿真模型架构](https://example.com/svpwm_model.png)[^3] 3. **关键仿真结果分析** - PWM波形应呈现马鞍形特征 - 磁链轨迹需验证圆形度误差(建议<5%) - 谐波分析显示主要谐波分布在开关频率倍数附近 #### 二、MATLAB实现示例 ```matlab % SVPWM扇区判断函数示例 function sector = getSector(Ualpha, Ubeta) angle = atan2(Ubeta, Ualpha) * 180/pi; if angle < 0 angle = angle + 360; end sector = floor(angle/60) + 1; end ``` [^2][^4] #### 三、实验报告扩展内容建议 1. **对比分析** - SVPWM与SPWM调制方式对比(电压利用率提升15.47%) - 不同调制比下的谐波特性 2. **工程验证方法** - 通过dSPACE或Typhoon HIL进行硬件在环验证 - 实测波形与仿真结果误差分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值