1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 单相功率因数校正PFC电路的simulink仿真(从电路图搭建到C语言实现PID控制)

单相功率因数校正PFC电路的simulink仿真(从电路图搭建到C语言实现PID控制)

时间:2021-10-05 05:04:56

相关推荐

单相功率因数校正PFC电路的simulink仿真(从电路图搭建到C语言实现PID控制)

本文介绍功率因数校正(PFC)的simulink仿真实现,并用PID控制器将功率因数调整为近似1。最后将控制器离散化,用C语言的形式编写代码实现PID控制simulink中的模型实现同样的效果。(仅作为学习参考作用,若有不足请指出讨论。)

单相功率因数校正PFC电路的simulink仿真(从电路图搭建到C语言实现PID控制)

一、功率因数校正(PFC)电路原理1.PFC含义2.PFC电路原理3.闭环控制设计原理4.电压外环的任务5.电流内环的任务二、Simulink仿真电路搭建1.给定元器件参数2.Boost电路搭建3.PID控制电路搭建(搭建simulink自带PID控制器)4.测量电路搭建5.电路汇总三、仿真电路分析1.直流输出电压波形及平均值2.直流输出电压的FFT分析3.整流器输出电压与电感电流波形4.电网电压和电网电流的波形图5.电流畸变系数、功率因数计算四、C语言编写PID控制器1.搭建simulink中C语言的编译环境2.电路连接图3.C语言编写的PID控制代码4.控制器分析五、仿真文件获取1.积分获取2.免费获取六、其余电力电子电路

一、功率因数校正(PFC)电路原理

1.PFC含义

功率因数校正(Power Factor Correction,PFC)电路,是指在传统的不控整流中融入有源器件,使得交流侧电流在一定程度上正弦化,从而减小装置的非线性、改善功率因数的一种高频整流电路。

基本的单相PFC电路在单相桥式不可控整流器和负载电阻之间增加一个DC-DC功率变换电路,通常采用Boost电路(Boost电路原理及simulink仿真可以参考这个链接)。通过适当的控制Boost电路中开关管的通断,将整流器的输入电流校正成为与电网电压同相位的正弦波,消除谐波和无功电流,将电网功率因数提高到近似为1。电路的原理图如图所示:

2.PFC电路原理

假定开关频率足够高,保证电感LLL的电流连续;输出电容CCC足够大,输出电压uou_ouo​可认为是恒定直流电压。电网电压uiu_iui​为理想正弦,即ui=Um∗sin(wt)u_i=U_m*sin(wt)ui​=Um​∗sin(wt),则不可控整流桥的输出电压udu_dud​为正弦半波,ud=∣ui∣=Um∗∣sin(wt)∣u_d=|u_i|=U_m*|sin(wt)|ud​=∣ui​∣=Um​∗∣sin(wt)∣。

当开关管QQQ导通时,对电感LLL充电,电感电流iLi_LiL​增加,电容CCC向负载放点;当QQQ关断,二极管DiodeDiodeDiode导通时,电感两端电压uLu_LuL​反向,udu_dud​和uLu_LuL​对电容充电,电感电流iLi_LiL​减小。电感电流满足:

通过控制QQQ的通断,即调节占空比DDD,可以控制电感电流iLi_LiL​。若能控制iLi_LiL​近似为正弦半波电流,且与udu_dud​同相位,则整流桥交流侧电流也近似为正弦电流,且与电网电压uiu_iui​同相位,即可达到功率因数校正的目的。为此,需要引入闭环控制。

3.闭环控制设计原理

控制器必须满足以下两个要求:

①实现输出直流电压uou_ouo​的调节,使其达到给定值;

②保证电网侧电流正弦化,且功率因数为1.

即在稳定输出电压uou_ouo​的情况下,使电感电流iLi_LiL​与udu_dud​波形相同。采用电压外环、电流内环的单相PFC双闭环控制的原理图如下所示:

4.电压外环的任务

电压外环的任务是得到可以实现控制目标的电感电流指令值iL∗i^{*}_LiL∗​。给定输出电压uo∗u^{*}_ouo∗​减去测量到的实际输出电压uou_ouo​的差值,经过PI调节器后输出电感电流IL∗I^{*}_LIL∗​的指令。测量到的整流桥出口电压udu_dud​除以其幅值UmU_mUm​后,可以得到udu_dud​表示波形的量ud’u^’_dud’​,ud’u^’_dud’​为幅值为1的正弦半波,相位与udu_dud​相同。IL∗I^{*}_LIL∗​与ud’u^’_dud’​相乘,便可以得到电感电流的指令值iL∗i^{*}_LiL∗​。iL∗i^{*}_LiL∗​为与udu_dud​同相位的正弦半波电流,其幅值可控制直流电压uou_ouo​的大小。

5.电流内环的任务

