
三相电流型逆变电路在《电力电子技术》课程里地位很特殊它和电压型逆变器长得相似但直流侧多出的大电感和交流侧的换相电容让它的建模、驱动和波形分析跟电压型完全不是一回事。微课 41 的仿真实验目标就是把这种电路从“能看懂原理图”推进到“能在仿真软件里搭出来、跑起来并且说清楚波形为什么长这样”。这篇博客按照一次完整仿真实验的流程来写先给核心能力速览再做原理回顾和工具选型然后分别给出 MATLAB/Simulink 和 PSIM 两套建模路线接着是参数设置、批量扫描脚本、波形验证判据最后是常见报错排查表和实验报告写作建议。无论你是交课程设计的本科生还是想给微课配一套可复现仿真任务的老师都可以直接照这套流程走一遍。整个实验在普通 PC 上就能完成不依赖显卡关键门槛只在于仿真软件许可证和模型是否收敛。1. 核心能力速览项目说明仿真对象三相电流型逆变电路Current Source InverterCSI配套内容电力电子技术微课第 41 讲三相电流型逆变电路仿真实验核心知识点120° 导电型换相、直流侧大电感、交流侧换相电容、换相重叠与电压波形形成推荐仿真工具MATLAB/Simulink Simscape Electrical、PSIM、PLECS硬件门槛普通 x86 PC 即可CPU 多核内存建议 8GB 以上显卡要求不需要独立显卡无需 CUDA操作系统Windows 为主MATLAB/PSIM 官方支持 WindowsLinux 可使用 MATLAB启动方式打开模型文件直接运行无 WebUI、无一键启动包批量任务支持用 MATLAB 脚本循环改参数批量扫描接口 API课程实验阶段无 HTTP API批量任务靠脚本循环实现主要输出三相输出电流波形、负载电压波形、直流侧电流纹波、电容电压、FFT 分析适合读者高校电力电子课程学生、微课自学者、逆变器入门工程师从这张表可以快速判断这不是一个高门槛实验难的不是硬件而是对电路工作原理的理解以及仿真模型里的参数匹配。下面先把原理和仿真难点讲清楚。2. 三相电流型逆变电路原理回顾与仿真难点电流型逆变器和电压型逆变器最根本的区别在直流侧。电压型逆变器直流侧是电压源通常并联大电容稳压电流型逆变器直流侧是电流源通常串联大电感维持直流电流近似恒定。因为电流不能突变逆变桥换流时不能像电压型那样直接关断再开通必须依靠交流侧换相电容或者器件自身的关断能力来完成换相。这是整个仿真实验里最容易出错的地方。三相桥式电流型逆变器常用 120° 导电型。六个开关管中任意时刻只有两个导通一个在上桥臂、一个在下桥臂且分属不同相。每个开关管导通 120° 电角度每隔 60° 切换一组开关组合。理想情况下输出线电流是正负各 120°、中间零电流 60° 的矩形波三相之间互差 120° 电角度。由于直流侧电感大直流电流近似恒定交流侧输出的电流幅值就接近直流侧电流值 Idc。负载两端并联的换相电容对矩形电流滤波使负载电压接近正弦同时在换相期间为电流转移提供通路。仿真难点主要有三个第一个是驱动脉冲生成120° 导电型每个开关导通区间必须严格按 60° 节拍切换相位错一拍波形就全乱第二个是换相电容取值电容太小换相无法完成电容太大电压波形谐波增加、可能振荡第三个是求解器设置电路里有大电感和小电容时间常数差异大用固定步长小步长容易算得慢用过大步长又可能不收敛。理解了这三个点后面搭模型和调参数就有方向。3. 仿真工具选型与环境准备三相电流型逆变电路仿真实验最常见的工具是 MATLAB/Simulink 和 PSIM。MATLAB/Simulink 的优势是建模灵活、波形分析方便能配合脚本做参数批量扫描PSIM 的优势是电力电子器件建模直接、仿真速度快、教学示例多适合快速验证换相逻辑。PLECS 也有电流型逆变器的参考案例特点是热建模和效率分析强适合作为进阶对比。如果学校或课题组没有这些软件的授权可以考虑 OpenModelica 这类开源建模工具但课程实验仍优先建议使用导师指定或学校统一购买的工具。环境准备建议按下面清单检查一遍避免搭好模型才发现缺工具箱检查项要求建议操作系统Windows 10/11 64 位MATLAB 也支持 LinuxMATLAB 版本安装 Simscape Electrical原 SimPowerSystems工具箱版本以授权为准建议 R2019b 之后PSIM 版本建议 9.0 以上新版界面和元件库更完整内存8GB 起步16GB 更稳妥模型不大时 8GB 足够CPU普通多核即可仿真主要吃单核求解能力磁盘空间软件安装和项目缓存预留 10GB 左右显卡不需要独立显卡全程 CPU 仿真需要注意Simulink 模型在打开和运行前会先编译第一次编译耗时较长不要误以为卡死。PSIM 的模型文件比较轻打开和运行都很快但波形分析模块 SIMVIEW 要单独熟悉。4. Simulink 仿真模型搭建步骤4.1 模型结构总体设计Simulink 里搭三相电流型逆变器模型可以按四个部分组织直流侧电流源、三相桥臂、交流侧换相电容与负载、驱动脉冲与测量显示。建议先新建一个模型命名采用英文例如three_phase_csi.slx所有工作空间变量也统一命名方便后面脚本批量控制。4.2 直流侧电流源设计直流侧有两种搭法直接用理想直流电流源模块或者用直流电压源串联大电感近似电流源。教学实验建议直接用直流电流源把参数 Idc 设置成一个工作空间变量比如初值 10 A。这样做的好处是直流侧电流恒定重点观察交流侧波形如果课程要求分析直流侧电流纹波再改用电压源加大电感的方式。如果采用电压源加电感方案电感取值要足够大一般取几十毫亨到几百毫亨使直流电流纹波小到可忽略。电感初始电流建议设置为 0让仿真从零状态开始避免初始时刻出现电流跳变。4.3 三相桥臂与换相电容三相桥臂可以用六个开关器件分别搭建也可以用通用桥模块。教学实验建议用六个独立开关搭建方便在每个开关上单独加门极脉冲也更容易对照导通区间表检查脉冲逻辑。器件类型可以选择理想 IGBT 或理想晶闸管理想开关模型仿真速度最快适合先验证换相逻辑。交流侧每组换相电容并联在桥臂出口和负载之间电容值先用一个工作空间变量 C_comm 表示。负载采用三相 RL 负载电阻和电感也设为工作空间变量 R_load、L_load。测量环节用电流表和电压表模块或者直接引出信号线到 To Workspace、Scope。建议把 A、B、C 三相电流和负载线电压都记录下来后面脚本绘图和 FFT 分析都要用。4.4 驱动脉冲接入门极脉冲由一个 MATLAB Function 模块生成输入是当前仿真时间对应的电角度 theta输出是六个开关的 g 信号。theta 可以用仿真时间 time 乘输出角频率再取模得到例如 50 Hz 输出频率下theta 360 * mod(time * 50, 1)单位是度。下一节会给出完整的函数代码和导通区间表。4.5 模型检查与仿真参数模型搭完后先做一次 Update Diagram 检查连线是否完整再设置求解器。建议先使用可变步长 ode23tb最大步长设置成 1e-5 到 1e-4 秒量级仿真时长 0.1 到 0.3 秒步长上限取输出周期的 1/100 左右也就是 50 Hz 时最大步长 2e-4 秒以内避免开关切换瞬间波形失真。如果模型能跑通但波形毛刺明显再把最大步长调小。5. PSIM 仿真模型搭建步骤PSIM 是电力电子教学里很顺手的工具三相电流型逆变器建模思路和 Simulink 一致但元件放置更直观。先在元件库中找到直流电流源设置 Idc再放置六个开关器件按三相全桥结构连接开关的门极控制端分别接到 Pulse 控制模块。交流侧放六个电容负载用三相 RLC 支路最后加电流探针和电压探针。PSIM 的 Pulse 模块可以按 120° 导电型设置每路脉冲的延迟时间、脉宽和频率。六个脉冲之间按 60° 电角度依次错开对应 50 Hz 输出频率时间间隔约 3.33 ms脉冲宽度约 6.67 ms。这里最容易出错的是脉冲相位顺序建议先对照导通区间表逐路核对再启动仿真。PSIM 仿真速度通常比 Simulink 快适合快速做多组参数对比。跑完后在 SIMVIEW 里看波形可以直接测量矩形波宽度、相位差和谐波含量。如果课程实验只要求验证换相逻辑和输出波形PSIM 路线的工作量比 Simulink 小很多如果还要做参数批量扫描和自动化分析Simulink 加 MATLAB 脚本更合适。6. 驱动脉冲生成与参数设置先给出 120° 导电型的导通区间表这张表也是后面排查波形问题的依据。开关管编号采用 T1 A 相上桥臂T2 C 相下桥臂T3 B 相上桥臂T4 A 相下桥臂T5 C 相上桥臂T6 B 相下桥臂。任意区间只有两个开关导通一上一下且分属不同相避免直通短路和负载悬空。区间电角度导通开关A 相输出电流B 相输出电流C 相输出电流0° 到 60°T6、T1Idc-Idc060° 到 120°T1、T2Idc0-Idc120° 到 180°T2、T30Idc-Idc180° 到 240°T3、T4-IdcIdc0240° 到 300°T4、T5-Idc0Idc300° 到 360°T5、T60-IdcIdc按这张表写 Simulink 的 MATLAB Function 模块代码如下function [g1, g2, g3, g4, g5, g6] csi_gate_120(theta) % 120 度导电型三相电流型逆变器驱动脉冲生成示意 % theta: 电角度单位度范围 0~360 % 开关管编号: T1A上, T2C下, T3B上, T4A下, T5C上, T6B下 % 输出 g1~g6 对应 T1~T6 的门极驱动信号1 表示开通0 表示关断 g1 0; g2 0; g3 0; g4 0; g5 0; g6 0; if (theta 0) (theta 60) g1 1; g6 1; elseif (theta 60) (theta 120) g1 1; g2 1; elseif (theta 120) (theta 180) g2 1; g3 1; elseif (theta 180) (theta 240) g3 1; g4 1; elseif (theta 240) (theta 300) g4 1; g5 1; else g5 1; g6 1; end end这里给出的一组参数是课程实验起步参考值实际取值要根据模型收敛情况调整直流侧电流 Idc 取 10 到 20 A换相电容 C_comm 取 1 到 100 微法负载电阻 R_load 取 10 到 50 欧姆负载电感 L_load 取 1 到 10 毫亨输出频率 50 Hz仿真时长 0.1 到 0.3 秒。建议先把 Idc 和负载固定只调换相电容观察电容对换相重叠角的影响。7. 仿真运行与波形验证7.1 仿真运行步骤在 Simulink 中先确认所有工作空间变量已经赋值最简单的方式是写一个初始化脚本把 Idc、C_comm、R_load、L_load 等变量用 assignin 写进基准工作空间。然后点击 Run 按钮运行或者用下面这段脚本完成运行和采样% 三相电流型逆变电路仿真运行脚本模板 % 使用时需要按自己的模型名和信号名修改 modelName three_phase_csi; open_system(modelName); % 直流侧电流(A) Idc 10; % 输出频率(Hz) f_out 50; % 换相电容(F) C_comm 10e-6; % 负载参数 R_load 20; L_load 5e-3; % 仿真时长(s) simTime 0.2; assignin(base, Idc, Idc); assignin(base, C_comm, C_comm); assignin(base, R_load, R_load); assignin(base, L_load, L_load); % 运行仿真 simOut sim(modelName, StopTime, num2str(simTime)); % 读取记录信号 % 假设 A 相电流通过 To Workspace 记录为 i_a t simOut.tout; i_a simOut.logsout.getElement(i_a).Values.Data; i_b simOut.logsout.getElement(i_b).Values.Data; i_c simOut.logsout.getElement(i_c).Values.Data; figure; plot(t, i_a, t, i_b, t, i_c); grid on; xlabel(时间 (s)); ylabel(电流 (A)); legend(A 相, B 相, C 相, Location, best); title(三相电流型逆变器输出电流波形);7.2 需要观察的关键波形运行结束后重点看四类波形三相输出电流、负载电压、直流侧电流、换相电容电压。观察之前先把仿真时间轴放大到 1 到 2 个输出周期50 Hz 下就是 20 到 40 毫秒。观察点理论预期判断要点A 相输出电流120° 矩形波幅值接近 Idc正负各 120°零电流 60°每相半波宽度约 6.67 ms三相电流相位关系三相波形互差 120° 电角度相邻相起始点间隔约 6.67 ms直流侧电流近似恒定在 Idc仅有换相纹波纹波峰值远小于基波幅值负载线电压接近正弦换相点附近有小缺口过零点和幅值稳定无持续振荡换相电容电压换相期间发生充放电转移尖峰不持续发散振荡衰减7.3 波形判定标准判断仿真是否成功先看三相输出电流是不是 120° 矩形波。如果波形变成了 180° 或者出现了上下桥臂同时导通的直通电流说明导通区间表或脉冲相位错了。再看三相电流是否严格互差 120°起始点错位通常是把脉冲顺序搞混。最后看负载电压是否接近正弦且不振荡。如果电压波形高频振荡不衰减优先怀疑换相电容偏大、负载阻尼不足或者最大步长不够小。如果只验证理想波形不想依赖仿真软件也可以用一段 Python 脚本画出 120° 导电型的理论输出电流作为对照import numpy as np import matplotlib.pyplot as plt # 三相电流型逆变器 120 度导电型理想输出电流参考波形 f 50.0 T 1.0 / f Idc 10.0 t np.linspace(0, 2 * T, 4000) def phase_current(t): theta np.mod(t * f * 360, 360) i np.zeros_like(theta) i[(theta 0) (theta 120)] Idc i[(theta 180) (theta 300)] -Idc return i ia phase_current(t) ib phase_current(t - T / 3) ic phase_current(t - 2 * T / 3) fig, axes plt.subplots(3, 1, sharexTrue) for ax, sig, name in zip(axes, [ia, ib, ic], [A 相, B 相, C 相]): ax.plot(t * 1000, sig, lw1.2) ax.set_ylabel(name 电流(A)) ax.grid(True, alpha0.3) axes[-1].set_xlabel(时间 (ms)) plt.suptitle(120 度导电型理想输出电流波形) plt.tight_layout() plt.show()注意这段 Python 脚本画的是忽略换相重叠的理想波形用来辅助理解输出电流形状不能代替 Simulink 或 PSIM 的电路级仿真结果。8. 批量参数扫描与自动化仿真实验里最有价值的操作是批量扫描换相电容。做法是把换相电容取一组合适的值循环运行仿真记录每次的波形和关键指标最后画成对比图。下面是一段 MATLAB 批量扫描脚本模板核心是先用 assignin 改参数再运行 sim最后保存每一组的输出电流数据% 批量扫描换相电容 C_comm 对输出波形的影响 modelName three_phase_csi; open_system(modelName); capacitanceList [1e-6, 2e-6, 5e-6, 10e-6, 20e-6, 50e-6]; results struct(C, {}, i_a, {}, time, {}); for k 1:length(capacitanceList) assignin(base, C_comm, capacitanceList(k)); simOut sim(modelName, StopTime, 0.15); t simOut.tout; i_a simOut.logsout.getElement(i_a).Values.Data; results(k).C capacitanceList(k); results(k).time t; results(k).i_a i_a; fprintf(C %g uF 完成\n, capacitanceList(k) * 1e6); end % 绘制 A 相电流对比 figure; hold on; for k 1:length(results) plot(results(k).time, results(k).i_a, DisplayName, ... sprintf(C %g uF, results(k).C * 1e6)); end hold off; grid on; xlabel(时间 (s)); ylabel(A 相电流 (A)); legend(show); title(不同换相电容下的 A 相电流波形对比);批量扫描时需要注意三个问题。第一每轮仿真结束进程可能残留电流较大模型多跑几轮后建议用close_system(modelName, 0)清理第二仿真模型如果长时间不收敛建议在循环里加 try-catch跳过失败的参数并记录日志避免整个批量任务中断第三波形数据要设置合理的采样点数只记录稳态后的 1 到 2 个周期能大幅减少内存占用。课程实验环境一般没有 HTTP API批量任务用脚本循环就足够不需要额外搭服务。9. 资源占用与运行性能观察三相电流型逆变电路仿真是 CPU 密集任务不涉及 GPU。仿真速度和三个因素关系最大求解器步长、模型复杂度和波形记录点数。使用理想开关模型、固定较小的最大步长时普通 8GB 内存 PC 完成 0.2 秒仿真耗时通常在几十秒到几分钟量级实际时长以本机为准。如果仿真时间过长优先检查最大步长设得是否过小以及记录信号是不是覆盖了很长仿真区间。降低仿真资源占用的常用方法仿真时长只取稳态所需的最小值Scope 和 To Workspace 的采样间隔适当拉开不需要每个求解步都记录先把负载和直流侧参数固定只做单参数扫描减少重复编译。Simulink 第一次运行前会编译模型之后重新运行不重复编译所以批量扫描第二组参数通常比第一组快很多。PSIM 仿真速度普遍更快但波形分析文件同样会随记录点数增大而变大建议在 SIMVIEW 里只保存需要的通道。端口和进程方面Simulink 模型不涉及网络端口冲突但如果同时开了多个 MATLAB 实例模型文件和工作空间变量会隔离在各自实例中批量任务建议只开一个主实例避免内存竞争。仿真中途按停止键后状态变量会停留在中断时刻如果下次运行波形突变先尝试重启仿真或清空工作空间变量。10. 常见问题与排查方法仿真实验里遇到问题不要先改参数先看波形和日志。下表列出三相电流型逆变电路仿真中最常见的故障现象和处理思路问题现象可能原因排查方式解决方案仿真报错不收敛大电感和小电容时间常数差距大步长不合适看求解器日志和报错位置改用 ode23tb调小最大步长输出电流不是 120° 波形驱动脉冲相位错位对照导通区间表逐路检查脉冲按区间表重新分配门极信号输出电流全为 0直流侧电流源没接上或门极信号全为 0检查 Idc 参数和门极波形确认直流源接入并先给一路测试脉冲电压波形持续振荡换相电容过大负载阻尼不足查看电压波形频率和振荡趋势减小换相电容或增大负载电阻换相尖峰过大换相电容过小或步长过大观察电容电压尖峰宽度增大电容调小最大步长仿真速度很慢最大步长过小记录点数过多查看求解统计信息放宽步长上限降低采样频率波形初始阶段异常初始状态从非零点开始查看初始时刻电流电压设置零初始状态或延长预热时间三相电流不对称某一相脉冲缺失或负载不对称分别检查六个门极信号修正故障相脉冲逻辑如果模型连编译都过不了优先检查元件连接是否完整、变量是否在基准工作空间里定义以及电气接口是否全部接线。电气连接中断是最常见的编译错误来源比参数问题更容易定位。11. 最佳实践与使用边界做三相电流型逆变电路仿真建议养成几个工程习惯。第一所有电气参数通过工作空间变量传入模型不要在模型里写死这样批量扫描和报告复现都方便。第二建立固定的目录结构把模型文件、初始化脚本、输出数据和报告分目录管理不要让波形图和脚本散落在桌面。第三每次改动参数前先记录当前数值出一个问题就能快速回退到上一组可用配置。第四批量扫描任务要保存日志记录每组参数是否成功、输出文件路径、计算耗时方便回溯。使用边界也必须讲清楚。这门实验属于教学仿真仿真结果不能在没有实测验证的情况下等同于硬件实验结果做实验报告时引用波形数据要注明仿真环境和参数。使用 MATLAB、PSIM 等软件要确保有合法授权不要使用破解版本。如果后续把电流型逆变器的思路应用到真实系统涉及电网、电机驱动或大功率装置要严格遵守相关安全标准和设备操作规范绝不能把仿真参数直接搬到硬件上。涉及具体工程项目的数据和设计文档发布前要确认脱敏和保密要求。12. 总结与下一步三相电流型逆变电路仿真实验最值得先验证的一件事就是 120° 导电型的导通区间表是否记得准确。把这十二个导通区间理顺驱动脉冲生成、波形形状、换相过程就都能解释清楚这个点最容易错也最值得花时间。优先建议在 Simulink 里跑通一组基础参数确认 A 相电流是正负各 120°、零电流 60° 的矩形波然后尝试单变量扫描换相电容观察输出波形从畸变到接近正弦再到振荡的变化过程。做完这个实验下一步可以尝试两个方向一是把 120° 导电型改成 PWM 电流型控制观察输出谐波是否明显下降二是在负载侧加入交流电机等效模型分析电流型逆变器在中压传动中的启动和换相过程。仿真实验的优势就是可以反复改参数、看波形、找原因把原理和现象对应起来这才是微课 41 真正要训练的能力。把上面这张导通区间表和排查表存下来做这个实验基本不会卡壳。