Main Content

使用自定义硬件估计 PMSM 参数

此示例包括一个算法。自定义电机控制硬件(在 Motor Control Blockset™ 示例中未使用的硬件)通过该算法来确定永磁同步电机 (PMSM) 的参数。算法确定以下参数:

  • 相电阻,${R_s}$(欧姆)

  • d 轴电感,${L_d}$(亨)

  • q 轴电感,${L_q}$(亨)

  • 反电动势常量,${K_e}$(Vpk_LL/krpm,其中 Vpk_LL 是线电压峰值)

  • 电机惯量,$J$ (Kg.m^2)

  • 摩擦常量,$B$ (N.m.s)

该算法接受最少的必需输入,并在目标硬件上运行测试以估计 PMSM 参数。

该示例需要正交编码器来测量转子位置并提供实时转子位置反馈。此工作流帮助您将参数估计算法与电机控制硬件的驱动程序相集成。它支持任何三相 PMSM。

该工作流包括以下四个步骤,用于在硬件上准备、部署和运行 PMSM 参数估计算法:

1.使用 Embedded Coder® 为参数估计算法生成代码

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

3.将参数估计算法代码与驱动程序代码集成在一起

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

注意:此工作流不支持仿真。您可以使用任何电机控制硬件来运行此示例。

前提条件

  • 确保 PMSM 有正交编码器且已校准。

参数估计算法需要通过正交编码器检测电机位置。为了使用该传感器正确检测电机位置,请对连接到在测电机的正交编码器进行校准。有关说明,请参阅 Quadrature Encoder Offset Calibration

  • 确保 PMSM 处于空载状态。

自定义硬件配置

  • 控制器硬件

  • 逆变器硬件

  • 具有正交编码器的 PMSM

  • 直流电源

必需的 MathWorks 产品

要构建此示例中包含的参数估计算法,您需要以下产品:

  • Motor Control Blockset™

  • Fixed-Point Designer™

  • Embedded Coder®

打开 MATLAB® 工程并准备参数估计模型

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

  • 点击打开工程

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

openExample('mcb/EstimatePMSMParametersUsingCustomHardwareExample');

MATLAB 工程将打开并显示以下文件:

  • parameter_estimation_algorithm.slx(包含参数估计算法的模型)

  • parameter_estimation_init.m(参数估计算法的模型初始化脚本)

注意:

  • 在模型初始化脚本 parameter_estimation_init.m 中验证并更新电机、逆变器以及与目标硬件和参数估计算法相关的其他参数。

  • 电机的额定转速(变量 motorParam.ratedSpeed)必须低于 25000 RPM。

  • 这些测试旨在保护硬件免受过流故障的影响。然而,为了确保这些故障不会发生,需要保持电机的额定电流(变量 motorParam.nomCurrent)小于逆变器支持的最大电流。

  • 如果您有基于 SMPS 的直流电源设备,出于安全原因,请对电源设置安全电流范围。

使用 Embedded Coder 为参数估计算法生成代码

1.打开 MATLAB 工程后,双击 parameter_estimation_algorithm.slx 模型。

2.选择建模 > 模型设置 > 模型设置以打开“配置参数”对话框。

3.求解器选项卡的求解器选择区域,更新类型求解器字段。

4.在“配置参数”对话框的硬件实现选项卡中,根据您的硬件配置参数。

5.在模型初始化脚本 (parameter_estimation_init.m) 中更新硬件设置参数(包括正交编码器和 ADC 偏移量)。

6.在模型的 Simulink 工具条中,选择 App > Embedded Coder 以打开 Embedded Coder。

7.在 Simulink 工具条中,选择 C 代码 > 代码接口 > 默认代码映射以打开“代码映射 - C”对话框。

8.在“代码映射 - C”对话框中,打开 Functions 选项卡。

9.对于列出的 C 函数,点击 Function Preview 列下的超链接以打开“配置 C Initialize 函数接口”对话框。

10.使用“配置 C Initialize 函数接口”对话框配置 C 函数的接口和参量。

11.点击应用确定以完成 C 函数的配置。

12.对所有列出的函数重复步骤 9 至 11。

13.在目标模型的 Simulink 工具条中,选择 C 代码 > 生成代码 > 编译来编译模型,并为电流控制器的目标模型生成 .c 文件。

下图显示在生成的电流控制器代码中可用的 C 函数的示例。

注意:生成的 C 函数使用您在步骤 10 中配置的接口。

获取自定义硬件驱动程序的 C 代码

您可以使用硬件制造商支持的代码生成软件来配置硬件外设并为硬件驱动程序生成 C 代码。

您也可以使用手动编写的驱动程序代码。

将参数估计算法代码和驱动程序代码集成在一起

1.使用配置的函数参数从驱动程序代码中调用参数估计算法函数。下图显示对参数估计算法 C 函数的调用。

2.使用函数调用的返回值来完成驱动程序与参数估计算法的集成。

下图描述示例的程序控制流。

有关推荐的代码结构(Motor Control Blockset™ 示例使用的代码结构)的其他详细信息,请参阅 Program Control Flow of Motor Control Blockset Examples

将集成的代码部署到硬件

1.完成硬件连接。

2.使用硬件制造商支持的代码生成和部署软件,从集成的代码中编译、构建和生成二进制(例如 .HEX)文件。使用软件将二进制文件烧写到目标硬件。

3.在目标硬件上运行的集成代码将计算出的电机参数保存在以下全局变量中:

  • Rs - 相电阻

  • Ld - d 轴电感

  • Lq - q 轴电感

  • Bemf - 反电动势常量

  • J - 电机惯量

  • B - 摩擦常量