☰
基于Simulink的飞轮储能永磁同步电机建模与矢量控制仿真
2026/10/24 5:31:34 网站建设 项目流程

飞轮储能系统这几年的热度一直在涨,尤其是短时大功率支撑、电网调频、轨道交通再生能量回收这些场景,很多团队都在布局。而做飞轮储能最难绕开的一环,就是把“电机怎么转起来、转起来怎么储能、需要回馈电网时怎么把动能送出去”这件事想明白。想不明白的时候,Simulink仿真就是最好的练手场地。这篇文章我用一台永磁同步电机作为飞轮驱动电机,完整走一遍飞轮储能系统的建模思路和Simulink仿真搭建流程,包括为什么选PMSM、dq轴数学模型怎么建、矢量控制怎么配、充放电工况怎么模拟,以及我自己实测中踩过的那些坑。适合正在做储能系统控制、电机驱动仿真或者刚接触飞轮储能课题的研究生和工程师参考。

1. 飞轮储能系统整体设计与建模思路

1.1 系统拓扑与能量转换链路

飞轮储能的基本原理,说穿了就是用电机带着一个高转动惯量的飞轮高速旋转,把电能转化为机械动能存起来;需要释放能量时,电机切换为发电状态,动能又变回电能送回电网或负载。这个“电能→动能→电能”的转换链路里,电机是唯一的能量转换枢纽,控制策略的好坏直接决定系统的响应速度和能量转化效率。

从系统拓扑上看,一套典型的飞轮储能装置包含以下几个部分:

  • 飞轮转子:提供转动惯量J,是整个储能系统的“油箱”,转速越高、惯量越大,能存的能量越多
  • 永磁同步电机:负责电能和机械能的双向转换
  • 双向变流器:通常采用三相电压源型PWM逆变器,既能工作在整流状态驱动电机,也能工作在有源逆变状态向电网馈电
  • 控制器:采集电机转速、电流、母线电压等信号,计算PWM占空比
  • 辅助支撑系统:包括轴承、真空腔体、冷却系统等,这部分在仿真中可以先简化,重点关注机电能量转换

仿真建模时,我习惯先画出这样一张能量链路图,然后按“电网侧→变流器→电机→飞轮机械负载”的顺序逐级建模。这样做的好处是每一步的输入输出都很明确,排查问题的时候能快速定位是哪一级出了问题,而不用对着整个系统瞎猜。

1.2 为什么选用永磁同步电机作为驱动电机

很多刚开始接触飞轮储能的人会问,为什么不用异步电机或者开关磁阻电机?这里面的选型逻辑其实非常清晰。

第一,永磁同步电机的损耗结构有天然优势。转子是永磁体,没有励磁绕组,也就没有转子铜耗,电机高速运转的时候转子发热量远小于异步电机。飞轮往往在每分钟上万转的转速下运行,转子散热条件本来就差,这部分损耗省下来,对系统长期运行的意义非常大。

第二,PMSM的转矩响应速度快。它的转矩直接和定子电流的q轴分量相关,不存在异步电机那样的转差率调节延迟,动态性能好。飞轮储能应用特别看重“需要充能时能立刻加速”、“需要放电时能马上把功率顶上去”这种快速响应能力,PMSM是很合适的选择。

第三,PMSM的效率高,尤其是在额定转速附近,功率因数高,逆变器容量利用率也高。同样的功率等级下,PMSM的体积和重量通常比异步电机小,这对于飞轮系统做高功率密度设计很有价值。

当然PMSM也不是没有代价,高速下永磁体有退磁风险,转子涡流损耗需要仔细控制,对控制器的位置检测精度要求也更高。但从整体工程实践来看,飞轮储能领域目前的主流技术路线基本就是围绕PMSM展开的。

1.3 飞轮储能容量的关键计算关系

飞轮存储的能量和转速的平方成正比,这个关系是整个系统建模的基石:

E = 1/2 * J * ω²

其中J是飞轮转动惯量(kg·m²),ω是飞轮角速度(rad/s)。

举个例子。假设飞轮转动惯量J = 0.5 kg·m²,工作转速范围是8000~15000 r/min,那么最高转速下的动能是:

E_max = 1/2 * 0.5 * (2π * 15000 / 60)² ≈ 61.7 kJ

