针对选定的算法和硬件生成电机控制模型
本示例展示了如何使用 Motor Control Blockset™ 生成针对特定硬件和电机控制技术配置的 Simulink 模型。
Motor Control Blockset 提供了一些示例,可帮助您使用硬件板(包括德州仪器® C2000、Speedgoat® 和 STM32G4 系列微控制器)设计电机控制应用程序。这些示例支持开环或标量控制以及闭环或向量控制技术,例如场定向控制 (FOC)。这些示例中支持的最常见电机类型是永磁同步电机 (PMSM)。此外,这些例子既支持无传感器位置计算,也支持基于传感器的位置计算。
为了帮助您轻松找到适合您电机控制应用的解决方案,此工作流程为您提供了一个统一的界面,用于配置您想要使用的硬件和电机控制算法的 Simulink 模型。您可以通过在实时脚本中使用 HardwareTarget 和 ControlAlgorithm 字段来选择硬件和算法。
必需的 MathWorks 产品
仿真 Simulink 模型:
Motor Control Blockset
Stateflow(仅当您使用 ParamEstQEP、ParamEstSensorless 和 FOCSensorless 控制算法时才需要此工具箱的许可证)
生成代码并部署 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、ParamEstSensorless 和 FOCSensorless 控制算法时才需要此工具箱的许可证)
打开实时脚本
点击 mcbExampleConfigurator 打开示例工作目录和与此文档页面相同的实时脚本。
从字典中加载硬件和控制算法
[HardwareList, AlgorithmList] = mcbLoadHardwareAlgoInfo('mcbExampleConfigRepo.sldd');选择硬件目标和控制算法
请使用此步骤指定您的硬件和控制算法。
在实时脚本的“选择硬件”部分,将 HardwareTarget 字段设置为以下选项之一:
TI F28379D Launchpad - 如果您使用的是德州仪器 F28379D LaunchPad 控制器硬件,请选择此选项。
TI F280039C Launchpad - 如果您使用的是德州仪器 F280039C LaunchPad 控制器硬件,请选择此选项。
TI F28P650D Launchpad - 如果您使用的是德州仪器 F28P650D LaunchPad 控制器硬件,请选择此选项。
TI F2800137 Launchpad - 如果您使用的是德州仪器 F2800137 LaunchPad 控制器硬件,请选择此选项。
Speedgoat Baseline - 如果您正在使用 Speedgoat 电机控制套件(带有 IO-397 和电机控制套件的 Baseline 实时目标机器),请选择此选项。
基于 STM32G4xx - 如果您使用的是基于 STM32G4xx 系列处理器的开发板,请选择此选项。
选择硬件
HardwareTarget =
HardwareList(1);在实时脚本的“选择控制算法”部分,将 ControlAlgorithm 字段设置为以下选项之一:
开环 V/F - 如果您想使用开环(或 V/F 或标量)电机控制算法,请选择此选项。有关此算法的详细信息,请参阅开环电机控制 (Motor Control Blockset)和以开环控制方式运行三相 AC 电机并校准 ADC 偏移量 (Motor Control Blockset)。
QEP 标定- 如果您想标定连接到电机的正交编码器传感器 (QEP),请选择此选项。有关 QEP 传感器标定的详细信息,请参阅Position Sensor Offset Calibration for Quadrature Encoder and Hall Sensor (Motor Control Blockset)和PMSM 的正交编码器偏移量校准 (Motor Control Blockset)。
ParamEstQEP - 如果您想使用基于正交编码器的位置检测来估计 PMSM 参数,请选择此选项。有关基于正交编码器的永磁同步电机参数估计的详细信息,请参阅使用参数估计模块估计 PMSM 参数 (Motor Control Blockset)。
FOC QEP - 如果您想使用基于正交编码器进行位置检测的磁场定向控制 (FOC) 电机控制算法,请选择此选项。有关此算法的详细信息,请参阅磁场定向控制 (Motor Control Blockset)和使用正交编码器的 PMSM 磁场定向控制 (Motor Control Blockset)。
ParamEstSensorless - 如果您想使用无传感器位置检测来估计 PMSM 参数,请选择此选项。
FOCSensorless - 如果您想使用无传感器位置检测的场导向控制 (FOC) 电机控制算法,请选择此选项。有关此算法的详细信息,请参阅PMSM 的无传感器磁场定向控制 (Motor Control Blockset)。
注意:基于 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、通信波特率等)以及逆变器配置参数(例如,逆变器电压、电流检测增益等)。
编辑电机和算法参数-点击此按钮可在编辑器中打开与目标模型关联的算法初始化脚本。使用此脚本更新与控制算法和电机相关的参数。
仿真目标模型
在目标模型上,点击“仿真选项卡上的“运行”按钮来仿真模型。
点击仿真选项卡上的数据检查器来查看和分析仿真结果。
生成代码并将模型部署到目标硬件
完成硬件连接。
在目标硬件上,点击“硬件”选项卡上的“构建、部署和启动”,将目标模型部署到硬件。
点击目标模型上的“打开主机模型”按钮,打开关联的主机模型。
点击 Simulation 选项卡上的 Run 以运行主机模型。
在主机模型的 Selected_Signals 范围内观察从目标硬件接收到的调试信号。
您可以使用以下可选步骤来添加和删除 HardwareTarget 和 ControlAlgorithm 字段选项。
将硬件选项添加到列表中
您可以使用本节中的步骤,在“选择硬件”部分的“硬件目标”字段下,向现有列表添加新的硬件选项。
在示例工作目录中添加新硬件的 Simulink 模型(包括主机模型)和模型初始化脚本。
在示例工作目录中,使用以下参量运行函数 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 ”字段下向现有列表添加新的算法引用:
在示例工作目录中添加新算法参考的子系统参考、算法初始化脚本和主机模型。
在示例工作目录中,使用以下参量运行函数 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');