世纪电源网社区logo
社区
Datasheet
标题
返回顶部
原创

三相整流SVPWM控制PSIM仿真分析

[复制链接]
查看: 10791 |回复: 26
1
shiyongxie
  • 积分:1803
  • |
  • 主题:8
  • |
  • 帖子:183
积分:1803
LV6
高级工程师
  • 2018-8-25 17:07:41
最近做了一个PWM整流的评估,这个需求可能有双向变换,做了普通的全桥拓扑,没有做维也纳整流。
做软件的小伙伴开小差,只好硬件的先上,后面看看coding是不是还要硬件来做。要做就又是个挑战
电路控制部分有三部分,部分模块使用了论坛上一下小伙伴的东西,如果有侵权请联系我
1.PLL
PLL部分没有做得太复杂,后续加入SOGI的算法,提高一下谐波的抑制能力;仿真中用到的PLL的算法框图;
PLL.gif

这个锁相的算法比较常规,大概的思路是先在三相Clark变换得到一对相位相差90°的信号,然后经过Park变换及相位信号做了闭合锁相。
由于变换过程中没有用到滤波等措施,三相不平衡等问题做进一步处理。后续有时间在搞搞。
2.电压闭环控制:
闭环控制框图.jpg
控制环路做了普通双环控制,PLL输出电网的相位角,控制环流可以完成abc2dq,和dq2albe的变换。经过变换后给的SVPWM发生器完成发波。
3.SVPWM,用来做法波的

仿真的电路如图
仿真电路图.png
先上一些模拟的结果,PI参数应该还是有点问题,后面在调整一下,启动后输出电压有回调。实际电路接入应该需要加上缓启动,否则冲击太大,后面选用一个继电器搞定。
三相电流及母线电压.png

看看SVPWM的输出,应该就是一个马鞍波,SVPWM输出占空比大于1,这个是个bug,后面要改一下否则启动电流太大,炸鸡就麻烦了SVPWM的算法,参考了TI的电机算法。这里的SVPWM的算法看上去是非常简洁了

clk_20kHz++;//SVPWM执行的频率
if(clk_20kHz==50)
{
   clk_20kHz=0;

if(in[2]>0.001) tmp4=in[2];
else tmp4=0.001;         //输出电压启动时候的可能会非常小,做除法时候需要限制一下计算值   
Ualpha=in[0]/tmp4;
Ubeta=in[1]/tmp4;
                                                                                                        \
                                                                                                                                                                \
         tmp1=  Ubeta;                                                                                                                        \
         tmp2= Ubeta/2 + Ualpha*k1;                                        \
         tmp3=  tmp2 -  tmp1;                                                                                                        \
                                                                                                                                                                \
         VecSector=3;                                                                                                                                \
         VecSector=( tmp2> 0)?(  VecSector-1): VecSector;                                              //扇区计算
         VecSector=( tmp3> 0)?(  VecSector-1): VecSector;                                                \
         VecSector=( tmp1< 0)?(7- VecSector) : VecSector;                                                \
                                                                                                                                                                \
        if     ( VecSector==1 ||  VecSector==4)                                                                        \
                {                                                                                                                                                        \
                         Ta= tmp2;                                                                                                                                 \
                         Tb=  tmp1-tmp3;                                                                                                                         \
                         Tc=  -tmp2 ;                                                                                                                        \
                }                                                                                                                                                        \
        else if( VecSector==2 ||  VecSector==5)                                                                        \
                {                                                                                                                                                        \
                         Ta= tmp3+tmp2;                                                                                                                         \
                         Tb= tmp1;                                                                                                                                 \
                         Tc= -tmp1;                                                                                                                        \
                }                                                                                                                                                        \
        else                                                                                                                                                 \
                {                                                                                                                                                        \
                         Ta=  tmp3;                                                                                                                         \
                         Tb= -tmp3;                                                                                                                         \
                         Tc= -tmp1-tmp2;                                                                                                                                \
                }                                                                                                                                                        \
                                                                                                                                                                \
out[0]=Ta;
out[1]=Tb;
out[2]=Tc;        
out[3]=VecSector;               
}



SVPWM和PLL输出.png
相电流线电压
相电流与线电压.png


