ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

PCS储能双向变流器Simulink仿真:功率控制环调试要点与经验

PCS储能双向变流器Simulink仿真:功率控制环调试要点与经验

PCS储能双向变流器的Simulink仿真,我最近一阵子调得有点上头。以前搭普通光伏并网逆变器模型还算顺手,一换成储能双向变流器,整流、逆变、PQ、VSG全堆在一起,功率控制环稍微配合不好,波形就直接放飞自我。一开始我以为只是PI参数没给对,后来才发现光调参数远远不够,环路的带宽分配、限幅、抗积分饱和、坐标变换相位,每一个环节都会把功率控制环的调试拖下水。

这篇文章不打算复述理论,就直接按我打开仿真模型的顺序,从系统架构到功率环配合调试,把踩过的坑一个个盘清楚。适合正在做储能PCS并网离网仿真、或者被毕业设计折磨又不想被Simulink反复按在地上摩擦的同学参考。

1. 系统架构设计:先把模型的整体盘明白

1.1 主电路拓扑与双向能量路径

储能PCS的核心主电路,绝大多数模型都是三相电压源型桥式电路,交流侧通过LCL滤波后并网,直流侧直接接电池或者其他直流源。两电平VSC用得最多,三电平NPC在某些大功率项目里也会出现,但仿真建模思路基本一致,无非多几个开关管和钳位电容。

双向两个字容易让人产生误解,以为需要两套完全不同的硬件。其实不是。整流充电和逆变放电,用的是同一个桥臂,只是控制目标反过来了。充电时交流侧通过PWM整流建立直流母线电压,把能量灌进电池;放电时电池侧能量通过桥臂逆变回馈到电网。真正决定能量流向的是控制算法里的电流方向指令,不是硬件拓扑本身。

仿真模型里我一般保留这几个部分:交流电网、并网断路器、LCL滤波器、三相桥臂、直流母线电容、电池等效模型。有些项目为了省仿真时间会省掉直流断路器或预充电阻,可以在模型里简化,但直流母线电容不能省,它是功率环动态的重要参与者,直接影响直流电压波动和功率指令响应。

1.2 控制系统划分:功率环在内环外面,不是随便放的

PCS控制系统在Simulink里拆成几块:锁相环PLL、abc/dq坐标变换、功率计算、外环控制器、电流内环控制器、调制波生成和PWM脉冲输出。外环和内环的关系是串联的,外环输出的是内环的参考指令,这个层级顺序在搭建时就必须定死,不能为了图方便把两个PI都塞进同一个子系统里。

储能PCS的外环通常有两种配置。一种是我这次重点聊的功率外环,给Pref和Qref,直接输出d/q轴电流指令给内环,适合并网PQ控制。另一种是直流母线电压外环,多用于直流微网或充电模式,输出电流指令控制直流侧电压稳定。两者和电流内环的配合逻辑是一样的,内环永远在最里面负责快速跟踪电流,外环只负责输出电流参考值。

信号流向我建议在模型里画得清清楚楚:三相电压电流先经过测量模块,进入坐标变换,算出有功无功反馈,外环PI计算出id_ref和iq_ref,送给电流内环,电流内环输出d/q轴电压指令,反变换后送到调制模块。哪里的信号连错,Powergui上跑几十秒就能看出来,但接线乱的模型会让你连找错都费劲。

1.3 仿真模型的模块化组织与信号流向

模块化这事情,越早做越好,别像我第一次那样一个全模型铺在画布上,线拉得像蜘蛛网,调一个参数要找半天。我现在的习惯是:

  • 主电路单独放一个子系统,交流侧、直流侧用标签连接,不用跨区域连线。
  • 测量与坐标变换单独一个子系统,所有电压电流先在这里统一标幺或有名值。
  • 控制部分再拆成外环子系统和内环子系统。
  • 调制和开关脉冲单独一块,方便切换平均模型和开关模型。

这里的单位统一问题是个大坑。Simulink里你可以用有名值,也可以全用标幺值,但绝不能混着用。我之前有个模型,电压用伏特,电流用安培,功率反馈用瓦特,结果外环PI的增益看着像模像样,换到另一台容量不同的机器上整个参数都得重新推一遍。建议在主电路测量后面直接乘上标幺基值,让所有控制环节都面对标幺信号,PI参数在不同容量间迁移容易得多。

还有一个容易忽略的点是数据类型。Simulink的Simscape电气模块输出通常走物理信号,控制环路里走的是Simulink数值信号,中间要用转换模块接好。如果模型仿真时突然出现奇异数值或者NaN,先检查是不是信号类型不匹配,而不是一上来就怀疑控制参数。

