主要内容

集成单片机调度和外设在电机控制中的应用

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

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

  • ADC-PWM同步,实现PWM周期中点电流传感

  • 合并传感器延迟,以实现闭环系统的期望控制器响应

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

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

硬件要求:

  • TI Delfino F28379D LaunchPad或TI Delfino F2837xD基板

  • BOOSTXL-DRV8305EVM电机驱动板

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

模型结构

open_system (“soc_pmsm_singlecpu_foc”);

打开soc_pmsm_singlecpu_foc模型.该模型模拟了单CPU电机控制器,包含在soc_pmsm_singlecpu_ref模型,用于永磁同步电机逆变器系统。控制器感知从工厂使用的输出ADC接口和使用的启动脉宽调制接口驱动逆变器。这个例子中使用了来自Motor Control Blockset™的算法块。

ADC采集时间

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

打开ADC接口块,修改默认采集时间为100ns。中运行模拟并查看结果仿真数据检查观察电流波形有畸变。低采集时间导致ADC测量值无法达到其真实值。因此,控制器通过产生相对占空比引起由电机引出的电流变化而做出反应。这些图显示了A相电流通道中对不正确ADC测量和透支的反应,其中A相电流为蓝色,B相电流为橙色。仿真结果表明,在开环到闭环的过渡过程中,电机的速度反馈存在明显的振荡,而在现实中,这种振荡会导致电机的停止。

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

通过将模型部署到TI Delfino F28379D LaunchPad上,验证硬件上的仿真结果。在系统芯片选项卡上,单击配置、构建和部署打开SoC建设者工具。

在SoC Builder工具中,打开外围配置工具,设置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电机驱动中的低侧分流电阻电路。

为了正确的操作,电流检测必须发生在adc触发时的PWM周期的中点。具体来说,当底部开关在Up-Down计数器模式下处于活动状态时,PWM计数器必须达到最大值。在不同的实例下,电流采样的结果是被测电流为零。

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

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

改变输出模式参数的脉宽调制接口切换并将6个pwm连接到Mux块。

set_param (“soc_pmsm_singlecpu_foc / PWM通道/ 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频道/ Mux”“LineHandles”);delete_line (h.Inport);

作为最后一步,连接6 PWM输出到多路复用器。

set_param (“soc_pmsm_singlecpu_foc / PWM频道/ Mux”“输入”“6”);
add_line (“soc_pmsm_singlecpu_foc / PWM通道”...“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”},“高速公路”“智能”);

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

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

将模型部署到TI Delfino F28379D LaunchPad上SoC建设者工具。在SoC Builder工具中,打开外围配置工具,设置PWM事件条件计数器等于周期.在模拟和编码中使用相同的设置,以确保预期的行为。此图显示了用于仿真的PWM接口模块设置和用于部署的外设配置工具设置。

此图显示了在ADC-PWM同步正确的情况下,仿真和硬件的数据,以及控制器按照预期跟踪参考值。

另请参阅

The MathWorks, Inc.版权所有2020-2021