Main Content

适用于自定义硬件的算法导出工作流

此示例说明如何使用任何自定义电机控制硬件(Motor Control Blockset™ 示例中未使用的硬件)运行使用磁场定向控制 (FOC) 的三相永磁同步电机 (PMSM)。使用算法导出工作流,涉及使用 Simulink® 和 Embedded Coder® 生成控制算法代码,然后将其与手动编写或外部生成的硬件驱动程序代码集成。此示例说明算法导出工作流以及中间步骤。

该示例使用以下硬件作为参考,不过您也可以使用任何电机控制硬件:

  • 控制器:STMicroelectronics® STM32F302R8

  • 逆变器:STMicroelectronics® X-NUCLEO-IHM07M1

  • 电机:BLY171D(包括正交编码器)

参考此示例,您可以自定义控制算法并将其与电机控制硬件的驱动程序集成。在此示例中,我们使用 STM32 Cube MX 软件针对硬件驱动程序进行配置并生成代码。此示例支持任何三相 PMSM。

实现 FOC 算法需要实时转子位置反馈。此示例使用正交编码器来测量转子位置。有关 FOC 的详细信息,请参阅磁场定向控制 (FOC)

该示例包括三个工作流。

1.开环控制和 ADC 偏移量校准 - 该工作流使用一种算法来通过开环控制(也称为标量控制或伏特/赫兹控制)运行 PMSM。您可以使用此工作流来检查硬件连接的完整性,并计算硬件上可用的电流传感器的 ADC 偏移量。

2.正交编码器偏移量校准 - 此工作流使用一种算法来计算转子的 d 轴与正交编码器检测到的索引脉冲位置之间的偏移量。控制算法(在磁场定向控制工作流中可用)需要此偏移量来精确计算转子位置,这是实现 FOC 所必需的。

3.磁场定向控制 - 此工作流使用一种算法来通过闭环磁场定向控制 (FOC) 运行 PMSM。该工作流使用 ADC 和正交传感器偏移量作为输入。

每个工作流都包括在硬件上准备、部署和运行算法的下列步骤:

1.使用 Embedded Coder® 为控制算法生成代码

2.获取硬件驱动程序的 C 代码

3.将控制算法代码与驱动程序代码相集成

4.将集成代码部署到硬件

5.使用主机 Simulink® 模型控制电机。

打开 MATLAB 工程

使用以下方法之一打开 MATLAB® 工程:

  • 点击打开工程

  • 运行以下命令访问示例的支持文件并打开 MATLAB 工程。

openExample('mcb/AlgorithmExportWorkflowsForCustomHardwareExample');

该工程包含三个文件夹,每个文件夹对应一个运行最终 FOC 算法所需的工作流。每个文件夹包含以下内容:

  • 包含电机、逆变器和目标硬件详细信息的数据脚本。

  • 为控制算法生成代码的算法模型。生成的代码将存储在文件夹 [project_root]/work/code 中。

  • 与目标硬件通信的主机模型。

  • C 代码,显示如何集成生成的算法代码和硬件驱动程序代码(特定于 STM32F302R8 和 X-NUCLEO-IHM07M1)。

除了这三个文件夹,该工程还包括 .IOC 文件。您可以将此文件与 STM32 Cube MX 结合使用,以配置目标的外设并生成代码。工程中可用的 .IOC 文件特定于 STM32F302R8 和 X-NUCLEO-IHM07M1 硬件。

适用于自定义硬件的工作流

按以下顺序执行这些工作流。

1. Open-Loop Control and ADC Offset Calibration

2. Quadrature Encoder Offset Calibration

3. Field-Oriented Control