
提到储能很多人第一反应是锂电池、抽水蓄能或者飞轮但在电力电子和电力系统领域超导磁能储存系统SMES一直是个独特存在。它不是通过化学能或势能存储能量而是直接把电能以磁场形式“锁”在超导线圈里需要时再瞬间释放出来。这几年我陆续做过几个跟SMES相关的仿真项目最常用到的就是Simulink这套工具配合SimPowerSystems现在并入Simscape Electrical做系统级建模非常顺手。这篇东西我打算把一套完整的超导磁能储存系统建模、仿真实现过程完整梳理一遍包括模型怎么搭、参数怎么选、哪些地方容易踩坑适合正在做储能系统仿真、电力电子变流器控制的同学参考。无论你是课程设计要交差还是毕业论文需要出波形或者纯粹想搞明白这套系统内部怎么配合都应该能从里面找到用得上的东西。1. SMES系统的整体设计思路与方案选型1.1 超导磁能储存系统凭什么能瞬间吞吐功率SMES的核心元件就是那卷超导线圈。超导体在临界温度以下电阻为零电流在线圈里流动时几乎没有焦耳损耗所以直流电流一旦建立磁能就可以长时间保存。这个储能密度的计算非常简单磁场储能公式是W 0.5 × L × I²其中L是线圈电感I是流过线圈的电流。比如一个电感值为0.1H的线圈充到2000A存进去的能量就是0.5 × 0.1 × 2000² 200kJ。这个能量级别不算大但关键在于它可以在毫秒级时间内把功率全部放出这是电池和抽水蓄能完全做不到的。电力系统里用它来平抑功率波动、补偿电压暂降、抑制低频振荡就是冲着这个瞬态响应速度去的。SMES系统整个组成不复杂包含三块超导线圈及低温恒温器、功率变换系统PCS、控制器。线圈负责储能量PCS负责能量交换——把电网的交流电整流成直流、给线圈充电或者把线圈里的直流能量逆变成交流、送回电网。控制器实时监测网侧电压电流和功率需求计算PWM脉冲去驱动变流器实现有功无功的独立调节。这里必须提一句我这篇讲的是Simulink仿真实现不会涉及超导材料制备、低温系统的具体工程设计这些物理层面的东西在仿真里统统被简化成“一个理想电感模型”。仿真关注的是电气量怎么变化、控制策略是否有效、系统能不能稳定运行这是仿真真正有价值的地方。1.2 为什么选Simulink而不是自己写代码或者用别的工具建模这事方法论选项其实不少。你完全可以用Python手搓微分方程用PSCAD搭电磁暂态模型甚至用MATLAB脚本纯数值求解。但我的经验是SMES这种“电力电子磁场储能控制系统”耦合的系统用Simulink是综合性价比最高的选择。原因有几点。第一Simulink的Simscape Electrical库已经把IGBT、二极管、三相桥、变压器、滤波电感这些元件做成了现成的物理模型你不用自己推导每一个开关器件的导通截止逻辑只需要搭拓扑、给参数仿真步长到微秒级也能跑起来。第二Simulink的控制系统部分和物理模型无缝衔接PI调节器、PWM发生器、坐标变换都能直接用库里的模块拖出来省掉大量底层编码时间。第三Simulink方便做参数扫描和后处理分析我经常把同一个模型跑好几组工况用MATLAB脚本自动改参数、采集数据、画图一条龙完成。另外从复现角度讲Simulink的simulink cache和mdl/slx文件特别好传递。我给别人对比模型直接把slx发过去版本兼容的话双击就能跑比把代码包带依赖环境拷来拷去省事太多。对于课程设计或课题组合作这几乎是最低摩擦的交付方式。2. 从物理系统到仿真模型核心建模思路拆解2.1 把超导线圈等效成什么最合理仿真第一步最关键的决策超导线圈用哪种模型表达。这直接决定仿真结果的准确性和仿真速度。最精确的做法是用有限元模型把线圈每一匝的几何位置、磁场分布、互感全部建模。但这是我强烈不建议在Simulink系统级仿真里干的事计算量巨大、仿真极慢且对控制策略研究没多大帮助。系统级仿真需要的是“快速、稳定、能反映外特性”。所以工程实践里的通用做法是把超导线圈等效成一个串联的电阻和电感。超导体零电阻这个特性在仿真里怎么体现很简单R就设得很小比如1e-6 Ω。注意不能直接设为0否则Simulink的一些微分方程求解器在计算时可能出现矩阵奇异我后面会专门讲这个问题。电感值L的选取也不是拍脑袋要结合系统能量需求确定。假设一个典型课题场景需要系统在电压暂降时支撑0.5秒、提供100kW有功那需要释放的能量约50kJ。取线圈额定电流3000A反推电感L 2W / I² 2 × 50000 / 3000² ≈ 0.011H。实际选取时留一定裕量取0.015H比较稳妥。这里额外提一下有些文献会用超导磁体的动态电感模型考虑电流变化时磁场分布变化的影响那只在超导材料内部研究才用得上。做系统并网仿真固定L完全够用跑出来的结果和实验装置对照误差很小。2.2 功率变换系统PCS的拓扑选择PCS是SMES和电网之间的桥梁拓扑选型直接决定了系统能做四象限运行还是只能单向充放电。2.2.1 三相全桥变流器方案最常用的是两电平三相电压源型PWM变流器。交流侧通过滤波电感接到电网直流侧直接连接超导线圈。由于超导线圈本质是个大电感直流侧不需要额外加直流电容这点和常规的电压源变流器背靠背系统很不一样——线圈本身就能起到维持直流电流平稳的作用。这个结构的好处是控制灵活。在dq坐标系下解耦后有功功率和无功功率可以独立调节SMES既能向电网输送有功也能进行无功补偿。仿真模型里我会用Universal Bridge模块选IGBT/Diode三相桥臂导通压降设置默认值。2.2.2 为什么不用斩波器加网侧变流器的两段式结构还有一种常见的SMES结构是“网侧PWM整流器 直流斩波器”两级级联斩波器负责调节线圈电流、维持直流母线电压恒定。这个方案多一级变换系统冗余度更高但控制环节更多、损耗更大建模也更复杂。我个人的建议是如果你是刚接触SMES仿真用单级三相全桥结构就够了也就是功率器件直接连接交流电网和超导线圈通过控制IGBT的导通占空比来改变线圈端电压进而控制充放电功率。这个方案模型简洁、控制直接做课程设计或毕业设计完全拿得出手。两级结构等吃透基础之后再研究也不迟。2.3 控制器在dq旋转坐标下的建模思路三相交流要无缝地转化为可控制的直流量最经典的方式就是帕克变换。把三相静止abc坐标变换成dq旋转坐标后有功电流id和无功电流iq解耦控制就简洁多了。整体的控制框图可以理解成三个环。外环是功率参考计算根据系统需求恒压控制、恒功率控制或非网规约得到id和iq的参考值中间是电流内环两个PI调节器分别跟踪id、iq指令输出控制量vd、vq最后是PWM调制环节把vd、vq反变换成三相正弦调制波与三角载波比较生成IGBT开关信号。仿真里这部分模块都用现成的坐标变换可以通过写MATLAB Function模块或直接用库里的abc_to_dq0 Transformation模块PI调节器用Discrete PI Controller调制信号生成用PWM Generator载波频率一般设10kHz。这部分是整个模型最容易出问题的地方。数据方向弄反、dq变换角度不对、PI参数不匹配都会导致仿真发散或波形异常。我下面会展开讲具体怎么排查。3. Simulink仿真实操手把手搭一个可运行的SMES模型3.1 仿真环境的准备和版本选择我用的是MATLAB R2020b以上版本Simscape Electrical Libraries和Simulink是必须装的工具箱。如果你的License只有基础的MATLAB和Simulink那很可惜库文件不完整很多电力电子元件用不了。安装时看到Simscape Electrical字样务必勾上这是整个SMES模型的地基。建模型之前先做两件事。先在MATLAB主界面执行“powerlib”命令它能弹出电力系统元件库窗口顺手检测工具箱是否正常加载。然后新建一个Simulink模型Model Settings里把求解器类型设成变步长、ode23tb或ode15s。为什么用这两个因为电力电子电路里IGBT的开关动作会让系统呈现刚性特征普通ode45很容易算不动或者误差大刚性求解器在解这类方程组时能自动缩步长、保证收敛。仿真时间0.4秒、最大步长1e-4秒精度通常就够看了。3.2 构建三相电网到PCS再到线圈的主回路主回路是模型的主体骨架。我习惯把整个模型分成三大区块用Subsystem封装分别命名为“Grid Interface”“PCS Converter”“SMES Coil”这样到后期无论是调参数还是给别人讲模型都一目了然。3.2.1 电网接口区从Simscape Electrical里拖一个Three-Phase Source线电压有效值设400V、频率50Hz。之后接一个RL串联阻抗模块用来模拟线路阻抗和变压器漏抗电阻0.01Ω、电感0.5mH。这个阻抗不能省一方面真实系统离不开线路阻抗另一方面它能防止仿真初瞬间的那个阶跃电流太过剧烈对数值收敛也有帮助。3.2.2 PCS变流器区变流器用Universal Bridge模块桥臂数设3功率器件选IGBT/DiodeRon导通电阻1e-3Ω、Forward voltage 1V左右缓冲电路Snubber resistance设1e6Ω简化处理。直流侧的正负极直接引到SMES线圈区中间不加大电容——这里又得提醒一句超导线圈是大电感直流侧电流本来就平滑不需要电容支撑加了反而可能和线圈形成LC谐振波形乱七八糟。3.2.3 超导线圈区用一个Series RLC Branch参数设置为电阻Type选择R值填1e-6Ω电感L填0.015H电容C那栏断开设inf。然后接一个断路器或者理想开关模拟线圈的初始励磁过程。实际SMES启动时需要先把线圈电流充起来这个电流建立过程不能省略。仿真里我通常让一个Step信号在0.02秒时刻触发断路器把线圈接入PCS直流侧开始励磁。3.3 控制系统的详细搭建过程3.3.1 电压电流测量与坐标变换在PCS和电网之间要放三个Current Measurement和三个Voltage Measurement测到的abc三相量送入dq变换模块。dq变换需要电网电压相位角度这个角度用PLL锁相环来获取。从Simscape Electrical里拖Three-Phase PLL模块输入三相电压输出wt角度作为坐标变换的基准。所有电压电流测量值都转成标幺值或者幅值统一这个环节我建议提前做好否则后面的PI参数很难跨工况复用。我的习惯是id、iq除以额定电流的峰值进行标幺化控制量输出再乘以额定电压标幺化回实际值。3.3.2 电流内环PI控制器的设计电流内环控制SMES与电网交换的电流。根据前文分析dq轴电压方程可以近似写成vd Rid - ωLfiq ud vq Riq ωLfid uqR是滤波电阻Lf是滤波电感ω是电网角频率。交叉耦合项−ωLfiq和ωLfid如果不管动态过程中dq轴会互相干扰。处理好它的方法很经典在PI输出两端分别加上解耦补偿项公式表现为vd (Kp Ki/s)(id_ref - id) - ωLfiq ud vq (Kp Ki/s)(iq_ref - iq) ωLfid uq具体到模型PI的Kp、Ki给多少最省事工程上按典型I型系统整定。假设电流环带宽设计为1000rad/s滤波电感1mH那么电压每变化1V能带来约1000A/s的电流变化率用小信号模型能推出Kp Lf × 带宽 1e-3 × 1000 1Ki R × 带宽 0.01 × 1000 10。在此基础上现场微调基本上波形就很好看了。3.3.3 功率外环和电流参考值生成SMES的有功给定可以从两个角度出当用于平抑功率波动时外环接收功率参考Pref有功电流参考id_ref 2/3 × Pref / ud当用于维持电压稳定时则用直流电压闭环生成有功电流参考。无功电流iq_ref由Qref或交流电压偏差经PI输出这个根据需要而定。我在模型里做一个“工况选择”常量通过Switch模块切换恒功率模式和恒电压模式这样后期做对比实验特别方便。参考值全部限幅在±1.2倍额定值防止PI饱和导致线圈过流。3.3.4 PWM调制和脉冲分配经电流内环算出的vd、vq要做坐标反变换得到三相调制波ua、ub、uc送入PWM Generator。PWM Generator的参数设置载波频率我设10kHz载波幅值归一化1。从变换出来的调制波信号幅值如果超过1会发生过调制输出波形畸变必须在前面加Saturation模块限幅。输出是六路PWM脉冲连接到Universal Bridge的门极输入g。3.4 一个完整仿真实例的初始参数为了方便你直接复现我把整套参数列成表放在下面。这套参数对应的是一个100kW级SMES实验平台的缩比模型仿真0.4秒能完整看到充电、待机、放电全过程。参数项数值备注三相电网线电压400V50Hz线路阻抗R/L0.01Ω / 0.5mH模拟线路及变压器漏抗滤波电感Lf1mH交流侧滤波与升压超导线圈电感L0.015H根据储能需求反推超导线圈电阻R1e-6Ω保留数值防止矩阵奇异线圈额定电流3000A对应67.5kJ磁能载波频率10kHzPWM频率电流内环Kp/Ki1 / 10按带宽1000rad/s整定仿真时间0.4s前0.1s预充电3.5 分段工况仿真的过程记录我实际跑一次完整的0.4秒仿真设置三段工况。0到0.08秒是系统启动期断路器断开PWM封锁电网直接给一个小电流给支撑回路充点电。0.08秒闭合断路器启动预励磁线圈电流从0快速上升到0.2秒时稳定在额定3000A附近此时存储磁能约67.5kJ。0.25秒时切换功率给定为放电模式电网有功指令突然拉到-100kW下标说明负号代表向电网输送功率观察直流电流下降和网侧功率响应波形。从Scope波形上看线圈电流在预励磁阶段呈线性上升段——因为电感两端电压恒定di/dt U/L一个350V左右的直流电压就能让电流以约23kA/s的速度上升从0到3000A大概0.13秒。放电阶段电流指数下降网侧有功几乎在一个工频周期内就跟踪到-100kW附近超调不超过8%调节时间约30毫秒。这个数据放在仿真报告里非常能说明SMES的快速响应优势。4. 仿真中必须注意的操作细节与经验方法4.1 启动那一刻的初始化问题电力电子仿真最常见的崩溃之一就是启动瞬间电流冲击过大导致Simulink报错或波形发散。根源在于初始时刻线圈电流为零但PWM一开就强行给电感加电压电感电流不能突变容易出现数值振荡。我的处理方式是分三步启动PWM使能延迟、断路器延迟、功率给定延迟。具体讲就是PWM Generator内部有个Enable端口先保持0信号到0.08秒断路器在0.08秒才闭合有功功率参考在0.2秒后才从0渐变到目标值。这样做有两个好处一是物理上符合实际启动流程二是数值上给求解器留出了充分的过渡时间让它把步长策略稳定下来。4.2 PI参数整定不要纸上谈兵公式算出来的PI参数只能作为初值必须结合仿真波形微调。我见过很多人直接把课本上算出来的值填进去结果电流波形发散。问题是物理模型里存在PWM延时、采样延时、死区效应控制对象的高频特性比一阶惯性环节复杂得多这些因素在理想模型里是没法全部计入的。一个实用的微调技巧先把Kp调大直到电流波形出现高频抖动再回退20%固定Kp后微调Ki直到稳态误差归零但不引入明显超调。这个办法不花哨但每一次仿真迭代至少能让你明白“哪个参数在起作用”而不是盲目试错。4.3 电源内阻抗和采样延时不能随意省略有些入门教程为了简单把电网当成理想电压源逆变器的测量信号当成离散时刻瞬时采样。这么做在稳态分析里看起来问题不大但一旦要做动态响应分析就全露馅了——理想电源无法体现电网阻抗对功率交换的制约实时采样忽略计算延时会让控制器超前于实际系统相位裕度不足。在SMES这种对响应速度要求极高的场景里电网阻抗等效和采样保持环节一定要体现在模型里。我习惯在电压电流测量后端加一个Zero-Order Hold模块采样频率设20kHz再进PI和控制器。这样仿真结果和真实装置之间的差距会小得多。4.4 模型的模块化封装是后期调试的生命线一个几百个模块平铺在画布上的Simulink模型跑发散的时候你根本不知道是哪个环节出了问题。所以从一开始就要按子系统封装电力电子主电路、PLL与测量、电流内环、功率外环、PWM调制各自封装成独立的Subsystem内部信号通过Goto/From或Logging标签表模型跑完直接通过Dashboard Scope观察各层级的变量。封装完了还有一桩好处你可以对单个子系统单独做开环测试。比如先把电流内环断开直接给vd/vq一个固定的值看主电路开环响应是否符合理论预期再接通内环看闭环跟踪。这样每一级都验证过最后闭环出问题的概率会大幅降低。5. 常见问题与排查技巧实录5.1 仿真发散仿真中途报“Input must be finite”或者波形跑到1e10最常见的元凶有三个代数环没有打破、PI输出不饱和导致超调进入负阻区、PWM调制波幅值超过载波。逐个查看闭环里有没有直接测量信号又直接参与反馈的同一步计算有的话在路径上加一个Memory模块或Transfer Function小延迟给每个PI输出都加上限幅检查坐标反变换后的调制波幅值超过1就缩小PI输出或者调整调制方式。5.2 启动瞬间电流尖峰异常大如果预励磁阶段电流不是平滑上升而是瞬间冲上去出现尖峰多半是断路器闭合时刻正好遇到某相电压过零点或者变压器漏抗太小导致冲击电流。解决办法断路器闭合时间点避开相电压零点网格同步信号用Step控制一个“软启动”斜坡让PWM占空比从0慢慢增加。这样线圈电流会平滑爬升尖峰基本消除。5.3 dq轴电流互相拖拽、解耦失败明明id参考变了iq也跟着抖这是dq解耦没做好。查两个地方第一坐标变换的相位角度是不是用的PLL出来的角度很多初学者直接用一个固定频率斜坡代替电网频率偏移时自然解耦失败第二解耦补偿项−ωLfiq、ωLfid是否真的加到了PI输出之后。如果这两个都没问题再检查id/iq的定义方向是不是和主电路电压电流方向一致别把电流方向标反。5.4 仿真速度特别慢变步长求解器步长被压到1e-8量级仿0.4秒要跑好几个小时大概率是系统存在高频谐振常见原因是线圈和分布电容形成了谐振回路。没有实际电容的话可以限制PWM载波频率降低开关次数或者把模型改成平均值模型——用受控电压源代替IGBT桥臂开关频率的谐波被忽略只保留基波动态特性。平均值模型虽然看不到开关纹波但控制策略验证足够用仿真速度能提升一个数量级。5.5 模型普遍参数查错方法如果波形规律对但幅值全偏优先检查标幺化和方向。电网侧有功计算公式P 1.5 × ud × id有些教程喜欢用峰值标幺有些用有效值标幺混搭起来结果全部偏30%。我踩过坑后把每个测量量前面都标注清楚是“peak”还是“rms”并在模型描述里写下来传给别人的时候能省很多解释的功夫。6. 写在最后关于SMES仿真的一些个人体会做SMES仿真这几年我最深的感触是这个东西看起来只比普通的三相PWM整流器多了一个电感和一个低温罐但真正跑起来你会发现由于直流侧没有电容“兜底”整个系统的惯性全部来自那个大电感控制器必须格外小心才能不让电流越限。很多时候跑出来的波形不正常问题不在超导线圈的模型复杂度而恰恰出在最基础的控制环路稳定性上。如果让我给后来者一条建议我会说第一次做不要急着上完整系统先跑通“电网三相桥纯电阻负载”的整流模型确认PWM、PLL、坐标变换这一套技术底座没问题之后再把电阻换成超导线圈加上储能控制逻辑。分步推进看着多花时间实际上比整体调试快得多。另外Simulink模型跑通了之后建议你有意识地把所有参数改成可配置的MATLAB脚本模式用“data dictionary”或结构体统一管理。你的模型本身是一个技术验证工具但只要参数变成可以批量扫描的形式这个模型就能变成一个研究平台可以做PI参数寻优、做工况对比、做容量配置讨论价值完全不同。最后再分享一个小技巧给线圈电流设计一个可视化仪表界面在仿真过程中实时显示磁能值W和功率值P用Dashboard库里的Gauge模块就能实现。看着磁能数字随着充放电过程跳动比盯着一堆Scope波形直观得多汇报演示的时候效果也出奇的好。希望这些经验能帮你少走点弯路。