转速降到8000 r/min时,剩余能量是:

E_min = 1/2 * 0.5 * (2π * 8000 / 60)² ≈ 17.5 kJ

系统实际可用能量就是两者之差,约44.2 kJ。也就是说,转速并不是一个线性的“油表”,转速掉了20%,能量可能损失了将近36%。这个特性直接决定了控制策略的设计:飞轮储能系统一般不允许深度放电,因为低转速下的能量密度太低,持续运行效率很差。

在Simulink建模时,我会把这个公式放在模型的核心位置,用一个积分环节模拟机械运动方程:

J * dω/dt = T_e - T_L

其中T_e是电磁转矩,T_L是负载转矩。飞轮系统的负载转矩主要来自轴承摩擦和风阻损耗,仿真里可以做成一阶拟合,也可以用常数模拟。当电机驱动飞轮加速时,T_e > T_L;当系统放电时,T_e为负值,相当于给飞轮加上一个制动力矩,动能被释放出来。

2. 永磁同步电机的数学模型与矢量控制基础

2.1 从三相静止坐标系到dq旋转坐标系

永磁同步电机的三相定子绕组在空间上互差120度电角度,三个绕组的电压电流都是交流量,直接在这种坐标下设计控制器会非常痛苦,因为被控量一直在变化。解决办法是把它变换到旋转坐标系下。

第一步是Clark变换,把abc三相静止坐标系变换到αβ两相静止坐标系。如果三相绕组中性点不接地,简化的变换关系是:

i_α = i_a i_β = (i_a + 2 * i_b) / √3

第二步是Park变换,把αβ坐标系变换到dq旋转坐标系,旋转速度跟转子同步:

i_d = i_α * cosθ + i_β * sinθ i_q = -i_α * sinθ + i_β * cosθ

这里的θ是转子电角度,需要从编码器或传感器获取。经过这两步变换之后,交流量变成了直流量,控制目标从“跟踪正弦电流”变成“维持恒定电流”,PI调节器可以直出,这就是矢量控制简单又高效的底层逻辑。

很多人在Simulink里直接使用Simscape Electrical的PMSM模块,模块内部已经完成了这些变换。但如果你想真正理解模型,建议自己用Fcn模块或MATLAB Function手工实现一遍坐标变换,再和电机模块里的内部信号做对比,误差应该在毫安级别。这个步骤做完,你对Park变换的理解会扎实很多。

2.2 PMSM的电压方程与转矩方程

在dq同步旋转坐标系下,表贴式永磁同步电机的数学模型可以写成:

定子电压方程: u_d = R_s * i_d + L_d * di_d/dt - ω_e * L_q * i_q u_q = R_s * i_q + L_q * di_q/dt + ω_e * (L_d * i_d + ψ_f)

电磁转矩方程: T_e = 1.5 * p * [ψ_f * i_q + (L_d - L_q) * i_d * i_q]

运动方程: J * dω_m/dt = T_e - T_L - B * ω_m

各参数的含义是:R_s为定子电阻,L_d、L_q为d轴和q轴电感,ψ_f为永磁磁链,p为极对数,ω_e为电角速度,ω_m为机械角速度。

对于表贴式结构,L_d和L_q近似相等,转矩方程里的磁阻转矩项(L_d - L_q) * i_d * i_q基本可以忽略,所以转矩控制和i_q几乎成正比:

T_e ≈ 1.5 * p * ψ_f * i_q

这给控制带来了非常大的便利——只要把i_d控制在0附近,转矩就只受i_q控制,模型退化成简单的线性关系,PI参数也比较好整定。这也是i_d = 0控制策略在飞轮储能这类应用中使用最多的原因。

2.3 矢量控制策略选择与飞轮工况适配

PMSM的矢量控制策略主要有i_d = 0控制、最大转矩电流比控制(MTPA)、弱磁控制等几种。飞轮储能系统该选哪种,取决于运行工况。

飞轮储能最常见的工作模式是:充电时恒转矩或恒功率加速,放电时恒功率回馈。在整个充放电过程中,系统更关心转矩响应的快速性和运行效率,而飞轮属于高速运转设备,基速以下运行时间占据大部分工作区间。