2. 功率控制环与电流内环的配合调试

2.1 内环快、外环慢:带宽分配是配合的第一原则

功率控制环和电流内环配合调试,第一原则就是内环必须显著快于外环,一般拉开5到10倍的带宽差距。我见过不少跑飞模型,问题就出在外环比内环还激进,功率误差变化一点点,外环立刻输出巨幅电流指令,内环拼了老命也追不上,两个PI打架,波形就变成高频振荡。

为什么内环快、外环慢就稳?逻辑很简单。功率是从电压和电流算出来的,功率环想要改变输出,只能通过给内环发电流指令来实现。如果外环带宽比内环高,说明功率误差信号里包含的高频分量,内环根本没有能力响应,这部分指令就成了噪声激励源。反过来,外环慢一点,它输出的电流指令本身变化就平滑,内环能稳稳跟上,整个系统相位裕度才充足。

我手头这个100kW模型,电网线电压380V、50Hz,直流母线750V,开关频率10kHz。电流内环带宽按开关频率的1/10到1/15取,大概600到1000Hz。功率外环带宽取内环的1/5到1/10,大概20到50Hz。PLL带宽再低一点,5到20Hz,避免PLL的锁相延迟和功率环相互作用。直流母线电压环如果要用,也控制在10到30Hz。

2.2 电流内环PI参数的工程整定

电流内环是整套控制的底座,必须整定到让人放心的程度才有资格谈外环。常规做法是把内环对象简化成RL串联一阶模型,这在LCL低频段是成立的,至少可以给出一个足够合理的起始参数。

对RL串联对象,电流环PI的工程整定式大概是:

  • Kp = L * ωci
  • Ki = R * ωci

其中ωci是内环期望闭环带宽对应的角频率。拿我这个模型举例,交流侧等效电感约0.4mH,等效电阻约0.01Ω,内环带宽取700Hz,换算成角频率就是2π乘以700约4400rad/s。那么Kp就是0.0004乘以4400,大概取1.7左右,Ki就是0.01乘以4400,大概取44左右。这个量级在我的模型里测下来是比较稳的起点。

这里要强调,这只是初始值,不是终值。实际调试中我会把外环断开,直接给内环一个固定电流指令小幅阶跃,观察dq电流的跟踪质量和超调。超调太大就减小Kp,稳态误差明显就适当加Ki,但积分不要猛加,积分太强会导致相位滞后,把内环动态拖慢。调好内环的基本标准是:固定指令阶跃时,dq轴电流能在几毫秒内平滑跟踪,不振荡,不超调,限幅没有频繁触发。

2.3 功率外环的PI设置与输出限幅

外环调试才是真正逼疯人的地方。功率外环的被控对象不是简单的一阶惯性,它面对的是电流内环闭环之后的等效对象,再加上瞬时功率计算本身的波动,所以一开始外环PI的数值看起来都不太直观。

我习惯先只加比例环节,把外环闭环带宽调到想要的区间,再补一点积分消掉稳态误差。以100kW系统为例,电网电压定向后的有功功率近似是1.5倍的vd乘以id,vd是d轴电压峰值。按带宽30Hz来估算,外环比例增益通常在0.3到0.5之间量级。这个数看着不大,但它乘以功率误差之后生成的电流指令可能非常夸张,所以输出限幅和外环设计必须绑在一起考虑。

功率外环输出的是d/q轴电流参考值,这个限幅不能省。我一般会限制在额定电流的1.2到1.5倍。限幅不够果断只会让内环和桥臂硬扛,仿真里看不出炸管子,但波形表现为长时间饱和,控制效果极其糟糕。

限幅加上之后,必须同步处理积分饱和。Simulink自带PI模块里有抗积分的选项,推荐用back-calculation(反计算法),比简单的clamping在恢复速度上更平滑。我踩过一次很深的坑是没加抗饱和,Pref从50kW跳变到80kW时,限幅把电流钳在600A,但控制器积分还在死命累积,等功率误差回落时积分器还揣着大把余量,电流指令直接过冲到800A多,整个系统眼看就要崩。加完抗饱和这个问题立刻消停。

另外功率反馈本身带二倍频纹波。如果是用瞬时功率公式直接算出来的P和Q,纹波会直接灌进外环PI,引起电流指令抖振。我给功率反馈加了一阶低通,截止频率取50到100Hz,滤掉纹波又不会过分拖慢外环响应。

2.4 dq交叉耦合与解耦项的处理底线

dq轴之间存在交叉耦合项,经常被当成灵丹妙药一样到处加前馈解耦。但我的实际调试体验是,解耦不是越早加越好,不加也能跑的系统,加了未必更稳。

