PLECS 应用范例(14): 带参数扫描的Buck变换器(Buck Converter with Parameter Sweep)
- 培训职业
- 2025-05-06 10:29:01
本演示基于PLECS演示模型库中的演示模型“模拟控制Buck转换器Buck Converter with Analog Controls”。它通过在模拟脚本中修改电感器L1的值来执行参数扫描。从版本4.6.1起,PLECS Standalone具有执行并行模拟的可能性,这也在本演示模型中得到了演示。
此演示模型中显示了不同的PLECS功能。请注意,您只能将这些功能用于您的PLECS版本(Blockset或Standalone)。
该示意图显示了一个带有模拟比例积分微分(PID)控制器的buck变换器。电感器L1在图1的示意图中有标签,可以自动模拟十次,数值为40–220µH,步长为20µH。连接到探头组件的信号输出端口将数据传送到模拟脚本和XML-RPC接口。
该仿真演示了转换器的启动和1秒时的负载跳变。如果模型初始化将40µH的电感值分配给L1,则可以执行单个瞬态仿真。或者,可以使用模拟脚本对L1执行参数扫描在“Simulation + Simulation Scripts”下定义。每次模拟的结果将显示为范围中的新跟踪。每条记录道都标有相应的电感值。该脚本还分析了仿真结果,并将峰值电流值打印到MATLAB或倍频程控制台Octave console中。
有两个模拟脚本,用于实现Buck变换器电感值的参数扫描。一个执行顺序参数扫描,另一个执行平行的参数扫描。
顺序参数扫描在for-loop循环中运行多个连续模拟。只有当一个模拟完成时,下一个模拟才会开始。在for循环的每次迭代中,ModelVars结构都会为电感分配一个新值(变量varL)。ModelVars结构是simStruct的一部分,它作为PLECS(“simulate”)命令的参数移交给PLECS。SolverOpts结构包含一个变量OutputTimes,该变量仅返回特定时间点的模拟数据。这允许减少模拟脚本内处理的数据量。
要运行并行模拟,不仅需要将一个模拟结构指定为plecs(“simulate”)命令参数的单元格数组,还需要将多个模拟结构指定为单元格数组。每个仿真结构可能包含一个名为Name的附加变量。这允许标记每个单独的并行仿真,并将仿真数据或错误与特定仿真相关联。在本例中,当L1=120µH时,会产生人工短路(模拟5)。模拟完成后,错误消息显示在倍频程控制台和PLECS示意图的右下角,见图2。
并行模拟设置的plecs(“simulate”)命令中还有一个附加参数。它是一个回调函数,在每次模拟后执行。该功能可用于将模拟数据量减少到只有几个有趣的关键数字。这在通过XML-RPC启动模拟时特别有用,因为XML-RPC不允许传输大量数据。
同样的并行模拟也可以通过使用Python 3和提供的Python脚本参数_sweep_script启动。py位于此演示模型的文件夹中。请注意,这需要在PLECS首选项菜单的端口1080上启用XMLRPC接口。图3给出了参数扫描的模拟结果。
根据模拟时间跨度、平均模拟时间步长和记录信号的数量,产生的模拟数据量可能很大。随着模拟并行运行,内存消耗进一步增长。以下几点介绍了最小化模拟数据量的方法。结果打印到倍频程控制台中,可通过从"Window"菜单中选择"Show Console"显示控制台访问该控制台。
在Python 3中实现了与前一节中描述的相同的并行模拟脚本。可以使用以下命令运行脚本:python3 parameter_sweep_script.py。请确保在“PLECS Preferences + General”选项卡下启用XML-RPC接口,并将端口设置为1080。要执行脚本,必须首先手动启动PLECS。
双击Simulink模型中的子系统块,查看并运行m-file parameter_sweep_script。m在MATLAB编辑器中,具有以下内容。结果将打印到MATLAB控制台中。
此模型演示如何使用仿真脚本在PLECS Blockset或PLECS Standalone中执行物理电路值的参数扫描。此示例代码可以很容易地适用于其他应用程序。
多重随机标签