主要内容

将MCU调度和外围设备集成在电机控制应用中

此示例显示如何在开发期间识别和解决关于外设设置和任务调度的问题。

以下是与MCU外围设备相关的典型挑战和调度:

  • dc -PWM同步,实现PWM周期中点电流检测

  • 结合传感器延迟来实现闭环系统所需的控制器响应

  • 在设计特殊算法的同时,学习不同的PWM设置

这个例子展示了如何通过部署到TI Delfino F28379D LaunchPad上,在仿真和硬件验证中使用SoC Blockset来解决电机控制闭环应用的这些挑战。

所需的硬件:

  • TI Delfino F28379D LaunchPad或TI Delfino F2837XD基板

  • BOOSTXL-DRV8305EVM电机驱动板

  • Teknic M-2310P-LN-04K PMSM电机

模型结构

open_system (“soc_pmsm_singlecpu_foc”);

打开soc_pmsm_singlecpu_foc模型.该模型模拟包含在的单个CPU电机控制器soc_pmsm_singlecpu_ref模型,用于永磁同步电机逆变系统。控制器感知来自使用的设备的输出ADC接口(SoC块集)和使用的启动脉宽调制接口(SoC块集)驱动逆变器。在此示例中使用了来自电机控制块集的算法块。

ADC采集时间

ADC硬件包含一个采样和保持电路来检测模拟输入。为了确保完整的ADC测量,必须选择最小采集时间,以考虑输入电路和样品和保持电路中的电容的综合影响。

打开ADC接口块并将默认采集时间更改为100ns。运行模拟并查看结果仿真数据检测器观察到电流波形有失真。低采集时间导致ADC测量没有达到它们的真实值。因此,控制器通过产生一个相对占空比而做出反应,从而引起电机所吸引的电流的变化。这些图显示了对错误ADC测量和A相电流通道透支的反应,A相电流为蓝色,B相电流为橙色。仿真的速度反馈显示了在开环到闭环过渡期间的显著振荡,这在现实世界中将停止电机。

为了解决这个问题,打开ADC接口块改变和改变采集时间更大的值,320ns。该值是表5-42中推荐的ADC最小采集时间TI Delfino F28379D发射台数据表。运行模拟并查看结果仿真数据检测器.该图显示了准确采样的ADC值和控制器按预期跟踪参考值。

通过将模型部署到TI Delfino F28379D LaunchPad来验证对硬件的模拟结果。在这方面系统芯片选项卡,单击配置、构建和部署打开SoC Builder.(SoC块集)工具。

在Soc Builder工具中,ON外围配置工具,设置ADC> SOCX采集窗口周期参数到13 ADC时钟蜱虫用于ADC B和C模块。ADC采集时钟滴答参数必须设置为模拟时间值,在ADC接口块中设置,乘以ADC时钟频率。您可以从模型硬件设置中获得ADC时钟频率。打开soc_pmsm_singlecpu_ref模型.在这方面系统芯片选项卡,单击硬件设置打开配置参数窗户。在里面硬件实现>目标硬件资源> ADC_X部分,你可以看到ADC时钟频率,单位为MHz参数值。下图显示了用于模拟的ADC接口块设置和用于部署的外围应用程序设置。在仿真和代码中使用相同的设置,以确保预期的行为。

选择构建操作页,从硬件中选择监控数据构建和加载外部模式.这张图显示了来自硬件的精确采样ADC值的数据,控制器按照预期跟踪参考值。

ADC-PWM同步

BOOSTXL-DRV8305EVM电机驱动器具有三相逆变器,使用6个功率MOSFET构建。该电机驱动板采用低侧分流电阻来检测电机电流。电流检测电路放大分流器的电压降。此设置可确保低功耗,因为当底部开关沿着PWM换向噪声时,电流仅流过分流器。该图显示了Boostxl-DRV8305evm电机驱动器中的低侧分流电阻电路。

对于正确的操作,在ADCS触发时,必须在PWM周期的中点发生电流检测。具体地,当底部开关处于上下计数器模式时,PWM计数器必须处于最大值。不同实例的电流采样导致测量的零电流。

要分析这种情况,请将模型切换为高保真逆变器仿真模式。改变工厂变种,使用详细的MOSFET基于三相逆变器复制BOOSTXL-DRV8305EVM。

set_param('soc_pmsm_singlecpu_foc/逆变器和电机/平均或开关'......“LabelModeActivechoice”“SwitchingInverter”);

改变输出模式参数的脉宽调制接口(SoC块集)切换并将6个PWM连接到MUX块。

set_param('soc_pmsm_singlecpu_foc / pwm channel / pwm接口''outsigmode'“切换”);set_param(“soc_pmsm_singlecpu_foc / PWM频道/ PWM Interface1”'outsigmode'“切换”);set_param(“soc_pmsm_singlecpu_foc / PWM频道/ PWM Interface2”'outsigmode'“切换”);

删除PWM接口块和MUX之间的现有连接。

h = get_param ('soc_pmsm_singlecpu_foc / pwm channel / mux'“LineHandles”);delete_line (h.Inport);

作为最后一步,将6个PWM输出连接到MUX。

set_param('soc_pmsm_singlecpu_foc / pwm channel / mux''输入'“6”);
add_line ('soc_pmsm_singlecpu_foc / pwm channel'......{“PWM接口/ 1”“PWM接口/ 2”'PWM Interface1 / 1'......'PWM Interface1 / 2''PWM Interface2 / 1'“PWM Interface2/2”},......{'mux / 1'“Mux / 2”'mux / 3'“Mux / 4”“Mux / 5”“Mux / 6”},'autorouting'“智能”);

打开PWM接口块并设置事件触发模式PWM周期结束.运行模拟并查看结果仿真数据检测器.在图中,相A和相位B电流近似电流。这导致反馈丢失并且在控制回路中没有致动。选择启用任务模拟在“任务管理器”块中模拟和可视化仿真数据检查器中的任务。

要解决此问题,请更改事件触发模式PWM时期的中点,相当于PWM内部计数器最大。运行模拟并查看结果仿真数据检测器

使用该模型部署到TI Delfino F28379D LaunchPad上的模型SoC Builder.(SoC块集)工具。在Soc Builder工具中,ON外围配置工具,设置PWM事件条件计数器等于时期.在仿真和代码中使用相同的设置,以确保预期的行为。此图显示了用于仿真和部署的外设配置工具设置的PWM接口块设置。

该图显示了具有正确的ADC-PWM同步和控制器按预期跟踪参考值的仿真和硬件的数据。

也可以看看

版权所有The MathWorks, Inc.