在dq旋转坐标系下,d轴电流的变化会在q轴回路上产生一个耦合电压,反过来也一样。理论上通过加上-ωL和+ωL的前馈项可以实现解耦,让d/q轴独立控制。但问题是这个前馈项依赖模型电感参数,参数偏差大的时候前馈补偿反而变成扰动注入。

我的处理底线是:外环带宽低、动态要求不高的场景,优先不加解耦,直接把PI调稳,如果调稳了就不折腾。只有当需要快速功率响应,或者看到id阶跃时iq明显被带飞,才在电流环输出端加上交叉解耦前馈。仿真里加解耦模块成本很低,但调参工作量会额外增加,建议一步步来,先确认基础闭环稳了再说。

3. 实操配置:从PQ控制到VSG切换的关键细节

3.1 PQ控制下的功率指令与相位对齐

PQ控制是储能PCS并网模式的基本功,外环直接用Pref和Qref生成电流参考。但操作上有几个细节非常影响效果。

第一是Pref和Qref不能给阶跃。仿真里看起来阶跃最痛快,但外环比例增益哪怕看上去不大,面对一个突然跳变的功率误差,电流指令也会直接打到限幅。我给Pref加了一个变化率限制模块,比如20kW/s到50kW/s,让功率指令像斜坡一样上升。代价是响应变慢,但换来的是电流指令平滑,功率波形不冲顶。这在真实储能系统里也是标配。

第二是PLL初始相位问题。PLL刚启动时有锁定过程,如果模型一启动就闭合并网断路器,这时候PLL输出的角度如果和实际电网电压相位差得远,dq变换就不是真正把电网电压投影到d轴,电流冲击可以大到离谱。我在第一次做这个模型时偷懒把PLL初始角度设成0,恰好电网电压过零点附近合闸,启动瞬间相电流直接冲到额定好几倍。

解决方法是启动时序拆开:先让PLL空跑锁定,再给内环零电流指令闭环,等坐标变换角度稳定后,才允许并网断路器闭合。这个顺序在Simulink里可以用触发信号控制,别图省事把多个事件绑在同一时刻。

3.2 VSG虚拟惯量与阻尼参数的整定思路

从PQ控制切到VSG控制,外环从两个PI变成了一个转子运动方程,但电流内环那一套完全不用动。这对调试是好消息,意味着内环参数不需要返工,只需单独调虚拟惯量和阻尼系数。

VSG的虚拟惯量本质上是给功率响应增加惯性,让有功功率和频率变化之间建立类似同步机的关系。我习惯用标幺化方式设置参数:惯性时间常数取1到2秒,阻尼比取0.7到1。惯性时间常数太小,VSG对电网频率变化太敏感,输出功率抖动明显;惯性时间常数太大,有功响应迟钝,仿真跑很久功率都爬不到目标值。阻尼系数则决定振荡衰减速度,阻尼太小,功率和频率会出现衰减很慢的低频振荡,看起来就像原始系统在憋大招。

切换VSG时还有个大坑:输出相位基准要从PLL角度切换成VSG自己生成的相位。这个切换瞬间如果相位跳变,电流环会立刻产生一个巨大的补偿量。我的做法是让VSG相位从当前PLL锁定的角度开始积分,而不是从0开始,这样切换前后坐标系连续,电流冲击能压到很小。

3.3 并网离网模式切换的控制量衔接

储能PCS经常要面对并网和离网状态切换,这是仿真里模型崩溃的高发区。并网时控制目标是功率,离网时控制目标变成了负载电压,本质上是外环任务切换,但内环还是那套电流环,只不过参考值来源变了一个。

我最开始做切换时直接在同一个时刻把外环PI重置,换另一个PI接入,结果电流波形有一个巨大尖峰。原因是并网模式下电流参考是由功率环连续输出的,切换瞬间功率环输出和被替换掉的控制环输出没有衔接,电流参考值跳到完全不同的量级,内环拼命去追就追出一条冲击电流来。

解决方法是切换前先把当前控制器的积分器清空或保持,切换后让新的控制环从当前运行工况的稳态附近开始输出。离网模式下的电压环参考电压要和当前母线电压实测幅值相位对得上,再让控制器接管。Simulink里用受控使能可以做到,但关键是切换时序要分步,别把状态翻转和断路器操作捆在同一时刻。

另一个细节是断路器合闸条件。重新并网时,逆变器输出电压幅值、相位和电网偏差必须很小,否则合闸瞬间会有很大的冲击电流。我给自己定了个简单门槛:相角差小于5度,幅值差小于5%,频率差小于0.1Hz再允许并网。仿真里即使不烧器件,冲击电流也会让后续动态一团糟。

