你们要的HPMSM飞轮储能并网控制仿真,终于安排上了。这套模型我从底层搭到调通,花了整整两周下班时间,期间踩遍了MATLAB R2021b的各种坑。今天把完整思路、建模步骤和调试实录一次性摊开讲,从系统架构到电机参数,从控制策略到波形调优,尽量让拿到这套思路的人能在R2021b里自己复现出来。
先说清楚这套模型是干什么的:HPMSM(High-Speed Permanent Magnet Synchronous Machine,高速永磁同步电机)作为飞轮储能的电动/发电一体机,经双向变流器并网,实现电网侧有功功率的快速吞吐。它解决的是新能源并网带来的功率波动、频率支撑不足这类问题,适合研究储能并网控制、微电网功率调节,以及电机矢量控制方向的在校生和工程师参考。
1. 系统整体设计与控制思路拆解
1.1 为什么飞轮储能偏偏选中了HPMSM
飞轮储能的核心就是把电能变成高速旋转体的机械能存起来,需要时再转回电能。在这个能量转换的环节里,电机就是“咽喉”。选HPMSM,是被飞轮应用场景倒逼出来的结果。
飞轮要储存更多能量,最直接的路径是提高转速,因为飞轮动能和转速的平方成正比。这就带来一个尴尬:普通感应电机转速上千转就开始吃力,电刷换向的直流电机根本扛不住高速,而永磁同步电机天生适应高速工况。尤其是钕铁硼永磁体的HPMSM,转子结构简单坚固,没有转子铜耗,功率密度高,几十千瓦的飞轮系统转速可以轻松干到20000rpm以上。
但HPMSM也不是没有麻烦。高速下反电动势很大,定子电流频率很高,这意味着变流器要有足够的直流母线电压余量,控制器要有足够的带宽。另外永磁体在高温、振动、高频磁场下存在去磁风险,建模时得预留温度和保护逻辑接口。这些约束,决定了整个并网控制系统的架构走向。
1.2 双PWM变流器拓扑:能量双向流动的基石
飞轮储能系统要做到“既能充电又能放电”,功率变换器必须支持能量双向流动。我在这里选的是背靠背双PWM变流器拓扑,一侧接电网,一侧接电机,中间是直流母线电容。这个拓扑的好处一眼就能看到:电网侧变流器负责维持直流母线电压稳定,电机侧变流器负责控制电机的转矩和转速,两边互不纠缠,控制逻辑非常清晰。
对比另一种常见的方案“二极管整流+DC/DC变换器”,双PWM变流器的优势明显。二极管整流只能单向流动,充电时能量进不来;DC/DC变换器拓扑做双向没有问题,但在大功率场合效率、电磁兼容性都不如双PWM变流器成熟。实际工程中兆瓦级飞轮储能几乎清一色是双PWM变流器,我们在仿真阶段就应该贴近工程真实。
1.3 控制策略选型:电网电压定向矢量控制的取舍
并网控制的主流方案是电网电压定向矢量控制(VOC,Voltage Oriented Control),也叫dq同步旋转坐标系下的解耦控制。简单说,就是把三相交流量变换到与电网电压同步旋转的dq坐标系下,让有功和无功变成独立的直流量,然后就能像控制直流电机一样用PI调节器去控制。
之所以选VOC而不是直接功率控制(DPC),因为VOC的调制频率固定,开关频率固定,滤波器设计容易;更关键的,VOC控制精度高,电流波形质量好,这对飞轮储能这种功率频繁波动的应用场景很重要。DPC的动态响应更快,但开关频率不固定,谐波分布分散,反而给滤波器增加了压力。对一个偏应用的课题来说,VOC工程味更浓。
飞轮电机侧的控制,我采用的是转速外环+电流内环的双闭环矢量控制。充电时电机电动运行,转速环决定充电功率;放电时电机制动运行,转速环给定一个不断下降的转速参考值,能量就回去了。
2. 核心模块建模细节与参数计算
2.1 HPMSM电机模型与飞轮转动惯量匹配
在MATLAB R2021b里建HPMSM模型,可以直接用Simscape Electrical库里的Permanent Magnet Synchronous Machine模块,但参数得自己计算匹配。一个重要的概念是:飞轮系统的机电时间常数由转动惯量决定,它将直接影响并网功率的响应速度。
飞轮储能量公式为:
E = (1/2) * J * ω²
其中J是飞轮转动惯量,单位kg·m²,ω是旋转角速度,单位rad/s。比如一个设计储存10MJ能量的飞轮,如果最高工作转速15000rpm(换算成角速度约1570.8rad/s),那么J = 2E / ω² = 2 * 10⁷ / (1570.8²) ≈ 8.1 kg·m²。
但电机转子本身的转动惯量远没有这么大,飞轮的惯量通常是电机转子惯量的几十上百倍。在建模仿真时,不能光设置电机模块里的转动惯量参数,最稳妥的方式是在电机轴上并一个大惯量转子模块(Inertia),让机械环节的时间常数接近真实系统。我当时用Simscape里的Ideal Torque Source + Inertia搭的机械轴系,实测比直接改PMSM模块自带惯量参数更灵活,因为可以随时调节转动惯量观察系统响应变化。
2.2 电网侧LCL滤波器的参数确定
电网侧滤波器选择LCL还是L,对控制效果影响很大。LCL滤波器在高频段有更陡的衰减斜率,可以用较小的电感量达到同样的滤波效果,成本低体积小。但LCL是多阶系统,存在谐振峰值,必须加阻尼或者调整控制策略才能稳定。
我的参数计算思路大致如下。假设系统额定功率P=500kW,电网线电压有效值U=380V,直流母线电压Vdc=800V,开关频率fsw=10kHz。首先是变流器侧电感L1,按照电流纹波不超过额定电流峰值的20%计算:
L1 ≥ Vdc / (8 * fsw * ΔI_pk)
额定电流峰值约I_pk = P * √2 / (√3 * U) = 500000 * 1.414 / (1.732 * 380) ≈ 1079A。20%纹波就是约215A。代入上式:L1 ≥ 800 / (8 * 10000 * 215) ≈ 47μH。
网侧电感L2一般取L1的0.5倍左右,约25μH。电容Cf按吸收无功功率不超过系统额定功率5%来选择:
Cf ≤ 5% * P / (3 * 2π * 50 * U_phase²)
带入计算约150μF,为保险取100~120μF。实际仿真时我还会串一个小阻值电阻(0.1~0.5Ω)做无源阻尼,虽然增加了损耗,但治标立竿见影,调试时间可以节约一大半。
2.3 控制系统参数与离散化选择
我在Simulink里控制部分用的是连续PI加一阶低通滤波器近似实际数字控制器的延迟。比例积分参数不是拍脑袋定的,我先把电流环带宽设计在开关频率的十分之一到五分之一,即1~2kHz,由此反推PI参数。
以dq轴电流环为例,电机和滤波器的等效电感Lσ、等效电阻Rσ已知后,电流环PI参数设计公式(工程整定法)为:
Ki = Rσ / τ_i
其中τ_i是电流环期望时间常数,取1/(2π * 1500) ≈ 1.06e-4s。Kp = Lσ / τ_i。把电感和电阻实测值代入就能得到一组初值,再在仿真里微调。转速环带宽一般取电流环的十分之一,即100~200Hz,同样方法反推。
模型求解器的设置是我的血泪教训之一。刚建完模型跑的时候总是爆错或者波形发散,后来发现是求解器类型和步长设置有问题。电力电子仿真里含有高频开关器件,连续状态求解器必须严格选择ode23tb或ode15s这类刚性求解器,最大步长设为1e-5秒才能抓到PWM开关波形细节;如果只是关心控制性能、不在乎开关纹波,可以适当放宽到5e-5秒,仿真速度能提升一大截。
3. 实操过程:在R2021b中从零搭建整个模型
3.1 模型顶层框架与各子系统划分
打开MATLAB R2021b,新建Simulink Model,我习惯搭建模型的第一步不是拖模块,而是先在脑子里把顶层架构画清楚。我的模型划分成了五个顶层子系统:
- 电气主电路子系统:包括电网电源、LCL滤波器、电网侧变流器、直流母线电容、电机侧变流器、HPMSM电机、飞轮惯量。
- 电网侧控制子系统:含PLL锁相环、坐标变换、电流PI调节、SVPWM调制。
- 电机侧控制子系统:含转速计算、dq变换、电流PI调节、SVPWM调制。
- 功率计算与状态监测子系统:实时计算并网有功/无功、母线电压、电机转速等。
- 控制模式切换逻辑:完成电动/发电状态切换、预充电与并网时序控制。
顶层布局建议按信号流向排布,左边电源,中间功率变换,右边电机负载,控制子系统放置在下方,用Goto/From标签传递信号而不是直接连线,这样布线清爽,模型也容易读。R2021b支持总线信号,但我不建议一上来就用Bus,调试时不方便单独看数据。
3.2 电网侧变流器与SVPWM调制实现
电网侧整流器用Universal Bridge模块,桥臂数选3,功率开关器件选IGBT/Diodes,Ron和导通压降参数先按默认,我在后期判断损耗时才改这些值。
SVPWM调制是并网控制里最核心也最容易出错的环节。我用的实现方法是在Simulink里搭建标准SVPWM算法模块:输入两相静止坐标系下的电压分量Uα、Uβ,先计算扇区号,再计算作用时间,最后生成三相占空比信号,送入PWM Generator。
这里的坑是Simulink的PWM Generator模块有两种模式:一种是内部产生载波,直接给占空比信号;另一种是外部输入载波信号。如果是SVPWM这种非正弦调制波,必须选择外部载波模式,把SVPWM计算出来的三相调制波送进去比较,否则出来的波形就是错的。我一开始偷懒,试图用内部载波直接跑三相正弦调制,波形确实也能看,但直流母线电压利用率直接损失了约15%,后来换回SVPWM才有改进。
3.3 飞轮电机侧电动/发电切换逻辑
电机侧变流器的控制难点在于:必须根据飞轮充放电状态平滑切换电动和发电运行。如果直接跳变参考转矩,电流冲击会大到吓人。
我的做法是:定义一个状态变量mode,充电时mode=1,转速参考值逐渐增加到目标转速;放电时mode=-1,转速参考值逐渐降低。转速参考值不能用阶跃信号一路跳变,而是通过一个速率限制器(Rate Limiter)限制参考值的变化速度,防止机械冲击。
电机侧电流环的电流参考值由转速环PI输出限幅后给出。充电时转矩正,电流正,电机加速;放电时转速环输出负,电流反向,电机制动。这样来看,电动与发电的切换其实是通过转速参考信号来软切换的,无需额外逻辑硬跳变,运行波形自然得多。
3.4 飞轮惯量与机械损耗建模
飞轮本体在Simscape里可以用Rotational Inertia模块表示,设置转动惯量J=8.1kg·m²。同时还应当包含轴承损耗和风阻损耗,这是飞轮系统待机时的主要能量损失。
轴承损耗我用的是Rotational Friction模块,设置一个与速度线性相关的阻尼系数B。风阻损耗是一个与速度三次方成正比的阻力矩,Simscape里没有现成模块直接对应,我用的方式是搭建一个受控力矩源,输入转速信号经三次方计算后作为阻力矩注入机械轴。这样搭建虽然多花几分钟,但能真实反映飞轮系统在高速区的损耗特性,对研究待机耗能控制策略很重要。
3.5 并网时序与预充电控制
并网不能上来就闭合断路器。直流母线电容初始电压为零,直接闭合并网开关会产生巨大的浪涌电流。我按照实际工程流程,在模型中增设了预充电控制逻辑:先通过限流电阻给母线电容充电到额定值90%以上,再短接限流电阻,最后才允许电网侧变流器开始调制输出。
在Simulink里,我用了一个延时触发加逻辑判断来实现这个过程。先是电网侧软启动:PLL锁定电网相位后,电流环参考值从零开始斜坡上升,避免并网瞬间过流。断路器闭合的触发信号由Stopped/Started内部标志位控制,这样时序上的问题可以在仿真最开始就规避掉。
4. 常见问题与调试技巧实录
4.1 SVPWM调制波异常:直流母线电压利用率突然下降
我在第一次调试SVPWM时发现直流母线电压有异常跌落,一度以为是电容参数问题,查了半天才发现是SVPWM的调制比设置超过了线性区。SVPWM在线性调制区最大输出相电压幅值为Vdc/√3,理论上调制比最大可以到1.1547。但我不小心把调制波幅值算错了,导致过调制,输出波形底部削平,谐波剧增。
排查的方法是直接看三相调制波的波形,正常应该是马鞍形(SVPWM的特性就是叠加了零序分量,波形像马鞍),如果看到正弦波并且幅值拉满,多半是SVPWM计算环节出了问题,而不是PWM输出环节的问题。
4.2 并网电流波形畸变与谐振峰处理
第二个折磨了我一个周末的问题是并网电流波形在特定功率点出现高频振荡。LCL滤波器带来的谐振峰在10kHz附近,而控制环路在这个频段的增益还没有完全衰减,两者叠加形成了自激振荡的隐患。
解决办法是在LCL电容支路串联阻尼电阻,模拟工程中常用的无源阻尼策略。从仿真结果看,加0.25Ω的阻尼电阻之后电流THD从11.7%降到3.2%,波形瞬间变干净。阻尼电阻选择的依据是电阻压降损耗不能超过系统额定功率1%,我测算大约在0.5%左右,完全可以接受。
4.3 PI参数整定后系统依然无法稳定时的检查顺序
如果情况是整套PI参数按公式算出来但系统还是无法稳定,我的排查顺序是:先检查坐标变换的相位是否正确,再看PLL输出的电网相位有没有大量纹波,然后看电流反馈是否跟实际相电流一致,最后才考虑是PI参数本身的问题。坐标变换错相位或者反馈错位,是最容易被忽略的“编程错误”,而且表现出的现象跟参数没调好一模一样。
相位问题排查技巧是:把旋转坐标变换后的dq轴电流波形调出来,如果稳态时dq电流仍然高频波动,那大概率是坐标变换角度不对。正常的dq电流应是平直的直流分量加上少量纹波。
4.4 仿真速度过慢与内存爆炸的应对
电力电子仿真跑完整20秒全过程需要耗费很长的时间,尤其是我这种开关频率10kHz的模型。我的处理方法是:不追求同时模拟高频开关细节和长时间储能充放电全过程。
具体操作是把仿真拆成两段:一段用固定步长2e-6秒跑PWM高频细节,时间范围1秒,用来观察电流波形质量和控制动态;另一段把电力电子模块替换成平均值模型,用变步长跑10秒级别的充放电过程,用来观察转速变化和功率调度衔接。这样既保证了精度,又大幅缩减了仿真耗时。平均模型的做法是:电网侧变流器用一个受控电压源替代,电机侧变流器用一个受控电流源替代,控制信号直接接电压/电流源指令端。
4.5 飞轮转速起不来或无法稳定悬浮的排查
飞轮转速无法上升到目标值,一般不是控制问题,而是电机转矩能力不足或直流母线电压上限不够。高速永磁同步电机在转速升高时反电动势会接近母线电压,此时电流环的调节裕度越来越小,最终导致转矩输出受限。要解决这个问题,通常会引入弱磁控制,也就是在转速超过转折点后,通过注入直轴去磁电流来抑制反电动势,维持高速运行能力。
R2021b自带的PMSM模块支持弱磁控制接口,但需要自己搭弱磁算法。我这里用的是一种简化的电压闭环弱磁方法:实时采样dq轴电压合成幅值,当超过电压限制值时,通过PI调节器输出id参考值往负方向调节,直至电压回落到限制范围内。效果比查表法方便,鲁棒性也不错。
5. 仿真结果分析与波形验证要点
5.1 并网电流与电压相位关系判断
仿真跑稳以后,第一步看电网电压与并网电流的相位关系。单位功率因数运行时,a相电压和a相电流应基本同相位,波形过零点误差控制在2°以内。我调试中遇到相位差较大时,第一怀疑的是PLL参数太慢,锁相不准;第二怀疑是滤波器造成的相位滞后。正常情况并网电流稍微滞后于电压,因为滤波电感消耗了一点点无功,问题是滞后多少算正常,我用功率因数测量模块测过,单位功率因数运行时cosφ在0.98以上就算达标。
5.2 直流母线电压波动与功率指令跟随验证
直流母线电压是连接电网侧和电机侧的“桥梁信号”。母线电压波动大,意味着两侧功率不平衡。我的指标是:在额定功率阶跃时,母线电压跌落不超过5%。如果超标,优先调电网侧电压外环的PI参数,加大Kp能缩小动态压降幅度,加大Ki能加快恢复速度,但Kp过大会引发震荡。
功率指令跟随测试方法:给有功功率指令一个正负交替变化的阶跃信号,观察实际并网功率的响应时间与超调量。响应时间在10ms以内,超调量控制在5%以内,整个系统动态就算过关了。
5.3 充放电切换过程波形平滑性检查
充放电模式切换的瞬间是整个系统最脆弱的时刻,波形最容易失控。我的检查方法是看切换瞬间直流母线电压有无尖峰、电网电流有无畸变、转速有无过冲。经过速率限制器平滑之后,切换过程大约需要20ms完成,母线电压波动控制在3%以内。从我的调试实录来看,切换瞬间出现电流尖峰的最大原因不是控制参数,而是参考值切换的速率太猛,平稳后与PI参数没有本质关系。
6. 版本兼容性验证与经验总结
MATLAB R2021b这套模型,如果换到其他版本,需要注意三件事。第一,Simscape Electrical库模块名称在R2021a到R2023b之间有几次调整,比如PMSM模块在不同版本里所在库路径就不一样,如果打开报错,优先查模块是否从旧版本迁移。第二,SVPWM和PWM Generator模块的信号数据类型必须保持一致性,R2021b对数据类型的检查比老版本严格很多,有时明明逻辑正确但仿真报错,一看是uint16和double混用了。第三,源程序里如果使用了新的状态流图(Stateflow)图表,在旧版本中可能无法直接运行,这部分建议用普通逻辑模块替代。
最后再分享一个纯个人的习惯。飞轮储能仿真这种多时间尺度耦合的系统,不要指望一次性从头跑到尾。我现在的习惯是,每搭建一个子系统就单独设置一个MATLAB脚本跑通这个小模块的测试用例,全部通过后再拼到顶层模型里联合调试。这样的节奏虽然前期慢一点,但找BUG的时间会大幅缩短。
> 提示:本文所有参数计算均基于500kW/380V/50Hz系统,实际项目中请根据自身飞轮储能系统的功率等级、电压等级和转速范围重新计算。仿真模型调试过程中,务必从简单工况(低功率、低转速)逐步过渡到额定工况,不要一上来就跑满功率,那样出了问题很难定位。