i_d = 0控制策略实现最简单,而且在基速以下可以保证单位电流产生最大转矩,控制算法不复杂、鲁棒性好,是我在飞轮储能仿真中最优先推荐的方案。当转速超过额定转速后,需要引入弱磁控制来扩展调速范围,但是飞轮储能系统一般会设计在额定工作区间内运行,弱磁区间用得相对少,可以先把基础方案跑通了再考虑扩展。

放电工况其实比充电工况更容易在设计时被忽视。放电时电机转矩反向,T_e变成负值,此时i_q为负,控制器的PI输出会反向饱和,能量从机械侧流向电气侧,直流母线电压会抬升,需要通过变流器把能量回馈到电网或负载侧。在仿真里,这个过程的本质是同一个双闭环控制器在i_q参考值上做正负切换,不需要额外切换控制拓扑,只需要设置好电流限幅和电压外环逻辑。

3. Simulink仿真模型搭建实操

3.1 模型整体架构与关键模块选择

Simulink中搭建飞轮储能系统仿真模型,整体架构我推荐按下面的层次分开搭建:

  • 电源与逆变器:用DC电源模拟直流母线,逆变器采用三相全桥IGBT模块
  • 电机本体:优先使用Simscape Electrical的Permanent Magnet Synchronous Machine模块
  • 坐标变换与SVPWM:手工搭Clark/Park变换,用SVPWM生成器输出IGBT驱动脉冲
  • 控制器:电流内环和转速外环双闭环,PI调节器加限幅
  • 飞轮负载:一个转动惯量模块(在电机模块的机械端口设置或通过外部方程描述)

电机模块的机械端口参数中,转动惯量J可以直接填入飞轮的转动惯量,这是最简单可靠的做法。如果你希望把飞轮作为一个独立子系统建模,也可以把电机模块的J设得很小,然后在外部通过运动方程连接一个Simscape机械转动惯量元件,两者的效果等价,但后者可以更方便地加入轴承阻尼、扭转刚度等细节。

3.2 一个10kW级飞轮储能系统的仿真参数配置

下面给出一组我在项目中实际使用过的参数,对应一个10kW、额定转速15000 r/min、直流母线电压310V的飞轮储能仿真系统。

参数名称数值单位
额定功率10kW
额定电压(相电压峰值)220V
额定转速15000r/min
极对数p2-
定子电阻R_s0.05Ω
d轴电感L_d0.4mH
q轴电感L_q0.4mH
永磁磁链ψ_f0.06Wb
飞轮转动惯量J0.5kg·m²
开关频率10kHz
直流母线电压310V
PI采样时间20μs

这几组数据的匹配逻辑是:在额定转速15000 r/min时,电角速度是2 * π * 15000 * 2 / 60 ≈ 3141.6 rad/s,此时永磁磁链产生的反电动势约为ψ_f * ω_e ≈ 0.06 * 3141.6 ≈ 188.5 V。考虑到逆变器需要留出一定的电压裕量来施加电流控制所需的电压差,母线电压选择310V能保证在额定点附近PMSM不会进入深度过调制区。

如果你照抄这组参数,跑出来的仿真结果不会因为参数本身的物理不自洽而出问题。如果换用别的功率等级,需要保证反电动势峰值、直流母线电压和电流限幅三者之间的关系是合理的,否则容易出现电压饱和导致电流失控的现象。

3.3 坐标变换、SVPWM和双闭环控制器搭建细节

坐标变换部分,我建议用Fcn模块或者MATLAB Function模块实现。这里给出一段MATLAB Function的示例代码,完成Park运算:

function [id, iq, ialpha, ibeta] = fcn(ia, ib, theta) ialpha = ia; ibeta = (ia + 2 * ib) / sqrt(3); id = ialpha * cos(theta) + ibeta * sin(theta); iq = -ialpha * sin(theta) + ibeta * cos(theta);

SVPWM的实现细节比较多,包括扇区判断、矢量作用时间计算、占空比饱和等,建议直接使用Simulink自带的SVPWM生成器,或者参考网上经典的SVPWM实现函数。关键是设置好PWM开关频率和采样时间,比如开关频率10kHz对应采样时间20μs,这里需要保持逆变器模块和PWM发生器模块的采样步长一致,否则会出现调制波和载波不同步的诡异毛刺。

