主要内容

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

针对选定的算法和硬件生成电机控制模型

本示例展示了如何使用 Motor Control Blockset™ 生成针对特定硬件和电机控制技术配置的 Simulink 模型。

Motor Control Blockset 提供了一些示例,可帮助您使用硬件板(包括德州仪器® C2000、Speedgoat® 和 STM32G4 系列微控制器)设计电机控制应用程序。这些示例支持开环或标量控制以及闭环或向量控制技术,例如场定向控制 (FOC)。这些示例中支持的最常见电机类型是永磁同步电机 (PMSM)。此外,这些例子既支持无传感器位置计算,也支持基于传感器的位置计算。

为了帮助您轻松找到适合您电机控制应用的解决方案,此工作流程为您提供了一个统一的界面,用于配置您想要使用的硬件和电机控制算法的 Simulink 模型。您可以通过在实时脚本中使用 HardwareTargetControlAlgorithm 字段来选择硬件和算法。

必需的 MathWorks 产品

仿真 Simulink 模型:

  • Motor Control Blockset

  • Stateflow(仅当您使用 ParamEstQEP、ParamEstSensorlessFOCSensorless 控制算法时才需要此工具箱的许可证)

生成代码并部署 Simulink 模型:

  • Motor Control Blockset

  • Embedded Coder®

  • C2000™ Microcontroller Blockset(仅当您使用 TI F28379D Launchpad、 TI F280039C Launchpad、TI F28P650D Launchpad 和 TI F2800137 Launchpad 硬件目标时,才需要此工具箱的许可证)

  • STM32™ 微控制器模块集(仅当您使用基于 STM32G4xx 的硬件目标时才需要此模块)

  • Stateflow(仅当您使用 ParamEstQEP、ParamEstSensorlessFOCSensorless 控制算法时才需要此工具箱的许可证)

打开实时脚本

点击 mcbExampleConfigurator 打开示例工作目录和与此文档页面相同的实时脚本。

从字典中加载硬件和控制算法

[HardwareList, AlgorithmList] = mcbLoadHardwareAlgoInfo('mcbExampleConfigRepo.sldd');

选择硬件目标和控制算法

请使用此步骤指定您的硬件和控制算法。

在实时脚本的“选择硬件”部分,将 HardwareTarget 字段设置为以下选项之一:

选择硬件

HardwareTarget = HardwareList(1);

在实时脚本的“选择控制算法”部分,将 ControlAlgorithm 字段设置为以下选项之一:

注意:基于 STM32G4xx 的硬件目标不支持 ParamEstSensorless 控制算法。

选择控制算法

ControlAlgorithm    = AlgorithmList(1);

选择好硬件和算法后,运行此实时脚本部分。

查找并打开模型

运行此部分以生成所选硬件和算法参考的目标和主机 Simulink 模型。

mcbOpenExample(HardwareTarget,ControlAlgorithm,'mcbExampleConfigRepo.sldd');
Loading template model...
Setting algorithm references...
Setting model initialization callbacks...
Opening the model...


Files used :
STM32G4xxTargetMotorControl.slx
STM32xxTargetMotorControlData.m
ApplicationPESL.slx
ApplicationAbstractionPESL.slx
MotorPESL.slx
mcbParamEstSensorlessData.m
SCIInAbstractionPESL.slx
SCIOutAbstractionPESL.slx
STM32G4xxHostMotorControl.slx
UserInputsPESLHost.slx
SCIRXPESLHost.slx


Creating a temp directory...
Copying files to temp directory...
Saving generated models to temp directory...
Opening generated models...

有关所生成的电机控制模型的微控制器架构的详细信息,请参阅Software Architecture of Generated Motor Control Models (Motor Control Blockset)

参数化生成的模型

生成的目标模型包含以下两个按钮,可用于对模型进行参数化:

  • 编辑硬件参数-点击此按钮可在编辑器中打开与目标模型关联的硬件初始化脚本。使用此脚本更新设备驱动程序规范(例如,ADC、PWM、通信波特率等)以及逆变器配置参数(例如,逆变器电压、电流检测增益等)。

  • 编辑电机和算法参数-点击此按钮可在编辑器中打开与目标模型关联的算法初始化脚本。使用此脚本更新与控制算法和电机相关的参数。

仿真目标模型

  1. 在目标模型上,点击“仿真选项卡上的“运行”按钮来仿真模型。

  2. 点击仿真选项卡上的数据检查器来查看和分析仿真结果。

生成代码并将模型部署到目标硬件

  1. 完成硬件连接。

  2. 在目标硬件上,点击“硬件”选项卡上的“构建、部署和启动”,将目标模型部署到硬件。

  3. 点击目标模型上的“打开主机模型”按钮,打开关联的主机模型。

  4. 点击 Simulation 选项卡上的 Run 以运行主机模型。

  5. 在主机模型的 Selected_Signals 范围内观察从目标硬件接收到的调试信号。

您可以使用以下可选步骤来添加和删除 HardwareTargetControlAlgorithm 字段选项。

将硬件选项添加到列表中

您可以使用本节中的步骤,在“选择硬件”部分的“硬件目标”字段下,向现有列表添加新的硬件选项。

  1. 在示例工作目录中添加新硬件的 Simulink 模型(包括主机模型)和模型初始化脚本。

  2. 在示例工作目录中,使用以下参量运行函数 mcbAddHardwareToList

