|
| | | | | | | Vienna整流的的控制算法,我们从最简单的电流滞环控制入手:
为了使控制最简单明了,这里没有加入输出正负半BUS平衡控制策略(有兴趣深究的可以在进一步增加);从环路控制上看,直接控制的是输出电压,输出电压进行PI控制后,乘以该相电压的归一化系数,然后在与该相电流做差,得到的结果送到驱动计算,即可得到最简单的电流滞环控制;
仿真波形如下:
电流滞环控制在充电桩电源模块上应用广泛,主要也是由于电源模块的特殊应用,前级 Vienna只是作为整流用,并不需要其他复杂功能;电流滞环控制并不需要对市电进行锁相,只需对输入电流和市电电压采样和BUS母线电压采样,就可进行PI控制,计算控制量非常的少,算法简单,所以普遍应用;当然也有其控制缺点,从控制的角度看,电流并没有构成闭环控制,在突加载过程,有可能导致电流失控导致开关管炸毁,不过像电源模块后级还有一级DC/DC变换,并不会对前级整流造成直接的冲击;
评分查看全部评分
|
|
|
|
|
|
|
|
|
| | | | | | | | | | | | | 正在学习您讲的环路控制。看仿真中的环路dq控制,PI输出、耦合项等,符号(加、减)与论文中不太一样呢?还有那个dq到abc的变换的模块,查看help,PSIM中的矩阵是不是搞错了呢?那个sin应该有个负号吧。
|
|
|
| | | | | | | | | | | | | | | 是的,PSIM自带的DQ转abc模块跟论文的不一样 |
|
|
| | | | | | | | | | | | | | | | | 这两天研究了SVPWM的发波,加上了均压环控制。三相交流侧电流有点异常,每隔20ms,电流波形有个缺口。观察直流电压,也是每隔20ms有个波动。附上仿真。
|
|
|
| | | | | | | | | | | | | | | | | | | 我看了代码,是你驱动给定搞错了;修改过来就正常了。
|
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | 你软件是在哪里加正负BUS电压均衡策略?我看了代码没看到呀 |
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | 对上下电压偏差进行PI计算,得到的值,去调节负小矢量的时间;计算Ta做了处理。
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | 有没有试过,正负bus平衡控制输出的PI值,直接叠加到dq反变换之后的a,b,c上,然后在进行Svpwm计算?
|
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 我感觉那样的矫正效果更好,后面SVPWM可以写成模块,不用修改
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 按照你的代码。母线平衡能力不强呀;
我修改了一下,直接将qd反变换的a\b\c减去母线平衡的PID输出,然后在进行SVPWM计算;
效果比你的好多了,你可以验证一下;
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 我没有将qd反变换的a\b\c减去母线平衡的PID输出。
按照你的意思,我强制将上下电压偏差30V,仿真的也可以的。母线平衡pid输出上限限制放开了。
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 对的,放开了也是一样的;用没有研究过这两种补偿方法那种有优势?
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 我看论文上,对于svpwm调制的,都是通过调整正负小矢量作用时间,去调整上下电压。不知道您说的这种补偿方式有何依据呢。另外我看了SPWM调制波方式的相关论文,确是通过上下电压偏差,再加上一个合适比例系数,得到一个3次谐波,叠加到abc上,得出一个马鞍波,再跟载波比较生成PWM波,通过这种方法去平衡上下电压。我也验证了。
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 这个我没看过相关的论文讲解这种控制的,纯粹是因为用SPWM我是这样子补偿的,直接将这种想法加到SVPWM,感觉效果是一样的
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 您好!最近在学SPWM调制的VIENNA整流器,遇到不少问题,比如加中点电位后调制波马鞍波化不明显,电流谐波反而增加,整流器启动时电流和调制波尖峰太大,电流波形和调制波波形太粗。。。(头都大了┗( T﹏T )┛)能参考一下你的SPWM调制的MATLAB仿真模型吗,万分感谢!!!卡在这瓶颈好久了,邮箱 1960256933@qq.com
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 母线平衡策略中0.5系数不应该有,正确如下:
Ta=(1+f1)*(Ts-t1-t2)/4.0;//引入母线平衡策略
Ta=(Ts-t1-t2)/4.0;//不引入母线平衡策略
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | 请问下这个地方为什么是0.156,wl是怎么计算的啊
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | 是2*3.1415*50*0.5*0.001 = 0.157吗
|
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | 这个你搞明白了,我也没有搞明白这个参数是如何计算的。
|
|
|
| | | | | | | | | | | | | | | | | | | 想问一下,为什么这个电流在过零点和换向点都会出现这个平台呀,spwm和svpwm都有,我试着改变PI参数好像没有用,而且加大电感量闭环几乎就不能实现,想请教一下为什么,我仿真是用的SVPWM那个仿真,把电感增大到3mh以上就不行了 |
|
|
| | | | | | | | | | | | | | | | | | | | | 而且你给的这个仿真也是这个问题,在过零点会有平台问题,并且SPWM和SVPWM两个算法下用的电感量也不一样,想请问一下这个电感量对这个影响为什么这么严重
|
|
|
| | | | | | | | | | | | | | | | | | | | |
滞环控制可以做到没有平台,马鞍波也可以。此SVPWM为羊角波
-
左边羊角波,右边马鞍波
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | //羊角波调制
/***************************************************************************
switch(N)
{
case 1:{ Tcmpa1=Ta;Tcmpa2=Tb;Tcmpa3=Tc;break;}
case 2:{ Tcmpa1=Tb;Tcmpa2=Ta;Tcmpa3=Tc;break;}
case 3:{ Tcmpa1=Tc;Tcmpa2=Ta;Tcmpa3=Tb;break;}
case 4:{ Tcmpa1=Tc;Tcmpa2=Tb;Tcmpa3=Ta;break;}
case 5:{ Tcmpa1=Tb;Tcmpa2=Tc;Tcmpa3=Ta;break;}
case 6:{ Tcmpa1=Ta;Tcmpa2=Tc;Tcmpa3=Tb;break;}
default:{;}
}*/
/***************************************************************************/
//马鞍波调制
/***************************************************************************/
switch(h)
{
case 1: {
switch(N)
{
case 1:{Tcmpa1=Ta;Tcmpa2=Tb;Tcmpa3=Tc;break;}//pwma需反向,Ta-
case 2:{Tcmpa1=Tb-t1/4;Tcmpa2=Ta-t1/4;Tcmpa3=Tc-t1/4;break;}
case 3:{Tcmpa1=Tc-t1/4;Tcmpa2=Ta-t1/4;Tcmpa3=Tb-t1/4;break;}
case 4:{Tcmpa1=Tc-t1/4;Tcmpa2=Tb-t1/4;Tcmpa3=Ta-t1/4;break;}
case 5:{Tcmpa1=Tb-t1/4;Tcmpa2=Tc-t1/4;Tcmpa3=Ta-t1/4;break;}
case 6:{ Tcmpa1=Ta;Tcmpa2=Tc;Tcmpa3=Tb;break;}
default:{;}
}
break;
}
case 2: {
switch(N)
{
case 1:{Tcmpa1=Ta;Tcmpa2=Tb;Tcmpa3=Tc;break;}//pwmab需反向,Ta+
case 2:{Tcmpa1=Tb;Tcmpa2=Ta;Tcmpa3=Tc;break;}
case 3:{Tcmpa1=Tc+t2/4;Tcmpa2=Ta+t2/4;Tcmpa3=Tb+t2/4;break;}
case 4:{Tcmpa1=Tc+t2/4;Tcmpa2=Tb+t2/4;Tcmpa3=Ta+t2/4;break;}
case 5:{Tcmpa1=Tb+t2/4;Tcmpa2=Tc+t2/4;Tcmpa3=Ta+t2/4;break;}
case 6:{Tcmpa1=Ta+t2/4;Tcmpa2=Tc+t2/4;Tcmpa3=Tb+t2/4;break;}
default:{;}
}
break;
}
case 3: {
switch(N)
{
case 1:{Tcmpa1=Ta-t1/4;Tcmpa2=Tb-t1/4;Tcmpa3=Tc-t1/4;break;}//pwmb需反向,Ta-
case 2:{Tcmpa1=Tb;Tcmpa2=Ta;Tcmpa3=Tc;break;}
case 3:{Tcmpa1=Tc;Tcmpa2=Ta;Tcmpa3=Tb;break;}
case 4:{Tcmpa1=Tc-t1/4;Tcmpa2=Tb-t1/4;Tcmpa3=Ta-t1/4;break;}
case 5:{Tcmpa1=Tb-t1/4;Tcmpa2=Tc-t1/4;Tcmpa3=Ta-t1/4;break;}
case 6:{Tcmpa1=Ta-t1/4;Tcmpa2=Tc-t1/4;Tcmpa3=Tb-t1/4;break;}
default:{;}
}
break;
}
case 4: {
switch(N)
{
case 1:{Tcmpa1=Ta+t2/4;Tcmpa2=Tb+t2/4;Tcmpa3=Tc+t2/4;break;}//pwmb/c需反向,Ta+
case 2:{Tcmpa1=Tb+t2/4;Tcmpa2=Ta+t2/4;Tcmpa3=Tc+t2/4;break;}
case 3:{Tcmpa1=Tc;Tcmpa2=Ta;Tcmpa3=Tb;break;}
case 4:{Tcmpa1=Tc;Tcmpa2=Tb;Tcmpa3=Ta;break;}
case 5:{Tcmpa1=Tb+t2/4;Tcmpa2=Tc+t2/4;Tcmpa3=Ta+t2/4;break;}
case 6:{Tcmpa1=Ta+t2/4;Tcmpa2=Tc+t2/4;Tcmpa3=Tb+t2/4;break;}
default:{;}
}
break;
}
case 5: {
switch(N)
{
case 1:{Tcmpa1=Ta-t1/4;Tcmpa2=Tb-t1/4;Tcmpa3=Tc-t1/4;break;}//pwmc需反向,Ta-
case 2:{Tcmpa1=Tb-t1/4;Tcmpa2=Ta-t1/4;Tcmpa3=Tc-t1/4;break;}
case 3:{Tcmpa1=Tc-t1/4;Tcmpa2=Ta-t1/4;Tcmpa3=Tb-t1/4;break;}
case 4:{Tcmpa1=Tc;Tcmpa2=Tb;Tcmpa3=Ta;break;}
case 5:{Tcmpa1=Tb;Tcmpa2=Tc;Tcmpa3=Ta;break;}
case 6:{Tcmpa1=Ta-t1/4;Tcmpa2=Tc-t1/4;Tcmpa3=Tb-t1/4;break;}
default:{;}
}
break;
}
case 6: {
switch(N)
{
case 1:{Tcmpa1=Ta+t2/4;Tcmpa2=Tb+t2/4;Tcmpa3=Tc+t2/4;break;}//pwma/c需反向,Ta+
case 2:{Tcmpa1=Tb+t2/4;Tcmpa2=Ta+t2/4;Tcmpa3=Tc+t2/4;break;}
case 3:{Tcmpa1=Tc+t2/4;Tcmpa2=Ta+t2/4;Tcmpa3=Tb+t2/4;break;}
case 4:{Tcmpa1=Tc+t2/4;Tcmpa2=Tb+t2/4;Tcmpa3=Ta+t2/4;break;}
case 5:{Tcmpa1=Tb;Tcmpa2=Tc;Tcmpa3=Ta;break;}
case 6:{Tcmpa1=Ta;Tcmpa2=Tc;Tcmpa3=Tb;break;}
default:{;}
}
break;
}
default:{;}
}
/***************************************************************************/
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | 这个极小功率能做到谐波含量很低么?比如只有600~700W的时候。 |
|
|
|
| | | | | | | | | | | | | | | | | | | 请教一下三个矢量输出的时间(ta,tb,tc)如何计算?能否提供一下相关文献学一下.
我是参考附件文献理解程序内容,卡在这里。谢谢支持~
|
|
|
| | | | | | | | | | | | | | | | | | | 你这个SVPWM部分的代码是根据什么论文或资料写出来的呢?能分享一下吗?
|
|
|
|
| | | | | | | | | | | | | | | | | 楼主,前面的符号理解不了啊。我看的论文是以下这样的。
|
|
|
|
| | | | | | | | | | | | | 前辈 想请教下,我使用的matlab环境仿真,调制逻辑是在调制波负半轴叠加偏置使调制波与x轴上方的载波进行比较,负半周与正半轴的载波调制波比较逻辑相反,这个在实际dsp编程中是什么思路实现的呢。
-
vienna仿真波形
-
调制逻辑
|
|
|
|
|
| | | | | | | | | | | | | | | 最近我也在根据这个图用MATLAB搭SPWM调制的VIENNA整流器,但是有关波形太粗了,开环波形也不太对,能否借你的MATLAB仿真模型参考一下看看是不是有些地方没考虑到,电气小白一枚多多包涵! 1960256933@qq.com
|
|
|
|
|
|
| | | | | | | | | | | | | 上图的f电流回路是否不对呀?b是断开的,电流是否是经过上面的二极管、正端电容充电啊
|
|
|
|
|
|
|
|
| | | | | | | | | | | 版主,非常感谢您的分享,也学到了很多的东西,但是还是想请问一下,为什么交流电流的波形会有平台出现呢,我自己做的时候才发现这个问题,困扰了好久,原来还怀疑过是软件的问题,我换成simulink仿真也是这个问题
|
|
|
|
|
|
| | | | | | | | | | | 感觉有几次错误,Id和Iq没有乘以WL,角度从Vq得来的?我看一般都是aB坐标得到的。还有求和求差那块有的正负号是不是错了。。
|
|
|
|
|
|
| | | | | | | | | 楼主大神,请问您下载了您的VIENNA_I--电流滞环控制模型,PSIM打开后运行报Error Message:
Error: Node of a control/power interfaceis floating!是我的版本问题吗?
|
|
|
|
|
| | | | | | | | | 问下版主,Sva是哪里对哪里的波形,仿真原理图中没看到Sva的标记? |
|
|
|
| | | | | | | 楼主,这个图是用visio自己画的?还是用其他工具,工作量还是很大的
|
|
|
| | | | | | | 楼主,这几张图画的示意也是Ia<0 Ib>0 Ic>0的情况,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| | | | | 最近要做一个三相整流项目,12kW,版主的资料帮助很大!!! |
|
|
| | | | | 楼主是大神啊,请问现在在哪一家做?我是做vincotech的,希望可以认识你 |
|
|
|
|
|
| | | | | | | 请问您下载了VIENNA_I--电流滞环控制模型,PSIM打开后运行报Error Message:
Error: Node of a control/power interfaceis floating!是我的版本问题吗?
|
|
|
|
|
|
|
| | | | | 楼主大神,请问您下载了您的VIENNA_I--电流滞环控制模型,PSIM打开后运行报Error Message:
Error: Node of a control/power interfaceis floating!是我的版本问题吗? |
|
|
|
|
|
|
|
|
|
|
|
|
| | | | | 你好,这里有个问题想请教一下,下面的这个代码没有看的太明白,可以帮忙解释一下吗?我知道这个是扇区的判断,但是不知为什么要这样写。你有里有什么好的文献可以参考吗?
if(clk_20kHz==100)
{
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;
}
|
|
|
|
|
|
|
|
|
|
|
| | | | | 想向您请教一下,您做的VIENNA_II--DQ正交控制 - SVPWM这个仿真,SVPWM 部分目标电压矢量合成的程序使用的是什么方法,研究了很久也没懂,有什么参考资料或者说明吗,还请指教一下,非常非常感谢!
switch(N)
{
case 1:{ Tcmpa1=Ta;Tcmpa2=Tb;Tcmpa3=Tc;break;}//pwma/b需反向
case 2:{ Tcmpa1=Tb;Tcmpa2=Ta;Tcmpa3=Tc;break;}
case 3:{ Tcmpa1=Tc;Tcmpa2=Ta;Tcmpa3=Tb;break;}
case 4:{ Tcmpa1=Tc;Tcmpa2=Tb;Tcmpa3=Ta;break;}
case 5:{ Tcmpa1=Tb;Tcmpa2=Tc;Tcmpa3=Ta;break;}
case 6:{ Tcmpa1=Ta;Tcmpa2=Tc;Tcmpa3=Tb;break;}
default:{;}
}
break;
}
case 1:
{
if(Tcmpa1>=time) y1=1;else y1=0;
if(Tcmpa2>=time) y2=0;else y2=1;
if(Tcmpa3>=time) y3=0;else y3=1;
break;
}
这段程序实际理解是什么意义,理解不了,还请大神指教。
|
|
|
| | | | | | | 这个应该是根据小扇区定义作用时间,不同扇区的作用时间不一样,不过三个时间都是固定的值,每个扇区互相交换,后面那个是跟三角波比较,分正负值,三角波相差180°
|
|
|
| | | | | 6666666666666666666666666666666666666
|
|
|
|
|
|
| | | | | VIENNA的控制一般是用电器解耦做,还是在静止坐标系下用双环PI做呢?
|
|
|
|
|
|
|