用到的模块一部分用C代码实现,做实际做到MCU上代码还要改写一下。估计后续数据标定是比较麻烦参数会是一个比较麻烦的事情。
...................................................................
分割线
...................................................................
最近在做IGBT损耗计算,psim上没有找到igbt自建模型的模板,不知道是不是有这玩意,如果有人知道告诉我一下
2020.1.19
以下内容可能与本主题没有关系,但与Psim使用有点关联。懒得开新贴在这写写。
Psim 的IGBT损耗模型是有的。
Vce Vd Eon Eoff Erec 与Ice都是可以用look up table 的方式得到。双脉冲实验方法是可以比较准确地测量出以上几个被表。
最近做了一些IGBT模块的测试,打算会将功率计算与结合电机控制算法在Psim上再验证。,
现在已经做的一些工作有:
VBA 开发的IGBT损耗分析,损耗分析的数据输入基本是基于IGBT的规格书。
损耗估算的一些思路:
1.损耗计算的关键是估算电周期的中的占空比每个开关的占空比大小这样可以分别求出IGBT模块 IGBT和diode的瞬时导通损耗。
2.Eon,Eoff Erec 的损耗可以有损耗曲线拟合出他们与Ice 的函数,计算每个开关的对应的Eon,Eoff,Erec。(或者看起来这个工作量好大,但是这都是重复
性的工作,写个脚本代码来做这个事情比较适合,VBA,或者Python,matlab等等都可以,我尝试过VBA和 python)
3. 1和2的两个步骤其实就是算出每个开关的Swich loss 和 conduction loss,其实可以认为是算出了IGBT和diode的瞬时损耗。将瞬在一个电频率内做简单的叠加(可以近似认为是求积分)这平均损耗就出来了。

等到瞬时损耗的还用一个比较重要的应用点。在汽车驱动器中,低速启动时,IGBT的最高结温波动很大。等到的瞬时结温波动曲线可以通过foster模型与瞬时损耗曲线通过电路等效仿真方式得到结果。一般情况低速启动IGBT结温在在相同电流下大于高速下的结温。


之前的对FS820 NHV820,TG820等功率模块做了测试实验数据,测试数据在整理,大体结论是:模块实际表现比规格书要好,规格书比较保守。


电机控制方面,目前主要做无感观测器。做这个主要原因该部分算法基本没有找到开源代码,需要重新开发。如果谁肯开源可以给我一份。
低速段,高频注入法。(正弦波注入,方波注入。正弦波注入已经放弃,需要较多滤波器,计算量大。方波注入,无滤波器效果还不错,还需要继续验证)
中高速段反电势法。高转速,低PWM频率的控制。






SMO-EMF.png
SMO-EMF1.png

Psim IGBT 模型

Psim IGBT 模型
HF_squre1.jpg
HF_squre.png

PWM_Rec.zip

16.52 KB, 下载次数: 458, 下载积分: 财富 -2

嘎巴大队长
  • 积分:530
  • |
  • 主题:3
  • |
  • 帖子:16
积分:530
LV6
高级工程师
  • 2019-5-15 16:59:29
 
顶一个
清秋梧桐
  • 积分:277
  • |
  • 主题:0
  • |
  • 帖子:41
积分:277
LV3
助理工程师
  • 2019-7-13 14:16:12
 
学习学习
moonsunrain
  • 积分:411
  • |
  • 主题:1
  • |
  • 帖子:21
积分:411
LV6
高级工程师
  • 2019-7-14 18:48:52
 
好文
wjdysu
  • wjdysu
  • 离线
  • LV6
  • 高级工程师
  • 积分:823
  • |
  • 主题:10
  • |
  • 帖子:43
积分:823
LV6
高级工程师
  • 2019-7-17 10:04:11
 
正在学习PWM整流,非常好
wjlin1983
  • 积分:2848
  • |
  • 主题:0
  • |
  • 帖子:37
积分:2848
LV8
副总工程师
  • 2019-7-17 18:47:00
 
很好,正在学习
yuedan004
  • 积分:881
  • |
  • 主题:4
  • |
  • 帖子:48
积分:881
LV6
高级工程师
  • 2019-7-18 09:06:26
 
好东西,谢谢
lemon_yilaguan
  • 积分:201
  • |
  • 主题:0
  • |
  • 帖子:3
积分:201
LV3
助理工程师
  • 2019-7-25 22:57:21
 
非常不错的资料  
zxs2000
  • 积分:1450
  • |
  • 主题:7
  • |
  • 帖子:180
积分:1450
LV6
高级工程师
  • 2019-7-27 21:38:13
 
好文章,正学习PSIM
ly12314
  • 积分:415
  • |
  • 主题:0
  • |
  • 帖子:39
积分:415
LV6
高级工程师
  • 2019-8-1 13:26:07
 
好好学习
熊紅
  • 熊紅
  • 离线
  • LV6
  • 高级工程师
  • 积分:1216
  • |
  • 主题:1
  • |
  • 帖子:76
积分:1216
LV6
高级工程师
  • 2019-12-25 01:19:14
 
謝謝分享,學習了
zhuxin987
  • 积分:117
  • |
  • 主题:0
  • |
  • 帖子:3
积分:117
LV2
本网技师
  • 2020-3-28 01:47:58
 
谢谢楼主分享,学习到了
zxs2000
  • 积分:1450
  • |
  • 主题:7
  • |
  • 帖子:180
