【数字电源/MATLAB+PLECS】如何进行 Buck 数字电源仿真(二)PLECS 搭建开环 Buck 功率级

【数字电源/MATLAB+PLECS】如何进行 Buck 数字电源仿真(二)PLECS 搭建开环 Buck 功率级 【数字电源/MATLABPLECS】如何进行 Buck 数字电源仿真二PLECS 搭建开环 Buck 功率级上一篇主要介绍了 Buck 电路、数字电源控制链路以及本系列的整体路线。本文开始进入实操在 PLECS 中先搭建一个开环 Buck 功率级模型。配套 GitHub 仓库digital-power-buck-sim-lab本章的 PLECS 模型、导出脚本、原始 CSV 数据和波形图都已经放到仓库中读者可以对照本文复现。这里先强调一个顺序先开环再闭环先验证功率级再设计控制器不要一开始就急着加 PI 控制器。因为如果功率级模型本身接错了或者电感、电容、负载参数不合理后面调 PI 参数只会把问题掩盖得更深。先看本篇成品本文最后搭出来的 PLECS 模型如下图01 PLECS 开环 Buck 完整模型这张图先看两条链路Dopen - PWM Generation 的 m 输入PWM Generation 的 s 输出 - MOSFET gate也就是说Dopen不是直接驱动 MOSFET而是先作为占空比指令进入 PWM 模块再由 PWM 模块输出开关信号。这个关系必须看清楚否则后面做闭环时很容易把“占空比指令”和“实际开关脉冲”混在一起。仿真结果先给结论项目结果输入电压24V开环占空比0.5稳态输出电压约 12V稳态电感电流约 5AMOSFET Vds0V / 24V 周期切换本文的目标是固定占空比 duty观察输出电压 Vout观察电感电流 IL观察 MOSFET Vds 开关波形确认 Buck 功率级模型符合基本规律本篇要完成的内容本文只做开环 Buck不做闭环控制。本篇完成后模型中应该至少包含输入电源 VinPWM 信号高边开关管续流二极管电感 L输出电容 C负载 RProbe 三路采样Scope 波形观察本篇不会加入PI 控制器软启动过压保护过流保护状态机C 代码这些内容放到后续章节。这样做的原因是职责要清楚本文只证明“被控对象”是正常的。开环 Buck 的验证思路理想 Buck 电路中输出电压近似满足Vout D * Vin其中名称含义Vin输入电压Vout输出电压DPWM 占空比本系列标称输入电压为 24V目标输出电压为 12V所以开环测试时可以先取D 0.5理论上Vout 0.5 * 24V 12V实际仿真中如果考虑器件压降、电感电阻、电容 ESR输出电压会略有偏差。第一版模型可以先从理想器件开始确认拓扑正确后再逐步加入非理想参数。初始参数设计先给出一组适合入门仿真的参数。参数初始值说明Vin24V标称输入电压Vout12V目标输出电压Iout5A最大输出电流Pout60W最大输出功率fsw200kHzPWM 开关频率duty0.5开环固定占空比L22uH初始电感值C100uF初始输出电容Rload2.4Ω满载等效负载负载电阻的计算如下Rload Vout / Iout 12V / 5A 2.4Ω电感值可以按电感电流纹波估算。假设电感电流纹波取满载电流的 30%ΔIL 5A * 30% 1.5ABuck 电感估算公式L (Vin - Vout) * D / (ΔIL * fsw)代入参数L (24V - 12V) * 0.5 / (1.5A * 200kHz)L ≈ 20uH因此第一版可以选一个常见值L 22uH输出电容先取C 100uF这里不追求一次算得非常精确。第一版重点是把模型跑起来并能解释波形。后续章节会再讨论电感、电容、纹波和动态响应之间的关系。PLECS 元件清单在 PLECS 中可以按下面的元件搭建第一版开环 Buck元件作用DC Voltage Source输入电源 VinMOSFET高边开关管Diode开关关断时的续流通路InductorBuck 电感Capacitor输出电容Resistor等效负载Constant固定占空比指令 DopenPWM Generation将 duty 指令转换成开关脉冲Plecs Probe采样 Vout、IL 和 MOSFET VdsScope观察仿真波形Electrical Reference电气参考地这里没有直接使用库里的 Pulse Generator而是用了一个PWM Generation子系统。这样做是为了给后续闭环控制留接口现在输入是常数Dopen后面可以把它替换成 PI 控制器输出的 duty而功率级不用重搭。第一版模型先使用理想器件。等开环模型验证正确后再加入器件导通压降、导通电阻、电容 ESR 和寄生参数。搭建步骤1. 新建 PLECS 模型打开 PLECS新建一个模型文件建议命名为buck_open_loop_24v_12v.plecs本仓库中的对应路径为models/plecs/buck_open_loop_24v_12v.plecs2. 放置输入电源和参考地先放置 DC Voltage Source并设置Vin 24V再放置 Electrical Reference作为电路地。这一步的目标是先建立输入电源和公共参考点。电源仿真中如果忘记参考地模型很容易报错或者波形异常。图02 输入电源与参考地3. 搭建高边开关和续流路径Buck 的核心是开关管周期性导通和关断。先放置高边开关管再在 SW 节点到地之间放置续流二极管。这里的 SW 节点非常重要。第一版模型先通过 MOSFET Vds 间接判断开关动作后续如果要分析尖峰、振铃和吸收回路再单独加入 SW 节点电压测量。开关管导通时SW 节点接近 Vin开关管关断时电感电流通过二极管续流SW 节点电压下降图03 高边 MOSFET 与续流二极管4. 放置电感、输出电容和负载在 SW 节点后面接入电感 L再接输出电容 C 和负载 R。第一版参数L 22uHC 100uFRload 2.4Ω图04 电感、输出电容和负载输出端命名为Vout5. 加入 PWM 信号开环模型不需要控制器只需要固定占空比指令。本文模型中使用一个 Constant 作为占空比输入Dopen 0.5然后把Dopen接到PWM Generation子系统的m输入端。PWM Generation内部用三角波和占空比指令比较输出开关信号s再由s去驱动 MOSFET gate。图05 Dopen 到 PWM Generation 再到 MOSFET gate此时模型的逻辑是Dopen 固定 duty 指令- PWM Generation 产生开关脉冲- MOSFET 周期性导通/关断- Buck 功率级自然响应- 输出电压由 duty 和 Vin 决定这个地方是新手最容易看错的点m是调制指令s才是开关信号。画图时也要把这两条线分开不要让读者误以为Dopen直接接到了 MOSFET。6. 加入测量点和 Scope为了判断模型是否正确至少需要观察三个波形波形作用MOSFET Vds判断开关管是否按固定频率切换电感电流 IL判断电感电流是否连续、纹波是否合理输出电压 Vout判断输出是否接近理论值建议 Scope 中至少放入MOSFET VdsILVoutProbe 输出三路信号输出电容电压、电感电流、MOSFET Vds。这里没有直接额外放一个 SW 节点电压传感器是为了保持第一版模型足够干净Vds 已经能证明开关动作是否正常。图06 PLECS Probe 与 Scope 信号连接仿真设置建议第一版仿真可以先设置项目建议值仿真时间5ms - 10ms初始 duty0.5输入电压24V负载2.4Ω开关频率200kHz仿真时间不要太短否则输出电压还没稳定就结束也不要一开始设得太长避免仿真速度变慢。如果仿真步长可以设置建议先使用 PLECS 默认设置。等后续出现波形抖动、开关细节看不清楚、仿真速度过慢等问题时再调整求解器和步长。Scope 里为什么看起来跳来跳去第一次运行这个开环模型时Scope 里很容易看到下面这种现象看到的现象真实原因正确读法Vout 启动时冲到 20V 左右然后再掉下来开环硬启动激励了 LC 输出滤波器的自然响应先确认后面是否衰减到 12V 附近IL 启动时冲到 20A 以上电容从 0V 被突然充电电感电流先承担启动能量转移这是启动冲击电流不是稳态负载电流MOSFET Vds 像一整块绿色色带200kHz 开关波形被压缩到 0ms - 3ms 的全局时间尺度里要放大到几个开关周期再判断高低电平这里不要急着改拓扑也不要急着调求解器。本文这个模型本来就没有软启动、没有闭环、没有限流Dopen 0.5是在仿真开始时直接给到 PWM 模块的。对 Buck 来说这相当于一上电就用固定占空比硬推输出电容所以 Vout 和 IL 在启动阶段出现过冲是合理的。下面这张图专门看启动阶段图07 开环 Buck 硬启动暂态从这张图可以看出本模型的启动峰值大约为Vout 启动峰值 ≈ 20.8VIL 启动峰值 ≈ 27.3A这两个数不能拿来评价稳态输出质量。开环功率级验证应该分成两张尺度来看启动总览看 Vout/IL 是否过冲后衰减稳态局部放大到几个开关周期看 Vds、IL 纹波和 Vout 纹波查看这类结果时也建议按这个顺序分开看。不要只盯着 Scope 的全局截图因为全局截图会把高频开关细节压成一片很容易误判为模型乱跳。预期波形开环 Buck 正常工作时要按时间尺度分别观察下面几类波形。1. MOSFET Vds 波形MOSFET Vds 应当是一个高低切换的开关波形。大致特征开关管导通时Vds 接近 0V开关管关断时Vds 接近 Vin频率等于 PWM 开关频率在 Dopen 0.5 时高低电平时间大致各占一半注意这里看的是 MOSFET Vds不是 gate 信号。Vds 低电平对应开关管导通Vds 高电平对应开关管关断。如果以后 duty 不是 0.5Vds 的高电平时间和 gate 导通时间是互补关系不能直接把 Vds 高电平比例当成 gate duty。实际仿真波形如下图08 MOSFET Vds 开关波形这张图只截取了稳态后的局部时间窗口。不要用 0ms - 3ms 的全局窗口判断 Vds 细节否则 200kHz 的高低电平会在 Scope 里压成一整块色带。2. 电感电流 IL电感电流应该呈现上升和下降的锯齿形纹波。开关管导通时电感电流上升开关管关断时电感电流下降如果参数合理满载下电感电流应当大致围绕 5A 上下波动而不是直接降到 0A。实际仿真中稳态电感电流围绕 5A 呈连续锯齿波。这里看的是稳态局部放大图不是启动冲击电流图09 开环 Buck 电感电流纹波3. 输出电压 Vout输出电压会从 0V 进入启动暂态最终稳定到接近 12V。如果使用理想器件和 duty0.5稳态输出应接近Vout ≈ 12V启动阶段的过冲前面已经单独分析过。这里重点看稳态结果过冲衰减后输出是否回到D * Vin附近。如果输出明显偏离 12V需要先检查Vin 是否为 24Vduty 是否为 0.5负载是否为 2.4Ω电感和电容是否接对二极管方向是否正确测量点是否接在输出端实际仿真中输出最终稳定在 12V 附近图10 开环 Buck 输出电压启动波形开环验证表仿真完成后可以按下面的表格记录结果。下面的数据由scripts/export_open_loop_waveforms.py调用 PLECS RPC 导出不是手工编出来的截图结论。检查项预期结果实际结果PWM 频率200kHzVds 周期约 5us对应 200kHzduty0.5Dopen 0.5MOSFET Vds有高低切换0V / 24V 高低切换IL有锯齿纹波稳态均值约 5A峰峰值约 1.31AVout接近 12V稳态均值约 12V峰峰值约 8.5mV启动 Vout 峰值开环硬启动允许出现过冲约 20.8V随后衰减到 12V 附近启动 IL 峰值开环硬启动会有冲击电流约 27.3A随后回到 5A 附近输出是否稳定经过启动后趋于稳定有开环启动过冲约 3ms 后稳定这一张表很重要。后续如果加入 PI 控制后出现问题可以回头对比开环模型是否本来就是正常的。常见问题1. Vout 不接近 12V优先检查duty 是否设置为 0.5Vin 是否设置为 24V负载是否设置为 2.4Ω电感是否串在 SW 和 Vout 之间输出电容是否接在 Vout 和 GND 之间二极管方向是否正确不要一上来就怀疑 PLECS 或求解器。大多数初期问题都是连接错误、参数错误或测量点放错。2. 电感电流直接降到 0这可能说明 Buck 工作在断续电流模式或者负载太轻、电感值太小。可以先检查负载电阻是否过大电感值是否过小开关频率是否设置正确3. 启动过冲是不是说明模型错了不一定。本文是开环模型没有软启动也没有闭环阻尼。输入 24V、占空比直接给到 0.5 时LC 输出端会出现启动振铃Vout 先冲高再回到 12V 附近这是合理现象。真正要判断的是稳态是否接近 12V电感电流是否连续MOSFET Vds 是否按 200kHz 切换如果这三件事都对说明功率级搭建基本可信。启动过冲留到后面用软启动和闭环控制解决。4. 仿真报错或无法运行优先检查是否存在电路悬空是否缺少 Electrical Reference是否有理想电压源和理想开关形成不合理回路开关控制信号是否连接正确5. 波形看起来很乱先不要急着调复杂参数。先判断它是“真的乱”还是“显示尺度不对”。看启动用 0ms - 3ms总览 Vout 和 IL 的过冲衰减看开关放大到几个 us观察 MOSFET Vds 的 0V / 24V 切换看纹波放大到稳态局部观察 IL 和 Vout 的峰峰值调试顺序应该先分清时间尺度再判断电路行为。如果 Vout 最终能回到 12V 附近、IL 稳态围绕 5A、Vds 按 200kHz 切换那么这张 Scope 全局图虽然看起来跳但模型本身是合理的。本篇总结本文完成了开环 Buck 功率级的搭建思路。本篇的核心不是让输出电压“看起来对”而是证明PWM 能驱动开关管MOSFET Vds 有正确开关波形电感电流有合理纹波输出电压接近 D * Vin只要这几个条件满足说明功率级模型基本可信。下一篇可以继续讨论 Buck 电感、电容和开关频率的参数估算并进一步解释为什么电感值、负载和开关频率会影响输出纹波和动态响应。本章配套文件为了方便复现本章对应的模型、脚本、数据和说明如下仓库入口https://github.com/Old-Ding/digital-power-buck-sim-lab本章直达内容链接第二章复现说明docs/02-open-loop-buck-reproduce.mdPLECS 开环 Buck 模型models/plecs/buck_open_loop_24v_12v.plecs波形导出脚本scripts/export_open_loop_waveforms.py仿真原始数据waveforms/02-open-loop-data.csv类型文件作用PLECS 模型models/plecs/buck_open_loop_24v_12v.plecs开环 Buck 功率级模型Python 脚本scripts/export_open_loop_waveforms.py导出仿真数据、关键指标和波形图原始数据waveforms/02-open-loop-data.csvPLECS 导出的 Vout、IL、Vds 数据指标汇总waveforms/02-open-loop-summary.csv本章验证表中的关键数值来源波形图片waveforms/02-open-loop-*.png本文使用的真实仿真波形复现说明docs/02-open-loop-buck-reproduce.md第二章的运行步骤和结果判断如果你想自己复现建议按这个顺序走先看复现说明再打开 PLECS 模型最后运行导出脚本并用waveforms/里的 CSV 和波形图核对结果。本文图片和波形对应文件如下文件内容models/plecs/buck_open_loop_24v_12v.plecsPLECS 开环 Buck 模型scripts/export_open_loop_waveforms.py调用 PLECS RPC 导出仿真数据和波形图assets/screenshots/02-plecs-open-loop-buck-model.pngPLECS 完整开环模型assets/screenshots/02-step-01-input-reference.png输入电源与参考地局部图assets/screenshots/02-step-02-switch-freewheel.png高边 MOSFET 与续流二极管局部图assets/screenshots/02-step-03-lc-output-load.png电感、输出电容和负载局部图assets/screenshots/02-step-04-pwm-chain.pngDopen、PWM Generation 和 MOSFET gate 局部图assets/screenshots/02-step-05-probe-scope.pngProbe 与 Scope 信号连接局部图waveforms/02-open-loop-mosfet-vds.pngMOSFET Vds 开关波形waveforms/02-open-loop-il.png电感电流波形waveforms/02-open-loop-vout.png输出电压波形waveforms/02-open-loop-startup-overview.png开环硬启动暂态总览waveforms/02-open-loop-summary.csv开环仿真关键指标技术交流如果你在复现本章模型、运行脚本或判断波形时遇到问题可以加入技术交流群交流。渠道信息QQ 群嵌入式交流群1056095456加群链接https://qm.qq.com/q/rygrSD2Ddu微信交流扫码添加 Old-ding备注“数字电源仿真”提问时建议附上 PLECS 模型截图、关键参数、Scope 波形和脚本输出。