我在做电力电子控制器开发的时候吃过一次哑巴亏:样机在实验室里空载跑得好好的,一上真实功率平台就触发过流保护。排查到最后,问题出在电流采样毛刺上,而这类问题在离线仿真里几乎复现不出来。后来我改用实时仿真设备做 HIL 联调,很多边缘工况在合闸之前就被兜住了。
也是从那时候开始,我对"实时仿真软件到底怎么选"这件事特别上心。这几年被问得最多的名字就是 StarSim(远宽能源 Modelith 推出的电力电子实时仿真平台),但大家真正纠结的不是"这个软件好不好",而是"它和 RT-LAB、RTDS、Typhoon HIL 这些方案差在哪,我的项目到底该上哪一套"。这篇文章就围绕电力电子实时仿真软件的核心逻辑,把 StarSim 的技术路线、适用边界和选型判断方法掰开揉碎讲清楚。
这篇内容适合正在做电机驱动、逆变器、储能变流器、微电网控制器,或者准备搭建 HIL 测试平台的工程师和项目负责人。哪怕你现在完全没接触过实时仿真,只要有一点点 Simulink 或电力电子基础,读完之后也能建立起一套自己的判断框架。
1. 离线仿真跑得再好,也绕不开"实时"这道坎
1.1 功率级测试为什么越来越不受待见
传统电力电子产品开发流程是:离线仿真验证控制算法,然后写 DSP/FPGA 代码,最后上功率级样机测试。问题出在最后一步。当你的功率等级从几千瓦变成几百千瓦,测试的成本、场地、人员和风险都不是线性增长,而是指数级增长。一台 MW 级变流器的试验平台,光是大功率电源、负载、水冷、安全隔离这些配套,投入就非常可观。更重要的是,很多故障工况没法在真实平台上放心做,三相短路、直流母线对地、传感器断线,随便一个操作失误,代价就是几万块的功率模块。
HIL 测试把"功率级测试"拆成了"真实控制器加虚拟功率级"。被测对象是你的真实 DSP/FPGA 控制器,主功率电路、电机、电网这些高成本高风险部件全部用实时仿真模型替代。控制器发出的 PWM 脉冲经过数字 IO 进入仿真器,仿真器计算功率电路的响应,再把电流电压通过模拟量 IO 送回控制器的 ADC。对控制器来说,它看到的仍然是一个真实的系统,但操作者却可以在软件里反复制造各种危险工况。
1.2 "实时"二字的硬约束:步长内必须算完
很多人以为实时仿真就是"算得特别快",这个理解不准确。离线仿真追求平均吞吐量,一秒钟算不完,多算两秒也无所谓;实时仿真追求的是最坏情况下的确定性,给定步长 Ts,仿真器必须在每一个 Ts 时间内把这一拍的全部计算做完,一次都不能超时。超时在实时系统里叫 overrun,一旦发生,波形输出就会出现毛刺,控制器的时序观感就会异常,联调时非常隐蔽。
我经常用一个食堂打饭的类比来解释这件事。离线仿真像单独给你开小灶,厨师手艺好就行,不赶时间;实时仿真像下课铃一响,10 分钟内必须让所有学生吃上饭,这时候厨房的硬约束不是"平均上菜速度快",而是"最坏情况下 10 分钟也得出餐"。实时仿真器里那些夸张的多核、并行流水线、FPGA 资源,本质都是在为最坏情况兜底。
1.3 电力电子为什么是实时仿真里最挑食的用户
同样是实时仿真,电力电子对步长的要求比电网电磁暂态严苛得多。原因很简单:IGBT、SiC MOSFET 的开关频率动辄几千赫兹到几十千赫兹,一个开关周期只有几十微秒。要捕捉 PWM 占空比变化、死区效应、电流纹波,一个开关周期至少要被拆成几十甚至上百个仿真步。
给一个具体数字感受一下。20kHz 的载波,开关周期 50μs,如果用 10μs 的步长,一个开关周期只能分 5 拍,PWM 边沿的量化误差已经大到会影响控制器的占空比分辨率;把步长压到 1μs,一个周期有 50 拍,500ns 步长则是 100 拍。这就是为什么电力电子实时仿真软件普遍要提供百纳秒到微秒级的小步长求解能力,而这一步,恰恰是纯 CPU 架构的大步长实时仿真器很难做好的地方。
2. StarSim 的看家本领:FPGA 小步长求解到底解决了什么
2.1 CPU 和 FPGA 的分工逻辑
StarSim 的架构核心,是把仿真任务按时间尺度拆成两部分。CPU 负责慢动态部分,比如电机机械运动、热模型、电网潮流和复杂的控制逻辑,这部分步长可以放到 10μs 到 1ms 量级;FPGA 负责快动态部分,也就是含开关器件的功率电路,步长做到 100ns 到 1μs 量级。
为什么 FPGA 能跑这么小的步长?因为它的本质是硬件并行。CPU 是一个厨师按顺序做菜,FPGA 是一整条多条流水线同时开工的中央厨房,开关管的导通与关断、各支路的电压电流关系,在硬件层面同时求解。代价是灵活性不如 CPU,模型改动一次要重新综合布线。所以 StarSim 的混合架构,本质上是在并行速度和灵活适配之间做了一次资源分工。
在很多老牌实时仿真器里,FPGA 电路模板是半开放的,用户要修改底层模型就得懂 Verilog/VHDL。而 StarSim 的切入点就在这里,它把 FPGA 从专家专用拉到了工程师可用,这一步对大多数电力电子团队来说是决定性的。
2.2 从 Simulink 模型到 FPGA 求解器:中间发生了什么
对绝大多数电力电子工程师来说,最关心的不是 FPGA 内部怎么布线,而是"我能不能继续用 Simulink 搭模型"。StarSim 的工作流确实是这样设计的:在 Simulink 环境里用 StarSim 提供的功率器件、电源、电机、测量等库搭好主电路,配置好数字 IO 和模拟量 IO 与外部控制器的映射,再通过上位机编译,把电路信息自动映射到 FPGA 的小步长求解器上。
这里面有几个细节值得注意。第一,模型里开关管的导通和关断状态由外部控制器输入的 PWM 信号驱动,也就是说仿真器 IO 口收到的电平变化,会在一拍以内反映到电路拓扑中。第二,模型并不是把 Simulink 每个模块原样翻译成 Verilog,而是先生成电路的数学描述,再交给 FPGA 按小步长算法求解。用户不需要懂硬件描述语言,但需要理解 IO 配置和步长设置对求解精度的影响。
对团队而言,这带来的最大价值是:一个熟悉 Simulink 的电力电子工程师,经过三天到一周的培训,基本就能独立搭建一个用于 HIL 测试的模型。相比传统 FPGA 实时仿真动辄要求专人维护底层模型,这个门槛的降低是非常实际的。
2.3 步长越小越好吗:先搞清楚你的测试目标
小步长不是免费午餐。步长越小,对 FPGA 内部资源的消耗越大,同样规模模型能跑到 100ns 还是只能跑到 1μs,取决于硬件型号和模型复杂度。选型时不要一味追求最小步长,而是要倒推:你在测试中真正需要看到的物理现象是什么。
如果把控制器 HIL 作为主要目标,比如验证 DSP 里的 SVPWM 生成、死区补偿、过流保护逻辑、故障复位时序,那么 1μs 或 500ns 的步长通常已经足够。如果你想观察 SiC 器件高频工况下的电流纹波细节,或者控制器在做上百 kHz 的高频控制,才需要考虑 100ns 级别。如果目标是器件级的开关瞬态、损耗分布、温度场,那就超出了电路级实时仿真的范畴,应该回到 Saber、SPICE 这类器件级工具去。搞清楚"电路级"和"器件级"的边界,能帮你在选型阶段少花很多冤枉钱。
3. 同样叫实时仿真,三条技术路线各有各的脾气
3.1 纯 CPU 大系统路线:RTDS 和 RT-LAB 的强项与软肋
提到实时仿真,业内第一个想到的往往是 RTDS,它在电力系统电磁暂态领域的地位不用多说,看家本领是大规模电网电磁暂态计算,配套的继电保护、变电站自动化测试方案非常成熟。RTDS 以大步长算大系统,同时也提供小步长模块用于 VSC 和电力电子建模,只是配置和维护成本不低,对于以功率变换器为核心的团队来说,有点杀鸡用牛刀的意味。
OPAL-RT 的 RT-LAB 走的是 CPU 加可选 FPGA 的混合路线,CPU 负责大型电网和机电动态,FPGA 上的 eHS 模块负责电力电子小步长。这套方案覆盖面广,资料和案例生态也比较成熟,很多高校和企业都在用。但它的软肋是整体方案复杂度、学习和维护成本都比较高,CPU 和 FPGA 两条线都要维护,对团队的技术厚度有一定要求。
3.2 一体化图形化路线:Typhoon HIL 与 RT Box
Typhoon HIL 这几年在功率电子圈子里很火,它的做法是把软件硬件做成一体化设备,图形化建模、在线调参、自动生成测试报告,上手特别快,步长能到 0.5μs 到 1μs 级别,非常适合中低压电力电子、储能、微电网控制器的快速验证。Plexim 的 RT Box 则和 PLECS 深度绑定,如果你的团队主力建模工具是 PLECS,迁移到 RT Box 会非常顺滑,而且在器件级建模和热分析方面有优势。
这两家的共同点是低门槛,但也要注意,一体化方案通常对大规模电网模型的支持广度不如 RTDS 和 RT-LAB,如果你未来要研究的对象是几十节点的输配电网,还是得留个心眼。
3.3 StarSim 的定位:以电力电子为绝对中心
StarSim 的定位非常聚焦:以电力电子变换器为核心的小步长实时仿真,同时保留 CPU 端用于电机、电网等慢动态扩展。它的典型应用场景是变换器 HIL、电机驱动 HIL、微电网和储能系统测试。相比国外竞品,StarSim 在 Simulink 到 FPGA 自动映射这条路径上做得比较彻底,并且本地技术支持响应及时,中文文档和现场支持是很多项目能顺利交付的现实因素。
我建议把选型问题放到一张表里看,而不是听任何一家的单方面宣传。下表是我在项目实践中对几个主要方案的典型印象,注意步长区间按常见配置归纳,不同硬件型号和软件版本会有差异:
| 方案 | 核心技术路线 | 典型步长 | 上手门槛 | 最适合的场景 |
|---|---|---|---|---|
| RTDS | CPU 为主,大规模电网电磁暂态 | 大步长为主,小步长模块可选 | 高 | 电网保护、变电站、大规模系统 |
| RT-LAB | CPU+FPGA(eHS)混合 | CPU 大步长,FPGA 亚微秒到 2μs | 中高 | 大型动态系统+电力电子混合 |
| Typhoon HIL | 专用 CPU+FPGA 一体化 | 0.5~1μs | 低 | 功率电子、储能、微电网 |
| RT Box | FPGA,PLECS 深度集成 | 亚微秒级 | 中 | PLECS 用户、快速原型 |
| StarSim | FPGA 小步长+CPU 混合 | 100ns~2μs 典型 | 中 | 变换器 HIL、电机驱动、微电网 |
选型不是比谁参数表更漂亮,而是比谁更贴合你接下来三五年的测试闭环。
4. 选型不是选参数表,先回答这五个问题再谈产品
4.1 你到底要测什么:控制器 HIL 还是系统级并网研究
第一个问题决定你的主战场。如果你的被测对象是真实的控制器或保护装置,目标是验证它在各种边界工况下的行为,那你的核心需求是开关级功率电路模型、灵活 IO 和故障注入,这种情况下小步长 FPGA 方案就是刚需,StarSim 这类产品落在射程内。如果目标是研究多机系统的并网稳定性、保护配合、调度策略,重点反而是大规模网络模型的计算能力,这时候纯 CPU 大系统方案更合适。
很多团队一上来就问我"哪个软件最强大",我通常会反问一句:你买这套设备的钱,是要解决"控制器代码里到底还有没有 bug",还是解决"这个微电网拓扑合环的时候会不会震荡"?这两个问题需要的工具,完全不是一个物种。
4.2 步长需求:100ns 级和 10μs 级分别意味着什么
步长不是参数表里的漂亮数字,它决定了你能多大程度信任测试结果。对 PWM 整流器来说,10μs 步长下你在示波器里看到的电流纹波可能已经被抹平,而死区效应、电流过零畸变这些控制算法最敏感的细节,恰恰藏在这些被抹平的纹波里。
给一个工程经验:如果你的控制器电流环带宽做到 1kHz 以上,建议仿真步长至少比控制器采样周期小一个数量级。如果你的控制器是 10kHz 采样,仿真步长最好在 1μs 或更小,否则仿真器反馈给控制器的电压电流看起来就像一个大延迟的传感器,会掩盖真实的系统稳定性边界。这也是为什么电力电子 HIL 对步长的要求远比一般实时仿真苛刻的原因。
4.3 模型生态:你的团队平时在哪里搭模型
模型迁移成本往往是整个选型里最容易被低估的一项。一个团队如果过去三年所有的电机模型、控制算法都在 Simulink 里沉淀,那么 Simulink 原生支持就是决定性的优势,你不需要重写任何模型。StarSim 的设计思路恰好符合这类团队的习惯,而一个主打 PLECS 生态的团队则应该优先考虑 RT Box。
如果团队已经是 Typhoon 的深度用户,又或者你完全不想依赖 Simulink 授权,也可以考虑一体化平台。但一定要算一笔账:换工具意味着把历史的模型资产重新评估一遍,这个成本往往比软件本身贵。
4.4 预算与团队技能:FPGA 知识到底是不是必须项
预算这件事不能只看软件授权费。真实的成本包括:仿真器硬件、IO 板卡、上位机软件、培训、模型迁移、未来扩展的板卡,以及团队里有人能长期维护这套系统的人力。另一个隐藏成本是 FPGA 维护。用传统方案,如果你要修改功率电路拓扑,而厂商不提供自动映射能力,你就需要一个懂 FPGA 的人去改底层工程;而 StarSim 这类模型驱动方案把这个技能要求降到了接近零。
我见过一些团队买了一套高配实时仿真器,结果半年过去了还在等外部的 FPGA 专家,这种沉没成本才是最贵的。如果你的团队已经有资深 FPGA 工程师,可选择面会宽很多;如果没有,请务必把"模型到硬件自动映射"列为硬性需求。
4.5 技术支持与售后响应:项目交付时才见真章
实时仿真设备不是一个插上电源就能用的工具,尤其是在第一次搭建 HIL 平台时,IO 通道接错、模型数值不稳、步长不达标,哪个问题都有可能卡住整个项目进度。这时候厂商技术支持的质量就非常关键。
我个人在实际项目里的体会是:中文的一线技术支持,能在你加班调试的时候打个电话或拉个群就把问题说清楚,这种及时性是很多海外厂商做不到的。StarSim 背后的技术支持响应速度,在我的项目里是实打实的加分项。并不是说海外产品不好,而是你要评估自己的交付节奏是否等得起跨时区的邮件往返。
5. 从模型到 HIL 联调,我实际踩过的几个坑
5.1 死区时间在 HIL 里不是"默认存在"的
很多初次做 HIL 的人会犯一个错误:在 Simulink 里用一个理想的互补 PWM 信号驱动桥臂,死区时间全部交给假想的控制系统,然后接上真实控制器一跑,发现波形和离线仿真对不上。
原因在于,真实控制器的 PWM 模块输出的互补信号是带死区的,而 HIL 模型里的开关管究竟按什么时序导通,完全取决于你送给它的数字信号。你必须在模型里明确死区对桥臂状态的影响,或者在控制器侧保持真实的死区配置,否则 HIL 测试等于没有测到死区效应。我的习惯是:把控制器 PWM 输出和 HIL 采集到的开关驱动信号用示波器同时抓下来对比一遍,先确认时序一致,再谈闭环。
5.2 模型搬运过来就报错或步长不达标
离线模型搬到实时仿真器,最容易踩的坑是"把离线建模习惯原样搬过来"。离线仿真里为了收敛经常加一堆杂散电感、杂散电阻、大阻尼并联支路,这些在实时求解器里要么占用大量 FPGA 资源,要么在小步长下引发数值振荡。
我的做法是先做"净化模型":删除无关紧要的杂散参数,保留对系统动态有本质影响的寄生参数;再用一个最简单的开环工况对比离线与实时的稳态波形,逐项排查差异。实时仿真的建模原则是越简洁越好,而不是越精细越好,这一点和离线仿真正好相反。
5.3 模拟量 IO 的延迟和标定比想象中更影响结果
HIL 系统里,仿真器算出的电流电压最终要经过 DAC、模拟量调理电路、线缆、控制器 ADC 才能进入控制算法。这一整条链路是有延迟和增益误差的。如果只盯着软件界面的数值而忽略物理通道的标定,闭环测试的稳定性边界就会偏离真实情况。
我第一次做 HIL 联调时,电流闭环一直有低频振荡,查了很久,最后发现是某一相电流反馈通道的增益标定差了 1.5%,加上信号延迟,刚好把控制系统的相位裕度吃掉了。从那以后,我养成了对所有模拟量通道做逐点标定的习惯,并且把每一路通道的延迟记录在表格里。这个习惯在后来所有 HIL 项目里都替我省了大事。
5.4 一套最小验证流程,适合第一次搭 HIL 的人
如果你第一次搭建 HIL 平台,别急着上复杂模型。我建议按下面的顺序走,每一步都有明确的通过标准:
- 开环模型验证:在 Simulink 里搭一个简单的单相逆变器带阻性负载,离线仿真得到基准波形,再在实时仿真器里跑同样的模型,对比输出电压和电流,误差应在测量精度范围内。
- IO 通道验证:把控制器接上,开环给固定占空比,检查 HIL 采集到的 PWM 电平、频率、占空比和示波器读数一致。
- 小信号闭环验证:先跑一个低带宽的电流环或电压环,观察是否稳定,和离线仿真的动态响应趋势是否一致。
- 故障注入验证:加入短路、电网跌落、传感器断线等故障场景,确认控制器保护动作时序符合设计预期。
这套流程跑通之后,再逐步上电机模型、微电网模型、自动化测试脚本,风险会小很多。我自己后面几个项目都是按这个路子走的,再也没有出现过第一天联调就烧功率模块这种事。