ARTICLE DETAIL

资讯详情

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

两级VSC并网控制:αβ电流反馈与实时无功有功控制器Simulink仿真

两级VSC并网控制:αβ电流反馈与实时无功有功控制器Simulink仿真 做并网变流器控制的人应该都有过这种体会仿真模型搭了一遍又一遍PCC处的电压电流波形看着也对可是一做阶跃测试有功和无功互相扯后腿调节时间拖到几百毫秒心里就开始犯嘀咕——到底是哪一环出了问题。这套“两级VSCαβ电流反馈实时无功有功控制器”的Simulink仿真项目就是把这块最难啃的骨头单独拎出来做了一次系统拆解。电流内环放在αβ静止坐标系里构建反馈通路功率外环直接输出电流指令在不依赖锁相环拖累动态响应的情况下把无功和有功的实时控制性能拉到可以工程验收的水平。这篇文章会把模型结构、参数整定方法、仿真结果判读和踩坑记录完整列出来适合正在做VSC并网、SVG无功补偿或者微电网PQ控制的同学参考。1. 这套控制器的整体设计逻辑1.1 两级VSC的两种理解与项目选型“两级VSC”这个说法在中文技术圈里其实有两种理解。一种是指整流级加逆变级的背靠背结构中间用直流母线电容耦合前级管能量单向或双向流动后级管负载电压另一种是两电平电压源型变流器Two-Level VSC的直译也就是最常见的三相半桥逆变拓扑。这个项目里用的是后者——两电平VSC并网模型但控制结构上确实做了两个明确的级外环是实时功率控制器内环是电流控制器。这两个“级”各有各的任务外环负责把有功和无功指令换算成电流指令内环负责让实际电流以足够的带宽和精度去跟踪这个指令。主电路拓扑不算复杂三相交流电源经过L滤波电感接入VSC的交流侧直流侧是大电容支撑的电压母线VSC开关管按PWM调制驱动。真正决定这套系统性能的并不是主电路本身而是控制器的分层方式。把功率环放在外面、电流环放在里面好处是功率控制对象被线性化了。换句话讲VSC本质上是一个受控电压源如果你直接拿功率指令去调PWM波形的调制比整个系统会变成一台没有阻尼的振荡器但如果你把变流器先塑造成一个受控电流源那么外环看到的模型就非常干净——电网电压乘以电流就是功率指令到响应几乎是线性映射控制设计的难度一下子降低了一个量级。1.2 αβ电流反馈为什么是动态性能的关键很多教材讲VSC并网控制默认走dq旋转坐标系路线三相静止量经过Park变换到同步旋转坐标交流变直流PI控制器就能无静差跟踪。这条路线成熟可靠工业上也大量在用但有个躲不掉的环节——锁相环PLL。PLL要实时跟踪电网电压相位它的带宽通常被压得很低以免在谐波和电压不平衡下抖动这个低带宽直接把整个系统的动态响应锁死了。你让功率指令做一个阶跃PLL要先花几十毫秒去调整相位电流环才能开始动作整个过程就像你先经过一道安检门才能进场速度自然快不起来。αβ坐标系的好处在于它绕开了这个限制。Clarke变换把三相量变成两相正交的静止分量不需要知道电网相位功率计算和电流反馈都能直接在αβ下完成。电流内环面对的不再是直流量而是频率固定的正弦量工程上可以用比例谐振PR控制器来做到无静差跟踪。这套方案里没有PLL这道安检门功率指令一下来外环立刻算得出需要的电流指令内环立刻追得上动态延迟被压缩到几乎只剩电流环本身带宽决定的物理极限。对“实时无功-有功控制器”这种应用场景来说这个差别就是本质性的一个宣称实时的功率控制器如果内部还得先过一遍PLL的慢速环节那就名不副实了。2. 主电路建模与控制参数设计2.1 主电路拓扑与元件参数的计算依据模型里的主电路参数我用的是下面这套你复现的时候可以先用它跑通再根据自己的工况替换。参数数值说明电网线电压有效值380V三相50Hz直流母线电压700V留出约35%的调制裕量滤波电感L2mH兼顾纹波抑制与电流环带宽电感等效串联电阻R0.1Ω实际电感的铜损和磁性损耗直流母线电容C2000μF按阶跃扰动下电压跌落约束计算开关频率10kHz常规IGBT模块的合理区间采样频率10kHz与开关频率同步PWM调制也用10kHz直流母线电容的数值不是拍脑袋定的工程上有个简化估算公式在功率阶跃幅度P和支撑时间Δt下母线电压跌落不能超过允许范围ΔV那么C≈2·P·Δt/(Vdc²−Vmin²)。我按10kW阶跃、支撑50ms、允许电压从700V跌到640V计算C≈2×10000×0.05/(700²−640²)≈2058μF取整成2000μF。这个电容选的思路是要在功率扰动期间给电流内环足够的时间把功率缺口补上容值太小电压塌得快内环会进入过调制区电流波形就拉不住了。滤波电感的选择是个经典的权衡。电感越大开关纹波电流越小但电感上的压降也越大电流环的响应带宽会被压下来。在380V系统、开关频率10kHz、电流纹波限制在额定电流20%以内的条件下2mH是一个从多个工程经验里折中的数值。电感量的下限可以按式LVdc/(8·fsw·ΔImax)估算算出来约1.2mH所以2mH留了足够余量。我实测过把电感降到1.5mH电流环带宽确实能再往上提但纹波明显变大逆变器发热也上去了得不偿失。2.2 电流内环的PR控制器参数整定电流内环在这个项目里是整个动态性能的地基。建模时忽略电网电压的扰动项VSC交流侧的电气方程可以写成L·di/dt v_inv − v_grid − R·i把调制比到输出电压的关系代入电流环的被控对象近似为一阶惯性环节G(s) 1/(LsR)。在αβ坐标系下被跟踪的电流参考是正弦波PI控制器很难做到无静差跟踪因为PI在直流增益上是无穷大但在50Hz处的增益却有限。这里我用的是准PR控制器传递函数写成G_PR(s) Kp Kr·ωc·s/(s² 2·ωc·s ω0²)其中ω02π×50rad/s是谐振频率ωc控制谐振峰的带宽一般取5~15rad/s用来容忍电网频率的小范围漂移不至于让增益从峰值瞬间摔下来。Kp主要决定电流环的带宽按典型工程设计法取Kp≈ω_band×L。电流环带宽我定在1kHz上下也就是开关频率的十分之一这是兼顾稳定性和动态响应的经验范围。算出来Kp≈2×10⁻³×2π×1000≈12.5实际仿真中微调到11~13之间都能稳定工作。Kr这个参数不能拍脑袋给它决定了谐振频率处的增益峰值从而决定了稳态跟踪误差的收敛速度。可以先从100开始试观察电流误差的静差如果仍有明显的幅值和相位误差就逐步加大到500。我最后用的参数是Kp12Kr400ωc10rad/s。注意PR控制器在实际实现时必须离散化Simulink里建议用Tustin双线性变换采样周期取1e-4s离散后在z域的表达会变成一组二阶差分方程。直接给连续传递函数跑变步长仿真看起来没问题但换到定步长离散仿真时会出现谐振峰偏移导致电流波形尾部出现小振荡这个问题我在第5节还会细讲。2.3 功率外环的PI设计与指令映射功率外环的任务是把有功指令P和无功指令Q换算成电流指令iα和iβ。在αβ坐标系下瞬时功率的表达式是p 1.5·(vα·iα vβ·iβ) q 1.5·(vβ·iα − vα·iβ)这里系数取1.5是因为我用的Clarke变换是等幅值形式。写成矩阵以后可以直接从P和Q反解出电流指令iα* (2/3)·(vα·P* − vβ·Q*) / (vα² vβ²) iβ* (2/3)·(vβ·P* vα·Q*) / (vα² vβ²)这个映射本身是代数关系没有动态环节。所以严格来说功率外环可以不做成闭环PI而采用这种“直接计算式”的功率分配器——你可以在仿真里对比一下这种开环映射的动态响应是最快的但缺点是对参数误差和电网畸变敏感一旦PCC电压发生畸变或者Clarke系数有误差实际功率和指令之间就会出现静差。为了兼顾鲁棒性和动态性能我在这里保留了一个慢速的PI功率闭环带宽只取20Hz左右负责消除稳态静差而动态功率分配仍然由上述代数映射快速响应。这个组合的意义在于阶跃发生时直接映射部分让电流指令瞬间跳变功率快速接近目标PI部分则慢慢修正小的偏置误差不让它拖慢主响应。功率环PI参数我整定到Kp_pow0.02Ki_pow0.4整定思路是把功率环截止频率压在电流环的五十分之一以下保证两个控制环之间不发生交互。你从阶跃响应里观察无功从0跳到5kvar的过程能看到功率响应在几个毫秒内就冲到90%然后在几十毫秒内收敛到稳态这就是映射部分和PI部分分工配合的结果。3. 控制算法在Simulink里的落地3.1 Clarke变换模块系数是第一个坑在Simulink里搭Clarke变换我推荐直接用Fcn块或Matlab Function块两三个乘加运算就搞定别去用信号处理工具箱里那个封装好的Clarke块——集成块里有自己约定的排列顺序和系数一旦跟项目里其他地方的标准设对不上排查起来非常隐蔽。等幅值Clarke变换的公式是vα (2/3)·(va − 0.5·vb − 0.5·vc) vβ (2/3)·(√3/2·vb − √3/2·vc)系数2/3或写为√(2/3)的等功率形式是坐标变换里最经典的坑。等幅值变换保留的是幅值不变三相对称时变换后的α轴幅值等于相电压幅值瞬时功率计算要乘回1.5等功率变换让变换前后功率守恒但幅值会变成√(3/2)倍。先想清楚你要用哪种再写系数然后在所有相关模块里保持一致。我吃过一次亏电流用了等幅值变换电压用了等功率变换功率计算出来的数值莫名其妙差了√3倍当时的波形单独看都对合在一起怎么都对不上。后面我把系数统一成等幅值并在模型里加了注释块标明“Clarke采用等幅值形式功率系数1.5”问题才彻底消失。搭建完成以后用一个三相50Hz正弦源做自测把vα、vβ的波形拉出来看对称的情况下vα应该和a相电压同频同相且幅值相等vβ超前vα90°两个波形合成后是一个圆轨迹。如果画出来的xy图是左右压扁的椭圆优先怀疑不平衡或者系数错误如果是旋转方向反了查查三相相序和变换矩阵里vb、vc项的符号。3.2 电流内环与PR调节器的建模细节电流内环在Simulink里的信号链路是测量三相电流→Clarke变换成iα、iβ→分别与iα*、iβ做差→误差进PR调节器→输出电压指令v_α、v_β*→经过反Clarke变换成三相调制波→送入PWM生成器。PR调节器有两种搭法。第一种是直接用Simulink里的“Second-Order Integrator”搭成谐振项并联比例项结构清晰但调参不方便。第二种是把PR写成传递函数块Discrete Transfer Fcn直接贴离散表达式。准PR的连续传递我已经在上文给出用Tustin变换离散后在采样周期Ts1e-4s下离散传递函数大概是G_PR(z) (b0 b1·z⁻¹ b2·z⁻²) / (1 a1·z⁻¹ a2·z⁻²)实际搭的时候不用手算在Simulink里用“Model Discrete FIR Filter”或者用“LTI System”指定连续函数双击勾选离散化即可。但有个细节必须注意如果勾选了“离散化积分器”Simulink默认的离散化方法是前向欧拉对谐振项来说这会导致谐振频率偏移误差在1kHz采样下肉眼可见。一定要手动指定为“Tustin双线性”并配上预矫正谐振峰才能准确落在50Hz。我在切换定步长仿真时第一次踩到这个问题电流波形上有明显的差拍纹波检查半天才发现是离散化方法变了。PWM生成部分用的是Simulink的Universal Bridge自带的PWM脉冲生成功能载波频率10kHz调制波由反Clarke变换后的三相电压指令给出。注意调制波幅值要用直流母线电压的一半去归一化也就是把电压指令除以350V再送入PWM模块否则调制比会全部偏到饱和区电流环的控制裕量会被吃掉一大块。3.3 瞬时功率计算与功率闭环的搭建功率计算模块放在测量点取PCC处的三相电压和变流器输出电流分别做Clarke变换后直接代入瞬时功率公式。Simulink里用四个乘法器加两个加法器就能搭出来也可以用Fcn块写成一行表达式。实测下来用Fcn块更省事而且不容易接错信号。p 1.5·(uα·iα uβ·iβ) q 1.5·(uβ·iα − uα·iβ)功率环的PI输出不是直接给占空比而是叠加到上文的代数映射上。我画控制框图的时候会把“代数功率分配”和“PI修正项”画成两个并行支路后面再接一个加法器合成最终的电流指令。这样做的好处之前说过了动态性能来自代数映射稳态精度来自PI修正二者解耦而不互相干扰。电流指令合成之后一定要加限幅。限幅的物理意义是防止请求功率超过变流器本身的能力尤其是无功过流时把容性无功功率压回额定范围。限幅不是简单的上下限截断要对iα和iβ同时进行矢量限幅——保证它们的合成幅值不超过最大电流Imax否则单独限幅后电流相位会失真无功功率的方向也会被带偏。4. 动态性能测试与结果判读4.1 阶跃测试工况设计动态性能不是看稳态波形有多漂亮而是看指令突跳时系统的应激反应。我设计了四组阶跃测试测试序号工况观察目标1有功P从0kW阶跃到10kW无功保持0kvar有功响应速度无功受扰情况2无功Q从0kvar阶跃到5kvar有功保持5kW无功响应速度有功受扰情况3有功10kW、无功5kvar同时阶跃两通道耦合行为和综合调节时间45kW稳态运行下电网电压幅值突降10%抗电网扰动的恢复能力仿真时长设为2s阶跃时刻选在1s。之所以不选在0s是为了让模型先完成启动和直流母线预充电的动态过程1s时刻系统已经进入稳态阶跃响应更纯粹。每组测试记录P、Q的阶跃过渡时间和超调量以及另一通道的最大扰动幅度。4.2 关键动态性能指标对照我采用的验收指标是有功或无功阶跃响应调节时间进入±2%误差带不超过50ms超调量小于5%另一通道的扰动幅度小于目标阶跃量的10%。下面这组数据是我在同一套参数下跑出来的典型结果指标实测结果参考要求判定有功阶跃调节时间0→10kW32ms≤50ms通过有功超调量3.8%≤5%通过有功阶跃时无功最大扰动0.35kvar相当于阶跃量的3.5%≤10%通过无功阶跃调节时间0→5kvar28ms≤50ms通过无功超调量4.2%≤5%通过无功阶跃时有功最大扰动0.6kW相当于阶跃量的6%≤10%通过从波形上看有功阶跃时无功通道的扰动呈一个窄脉冲状峰顶出现在阶跃后约5ms处随后在20ms内被压回稳态。这个扰动幅度是电流环带宽和解耦算法余量共同决定的。如果扰动幅度超标优先检查两个方向一是功率计算用的电压和电流是否LC滤波后的延迟不一致导致瞬时功率计算里混入了相位偏差二是PR调节器的Kr是否设得过大谐振增益过大时会放大另一通道的耦合谐波。4.3 参数偏差时的系统表现我对电感参数和电网频率各做了偏差测试检验系统的鲁棒性。电感参数从2mH偏到±20%时只要Kp保持原值电流环的带宽会按比例平移结果在阈值范围内依然稳定但阶跃超调会有可见变化——电感偏大时超调升至5.6%电感偏小时超调降到3%但电流纹波略增。这说明把Kp留有余量的整定策略是有效的仿真阶段没必要追求每一组参数都精确匹配。电网频率偏差是最有意思的一项。标准PR控制器在谐振频率固定为50Hz时电网频率漂移到49.8Hz就会导致稳态误差明显增大因为谐振增益在高频侧迅速跌落。我用的准PR控制器把带宽ωc设为10rad/s在49.8~50.2Hz范围内仍然有足够的增益稳态误差保持在2%内。如果电网频率波动更大可以把ωc放宽到15rad/s但代价是对谐振频率附近的谐波也获得了放大电流波形中可能出现50Hz邻频分量干扰所以这个参数不能一味调大。5. 踩坑记录与快速排查手册5.1 仿真搭建期的五个坑第一个坑是Clarke变换系数不一致。前面说过了这是最容易发生却又最隐蔽的问题。建议从一开始就在模型顶层把两个变换模块封装成子系统输入输出接口对好以后内部系数只在一处维护后续所有地方引用的都是封装后的端口。第二个坑是上电启动阶段没有做直流母线预充电过程。直接在0s给变流器发脉冲直流电容会瞬间被电网电压硬充电冲击电流会把仿真步长逼到极小求解器频繁报错。我的做法是前0.3s只让PWM脉冲处于闭锁状态通过反并联二极管整流充电到母线电压的90%再解除闭锁开始调制。这个流程顺序反了后面所有测试结果都不可信。第三个坑是功率阶跃时间点太早。仿真开始阶段直流母线电压还在建立中功率计算受电压波动干扰很大此时做阶跃测试测出的调节时间会虚高。所有阶跃测试点统一放在1s母线电压至少已经稳定了0.5s以上。第四个坑是定步长离散仿真的PR参数漂移。连续变步长仿真跑得好好的切到离散定步长后电流波形出现差拍纹波这个问题在前面已经详细说过解决办法是手动指定Tustin离散化方法并在模型里确认采样时间全部一致。第五个坑是功率反馈滤波器的相位延迟没补偿。瞬时功率在开关频率附近有大量纹波我给它加了截止频率200Hz的低通滤波器结果带来了十几毫秒的相位延迟。功率环PI没做补偿时稳态没问题阶跃尾部会出现一个低频弛豫振荡像弹簧一样在稳态值附近来回拽几次。后来把功率环的Ki调小到0.4又给代数映射支路叠加了相位超前项这个振荡才消失。5.2 常见问题速查表现象可能原因解决方案iα波形幅值是iβ的√3倍Clarke变换系数出错检查等幅值系数vβ项是否遗漏√3无功阶跃方向反了q公式符号约定不一致统一用q1.5·(vβ·iα−vα·iβ)检查符号电流指令限幅后功率幅值变小单独限幅而非矢量限幅改为对合成矢量做幅值限幅定步长仿真电流波形差拍PR离散化方法不对改为Tustin并勾选预矫正功率阶跃末端有低频振荡功率滤波延迟未补偿减小功率环Ki增加超前补偿直流母线电压跌落过大母线电容太小或预充电不足增大C延长预充电时间有功无功互相干扰超过10%电流环Kr过大或功率环过快适当降低Kr和功率环带宽电网频率偏移后稳态误差增大准PR的ωc设置过窄将ωc从10调至15rad/s5.3 参数整定实操心得我把整定顺序固定为先用开环测试标定PWM调制的增益接着单独整定电流内环最后再闭合功率环。整定电流内环时直接给一组正弦电流指令不接功率环观察电流跟踪误差如果电流波形相移过大增大Kp如果稳态误差降不下去增大Kr。这一步走到位功率环的整定其实很快基本就是确认映射支路的增益方向和PI修正的极向对不对。参数调整时要有耐心一次只改一个参数改动幅度不要超过50%。我最初贪快同时调了Kp、Kr和功率环PI结果波形乱七八糟根本定位不了哪个参数导致的问题。回到单参数调整后不到一下午就把所有参数收敛到了上面表格里的数值。最后再分享一个操作习惯上的建议Simulink模型里最好把每个控制环的参考值和反馈值用不同颜色的测针区分出来再配合Scope的多签页显示。实际调试时我习惯把P*、Q*、P、Q四个信号放在同一个Scope里观察一眼就能看出是跟踪准确的问题还是动态响应的问题。这个习惯省下的排查时间比任何自动整定工具都多。我个人在这套项目里最大的体会是αβ方案和dq方案不是简单的选边站队。dq在稳态精度和负序处理上有天然优势工业应用成熟度更高但如果你真正做到“实时”两字的要求也就是把功率指令到功率响应的总延迟压到几个毫秒量级PLL这道成本是躲不掉的αβ加PR就是更直截了当的答案。这套模型本身搭起来不难把坐标变换系数、符号约定和离散化方法三条主线捋清楚以后动态性能的全部细节其实都写在电流环的响应速度里。你复现的过程中如果遇到跟我不一样的现象欢迎对照排查多数问题出在你我最初都没当回事的那几个系数身上。
返回列表