首页 / 资讯中心 / 文章详情

飞轮储能PMSM建模与Simulink仿真:从dq模型到双闭环控制

飞轮储能PMSM建模与Simulink仿真:从dq模型到双闭环控制 ★ FEATURED ARTICLE
飞轮储能这两年重新热起来不是偶然。相比电池储能飞轮的卖点从来不是“存得多”而是“吞吐快、循环寿命长”特别适合电网调频、轨道交通再生制动、UPS短时支撑这类高频次、大功率、短时充放电的场合。而永磁同步电机PMSM作为飞轮系统的能量转换核心直接决定了整个系统能跑多快、能提多少功率、效率能到多少。做这类系统的仿真最烦的不是电机控制本身而是要把“电机-控制器-飞轮机械环节”当成一个完整系统去看任何一环简化过头其实测结果都对不上。这篇文章主要围绕飞轮储能系统里PMSM的建模思路、MATLAB/Simulink仿真的分层搭建方法、关键参数怎么定、结果怎么分析来展开。适合正在做储能方向课题的研究生、想从电池跳到飞轮方向的工程师以及刚接触电机控制仿真、想知道dq模型和双闭环控制在工程里怎么落地的朋友。我会把从坐标变换到控制环参数整定、再到飞轮大转动惯量带来的特殊动态过程完整串起来讲。1. 飞轮储能的技术特征与系统架构1.1 为什么飞轮能“吞吐快”它和电池的定位有什么本质区别飞轮储能的本质是“动能储能”。电机在电动状态下拖动飞轮转子加速把电能转化为机械能储存在旋转质量里需要释放能量时电机转入发电状态飞轮减速动能通过电机和变流器回馈到电网或负载。整个过程没有任何电化学反应只有机械旋转和电磁转换因此循环寿命几乎不随充放电次数衰减这也是它在高频次应用场景里被优先考虑的根本原因。电池受限于电化学反应的速率功率密度很难做高而且频繁深度充放电会加速老化。飞轮的功率密度可以做到很高因为电机的电磁转矩响应在毫秒级飞轮转速的升降能力只受限于电机额定转矩和变流器过流能力。但飞轮也有硬伤——能量密度低。一个典型的中速飞轮即使转速在15000rpm左右储存的能量按 ( E \frac{1}{2} J \omega^2 ) 计算也就够支撑几十秒到几分钟的功率释放。所以飞轮不是用来替代电池做大容量储能的它和电池是互补关系飞轮负责高频次、短时的大功率冲击电池负责长时、稳定的能量吞吐。我之前接触过一个电网调频的预研项目客户起初想全用电池结果测算下来电池每天要经历几十次满功率充放电循环寿命衰减快得没法接受。后来改为“飞轮电池”混合方案飞轮吸收秒级到分钟级的功率波动电池只处理稳态偏差系统整体寿命预期大幅提升。这个方案里的飞轮部分就是一套PMSM驱动的变速恒功率储能系统也让我下定决心把它的仿真模型彻底吃透。1.2 电机选型逻辑永磁同步电机为什么能坐“主驾驶”飞轮储能系统对电机的核心要求有三条效率高、转矩响应快、宽转速范围内可控性好。异步电机结构简单、成本低但转子本身有损耗在高速段效率和功率因数都会拖后腿电励磁同步电机虽然有独立的励磁调节能力但转子绕组结构复杂高速运行时励磁电流和散热都是麻烦。永磁同步电机在这三点上正好都是最优解转子采用永磁体励磁没有励磁电流也就没有励磁损耗效率比异步电机高2到5个百分点永磁电机气隙磁密高功率密度高同等体积下能输出更大的转矩这对飞轮“快速加减速”就是直接优势配合矢量控制PMSM的转矩响应可以达到几毫秒级而且转速从零到额定转速甚至弱磁区都能稳定闭环。当然PMSM的高速运行要考虑永磁体的退磁风险、转子护套的机械强度以及高频铁损耗。但在大多数飞轮储能项目中这些都可以通过合理的转速上限设计和冷却方案解决。所以在建模仿真时我建议直接把电机本体按PMSM来处理重点把它的数学方程和控制策略做扎实机械安全和热设计留到结构分析阶段单独做。1.3 系统架构从电网到飞轮的能量链路一套完整的飞轮储能系统从电网侧往飞轮侧捋大概是这样一条链路电网母线 → 双向AC/DC变流器 → 直流母线电容 → 双向DC/AC变流器 → PMSM → 飞轮转子电网侧变流器负责维持直流母线电压稳定实现功率的双向流动电机侧变流器负责控制PMSM的转矩和转速也就是控制飞轮充放电的功率大小和方向。两套变流器之间通过直流母线解耦控制策略可以相对独立设计。从仿真建模的角度我更倾向于把系统拆成四个层级电气层直流母线、逆变器、PMSM三相绕组控制层转速外环、电流内环、坐标变换、SVPWM调制机械层飞轮转动惯量、阻尼、转速响应系统层充放电指令的生成与切换逻辑。这四个层级对应着Simulink模型里的不同模块区域。实际建模时不必一开始就全部实现可以先从电机本体控制闭环做起跑通空载充放电再加入飞轮转动惯量、效率损耗和系统级指令这样每一层引入的问题都容易定位。2. 永磁同步电机的数学模型从三相坐标到dq轴2.1 三相静止坐标系下的原始方程PMSM的定子由三相对称绕组构成每相绕组的电压方程可以写成[ u_a R_s i_a \frac{d\psi_a}{dt} ]其中 ( R_s ) 是定子相电阻( \psi_a ) 是a相绕组总磁链。磁链不仅包括本相电流产生的自感磁链还包括其他两相电流产生的互感磁链以及永磁转子旋转带来的转子磁链分量。把三相写成矩阵形式[ \begin{bmatrix} u_a \ u_b \ u_c \end{bmatrix}R_s \begin{bmatrix} i_a \ i_b \ i_c \end{bmatrix} \frac{d}{dt} \left( \mathbf{L}{abc} \begin{bmatrix} i_a \ i_b \ i_c \end{bmatrix} \psi{PM} \begin{bmatrix} \cos\theta_e \ \cos(\theta_e - 2\pi/3) \ \cos(\theta_e 2\pi/3) \end{bmatrix} \right) ]这个方程在物理上很清楚( \mathbf{L}_{abc} ) 是3x3电感矩阵对角元是自感非对角元是互感。问题是转子一旋转( \theta_e ) 在变互感也在随转子位置变化方程就变成了一组时变系数的微分方程直接拿来设计控制器非常困难。我记得第一次在MATLAB里用三相模型搭仿真时曲线倒也能出来波形但只要一变转矩指令电流就出现了明显的振荡找参数问题找了很久。后来才意识到不是模型错了而是在三相坐标系下做PI控制本身就是事倍功半——PI调节的对象是交流量天然存在稳态误差和相位滞后。所以实际的电机控制系统几乎都不会直接在三相坐标下做闭环而是先做坐标变换把交流量变成直流量再套用经典PI控制。让读者理解这一点很重要坐标变换不只是简化计算而是把“随时间变化的交流控制问题”变成“恒定直流控制问题”这才是矢量控制的精髓。2.2 Park变换与dq轴同步旋转坐标系Park变换的核心思路就是把三相绕组等效成一个随转子同步旋转的dq坐标系下的两相绕组。变换矩阵如下[ \begin{bmatrix} d \ q \end{bmatrix}\frac{2}{3} \begin{bmatrix} \cos\theta_e \cos(\theta_e - 2\pi/3) \cos(\theta_e 2\pi/3) \ -\sin\theta_e -\sin(\theta_e - 2\pi/3) -\sin(\theta_e 2\pi/3) \end{bmatrix} \begin{bmatrix} a \ b \ c \end{bmatrix} ]经过变换后PMSM的电压方程变成[ u_d R_s i_d L_d \frac{di_d}{dt} - \omega_e L_q i_q ][ u_q R_s i_q L_q \frac{di_q}{dt} \omega_e L_d i_d \omega_e \psi_{PM} ]这里面每一项都有明确的物理意义( L_d \frac{di_d}{dt} ) 和 ( L_q \frac{di_q}{dt} ) 是动态电感压降反映电流变化( -\omega_e L_q i_q ) 是d轴上的交叉耦合项由q轴电流在旋转坐标系下感应产生( \omega_e L_d i_d ) 是q轴上的交叉耦合项( \omega_e \psi_{PM} ) 是永磁体旋转感应出的反电动势也就是“动生电动势”。很多人第一次看到dq方程会觉得符号绕我建议你把它想象成“坐在转子上看电机”对于表贴式PMSM( L_d L_q )电磁转矩只由q轴电流决定d轴电流主要扮演“励磁削弱”角色。这样一来控制目标就清晰了——让d轴电流等于0或按弱磁需求给定负值用q轴电流直接控制转矩。这就是“id0控制”的由来。2.3 电磁转矩表达式与机械运动方程PMSM的电磁转矩方程在dq坐标系下写为[ T_e \frac{3}{2} p \left[ \psi_{PM} i_q (L_d - L_q) i_d i_q \right] ]表贴式PMSM中 ( L_d L_q )转矩简化为[ T_e \frac{3}{2} p \psi_{PM} i_q ]这个式子看着简单却藏着一个关键结论转矩和q轴电流成正比而且比例系数由极对数和永磁磁链决定是常数。这就是为什么双闭环控制里电流环的响应速度几乎决定了整个系统的动态性能——转矩响应快慢本质上就是q轴电流的跟随速度。飞轮转子的机械运动方程[ J \frac{d\omega_m}{dt} T_e - T_{load} - B \omega_m ]其中 ( \omega_m ) 是机械角速度( J ) 是飞轮和转子的总转动惯量( B ) 是阻尼系数( T_{load} ) 是负载转矩。在飞轮储能系统里( T_{load} ) 通常就是变流器的电磁制动转矩或电网要求的输出转矩正常工况下没有外部机械负载。这里有个容易被忽视的量——( J )。飞轮的转动惯量往往比普通工业电机负载大一个数量级这会导致机械时间常数 ( \tau_m J/B ) 很长。换句话讲转速环在电气层面是个“慢变量”它和电流环的动态响应时间尺度相差很大是典型的多时间尺度系统。这个特征会在仿真里带来很有意思的现象电流能在一两个毫秒内跟上变化但转速可能要几百毫秒甚至几秒才能看到明显变化。如果调试时只盯着转速环PI参数很容易误判系统问题。3. 仿真模型的分层搭建思路3.1 整体模型框架六个模块的划分在Simulink里搭飞轮储能PMSM模型我习惯按物理边界划分模块而不是按代码功能划分。这样每个模块都有明确的物理端口出了问题可以直接从波形定位到具体环节。推荐六个模块PMSM电机本体用Simulink自带的PMSM模块或者自己用电压方程搭建包含三相端子和机械输出端口三相逆变器用Universal Bridge或者理想开关模型连接直流母线和电机端子坐标变换模块完成Clark变换和Park变换把三相电流转成dq轴电流控制器模块包含转速外环PI、电流内环PI、SVPWM生成飞轮机械模块用转动惯量、阻尼、初始转速构成的机械模型接受电磁转矩输入输出转速指令与状态切换模块模拟充放电指令的生成、限幅、模式切换逻辑。如果用的是Simulink自带PMSM模块要注意它的测量输出端口里有电气端口和机械端口机械端口接的就是J和B参数这一点要在模型初始化里仔细设定不然默认的机械参数会跟你系统的实际转动惯量差得离谱仿出来的转速变化曲线没有任何参考意义。3.2 控制策略选择id0双闭环矢量控制为什么够用飞轮储能系统在绝大多数应用里不需要追求极限性能id0双闭环矢量控制是性价比最高的方案。外环是转速环输入是转速指令输出是q轴电流指令内环是电流环d轴电流指令设为0q轴电流指令来自转速环输出电流环的输出是dq轴电压指令再经过反Park变换生成三相电压。为什么不直接采用更复杂的模型预测控制或直接转矩控制原因很简单飞轮的机械时间常数远大于电气时间常数系统的主要惯性在机械侧电气侧的快速性只要“够快”就行不需要“极致快”。PI控制器在工程上的成熟度、鲁棒性、调试经验都是其他算法比不了的。而且飞轮转速变化范围大宽转速范围内PI控制器的积分抗饱和设计比高级算法更可移植。d轴电流给0不是永远最优。如果飞轮的额定转速已经很高还想往上提速就必须进弱磁区这时候d轴电流要给负值前提是PMSM的Ld和永磁体特性支持这样的弱磁深度。对大多数飞轮项目来说超过额定转速20%以上的弱磁范围很少用到我建议第一版仿真坚决不做弱磁先把id0跑透再考虑扩展。3.3 飞轮机械环节建模转动惯量与阻尼的影响飞轮模块的建模在数学上非常简单就是积分方程 ( J \frac{d\omega}{dt} T_e - T_{load} - B\omega )。但把这个模块放进整个系统里仿真时有几个特别重要的细节第一初始转速的处理。飞轮在“充满电”状态下转速最高在“放完电”状态下转速最低系统的初始转速决定了仿真空载还是从零开始。很多人在仿真开始时把转速初始值设成0结果一上电控制器为了达到目标转速会输出一个很大的转矩电流瞬间顶到限幅波形看起来像“过冲”其实根本不是过冲是初始条件没设对。第二阻尼系数B的取值。飞轮的机械损耗包括轴承摩擦、风阻损耗等B在仿真的作用远不止一个损耗系数——它决定了系统自由转速的衰减快慢自然也就影响转速环PI的整定。我的经验是B取实际估算值的0.5到1.5倍做一次敏感性分析看转速响应和储能耗散速度是否还在可接受范围内如果没有明显恶化就说明系统对这个参数不敏感后续可以放心简化。第三转动惯量J的数量级。我曾做过一个100kW级飞轮的仿真飞轮转子加电机转子的总转动惯量大概在30到50 kg·m²额定转速12000rpm时存储的能量 ( E \frac{1}{2} J \omega^2 ) 已经是几十兆焦级。J这么大转速环的PI参数如果按普通电机经验值来设容易出现转速环响应极慢的现象。这不是PI调不好而是系统的物理特性决定了转速环带宽本来就很低调试时要有预期。4. 关键参数选取与仿真结果分析4.1 一套可参考的参数表电机、飞轮、控制器为了让仿真不过于抽象我直接给一套可用于复现的参考参数。这套参数对应一个额定功率100kW、额定转速12000rpm、最高转速18000rpm的飞轮储能单元所有数值都经过量纲和能量关系的校验。参数数值备注额定功率100 kW连续充放电功率额定转速12000 rpm对应电气频率400 Hz4极对最高转速18000 rpm限制充放电上限最低工作转速6000 rpm低于此转速停止放电转动惯量 J40 kg·m²电机转子飞轮轮体定子电阻 Rs0.02 Ω铜损计算用d轴电感 Ld0.35 mH表贴式近似相等q轴电感 Lq0.35 mH表贴式近似相等永磁磁链 ψPM0.45 Wb反电动势系数极对数 p4电气频率/机械频率4直流母线电压700 V典型三电平或两电平开关频率8 kHzSVPWM载波频率参数校验的一个简单办法是看额定点的反电动势是否与直流母线电压匹配。额定转速12000rpm时电气频率400Hz反电动势幅值约为 ( \omega_e \psi_{PM} 2\pi \times 400 \times 0.45 \approx 1131V )。这个值比700V直流母线电压高不少说明这个磁链参数下必须考虑弱磁控制或者降低额定转速下的磁链利用率。实际设计时往往会通过调整极对数或磁链值让反电动势在额定转速附近接近逆变器能输出的最大电压否则高速段的电压裕度不够电流环会饱和。这是我个人比较推荐的思路先定能量目标即转动惯量和转速范围再反推转矩需求再选电机的磁链和电流规格最后根据母线电压校验弱磁边界。参数之间环环相扣不能只看单个值的合理性。4.2 充放电工况设计与典型波形解读仿真工况建议分三档来做第一档恒转矩充电。给定一个固定的q轴电流指令比如额定电流的30%观察转速从最低工作转速6000rpm线性上升到一定程度电磁转矩基本恒定转速近似线性增长。这个工况主要验证电机模型、坐标变换方向、机械积分环节是否正确。第二档恒功率充电。这是飞轮实际的充电方式——功率给定恒定转速升高时转矩必须下降因为 ( P T_e \omega_m )。仿真时转速外环参考值会随着转速上升而降低转矩指令观察转矩和转速的乘积是否恒定这是一个很有效的系统模型正确性验证方法。第三档从满转速恒功率放电到最低转速。观察直流母线功率回馈、电机电流的相位变化电动与发电状态切换以及转速下降曲线。实际仿真中有一个很有代表性的现象在恒功率充电时转速环PI输出会慢慢下降这是因为随着转速上升达到同样功率所需的转矩在降低。如果电流环参数没有调好转矩指令的下降过程会出现小幅振荡反映在直流母线功率上就是功率波动。这个振荡的来源通常是电流环带宽太低而不是转速环的问题——调试顺序上一定要先整定内环再整定外环否则你看到的现象根本就不是外环问题的本来面目。4.3 从波形中识别的三个常见问题我在调飞轮仿真模型时总结过三个从波形上一眼就能判断的问题模式第一电流dq轴分量不正交。如果id给0但仿真里id明显不为0而且跟随转速振荡多半是坐标变换角度有问题——检查角度是否用了电角度而不是机械角度或者Park变换矩阵的符号和电机模型的方向定义是否一致。第二转矩指令出现负值但转速继续上升。这说明电机运行在发电状态但转速因为惯性还在涨是正常的“惯性充电”现象。如果判断充放电模式切换逻辑必须加入转速阈值判断不能只靠转矩方向。第三直流母线电压波动很大。这通常不是电机侧的锅而是电网侧变流器模型没有做好母线电容参数太小或者稳压环响应太慢。做系统级仿真时建议把直流母线电容按真实值给不要盲目加大电容掩盖问题否则联调时会被打回原形。5. 工程化落地中的建模细节与容易踩的坑5.1 坐标变换的系数和方向约定看似小问题错起来是大问题坐标变换里有一个永恒的小坑——系数到底是2/3还是√(2/3)。这取决于采用的是幅值不变约定还是功率不变约定。幅值不变约定下三相正弦量变换到dq轴后幅值不变系数是2/3功率不变约定下变换前后功率相等系数是√(2/3)。我强烈建议在仿真一开始就把约定写清楚并且用一组已知的abc电流手动计算出dq值验证方向和数值都对再往控制器里接。否则一旦接反转矩方向反了飞轮不充电反而放电整个系统的极性全乱调试起来非常痛苦。另一个容易弄混的是“反Park变换”的输入输出顺序。控制器的dq电压指令经过反Park变成αβ电压再进SVPWM这个链路里任何一处的角度补偿偏差反映出来就是电流环无法收敛id和iq一直波动却很难定位到角度上。排查时可以给转速一个很低的恒定值观察dq电流在稳态下是否为常数如果dq电流在波动先怀疑坐标变换不要急着调PI。5.2 初始条件设置仿真从“零”开始不等于状态从零开始飞轮系统的初始条件远比普通电机启动仿真复杂。普通电机可以从零转速启动飞轮储能则不同——它很可能在“已经有储能”的状态下开始工作。在Simulink里如果你不给PMSM模块和机械积分器设置初始转速默认就是0但这也许完全不符合你设想的“飞轮已充到10000rpm、现在开始放电”的工况。正确做法是在模型初始化回调里设置初始转速并让坐标变换模块的角度初值与之对应。否则转速和角度不同步第一个仿真周期的转矩和电流都会出现异常尖峰。更推荐的办法是先让模型在闭环控制下从0转速充电到一个设定转速把这一步跑稳定后再把稳态值作为后续工况的初始条件。这样做的好处是初始条件本身是“自洽”的不会因为人为设了一个实际无法达到的状态比如转速很高但电流为0导致仿真初期的非物理振荡。5.3 离散化步长的选择与仿真速度的平衡飞轮储能系统仿真的时间尺度跨度很大电流环需要微秒级步长一般取开关周期的1/10到1/208kHz开关频率下就是6到10微秒而完整的充电过程可能持续几十秒甚至几分钟。如果全时域都用固定小步长仿真会慢到让人失去耐心。实际处理时我常用两个办法一是用多速率仿真。电气部分PMSM、逆变器、电流环用小步长机械部分转速、指令切换逻辑用大步长Simulink里可以对不同模块配置不同的采样时间。机械时间常数远大于电气时间常数这个采样率差异完全合理。二是先把快速动态调稳定再做长时域分析。比如先跑0.1s把电流环动态看完确认id能稳在0、iq能跟踪指令再跑一次10s的充电过程观察转速和功率的整体变化。没必要每一步都盯着微秒级的电流波形看那样既慢又看不出系统层面的问题。5.4 效率损耗的建模什么时候可以忽略什么时候必须加上第一版仿真通常用理想PMSM模型忽略铁损、机械损耗和逆变器导通损耗。这样把控制策略和系统动态验证完毕后再逐步加入损耗项。我建议加损耗的顺序是机械阻尼 → 定子铜损 → 逆变器开关损耗 → 铁损。机械阻尼直接加在运动方程里建模成本最低对长时域放电曲线影响最大定子铜损就是 ( 3I^2R )把PMSM模块的Rs从理想值改为实际值即可逆变器损耗需要改逆变器模型为带导通压降和开关损耗的详细模型仿真速度会下降铁损最麻烦要加并联电阻或者损耗查表一般到这一步已经是在做效率优化而不是系统验证了。我踩过的一个实际教训是在某个仿真里由于没加机械阻尼飞轮放电到最低转速的时间比预期长了接近一倍导致储能容量估算严重偏乐观。加回阻尼项之后转速衰减曲线才和理论计算对得上。所以如果仿真结果要看“储能时长”或“系统效率”机械阻尼绝对不能省。5.5 从仿真到系统联调模型能做到什么做不到什么仿真模型能帮你验证控制策略、估算系统动态性能、优化参数边界这些在硬件平台上很难快速迭代。但模型也有明显的局限它无法替代对变流器实际死区效应、传感器延时、通讯周期抖动、永磁体温升退磁这些非线性因素的完整模拟。所以仿真阶段得出的PI参数到硬件在环测试阶段大概率要再修正一次修正幅度通常在10%到30%这是正常的不要指望仿真参数能“一把过”。我的建议是仿真阶段就为硬件留好接口——电流环PI参数作为常量定义转速环PI做成可调变量控制器里预留死区补偿和电压前馈的开关。这样软件从仿真移植到硬件时只需要改参数和使能开关而不是重构控制结构。最后再分享一个调试习惯每次改完模型参数先跑一遍自检工况比如恒转矩充电确认id、iq、转速、转矩四个核心变量的波形形态没变再进入正式工况。这个习惯帮我排除掉了大量“改了A结果B也变了”的连锁问题也让别人接手我的模型时不会一头雾水。飞轮储能和PMSM的组合看似复杂但只要你把数学方程吃透、把模块边界划清楚、把参数之间互相校验的逻辑理明白整个仿真模型就是一套可以反复复用的工具箱。
阅读完成 · 觉得有帮助?
咨询建站