ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

三相PWM整流器FCS-MPCC仿真模型详解:Simulink实操与算法推导

三相PWM整流器FCS-MPCC仿真模型详解:Simulink实操与算法推导 做三相PWM整流器控制的同行应该都经历过这种场景要么被双闭环PI加空间矢量调制那套参数整定折腾得够呛要么在论文里看到“有限集模型预测电流控制FCS-MPCC”这个名字却不知道它到底怎么落地。这次分享的是我在Simulink里搭的一套三相PWM整流器有限集模型预测电流控制仿真模型从主电路结构、dq数学模型到预测算法核心代码全部按实操顺序讲透。三相PWM整流器本身用途很广充电桩、有源前端AFE、储能变流器PCS凡是需要单位功率因数整流和可控直流电压的场合基本都能看到它的影子而有限集模型预测电流控制正好是这几年热度很高、又相对容易上手的替代控制方案。这篇文章适合两类人一类是正在拿三相PWM整流器做毕业设计或课题预研的学生另一类是准备从传统控制切换到模型预测控制、想先在仿真里验证效果再上硬件的工程师。1. 先把这个项目看懂整体设计与控制思路拆解1.1 三相PWM整流器到底在干什么三相PWM整流器说白了就是一个把交流电变成可控直流电的变换器但它和普通不控整流最大的区别在于输入电流的相位、波形、功率因数都可以主动控制。常规的二极管整流桥电流谐波大、功率因数低电网侧污染严重而PWM整流器通过IGBT的高频开关让交流侧电流跟随正弦参考同时还能让电流和电压同相位实现单位功率因数运行。在这个模型里拓扑就是典型的三相两电平电压型PWM整流器三相电网通过网侧电感L接到六个IGBT组成的桥臂桥臂直流侧并联大电容C负载挂在直流母线上。这里的网侧电感L作用很关键它既是滤波电感也是能量传递的载体交流侧电流的控制本质就是控制电感上的电压差。很多人一开始会问这不就是逆变器的拓扑吗对三相PWM整流器和三相逆变器在硬件上几乎没有区别区别在于能量流动方向和控制目标。整流器控制的目标是让直流母线电压稳定在给定值同时保证网侧电流正弦、功率因数可控。搞清楚这一点后面看控制结构就不会晕。1.2 为什么用有限集模型预测电流控制传统主流的控制方案是电压外环加电流内环的双闭环PI电流内环输出参考电压再由SVPWM空间矢量调制生成开关信号。这套方法成熟稳定在工业变频器里用了很多年但有个麻烦PI参数需要整定而且动态响应受限于调制的线性区电流突变的工况下容易饱和。有限集模型预测电流控制走的是另一条路它利用整流器的离散开关状态只有有限的8种6个有效矢量2个零矢量这一特点把每一个开关状态对应的电流预测值都算出来然后通过代价函数挑一个最优的直接输出开关信号。整个控制不需要调制器也不需要电流内环PI核心就是一个“枚举比较”的过程。它的优势有三点一是动态响应快因为每拍都在在线优化二是概念直观不用绕PI的频域整定参数少三是处理约束方便比如限流、限压都可以直接塞进代价函数里。缺点也很明显开关频率不固定、对模型参数敏感、采样频率要求高。但这个模型是仿真验证这些缺点完全可控用来做算法研究和性能对比再合适不过。1.3 仿真模型的三层结构我在Simulink里把这套系统分成三层。第一层是主电路层包含三相交流源、网侧RL阻抗、Universal BridgeIGBT桥臂、直流母线电容和负载。这一层直接用Simscape Electrical原来的SimPowerSystems里的电力电子器件搭重点是把桥臂的触发脉冲信号接对。第二层是采样与坐标变换层包括电网电压锁相PLL、三相电流采样、dq坐标变换。这一层是最容易出错的地方角度不对、变换矩阵符号错一个整个模型都会跑飞。第三层是控制算法层包括直流电压外环PI和有限集模型预测电流控制核心模块。外环PI生成q轴电流参考id_ref设为单位功率因数对应的0FCS-MPCC模块接收电流参考和当前采样值输出六个IGBT的开关信号。三层结构各自独立方便调参和排错。我调试的时候习惯了先固定某一层的变量再调另一层不然波形乱了根本不知道是哪一层的锅。2. 核心原理与数学推导算法不是拍脑袋每一步都有依据2.1 三相PWM整流器的dq数学模型要写预测算法必须有被控对象的数学模型。三相PWM整流器在三相静止坐标系下的电压方程是L·di_a/dt e_a - R·i_a - v_aL·di_b/dt e_b - R·i_b - v_bL·di_c/dt e_c - R·i_c - v_c其中e_a/e_b/e_c是三相电网电动势v_a/v_b/v_c是IGBT桥臂输出端的相电压R是电感等效内阻。三个方程是有耦合的直接控制三相交流量也不直观所以工程上几乎都做坐标变换把三相交流量变成dq旋转坐标系下的直流量。等幅值Park变换后得到dq轴数学模型L·di_d/dt e_d - R·i_d ωL·i_q - v_dL·di_q/dt e_q - R·i_q - ωL·i_d - v_q这个方程组是后面离散化预测的基础。注意里面的耦合项ωL·i_q和-ωL·i_d很多把模型写错的同学都栽在这里。PWM整流器工作在逆变状态时v_d/v_q是桥臂输出的d轴和q轴电压方向和电网电动势是反着的如果公式符号搞反控制量方向就完全错了电流发散是必然的。2.2 有限集模型预测电流控制的三大步FCS-MPCC的思路很朴素每个控制周期都重复做三件事。第一步枚举候选开关状态。三相两电平桥臂有8种开关组合对应8个电压矢量其中6个非零矢量、2个零矢量。每个开关组合对应的桥臂输出相电压可以通过开关函数算出来v_a Vdc/3·(2S_a - S_b - S_c)v_b Vdc/3·(-S_a 2S_b - S_c)v_c Vdc/3·(-S_a - S_b 2S_c)这里的S_a/S_b/S_c取0或11代表上桥臂导通、下桥臂关断。第二步用预测模型算每个开关状态对应的下一个采样时刻电流。把2.1节的dq方程用前向欧拉法离散化采样周期为Ts得到i_d(k1) i_d(k) Ts/L·[e_d(k) - R·i_d(k) ωL·i_q(k) - v_d(k)]i_q(k1) i_q(k) Ts/L·[e_q(k) - R·i_q(k) - ωL·i_d(k) - v_q(k)]这里v_d(k)/v_q(k)就是把每个候选开关状态对应的三相电压做dq变换得到的值。注意这一步要算8次因为8个开关状态对应8组不同的v_d/v_q也就得到8组不同的预测电流。第三步代入代价函数选最优矢量。最基础的代价函数就是电流误差平方和g [i_d_ref - i_d(k1)]² [i_q_ref - i_q(k1)]²哪个开关状态对应的g最小就选哪个直接输出对应的开关信号。就这么简单没有调制器没有内环PI整个算法核心就是这三步循环。2.3 一拍延迟补偿仿真和实物都躲不过的坑如果只是在仿真里理想化运行直接用k时刻采样值预测k1时刻电流然后选矢量模型也能跑。但实际控制器从采样、计算到输出PWM需要时间你算出来的最优矢量真正作用到桥臂上已经是下一个周期了。这个“一拍延迟”在实物上必现在仿真里如果不加后续移植到硬件时波形会差很大。标准做法是两步预测先用上一拍选中的矢量作用预测出本拍实际电流再以这个电流为起点枚举8个矢量预测下一拍电流。这样你选出的矢量作用时刻和模型匹配上了。代码里我用一个persistent变量保存上一拍的开关状态就能实现延迟补偿后面第3章给出完整代码。3. Simulink仿真实操从零搭一个能跑的FCS-MPCC模型3.1 主电路部分搭建这里默认读者已经装了MATLAB/Simulink和Simscape Electrical工具箱版本R2020b以上都行。打开Simulink建模界面先把主电路搭出来。从Simscape Electrical的Specialized Power Systems库或者Simscape Electrical Specialized Power Systems拖出以下模块Three-Phase Source三相交流电压源。我设置为线电压380V、频率50Hz、内阻0.001Ω。Three-Phase Series RLC Branch三只改为串联R/L结构用作网侧阻抗。在库参数里把Branch type选为Series R/LR设0.05Ω、L设5mH。Universal Bridge功率器件选IGBT/Diodes端口配置为ABC到DC六个脉冲输入。Series RLC Branch再拖一只Branch type选为Series C做直流母线电容C设5mF。DC Voltage Source或Resistor给直流侧一个固定负载最简单用Resistor设15Ω左右对应10kW负载。连线时按“三相电源 → 阻抗 → Universal Bridge的交流侧ABC → 桥臂直流侧正极经过电容再到负极”的顺序。电压和电流测量模块我用的是Three-Phase V-I Measurement放在阻抗和桥臂之间方便同时取交流电压和交流电流。这一步有两点容易错一是Universal Bridge的直流侧正负不能接反二是测量信号的物理单位要先通过电压/电流测量模块转成Simulink的信号线再接进控制算法不要直接拿电气线去连MATLAB Function。经常有人问为什么MATLAB Function输入老报错九成是直接把电气节点接进去了。3.2 坐标变换与PLL最容易出错的地方预测控制需要电网电压角度θ才能把三相电流转成dq分量也需要e_d/e_q做预测。角度不准后面全白搭。我这里直接用了Simscape Electrical自带的Discrete 3-Phase PLL模块输入三相电压输出角度θ和频率。这个模块在库里搜“PLL”就能找到参数用默认就可以它内部有滤波角度输出比较干净。如果用自己搭的SRF-PLL要仔细调PI参数初学者容易把锁相环调得抖来抖去反而拖慢进度。坐标变换我建议不要直接依赖库里的abc
返回列表