双闭环控制器的结构是:外环为转速环,输入是转速参考值和实际值的偏差,输出为q轴电流参考值i_q*;内环为电流环,输入是i_q和实际i_q的偏差,输出为q轴电压u_q。d轴电流控制在0附近,一般也做一个独立的PI环。两个闭环的采样时间可以不相同,电流环采样周期短(比如20μs),转速环采样周期可以适当放大(例如200μs),这在硬件实现中也是常见做法,可以减轻CPU运算负担。

3.4 充放电模式切换逻辑的实现

充放电模式切换是飞轮储能模型里比较关键也比较容易绕晕的地方。我的做法是在转速环上方增加一个模式选择逻辑:

  • 充电模式:转速环给定一个较高的目标转速,比如12000 r/min,电流环按照加速需求输出正向i_q,电机全力驱动飞轮加速
  • 保持模式:目标转速等于当前转速,电磁转矩只用于抵消摩擦和风阻损耗,i_q在很小的范围内维持平衡
  • 放电模式:此时转速环的目标降低,或者直接切换为功率外环,给定一个恒功率放电指令,i_q反向,电机产生制动力矩,飞轮转速下降,能量回馈到直流母线

在Simulink里,模式切换可以用一个简单的Switch模块配合状态变量实现,也可以用Stateflow做更复杂的状态机。如果只是做纯仿真验证控制算法,用Switch模块和一个计时信号就够了。我习惯用阶跃信号控制模式切换:0到2s给正转速指令充电,2到4s切为放电模式,这样在Scope里看得特别清楚,转速先升后降、电流先正后负、母线功率方向翻转,整个能量流动过程一目了然。

4. 充放电运行过程仿真与参数整定

4.1 电流环PI参数整定方法

电流环的性能决定了整个系统响应速度的基线,我一般按照带宽法来设计。以表贴式PMSM为例,忽略反电动势交叉耦合项后,电流环可以简化成一阶惯性模型。

假设期望的电流环带宽为1000 rad/s,则积分时间常数取L_q / R_s,比例增益取带宽乘以L_q。按上面表格参数计算:L_q = 0.4mH,R_s = 0.05Ω,电气时间常数τ_e = L_q / R_s = 0.008s,电流环PI参数近似如下:

Kp_i = L_q * ω_bw = 0.0004 * 1000 = 0.4 Ki_i = R_s * ω_bw = 0.05 * 1000 = 50

这类公式算出的参数只能作为初值,实际仿真中还需要微调。如果电流波形出现高频振荡,可以适当降低Kp_i;如果电流响应过慢,可以增大Ki_i。我个人的习惯是先保证电流环不发散,再逐步加速,一步到位很容易出现仿真直接爆掉的情况。

4.2 转速环PI参数整定与限幅设计

转速环是电流环的外环,它的带宽必须明显低于电流环,否则内外环会发生耦合振荡。一般来说,转速环带宽取电流环的十分之一到五分之一比较合适,也就是100~200 rad/s。

在飞轮储能系统里,飞轮转动惯量J往往是电机转子本身惯量的几十倍甚至上百倍,这会使得转速环的动态响应看起来非常“迟钝”。比如J = 0.5 kg·m²,电磁转矩如果维持在10 N·m,转速变化率只有:

dω_m/dt = T_e / J = 10 / 0.5 = 20 rad/s²

换算成每分钟的转速变化,每秒只能改变约191 r/min。从3000 r/min加速到12000 r/min需要大约47秒。这个时间尺度比电机电流响应慢了好几个数量级,所以转速环PI参数往往需要把比例增益推高一些,同时积分作用不能太强,否则转速会超调并长时间震荡。

这里有个非常关键的工程细节:转速环输出(也就是i_q参考值)一定要加限幅。电机和逆变器都有电流耐受上限,如果没有限幅,PI输出在启动瞬间会直接冲到一个极其离谱的数值,仿真波形看起来像一根竖线,控制器完全失去意义。我把电流限幅设在额定电流的1.5倍左右,既能保证动态性能,又不会让仿真结果脱离实际。

4.3 典型充电过程仿真结果解读