积分:1450
LV6
高级工程师
  • 2020-4-10 15:49:31
 
谢谢分享            
wangyi39
  • 积分:1170
  • |
  • 主题:27
  • |
  • 帖子:94
积分:1170
LV6
高级工程师
  • 2020-5-12 15:56:28
 
非常好,正需要这个
qq649802817
  • 积分:926
  • |
  • 主题:5
  • |
  • 帖子:84
积分:926
LV6
高级工程师
  • 2020-5-18 16:22:22
 
好贴,多谢楼主!
cavinx
  • 积分:110
  • |
  • 主题:0
  • |
  • 帖子:4
积分:110
LV2
本网技师
  • 2020-6-9 23:45:52
 
多谢分享
chen1098951925
  • 积分:610
  • |
  • 主题:0
  • |
  • 帖子:156
积分:610
LV6
高级工程师
  • 2020-10-13 12:20:47
 
学习学习
花开木木
  • 积分:133
  • |
  • 主题:0
  • |
  • 帖子:3
积分:133
LV2
本网技师
  • 2020-12-2 18:36:58
  • 倒数10
 
psim是哪个版本,学习一下
花开木木
  • 积分:133
  • |
  • 主题:0
  • |
  • 帖子:3
积分:133
LV2
本网技师
  • 2020-12-2 18:38:16
  • 倒数9
 
请教三相整流电流中含有2次和3次谐波是什么原因,电流在中心部队称,电流采样矫正没啥问题
飞翔的谢菲尔德
  • 积分:107
  • |
  • 主题:0
  • |
  • 帖子:1
积分:107
LV2
本网技师
  • 2021-6-26 15:41:28
  • 倒数8
 
学习了,谢谢
ygtjcng1
  • 积分:2417
  • |
  • 主题:28
  • |
  • 帖子:154
积分:2417
LV8
副总工程师
  • 2021-7-3 11:52:52
  • 倒数7
 
学习下
TP416775364
  • 积分:395
  • |
  • 主题:0
  • |
  • 帖子:49
积分:395
LV4
初级工程师
  • 2021-7-8 10:17:57
  • 倒数6
 
正需要,tks!
阿甘
  • 阿甘
  • 离线
  • LV8
  • 副总工程师
  • 积分:3062
  • |
  • 主题:51
  • |
  • 帖子:374
积分:3062
LV8
副总工程师
  • 2021-10-17 10:52:11
  • 倒数5
 
收藏了,谢谢分享
ygtjcng1
  • 积分:2417
  • |
  • 主题:28
  • |
  • 帖子:154
积分:2417
LV8
副总工程师
  • 2021-11-21 23:01:30
  • 倒数4
 
感谢分享
贤者之石
  • 积分:226
  • |
  • 主题:0
  • |
  • 帖子:14
积分:226
LV3
助理工程师
  • 2021-11-23 21:47:59
  • 倒数3
 
感谢楼主分享,祝楼主事业蒸蒸日上
Mandy9927
  • 积分:243
  • |
  • 主题:0
  • |
  • 帖子:2
积分:243
LV3
助理工程师
  • 2022-3-1 19:05:29
  • 倒数2
 
if     ( VecSector==1 ||  VecSector==4)                                          
                {                                                                                                     
                         Ta= tmp2;                                                   
                         Tb=  tmp1-tmp3;                                                        
                         Tc=  -tmp2 ;                                                         
                }                                                                                 
        else if( VecSector==2 ||  VecSector==5)                                         
                {                                                                          
                         Ta= tmp3+tmp2;                                            
                         Tb= tmp1;                                                                     
                         Tc= -tmp1;                                                      
                }                                                                                                                                                        
        else                                                                                                                                                
                {                                                                                                                                                        
                         Ta=  tmp3;                                                                                                                        
                         Tb= -tmp3;                                                                                                                        
                         Tc= -tmp1-tmp2;                                                                                                                                
                }                  
感谢楼主分享,上面的代码都懂了,就是这里的Ta,Tb,Tc的式子搞不明白
我参考了这网址的理论计算https://www.bilibili.com/video/BV1o3411b7j7?p=6
各扇区的矢量作用时间计算出来,分别命名为T1,T2
以扇区1为例,Ta=T0/2=(1-T1-T2)/2=(1-0.866*Ualpha-0.5*Ubeta)/2
跟楼主仿真的Ta=tmp2=0.5*Ubeta+0.866*Ualpha不同
请教楼主的式子是怎么求得的?                                                                                                                             
就是电源
  • 积分:482
  • |
  • 主题:1
  • |
  • 帖子:13
积分:482
LV6
高级工程师
最新回复
  • 2023-1-3 14:30:23
  • 倒数1
 
好帖!学习学习。
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号