电力电子转换器是一种通过开关操作将一种形式的能量转换为另一种形式的能量(例如,交流转换为直流)的电子电路。为了在电流和电压的幅度、频率或形状方面达到预期效果,必须应用一种由算法确定的开关序列模式。
控制专家从输入和输出之间的数学关系出发,编写一个将在微控制器上执行的程序。人们可以使用专为控制开发目的而设计的程序(Matlab/Simulink、Scilab/Scicos、Plecs等)来仿真转换器的行为,而不是直接从公式开始编写程序,然后在实验装置中验证一切是否正常。
在传统的工作流程中,开发人员需要设计一个控制系统,对其进行仿真,然后手动编写微控制器代码。显然,出错的概率会随着系统的复杂性而增加,因此能够从控制器的模型(算法)生成代码的方法或工具对开发人员来说是一种重要的帮助。在开发和测试控制算法时,自动代码生成工具非常有用,这些工具从仿真模型开始,生成C代码,对其进行编译并将其下载到要使用的微控制器中。
在开发阶段,人们可以专注于更重要的控制方面,而不必考虑代码。自动代码生成在控制开发的不同阶段都很有帮助,可以帮助缩短产品上市时间。例如,在最终硬件准备就绪之前,人们可以通过仿真、生成代码,将其下载到评估板上来应用快速原型开发方法,验证生成的代码与仿真模型的对应关系的自动工具也可以保证最终代码相对于所需行为的正确性。这些工具的应用范围非常广泛,因为参与控制开发的每个人都可以从简化工作流程的环境中受益。例如,需要学习设计控制系统的学生即使不是编写嵌入式软件的专家也可以创建工作原型。
在市场上可用的各种工具中,Plexim的Plecs是一款电力电子电路和动态系统的多域仿真器,具有对STM32-Nucleo等开发板进行编程的功能。下一节将展示如何在Nucleo-F303R3板上生成和运行程序的示例。
Plecs中除了电路元件外,还有代表子系统的块,例如一个带有一些输入和输出的盒子,通过单击子系统,可以打开它并查看里面的内容。通过这种方式,也可以仿真要在外部硬件上执行的程序。TI或ST支持多种类型的硬件,在本文中,我们将参考基于STM32微控制器的Nucleo STM32F303RE。对于代表电路板的块,输入和输出端口是电路板内使用的物理连接的抽象化产物,可以将它们连接到方案中以进行仿真,延迟块则用于避免模型中的代数循环。
图1:Nucleo开发板作为子系统
查看电路板块的内部,我们可以看到一个可以在Plecs中定义并在电路板上执行的基本程序的示例:有一些块代表电路板的物理输入/输出,可以连接到用于编程目的或仅用于仿真的“普通”Plecs块,例如“scope”和类似的块。
图2:基于模型的程序
图2显示了一个PWM设置为0.3的程序,物理端口在微控制器的引脚(端口B,引脚8)或电路板的引脚上显示,参考连接器和使用的引脚(CN10-3),生成正弦波并发送到引脚A4上的DAC。从模拟和数字输入获取的信号被发送到示波器,因此可以在刷新电路板之前仿真程序。
图2顶部显示了按下按钮时改变板载LED频率的程序,通过在每个触发事件处循环来选择具有不同频率的方波或“数字振荡器”。
完成并仿真算法后,就该生成代码了:在“编码器”(coder)菜单中,选择“编码器选项”(coder option),这样就会出现一个专用界面。选择“目标”(Target)选项卡,可以设置电路板、芯片、系统时钟频率和编程接口。
图3:生成代码的界面
如果一切正常(并且电路板已连接),我们可以按下“编译”(Build)按钮,代码将生成并下载到电路板。在这个过程结束时,程序将运行,并且可以使用外部仪器监控物理信号。
有时,需要直接在主机上监视电路板上的信号,以进行调试或以交互方式控制过程,例如在快速控制原型开发中,在仿真后的实际过程中手动调整控制算法的参数。
类似Plecs的程序可以在所谓的“外部模式”下,在PC和电路板之间交换数据:电路板上运行的算法和信号可以在仿真环境中的示波器块上可视化。事实上,PC程序可以向电路板发送数据和从电路板接收数据。
查看图2,我们可以注意到与示波器连接的输入端:在外部模式下,当电路板充当输入/输出硬件接口(ADC或逻辑信号)时,我们可以像真正的示波器一样可视化所应用的信号。
例如,使用RC滤波器通过将其连接到方案中选择的相应引脚来读取产生的PWM的平均值。
图4:RC电路与电路板的连接
由于示波器默认绘制的是与所测电压相对应的数据,因此如果读取PWM值,则需要DAC模块中的比例因子。因此,您可以修改占空比的值,并且RC滤波器输出的仿真信号将以接近实时的方式绘制。
图5显示了滤波器的仿真输出和两个ADC读取的PWM信号。
图5:PWM信号
按照与代码生成相同的方式进行,使用界面中的“外部模式”选项卡:连接到电路板,配置触发器和采集率,然后按“build”。
图6:外部模式配置
如果一切正常,就可以看到获取的信号并与电路板上运行的程序进行交互。
仿真程序对于分析和设计电源转换器及其控制算法非常有用。有些程序(例如Plecs)可以为评估板生成代码,这样可以降低由于手写而导致错误的风险,还可以监控与环境交换的信号,或修改某些参数以微调算法。
所有这些方面都有助于加快控制设计过程并缩短产品的上市时间。
(原文刊登于EDN姊妹网站Power Electronics News,参考链接:Developing Control of Power Electronic Converters with Automatic Code Generation,由Ricardo Xie编译。)