完成以上配置后,我跑了一组典型的充电仿真。初始转速设定为3000 r/min(避免零速建模时的奇异点),2s时给定转速阶跃到12000 r/min,结果如下:

  • 启动阶段:电流环迅速响应,i_q快速上升到限幅值,电磁转矩维持在最大允许值,转速以近似恒定的斜率上升,这是恒转矩加速阶段
  • 接近目标转速时:转速偏差逐渐减小,i_q从限幅值回落,转矩慢慢减小,转速曲线平滑过渡到稳态,没有明显的超调
  • 稳态阶段:i_q降到接近零,只维持一个很小的正值来平衡摩擦损耗,转速稳定在目标值附近

这个过程的能量视角很有意思。在恒转矩加速阶段,飞轮转速线性上升,但存储的动能是按转速平方增长的,所以同样的转矩增量,在高速区间带来的能量增长远大于低速区间。这解释了为什么飞轮储能系统希望工作转速尽可能高——更多能量被“存进”了高转速区间。

4.4 放电模式与能量回馈仿真观察

放电模式的仿真需要在充电结束后切换控制策略。我的做法是:在4s时把转速环的目标设为8000 r/min,相当于告诉系统“现在需要把转速放下来”,为了满足这个减速度,控制器会立即输出反向i_q,电机电磁转矩反向,飞轮动能转化为电能在直流母线上体现为功率回流。

观察到的波形包括:i_q阶跃变为负的限幅值,转速以近似恒定的斜率下降,直流母线的电流方向翻转,形成持续的负功率。当转速下降到8000 r/min附近,i_q重新回到零附近,放电过程结束。

从能量角度看,放电功率等于电磁转矩乘以实时转速。恒转矩放电时,转速越来越低,功率越来越小。如果你的应用场景要求恒功率放电,就需要随着转速的下降不断提高反向转矩。我在仿真里用了一个简单的功率外环来实现这个目标:功率指令除以实时转速得到转矩指令,再限制在一个允许范围内。这个逻辑虽然简单,但跟实际飞轮储能系统的放电控制思路是一致的。

4.5 谐波观测与FFT分析方法

电机仿真里观测谐波是一个绕不开的需求,尤其当你关注电流波形质量和损耗评估的时候。在Simulink里,最直接的方法是在Scope中打开FFT工具,或者使用Powergui模块自带的FFT分析功能。

如果你用的是Simscape Electrical的电机和逆变器模型,直接在模型中放置一个Powergui模块,然后选择“FFT Analysis”,就可以对电流、电压波形做频谱分析。注意几点:FFT分析的起始时间和窗口长度要选择稳态区间,尽量避免开关暂态;基波频率设置为电频率而不是机械频率;分析窗口内的波形采样率要足够高,否则高频谐波会被混叠。

我自己在仿真时发现,飞轮电机高速运行下的电流谐波主要集中在开关频率及其整数倍附近,比如10kHz、20kHz,以及6k±1次谐波(对于三相桥式逆变器,最明显的电流谐波是5、7、11、13次等)。如果你发现波形里出现了非特征次谐波,往往是PWM采样延迟、死区时间或者控制参数不良引入的,要在控制层面去排查,而不是一味加大滤波电感。

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

5.1 启动瞬间电流尖峰爆炸

现象:仿真开始瞬间,电流还没有建立反馈闭环,PI调节器输出直接冲向限幅值,导致电流波形出现巨大的尖峰,甚至直接导致仿真中断。

原因:启动时电机位置角如果设置不当,Park变换得到的初始电流方向可能是错误的,控制器为了纠错会瞬间输出很大的电压矢量;另一个常见原因是PWM模块和电机模块没有同时从稳态启动,初始状态不匹配。

排查思路:把电机的初始转速设置成一个较小的非零值,比如300 r/min,同时把PI调节器的初始输出设置为0;再检查转子初始角度与编码器初始角度是否一致。如果条件允许,给电流环参考值设置一个缓慢上升的斜坡,而不是直接阶跃给定,电流尖峰基本可以抑制住。

5.2 仿真速度极慢或者干脆卡死

现象:模型里用了Simscape Electrical的详细开关模型,步长设置比较小(比如1e-6s),转速在1万转以上的飞轮系统要仿真几十秒的过程,跑一个充电加放电的完整周期要几个小时,甚至中途仿真直接不收敛。

原因:飞轮储能的机械时间常数和电气开关周期跨了几个数量级。开关周期20微秒,而飞轮加速需要几十秒,两者放在一个仿真里,时间跨度过大,变步长求解器会频繁切换步长。

