主要内容

本页采用了机器翻译。点击此处可查看英文原文。

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

本示例展示了如何在开发早期识别和解决与外围设置和任务调度相关的问题。

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

  • ADC-PWM 同步以实现 PWM 周期中点的电流检测

  • 引入传感器延迟以实现闭环系统所需的控制器响应。

  • 在设计特殊算法时研究不同的 PWM 设置

本示例展示了如何使用 C2000 Microcontroller Blockset 来解决电机控制闭环应用在仿真的这些挑战,并通过部署到 TI Delfino F28379D LaunchPad 上进行硬件验证。

所需硬件:

  • 基于 TI Delfino F28379D LaunchPad 或 TI Delfino F2837xD 的板

  • BOOSTXL-DRV8305EVM 电机驱动板

  • Teknic M-2310P-LN-04K 永磁同步电机

模型结构

打开 soc_pmsm_singlecpu_foc.slx。该模型模拟了包含在 soc_pmsm_singlecpu_ref.slx 中的单 CPU 电机控制器,用于永磁同步电机逆变器系统。控制器通过以下方式感知来自工厂的输出:ADC Interface并利用PWM Interface驱动逆变器。本示例使用了 Motor Control Blockset™ 中的算法模块。

ADC 采集时间

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

打开 ADC Interface 模块,并将默认采集时间更改为 100ns。运行仿真并在仿真数据检查器中查看结果,观察到电流波形存在畸变。采集时间过短导致 ADC 测量值未能达到其真实值。因此,控制器会做出反应,产生一个相对占空比,从而导致电机电流发生变化。这些图显示了对不正确的 ADC 测量和 A 相电流通道过绘制的反应,其中 A 相电流为蓝色,B 相电流为橙色。模拟速度反馈显示,在开环到闭环转换过程中存在明显的振荡,这在现实世界中会导致电机停止运转。

要解决此问题,打开 ADC Interface 模块,更改采集时间,将其更改为更大的值 320ns。该值高于 TI Delfino F28379D LaunchPad 数据手册中 ADC 工作条件(12 位单端模式)部分建议的最小 ADC 采集时间。运行仿真并在仿真数据检查器中查看结果。该图显示了准确采样的 ADC 值,并且控制器按预期跟踪参考值。

将模型部署到 TI Delfino F28379D LaunchPad 上,用硬件验证仿真结果。在 System on Chip 选项卡上,点击 Configure, Build, & Deploy 以打开 SoC 构建器工具。

在 SoC Builder 工具的外设配置工具中,将 ADC > SOCx 采集窗口周期参数设置为 13 ADC clock ticks 用于 ADC B 和 C 模块。ADC 采集时钟滴答参数必须设置为在 ADC Interface 模块中设置的仿真时间值,乘以 ADC 时钟频率。您可以从模型硬件设置中获取 ADC 时钟频率。打开 soc_pmsm_singlecpu_ref.slx 模型。在 System on Chip 选项卡上,点击硬件设置以打开配置参数窗口。在“硬件实现”>“目标硬件资源”>“ADC_x”部分,您可以查看 ADC clock frequency in MHz 参数值。该图显示了用于仿真 ADC Interface 模块设置和用于部署的外围应用程序设置。在仿真和代码生成中使用相同的设置,以确保达到预期行为。

“选择构建操作”页面上,要监控来自硬件的数据,请选择 Build and load for External mode。该图显示了来自硬件的数据,其中 ADC 值采样准确,控制器按预期跟踪参考值。

ADC-PWM 同步

BOOSTXL-DRV8305EVM 电机驱动器采用 6 个功率 MOSFET 构建的 3 相逆变器。该电机驱动板采用低侧分流电阻来检测电机电流。电流检测电路放大分流器上的电压降。这种设置确保了低功耗,因为电流仅在底部开关接通时流过分流器,从而避免了 PWM 换向噪声的影响。该图显示了 BOOSTXL-DRV8305EVM 电机驱动器中的低侧分流电阻电路。

为了正确运行,电流检测必须在 PWM 周期的中间点进行,此时 ADC 会触发。具体来说,当底部开关处于上-下计数模式时,PWM 计数器必须处于最大值。在不同时刻进行的电流采样结果显示,测得的电流为零。

为了分析此案例,将模型切换到高保真逆变器仿真模式。将工厂变体改为使用基于 MOSFET 的详细三相逆变器来复制 BOOSTXL-DRV8305EVM。

set_param('soc_pmsm_singlecpu_foc/Inverter and Motor/Average or Switching',...
'LabelModeActivechoice','SwitchingInverter');

更改 Output mode 参数PWM Interface将 6 个 PWM Switching 到 Mux 模块。

set_param('soc_pmsm_singlecpu_foc/PWM Channel/PWM Interface', 'OutSigMode', 'Switching');
set_param('soc_pmsm_singlecpu_foc/PWM Channel/PWM Interface1', 'OutSigMode','Switching');
set_param('soc_pmsm_singlecpu_foc/PWM Channel/PWM Interface2', 'OutSigMode', 'Switching');

删除 PWM Interface 模块和多路复用器之间的现有连接。

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','Inputs','6');
add_line('soc_pmsm_singlecpu_foc/PWM Channel', ...
{'PWM Interface/1', 'PWM Interface/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', 'smart');

打开 PWM Interface 模块,并将事件触发模式设置为 End of PWM period。运行仿真并在仿真数据检查器中查看结果。如图所示,A 相和 B 相电流近似为零。这会导致控制回路中反馈丢失且无法执行动作。在 Task Manager 模块中选择 Enable task simulation,即可在仿真数据检查器中仿真和可视化任务。

要解决此问题,请将事件触发模式更改为 Mid point of PWM period,相当于 PWM 内部计数器达到最大值。运行仿真并在仿真数据检查器中查看结果。

使用 SoC Builder 工具将模型部署到 TI Delfino F28379D LaunchPad 上。在 SoC Builder 工具的外设配置工具中,将 PWM 事件条件设置为 Counter equals to period。在仿真和代码生成中使用相同的设置,以确保达到预期行为。该图显示了用于仿真的 PWM Interface 模块设置和用于部署的外设配置工具设置。

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

Copyright 2020-2023 The MathWorks, Inc.

另请参阅

主题