电流内环的任务是通过控制开关管QQQ的通断,使实际的电感电流iLi_LiL​跟踪其指令值iL∗i^{*}_LiL∗​。此处采用滞环电流控制法。根据电流的公式,当QQQ导通时电感电流增大,而当QQQ关断时,电感电流减小。令iL∗i^{*}_LiL∗​减去iLi_LiL​,若差值△iLi_LiL​大于规定的上限△iLmaxi_{L_{max}}iLmax​​,则令QQQ导通,以增大iLi_LiL​;若差值△iLi_LiL​小于规定的下限△iLmini_{L_{min}}iLmin​​,则令QQQ关断,以减小iLi_LiL​。通过滞环控制,可以保证实际的电感电流iLi_LiL​在其指令值iL∗i^{*}_LiL∗​附近波动,波动的大小与滞环宽度有关,即与设定的△iLmaxi_{L_{max}}iLmax​​和△iLmini_{L_{min}}iLmin​​相关。

二、Simulink仿真电路搭建

1.给定元器件参数

① 输入电压有效值为220V,频率为50Hz;

② 输出直流电压指令u*o为400V;

③ 电感L=6mH;电容C=320uF;负载电阻R=160Ω;

④ 二极管整流桥:Rs=1e5Ω,Cs=1e-6F,Ron=1e-3Ω,Lon=0,Vf=0;

⑤ 开关管Q采用MOSFET,Ron=0.001Ω,Lon=0,Vf=0.8V,Ic=0,Rs=1e5Ω,Cs=inf;

⑥ Boost电路中二极管参数:Ron=0.001Ω,Lon=0,Vf=0.8V,Ic=0,Rs=500Ω,Cs=250e-9F。

⑦ Relay滞环电流控制模块宽度设置为[-0.5,0.5],Switch on point为1,Switch off point为-1;

⑧ 仿真算法:ode23tb

2.Boost电路搭建

Boost电路的搭建可以参考这篇文章。搭建好的电路图如下:

3.PID控制电路搭建(搭建simulink自带PID控制器)

4.测量电路搭建

其中,功率因数计算函数如下:

5.电路汇总

三、仿真电路分析

将powergui设置为离散模型,Ts=1e-6,PID控制器的P为0.02,I为10。

1.直流输出电压波形及平均值

输出电压波形如下:

输出电压平均值如下:

可以发现,直流电压波动周期为0.01s,频率为工频(50Hz)的两倍。

2.直流输出电压的FFT分析

3.整流器输出电压与电感电流波形

4.电网电压和电网电流的波形图

5.电流畸变系数、功率因数计算

可以看出,电压和电流是同相位的,即功率因数基本为1(0.9997)。也可以观察Fourier模块的相角观察到电流与电压是同相位的,这满足控制器实现电网侧电流正弦化,且功率因数为1的要求,达到了PFC的目的。

四、C语言编写PID控制器

1.搭建simulink中C语言的编译环境

拖出s-function-builder模块。(需要去了解一下如何在simulink中搭建C语言的编译环境,本文是装好了进行应用。可以参考:链接1、链接2、链接3)

2.电路连接图

3.C语言编写的PID控制代码

/** Include Files**/#if defined(MATLAB_MEX_FILE)#include "tmwtypes.h"#include "simstruc_types.h"#else#include "rtwtypes.h"#endif/* %%%-SFUNWIZ_wrapper_includes_Changes_BEGIN --- EDIT HERE TO _END */#include <math.h>/* %%%-SFUNWIZ_wrapper_includes_Changes_END --- EDIT HERE TO _BEGIN */#define u_width 1#define y_width 1struct _pid{float SetSpeed;//定义设定值float ActualSpeed;//定义实际值float err;//定义偏差值float err_last;//定义最上前的偏差值float err_next;//定义上一个偏差值 float Kp,Ki,Kd;//定义比例、积分、微分系数};static struct _pid pid={0,0,0,0,0,0.02,0.01,1.15};float PID_realize(float Err){//pid.SetSpeed=speed;//设定值 pid.err=Err;//pid.SetSpeed-pid.ActualSpeed;//误差项 float incrementSpeed=pid.Kp*(pid.err-pid.err_next)+pid.Ki*pid.err;//pid.Kd*(pid.err-2*pid.err_next+pid.err_last) ;//这里不用微分环节pid.ActualSpeed+=incrementSpeed;pid.err_last=pid.err_next;pid.err_next=pid.err;return pid.ActualSpeed;}//u0是输入的误差项,y0是控制器的输出void mytest_Outputs_wrapper(const real_T *u0,real_T *y0){y0[0] =PID_realize(u0[0]);}

4.控制器分析

①比例环节

可以发现仅有比例环节的情况下系统存在稳态误差,需要增加积分环节消除稳态误差。

②比例积分环节

引入比例积分环节后,系统的稳态误差消失,输出为给定的400V电压。电网电流和电压同相位,功率因数由和计算得近似为1。以上是C语言实现PID控制器的效果,具体的PID参数可自行设置。

五、仿真文件获取

1.积分获取

Matlabb仿真文件地址

2.免费获取

关注公众号【凯期可期】后台回复:电力电子

六、其余电力电子电路

其余电路参考

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。