解决办法有几个层次:如果关注重点是控制策略和能量流动,可以不使用细节开关模型,而是用平均模型替代逆变器,或者用S-Function写PMSM的理想模型,仿真速度能提升一到两个数量级;必须保留开关模型时,可以把开关频率从10kHz降到5kHz观察趋势,或者使用离散求解器并合理设置采样时间,避免极小步长。另外,在仿真开始前把“Save simulation output as single object”改成只保存必要信号,也能减少内存开销。

5.3 电流波形出现严重毛刺或发散

现象:电流环波形出现高频振荡,波形看起来像噪声,甚至直接发散到天文数字。

原因:最可能是电流环PI参数设置过大,比例增益超出离散系统稳定边界;另一个常见原因是PWM采样时刻和电流采样时刻没有对齐,产生了一个等效延迟,导致控制器相位裕度不足。

排查方法:先减小电流环Kp到原来的四分之一,观察是否稳定;如果稳定,再逐步增大到合适的值,每一步观察波形的阻尼特性。检查采样时间设置:PWM脉冲更新时刻应该在三角载波的顶点或谷点,电流采样也应当在同一个时刻进行,两者错开一个周期就会扰乱回路响应。这在Simulink里用Hit Crossing模块或者触发子系统可以精确控制。

5.4 转速环振荡或超调严重

现象:转速波形在目标值附近来回振荡,衰减很慢,甚至在设置了目标转速后转速冲过头很多才慢慢回调。

原因:转速环的积分增益过大,或者比例增益不足导致相位裕度偏低。飞轮的大惯量特性会放大这种趋势,因为转动惯量越大,同样的控制误差会导致更持久的转速偏移。

对策:把转速环PI参数按小惯量电机参数的10倍量级重新设计,预留足够的稳定裕度;再将i_q限幅值调低一些,因为大惯量下即便给小一点的限幅,转速变化率也足够快。实际调试时我习惯用临界比例度法,先把积分关掉,只调比例增益让系统临界振荡,再按经验公式推算整套PI参数,效率比盲目试凑高得多。

5.5 常见问题速查表

现象最可能原因处理建议
启动电流尖峰爆炸初始位置角不对、PI初始输出不为零设置非零初始转速、PI输出清零、给定斜坡
仿真速度过慢开关频率高、步长小、全阶模型换平均模型、降低开关频率、离散化
电流高频振荡电流环PI增益过大、采样时刻不对齐降低Kp、对齐PWM采样时刻
转速超调严重转速环积分过强、限幅过大减小Ki、降低i_q限幅
母线电压异常抬升放电回馈功率过大、母线电容不足增加母线电容、限制放电功率
功率方向不正确模式切换逻辑有误检查转速目标切换和i_q符号

6. 飞轮储能仿真的拓展方向与个人实操心得

最后聊几句延伸内容。目前这个模型基于PMSM的标准矢量控制,如果你后续想往工程应用方向深化,有几个方向可以直接在这个模型上扩展:加入损耗模型评估飞轮系统的效率,包括铜耗、铁耗和机械损耗;引入直流母线电压外环,构建面向电网的功率响应模型;用Stateflow把充放电状态机做得更精细,加入待机、故障保护等模式;或者将控制器离散化后生成C代码,移植到DSP目标板上。这些扩展本质上都在当前模型的控制框图上做增量改动,基础建得扎实,后面每一步都会顺利很多。

最后分享一点个人实操体会。飞轮储能的仿真和普通电机调速仿真最大的不同,在于“时间尺度跨度太大”,刚接触时很容易陷入“把每个细节都建模得极其精确”的误区,结果模型庞大、计算缓慢,反而看不清核心的能量转换规律。我现在的习惯是第一版模型尽量简化,重点验证能量流动方向和控制框架是否合理;跑通之后再逐步增加损耗、限幅、死区等细节。实际调试时还有一个很实用的小技巧:把飞轮转动惯量J先设成实际值的千分之一,让转速响应变快,这样可以在几分钟内观察完整的充放电循环,快速验证控制逻辑是否正确;确认无误后,再把J恢复到真实值,进行最终的长时间仿真。这个小技巧帮我节省了不少调试时间,你可以试试。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询