mcbAddHardwareToList(list_item_name, modelName, modelParams, ...
    hostExists, hostName, templateRepoName, IntModelled, SciInPath,...
    SciOutPath,ApplAbPath,ApplPath,ApplHighPrioPath,ApplLowPrioPath,...
    ApplSysControlPath, SupportFile1, SupportFile2);

其中:

  • 'list_item_name' - 要添加到 HardwareTarget 字段的新列表项的名称。

  • 'modelName' - 部署到硬件的模型(目标模型)的名称。

  • 'modelParams' - 模型初始化脚本的名称。

  • 'hostExists' - 如果主机文件存在,用于与硬件通信,则指定 'true'。否则,请指定“false”

  • 'hostName' - 主机模型的名称(如果可用)。如果不可用,请指定“NA”。

  • 'templateRepoName' - 此工作流使用的 Simulink 数据字典的名称。

  • 'IntModelled' -如果目标模型中对 ADC 硬件中断进行了建模,则指定为 'true'。否则,请指定“false”

如果将“IntModelled”设置为“false”,则将以下参量设置为“NA”

  • 'SciInPath' - 用户输入应被处理的子系统的相对路径。

  • 'SciOutPath' - 应处理输出调试数据的子系统的相对路径。

  • 'ApplAbPath' - 应用程序抽象应实现的子系统的相对路径。

  • 'ApplPath' - 应用程序算法实现所在的子系统的相对路径。

  • 'ApplHighPrioPath' - ADC 中断服务例程应实现的子系统的相对路径。

  • 'ApplLowPrioPath' - 应用程序慢任务应在子系统中实现的相对路径。

  • 'AplSysControlPath' - 系统状态控制算法应在子系统中实现的相对路径。一般来说,该算法的运行速度比“ApplHighPrioPath”“ApplLowPrioPath”算法要慢。

  • 'SupportFile1''SupportFile2' - 模型运行所需的支持文件(如有)。

例如,要将 TI F28069M Launchpad 选项添加到 HardwareTarget 字段,您可以运行以下命令。

mcbAddHardwareToList('TI F28069M Launchpad', 'C28069mTargetMotorControl',   'C28069TargetMotorControlData', true, 'C28069mHostMotorControl', 'mcbExampleConfigRepo.sldd', true, '/Serial Receive/SCI In Abstraction', '/FastTask/SCI Out Abstraction','/FastTask/Application Abstraction','NA', '/FastTask/FastTask','/SlowTask','/SystemControl', 'NA', 'NA');

将算法引用添加到列表中

您可以使用以下步骤在“选择控制算法”部分的“ControlAlgorithm ”字段下向现有列表添加新的算法引用:

  1. 在示例工作目录中添加新算法参考的子系统参考、算法初始化脚本和主机模型。

  2. 在示例工作目录中,使用以下参量运行函数 mcbAddAlgorithmToList

mcbAddAlgorithmToList(‘list_item_name’,’algorithm_init_script’,’subsystem_ref1’, ’subsystem_ref2’, … ,’host_model1’,’host_model2’, … ,’simulink_data_dictionary.sldd’, ‘subsystem_ref’);

在函数中使用以下参量。

  • 'list_item_name' - 要添加到 ControlAlgorithm 字段的新列表项的名称。

  • 'algorithm_init_script' -新算法的初始化脚本名称。

  • 'subsystem_ref1'、'subsystem_ref2'、… -新算法的 Simulink 子系统引用的名称。

  • 'host_model1'、'host_model2'、… - 主机模型的名称。

  • 'simulink_data_dictionary.sldd' -此工作流使用的 Simulink 数据字典的名称。

例如,要将 QEP 标定选项添加到 ControlAlgorithm 字段,您可以运行以下命令。

mcbAddAlgorithmToList('FOC QEP', 'mcbFocQepData', 'ApplicationFocQep', 'ApplicationAbstractionFocQep', 'SCIInAbstractionFocQep', 'SCIOutAbstractionFocQep', 'MotorFocQep', 'SystemInputsSimFocQep', 'UserInputsFocQepHost', 'SCIRXFocQepHost', 'mcbExampleConfigRepo.sldd',  'ApplicationFocQepHighPrio', 'ApplicationFocQepLowPrio', 'ApplicationFocQepSysControl');

从列表中移除硬件选项

您可以在示例工作目录中运行以下命令,从“选择硬件”部分中“HardwareTarget ”字段下的现有列表中删除硬件选项:

mcbRemoveHardwareFromList(‘list_item_name’,’simulink_data_dictionary.sldd’);

其中:

  • 'list_item_name' - 要删除的硬件的列表项名称。

  • 'simulink_data_dictionary.sldd' -此工作流使用的 Simulink 数据字典的名称。

例如,要从 HardwareTarget 字段中删除 Infineon 选项,您可以运行以下命令:

mcbRemoveHardwareFromList('Infineon','mcbExampleConfigRepo.sldd');

从列表中移除算法引用

您可以在示例工作目录中运行以下命令,从“选择控制算法”部分中“ControlAlgorithm ”字段下的现有列表中删除算法引用:

mcbRemoveAlgorithmFromList(‘list_item_name’,’simulink_data_dictionary.sldd’);

其中:

  • 'list_item_name' - 要删除的算法的列表项的名称。

  • 'simulink_data_dictionary.sldd' -此工作流使用的 Simulink 数据字典的名称。

例如,要从 ControlAlgorithm 字段中删除 QEP Calibration 选项,您可以运行以下命令:

mcbRemoveAlgorithmFromList('FOC QEP','mcbExampleConfigRepo.sldd');