资讯动态

飞轮储能背靠背变流器Simulink仿真建模与充放电控制实战

发布时间:2026/9/8 1:01:32 来源:尧图企业网站定制
这段时间一直在搞飞轮储能这套仿真从背靠背变流器主电路搭起到机侧充放电控制、网侧并网控制最后在Matlab/Simulink里把整个模型跑通中间踩了不少坑也总结了一些自己的心得。飞轮储能和电池储能最大的不同在于它靠高速旋转的转子储存动能功率密度高、寿命长、响应快但控制上对双向能量流动的要求特别高——充电时电动状态把电网能量转成转子动能放电时发电状态把动能馈回电网这套能量来回切换的活儿靠的就是背靠背变流器。如果你正在做储能方向的课题、毕业设计或者刚接触飞轮并网控制想快速验证算法这篇文章应该能帮你省不少事。我会从系统架构怎么定、机侧和网侧控制各自怎么搭、Simulink模型里哪些参数必须调、哪些坑必须避开这几个角度完整复盘一遍我的仿真建模过程。内容都基于这套“飞轮储能背靠背变流器充放电控制并网控制”的Simulink模型机侧、网侧都会有实操层面的细节。1. 系统架构与模型整体设计思路1.1 为什么飞轮储能一定要用背靠背变流器飞轮储能的本质是一台高速电机带一个大转动惯量的飞轮。充电时电机当电动机用把电网侧的电能变成飞轮的旋转动能放电时电机当发电机用靠飞轮惯性拖着转子旋转把动能变回电能送回电网。问题在于这两个方向的功率流动都需要变流器来“翻译”——电网是恒压恒频的交流系统电机转速却是从零到几万转连续变化的两者直接连是不可能的。双PWM背靠背结构是目前最主流、也最合理的方案。它本质上就是两个电压型PWM变流器背靠背挂在同一个直流母线上中间不需要额外储能元件能量可以双向流动。机侧变流器控制电机的转矩和转速网侧变流器控制直流母线电压和并网功率因数。相比二极管整流加制动电阻的方案背靠背结构在飞轮放电时能把动能回馈到电网而不是白白烧在电阻上能量利用率完全不是一个级别。选择这个拓扑还有个重要原因是控制解耦。机侧和网侧各管各的中间只通过直流母线电压这个“公共信息”耦合。机侧需要功率时母线电压会短暂下降网侧检测到电压波动就自动从电网补电机侧回馈能量时母线电压会抬升网侧再把多余的能量送回电网。控制逻辑清晰调试的时候也可以分侧独立调好再联调。1.2 主电路参数怎么定母线电压、电容和开关频率我做的这套模型功率等级按10kW设计飞轮电机额定转速20000rpm直流母线电压设定在750V。母线电压的选取有个基本原则必须高于网侧线电压峰值否则网侧PWM整流器没法正常工作同时还要留出一定裕量。三相380V电网的线电压峰值是根号2乘380也就是约537V。如果母线电压取600V理论上是够的但实际PWM整流器还需要考虑调制比和动态调节范围所以我直接取750V这样SVPWM的调制比工作在0.7左右网侧电流谐波小动态响应也快。母线电压取高了也有代价——开关管电压应力变大损耗增加电容成本上升所以折中下来750V是10kW这个等级比较常用的选择。直流母线电容的选取公式是C P /2 * Vdc * ΔVdc * fsw其中P是额定功率Vdc是母线电压ΔVdc是允许的电压波动比例fsw是开关频率。按10kW、750V、允许3%波动、10kHz开关频率来算C约等于10000 /2 × 750 × 22.5 × 10000算出来大概2960μF实际取3300μF。仿真里我用了两组1500μF串联再并联的组合方式等效电容1500μF也够用。电容大了动态响应慢小了母线电压波动大这个参数一定要根据自己模型的功率等级重新算不能照搬。开关频率我取10kHz这是工业变流器很常规的选择。太高了开关损耗大仿真也会明显变慢太低了电流谐波大电机和电感的噪音也大。Simulink仿真里开关频率直接决定最小仿真步长10kHz对应的开关周期是100μs仿真步长至少要设到2μs以下才准确我习惯用1μs。1.3 模型里飞轮部分怎么处理飞轮本体在Simulink里不一定要用完整的电机加转子模型。我用的方法是PMSM电机模型然后把转动惯量J设得很大——这是飞轮区别于普通电机拖动系统的核心。飞轮储能容量计算公式是E 0.5 × J × ω²假设我要存储2kWh的能量即7.2×10⁶焦耳最高转速20000rpm换算成角速度约2094rad/s。反推回去转动惯量J 2 × 7.2×10⁶ / (2094²)大约3.3kg·m²。这个转动惯量比普通同功率电机大了好几个数量级直接的好处是仿真时你能明显看到转速变化很缓慢充电时转速慢慢往上爬放电时也不会瞬间掉下来。如果J设小了转速变化太快充放电过程几秒钟就结束了既不符合实际飞轮的运行特性也不方便观察控制效果。我建议你在搭模型初期就把J按实际储能需求算好放进去后面调控制参数时会省很多事。2. 机侧变流器建模飞轮电机控制的核心细节2.1 永磁同步电机的数学模型机侧核心控制对象是永磁同步电机PMSM。飞轮储能用的电机基本都是PMSM原因很简单——转子没有绕组没有转子铜耗效率高而且转子可以做得很细很长适合高速旋转。在Simulink里搭PMSM模型可以直接用Simscape Electrical库里的Permanent Magnet Synchronous Motor模块也可以自己用数学公式搭dq轴方程。我建议直接用库里的模块省时间且经过验证。但理解dq轴方程仍然很重要因为控制器的设计全靠它ud Rs×id Ld×did/dt - ωe×Lq×iq uq Rs×iq Lq×diq/dt ωe×(Ld×id ψf)其中Rs是定子电阻Ld和Lq是dq轴电感ψf是永磁体磁链ωe是电角速度。表面贴式PMSM的Ld和Lq近似相等所以电磁转矩可以简化成Te 1.5 × p × ψf × iq看出来了吗转矩和iq成正比这就是矢量控制的基础。控制住了iq就控制住了转矩控制住了转矩就控制住了飞轮的加减速也就控制住了充放电功率。所以机侧控制器的核心思路就是外环控制转速对应飞轮转速高低内环控制iq电流id给定为0保证单位电流最大转矩输出这套就是经典的id0矢量控制。2.2 转速外环和电流内环的PI参数整定机侧采用转速外环、电流内环的双闭环结构。电流内环要求响应快带宽一般取开关频率的1/10到1/2010kHz开关频率下电流环带宽取1000~2000rad/s。转速外环带宽要远低于电流环一般取电流环的1/5到1/10防止内外环互相干扰。电流环PI参数可以用工程整定法。以q轴为例忽略反电动势扰动后电流环被控对象近似为一阶惯性环节G(s) 1 / (Rs Lq×s)用PI控制器零点抵消被控对象极点即Ti Lq/Rs然后根据期望带宽确定比例系数。具体公式Kp Lq × ωc Ki Rs × ωc其中ωc是期望的电流环带宽。假设Lq0.5mHRs0.05Ω取ωc1500rad/s则Kp0.75Ki75。这个公式是非常实用的起点搭好模型后在这个基础上微调就行。注意Simulink里的PI模块不同版本参数含义可能不同有的用Kp和Ki有的用Kp和Ti别搞混了。转速环调试时有个经验先把电流环调好电流波形平稳无超调了再调转速环。转速环的Kp先给一个较小的值比如0.1Ki给5然后慢慢加大Kp观察转速响应出现振荡就减小直到转速能平滑地跟踪指令。我在调飞轮模型时发现由于J很大转速环响应天然偏慢这是正常的——飞轮本身惯性大决定了它不可能像伺服电机那样快速加减速如果转速环调得太激进反而会让直流母线电压大幅波动。2.3 机侧充放电控制逻辑机侧充放电控制的本质就是给转速环一个目标转速。充电时把转速参考值调高到比如18000rpm电机加速从直流母线吸收功率飞轮储存动能增加放电时把转速参考值调低到比如5000rpm电机处于发电制动状态把动能转化为电能回馈到直流母线。听起来简单但有个关键细节转速从高到低的过程不是电机主动减速而是负载转矩方向变化。当转速实际值高于参考值时转速环输出变成负值iq参考值变成负值电机产生制动转矩这时候能量就从飞轮流向直流母线母线电压会升高。网侧变流器检测到母线升高就把多余的功率送回电网完成放电过程。Simulink里实现充放电切换可以直接用阶跃信号改变转速参考值。我做了一个简单的逻辑充电模式转速参考18000rpm放电模式转速参考5000rpm中间加斜坡过渡防止转速突变导致电流冲击。这个斜坡时间我设了0.5秒实测效果不错母线电压波动明显减小。有的资料里会用更复杂的SOC估算和功率管理策略但仿真验证阶段从转速参考切换开始是完全够用的。2.4 机侧SVPWM的实现要点PWM调制部分我用了SVPWM空间矢量调制Simulink里有现成的SVPWM模块也可以用S函数自己写。SVPWM相比SPWM的好处是母线电压利用率高15%且谐波特性好。用自带的模块要注意参数设置开关频率10kHz直流母线电压750V这两个参数必须跟主电路一致否则实际输出的电压就跟计算不符。如果用自己搭的SVPWM我建议直接用Simulink的Matlab Function模块写算法核心步骤是判断扇区、计算作用时间、生成比较值。这个算法网上资料很多但有一点容易被忽略——载波周期和PWM生成模块的比较值范围。Simulink的PWM Generator比较值通常归一化到0到1之间而自己算出来的作用时间可能不是这个量纲需要做归一化转换否则输出波形完全不对。我之前调试时花了一晚上找PWM波形乱跳的问题最后发现就是归一化系数搞错了。如果你用的也是自建SVPWM建议先用一个简单的纯电阻负载验证调制波和开关信号对不对再接入PMSM电机这样定位问题会快很多。3. 网侧变流器建模并网控制的关键环节3.1 网侧变流器的任务与结构网侧变流器的作用主要有两个维持直流母线电压稳定以及控制并网功率因数为1。它本质上就是一个三相PWM整流器控制目标就是让输入电流是正弦波且与电网电压同相位。拓扑上电网通过一个滤波电感接入变流器我用的滤波电感是5mH。电感值的选取有个经验公式电感压降一般取电网相电压的5%~10%按380V、10kW算额定相电流约15.2A电感压降取20V对应电感值L 20 /2π×50×15.2≈ 4.2mH取整用5mH。电感大了电流谐波小但动态响应慢电感小了纹波大这个参数需要根据实际系统折中。仿真里我直接用的三相交流电压源模拟电网内阻设得很小0.01Ω这样模拟的是理想电网。实际并网还有电网阻抗、电压畸变、频率波动等问题但在Simulink验证控制算法阶段理想电网完全够用先把算法跑通再说。3.2 电网电压定向矢量控制与PLL锁相网侧控制用的是电网电压定向矢量控制VOC。核心思想是建立一个以电网电压矢量为d轴的同步旋转坐标系这样电网电压的q轴分量为0有功和无功控制就解耦了。d轴电流对应有功功率q轴电流对应无功功率控制q轴电流为0就能实现单位功率因数。这个控制方案的前提是必须准确知道电网电压矢量的位置所以PLL锁相环是网侧控制精度的关键。Simulink自带的PLL模块可以直接用也可以用简化的同步坐标系PLL自己搭。我一开始用自带的PLL没觉得有问题后来发现启动瞬间PLL锁定需要一定时间如果在这段时间内就投入变流器控制电流会有一波很大的冲击。解决办法是加一个软启动逻辑PLL锁定完成后比如检测到角度误差小于0.01rad持续10ms再投入电流内环控制。自搭PLL要注意PI参数的整定。带宽选得高锁相快但容易被电网电压畸变干扰带宽低了锁相慢动态响应差。我取带宽100rad/sPI参数用Kp2×带宽×阻尼比Ki带宽²计算阻尼比取0.707算出来Kp≈141Ki≈10000。这个参数在电网电压畸变不太严重时表现很好锁定时间约30ms左右。3.3 网侧双闭环控制参数设计网侧也是双闭环结构外环是直流母线电压环内环是电流环。电流环和机侧类似带宽取1500rad/s左右按同样方法整定PI。需要注意的是网侧电流环的被控对象是滤波电感不是电机绕组所以用的是电感值L和等效电阻R来算PI参数。电压环的带宽要远低于电流环一般取电流环的1/10也就是100~200rad/s。电压环的PI参数我给的初始值是Kp0.5Ki20然后根据母线电压的波动情况微调。母线电压750V稳态波动控制在2%以内也就是±15V是比较合理的如果波动太大先检查电流环是否调好再调电压环参数。电压环调试有一个很常见的坑空载或轻载时母线电压容易过冲。这是因为负载功率很小电压环输出有功电流参考几乎为零一旦负载突然加重电压环为了快速补电会给一个很大的电流指令导致母线电压先跌后冲。解决办法是给电压环的输出即d轴电流参考值加限幅我限制在±30A比额定电流15.2A大一些既保证动态性能又防止过冲。3.4 并网电流质量与滤波器的影响并网电流的谐波是衡量控制效果的重要指标。Simulink里可以用Powergui的FFT分析工具查看THD总谐波畸变率。我实测调试好的模型并网电流THD约2.8%在5%的并网要求之内波形正弦度很好。如果发现THD偏高检查两个地方一是电流内环的PI参数是否足够大带宽太窄会导致电流跟踪有相位差和幅值误差二是滤波电感是否太小电感太小电流纹波大。我在模型里还加了一个小阻尼电阻0.1Ω和电感串联模拟实际线路阻抗这样电流波形会更接近真实情况。我见过有些仿真模型为了波形好看把滤波电感加得很大这个做法在仿真里当然可以但放到实际工程里体积和成本都吃不消。做仿真的目的不是把波形做到完美而是在合理参数范围内验证控制策略的有效性你说对不对。4. Simulink模型搭建实操与参数调试经验4.1 模型总体结构与搭建顺序这套模型的总体结构分成四个部分主电路三相电网滤波器网侧变流器直流母线电容机侧变流器PMSM飞轮负载、机侧控制系统、网侧控制系统、信号显示与测量。如果用Simulink的模型分层功能我建议分成至少三个层级顶层放主电路第二层放控制子系统第三层放各个控制子系统的内部实现。搭建顺序非常重要我的经验是从简单到复杂、从单侧到双侧。第一步先只搭网侧变流器直流母线用一个直流电压源替代调通网侧并网控制第二步只搭机侧变流器直流母线也用电压源替代调通飞轮电机的转速控制和充放电切换第三步才把两边通过直流母线电容连起来做完整的联动调试。这样做的好处是故障定位容易如果你一开始就把整个系统全搭好遇到问题根本不知道是机侧的问题还是网侧的问题。我最初走的就是这个“先分后总”的路线整个过程大概用了两个星期每天推进一小步。如果你已经有其他变流器的仿真基础时间可以压缩到一周左右。但如果你一上来就照着网上的完整模型抄我保证你会被各种莫名其妙的错误折磨到崩溃。4.2 求解器设置与仿真步长选择仿真参数的设置直接影响结果的准确性和仿真速度。我用的求解器是discrete离散固定步长1μs。为什么不用连续求解器因为PWM变流器本身是开关系统开关管在每秒钟开关10000次连续求解器为了精确捕捉开关时刻会频繁减小步长仿真速度极慢。离散求解器配合固定的功率电子开关采样周期速度比连续求解器快几倍到几十倍。步长选择上1μs对应10kHz开关频率一个周期内采样100点精度足够。如果模型太大仿真太慢可以试着把步长放到2μs精度损失不大但速度提升明显。我调试阶段用的是2μs步长最后验证波形时才切回1μs。还有一个小设置在Powergui模块里仿真类型选Discrete样本时间填2e-6或者1e-6这个参数必须和求解器步长一致否则Powergui的测量模块会报错或者结果不准。4.3 数据字典报错的排查过程如果你打开别人的Simulink模型可能会遇到这类错误找不到数据字典‘can.sldd’、找不到数据字典‘hwa.sldd’。这可不是你的模型出了问题而是原模型关联了一个外部数据字典文件.sldd而这份字典没有随模型一起给你。数据字典在Simulink里用来集中管理信号、参数和数据类型定义是团队协作时常用的一种工程化手段。解决办法有两个。如果你手头有原字典文件在Model Properties里重新关联路径就行。如果没有最干净的办法是右键点击模型编辑器中的空白处打开Model Properties在Data字典那一栏把关联的sldd文件移除或新建一个空字典大部分情况下模型里的工作空间变量还能继续用只是丢失了字典里定义的信号对象和枚举类型需要逐个检查报错处重新定义。更彻底的办法是新建一个空白模型把原模型内容全部复制粘贴到新模型里很多时候这样能直接绕过字典关联问题。我在处理这类“别人给的模型打不开”的情况时基本都是用新建模型粘贴内容这个办法省时省力。需要注意的是如果原模型启用了基于模型引用的架构复制粘贴会破坏引用关系这时候就只能用前面说的方法改字典路径了。4.4 运行速度优化让仿真不再龟速飞轮存储仿真的很烦人的一点是飞轮惯性大系统时间常数大想看一次完整的充放电过程可能需要仿真几十秒甚至几分钟的时间而PWM的步长又是微秒级的计算量相当大。我优化仿真速度的经验有三个第一能用平均值模型的地方不用开关模型。比如电机在低速时可以简化处理网侧电流环验证阶段也可以用受控电压源替代PWM变流器但这种方法只适合验证控制参数不适合看谐波波形。第二把不需要高精度观测的部分降低采样率。Simulink每个模块都单独设置了采样时间我对转速环和温度环相关的模块用10μs采样对电流环和PWM用1μs采样速度能提升30%以上。第三避免在模型里放太多Scope和显示模块。Scope其实很耗资源尤其是显示时间长波形多的时候。我习惯把关键信号加到Data Logging里存到工作空间仿真结束后统一用Matlab脚本画图这样仿真的时间能缩短一半。4.5 关键参数汇总表我把这套模型的核心参数整理一下方便你对照着自己的项目改参数项数值说明额定功率10kW充放电功率等级电网电压380V/50Hz三相交流直流母线电压750V网侧输出、机侧输入母线电容3300μF根据功率等级计算开关频率10kHzPWM载波频率仿真步长1μs~2μs离散求解器固定步长滤波电感5mH网侧并网电感电机类型PMSM表贴式永磁同步电机额定转速20000rpm飞轮最高转速转动惯量J3.3kg·m²按储能容量反推电流环带宽1500rad/s机侧和网侧一致电压环带宽150rad/s远低于电流环带宽以上参数不一定适合你的具体场景但作为初始值做仿真验证这套参数是很稳的起点。如果改了功率等级记得按公式重新计算电容、电感和PI参数直接搬参数很容易出问题。5. 常见问题与排查技巧实录5.1 典型故障一启动瞬间电流冲击大这个几乎是每个做PWM变流器仿真的新手都会遇到的问题。表现为并网电流或电机电流在启动瞬间冲得很高甚至超过额定电流的好几倍。排查思路先检查是不是所有控制环都已使能。如果是先启动变流器后投入电流环那启动瞬间变流器相当于工作在开环状态电流就失控了。我用的方法是在电流环输出侧加一个使能开关母线电压建立稳定后再投入。另外一个原因是PLL没锁好就投了电流环角度不准导致坐标变换错误电流自然就乱冲。解决方法是像我前面提到的加PLL锁定检测逻辑锁定后再打开电流环。5.2 典型故障二直流母线电压波动大表现是母线电压在充放电过程中波动超过5%甚至出现持续振荡。这个问题我从三个方向排查一是母线电容容量是否足够过小的电容会导致电压波动本来就大二是改大电压环PI的阻尼Kp比例系数太大容易振荡Kp太小响应慢电压跌得多三是检查前馈补偿有没有加。网侧电流内环加电压前馈可以大幅提高抗扰性最简单的做法是把母线电压的变化量乘以一个系数叠加到电流参考上。实际调试中我发现母线电压振荡的问题大概率出在电流环带宽与电压环带宽之比不够大。如果两个环的带宽太接近就会互相耦合产生谐振。确保电压环带宽是电流环带宽的1/5以下问题基本都能解决。5.3 典型故障三电机转速震荡或失步这个在机侧调试中很容易遇到尤其是从充电切到放电的瞬间。现象是转速跟踪不上参考值或者转速在参考值附近来回振荡。排查下来最常见的原因是转速环PI参数不合适。飞轮J特别大系统惯性大转速环带宽太高非常容易振荡。我把转速环带宽调到很低具体做法是先把Ki设为0逐渐增加Kp直到出现振荡再退回80%然后固定Kp逐渐增加Ki同样找到临界值再退回80%。这种整定方法虽然老套但倍儿有效。另外记得检查转速测量和反馈信号是否有滤波延迟。Simulink里连续模块和离散模块混用会产生延迟导致控制信号滞后严重时也会引起振荡。我用Rate Transition模块统一了采样率解决了一部分令人头疼的振荡问题。5.4 常见问题速查表现象可能原因解决方案并网电流THD过高电流环带宽不足、滤波电感偏小增大电流环Kp按公式重算电感启动电流过冲PLL未锁定就投入电流环加PLL锁定检测和软启动延时母线电压振荡电压环带宽过大或母线电容偏小降低电压环带宽增大母线电容转速跟踪不上转速环Kp太小或速度反馈延迟按临界比例法整定转速环PI充放电切换电流突变转速参考突变导致转矩冲击加斜坡信号切换转速参考值模型运行太慢步长过小、显示模块过多调大步长信号存工作空间再画图数据字典报错缺少关联的sldd文件新建空字典或复制到新模型电机启动失败初始角度设置不对检查转子初始角度和编码器位置信号5.5 一个保证结果可信的验证方法仿真模型搭完不能只看波形美不美还要做能量守恒验证。具体做法是把机侧输入功率、网侧输出功率和飞轮动能变化量放在同一个图画出来看它们是否满足能量平衡。我实测的结果是充电过程电网输入功率10000W扣除变流器损耗约3%飞轮动能增加速率约9700W能量误差在1%以内。放电过程飞轮动能减少速率约9800W网侧输出功率约9500W误差也在合理范围。如果你算出来能量误差超过5%说明模型哪里一定有问题——可能是坐标变换不对、测量模块接错或者PWM调制有问题。能量守恒是验证模型正确性的终极手段这一步千万别省。6. 扩展方向与个人的一点建议6.1 从仿真到实际系统的距离这套Simulink模型直接拿去实机跑是不现实的但作为算法验证和参数初始化的工具是很有价值的。我自己的体会是仿真能帮你把控制框架、参数量级、逻辑互锁这些问题全部验证清楚到实际硬件调机时你心里是有底的知道每个参数大概在哪个范围出了问题也知道从哪个方向排查这就能节省大量现场调试时间。如果后续要做更接近工程项目的仿真可以考虑给模型加上更精细的开关管损耗模型、死区时间设置、电流采样延迟和PWM更新延迟等离散控制引起的相位延迟。这些因素在纯理想仿真里看不出来但在实际系统里对控制性能影响很大。Simulink里可以通过Transport Delay模块模拟采样延迟加上之后你会惊奇地发现电流波形没有之前漂亮了——这才是真实世界的状况。6.2 从飞轮储能到其他储能系统背靠背变流器的控制思路是相通的这套模型里的网侧控制部分几乎不需要改动就能用在电池储能、超级电容储能等系统的并网控制里。区别主要在机侧电池储能接的是DC-DC变换器超级电容也类似而飞轮接的是高速电机。所以你如果学透这套系统再去做分布式储能、微电网、电动汽车的V2G并网控制逻辑上都是同一套基本功。6.3 一点实在话做飞轮储能仿真别贪快也别迷信别人的模型。我第一次拿到一套完整的飞轮储能模型时也觉得直接改改参数就能用结果发现模型里每个模块的注释、每个参数的设置逻辑都值得自己重新推一遍。后来我花时间从电机方程、坐标变换开始一步一步自己搭虽然慢但搭完之后所有的细节都在脑子里改起东西来得心应手。仿真模型不是目的是帮你理解系统的工具这层关系想清楚了你收获的就不只是一个能跑的模型。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价