4. 常见问题与排查技巧实录

4.1 功率环振荡发散,先查内外环带宽

这次调试中最值得记录的坑,就是功率环振荡不是先跑PI参数,而是先检查带宽配比。我第一次调外环时贪心,把外环带宽设得很高,想着功率响应越快越好,结果Pref一点斜坡上升,id_ref直接冲进限幅,随后功率波形开始像摇摇车一样来回摆,摆幅还越来越大。

排查顺序我建议是:先把外环断开,给内环固定电流指令,确认内环稳定;然后给Pref一个很缓的斜坡,看外环输出有没有抖动;如果外环输出抖而内环跟踪正常,基本就是外环带宽过高或者功率反馈滤波不足。这时候把外环PI增益降下来,或者降低反馈滤波截止频率,症状会立刻缓解。

还遇到过一次功率无功互相串扰的情况,表现为调节有功功率时无功也跟着跳,过一会儿才恢复。这多半是PLL相位不准或反馈滤波太重导致的坐标变换误差,别急着怀疑解耦,先把PLL带宽和滤波环节理清楚。

4.2 LCL谐振和PLL相位滞后的表现与处理

LCL滤波的谐振峰问题,在理想开关模型里会暴露得特别明显。我用的参数是L1取0.3mH,L2取0.1mH,Cf取30uF,算出来的谐振频率大概在4kHz左右,刚好落在电流环带宽和开关频率之间。谐振峰不压掉的话,电流波形上会叠一层明显的高频正弦成分,严重时内环PI直接失稳。

最直接的仿真处理是在滤波电容支路串一个小电阻,等效无源阻尼。我习惯串0.5到1Ω,先把低频动态调稳,后续如果需要再改成有源阻尼。这个电阻在真实系统里会增加损耗,但作为仿真初调手段,牺牲一点精度换来稳定是划算的。

PLL相位滞后的问题则通常在动态工况中出现。PLL带宽设得太低,或者环路滤波器时间常数太大,并网电压出现波动时,PLL输出的角度跟不上实际相位,dq坐标变换结果会混入额外分量,表现就是有功无功反馈互相污染。这时候即使内环外环PI都没问题,功率波形也会撒娇式抖动。处理方法是提高PLL带宽到20Hz附近,或者改用带前馈的SRF-PLL结构。

4.3 仿真步长、离散化与数值振荡的取舍

Simulink里仿真步长和求解器设置,对PCS模型的影响有时候比控制参数还大。带详细开关的模型如果用了变步长连续求解器,很容易在开关切换点产生数值chatter,波形上看是高频毛刺,但实际这是数值伪振荡,不是真实控制不稳定。

我现在固定使用离散求解器,步长按开关频率来取。10kHz开关频率,步长取2e-6到5e-6秒比较稳。1e-5秒也不是不能用,但会损失一些开关瞬态细节。平均值模型对步长的容忍度更高,步长放到1e-5到2e-5秒没问题,适合做长时间工况仿真。

调试效率上有个很实用的策略:先在平均值模型里把所有控制参数调稳,确认功率环和电流环配合没有问题,再把开关模型具体展开,跑一遍关键工况验证。直接在开关模型上从零调参,一个20秒的工况跑半个多小时,人容易崩溃。平均值模型和开关模型的差别主要集中在高频段,对于低频段的PI整定来说,结论基本可以迁移。

4.4 调试顺序速查表与自查清单

调试阶段核心检查内容常见坑
PLL锁定角度平滑,与电网电压实测相位一致初始相位设置不对,锁定前就合闸
电流内环固定指令dq电流跟踪误差小,无高频振荡Kp过大造成振荡,Ki过大拖慢响应
内环限幅加抗饱和电流参考被限制在允许范围,恢复平滑只加限幅不加抗饱和,恢复时过冲
功率外环闭环斜坡Pref跟踪良好,Q保持不变外环带宽过高、反馈滤波不足、指令突跳
模式切换切换瞬间电流冲击小,功率连续积分器未清洗、合闸条件不满足、相位不连续

我平时调模型前会把这表里的阶段顺序钉在脑子里。PCS双向变流器仿真不是单环整定加一堆PI就能搞定的,环节之间有很强的耦合关系,乱序调试只会让波形变得更加迷惑。

现在回头再看这个项目,最大的体会就是功率控制环的配合,本质上是在管理控制回路之间的时间尺度关系。内环要快,外环要稳,PLL要准,限幅要硬,抗饱和要早,启动时序要慢。这六样东西都照顾到了,储能PCS仿真模型基本就能稳稳跑起来,剩下的波形细化都是锦上添花。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进