此示例显示如何在开发期间,如何识别和解决关于外设设置和任务调度的问题。
以下是与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块集)驱动逆变器。在此示例中使用了来自电动机控制块Set™的算法块。
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工具中,开启外围配置工具,设置ADC> SOCX采集窗口周期参数到13 ADC时钟蜱虫
用于ADC B和C模块。ADC采集时钟滴答参数必须设置为模拟时间值,在ADC接口块中设置,乘以ADC时钟频率。您可以从模型硬件设置中获得ADC时钟频率。打开soc_pmsm_singlecpu_ref模型.在这一点系统芯片选项卡,单击硬件设置打开配置参数窗户。在里面硬件实现>目标硬件资源> ADC_X部分,你可以看到ADC时钟频率,单位为MHz
参数值。下图显示了用于模拟的ADC接口块设置和用于部署的外围应用程序设置。在仿真和代码中使用相同的设置,以确保预期的行为。
在选择构建操作页,从硬件中选择监控数据构建和加载外部模式
.这张图显示了来自硬件的精确采样ADC值的数据,控制器按照预期跟踪参考值。
BOOSTXL-DRV8305EVM电机驱动器具有3相逆变器,使用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工具中,开启外围配置工具,设置PWM事件条件到计数器等于时期
.在仿真和代码中使用相同的设置,以确保预期的行为。此图显示了用于仿真的PWM接口块设置和部署的外设配置工具设置。
该图显示了来自仿真和硬件的数据,具有正确的ADC-PWM同步和控制器按预期跟踪参考值。
在MCU上开始SOC块(SoC块集)
版权所有The MathWorks, Inc.