使用正交编码器的 PMSM 磁场定向控制
此示例采用磁场定向控制 (FOC) 方法来控制三相永磁同步电机 (PMSM) 的转速。FOC 算法需要转子位置反馈,该反馈通过正交编码器获得。有关 FOC 的详细信息,请参阅磁场定向控制 (FOC)。
此示例使用正交编码器来测量转子位置。正交编码器由一个具有两个轨道或通道的圆盘组成,这两个轨道或通道的编码电相位差为 90 度。这就会产生两个相位差为 90 度的脉冲(A 和 B)和一个索引脉冲 (I)。因此,控制器使用 A 和 B 通道之间的相位关系以及通道状态的转换来确定电机的旋转方向。
模型
该示例包括以下模型:
您可以将这些模型用于仿真和代码生成。您也可以使用 open_system 命令打开 Simulink® 模型。例如,对基于 F28069M 的控制器使用以下命令。
open_system('mcb_pmsm_foc_qep_f28069m.slx');
对于可用于不同硬件配置的模型名称,请参阅“生成代码并将模型部署到目标硬件”一节中的“必需的硬件”主题。
必需的 MathWorks® 产品
要仿真模型,您需要:
1.对于模型:mcb_pmsm_foc_qep_f28069m 和 mcb_pmsm_foc_qep_f28069LaunchPad
Motor Control Blockset™
Fixed-Point Designer™
2.对于模型:mcb_pmsm_foc_qep_f28379d
Motor Control Blockset™
要生成代码并部署模型,您需要:
1.对于模型:mcb_pmsm_foc_qep_f28069m 和 mcb_pmsm_foc_qep_f28069LaunchPad
Motor Control Blockset™
Embedded Coder®
C2000™ Microcontroller Blockset
Fixed-Point Designer™
2.对于模型:mcb_pmsm_foc_qep_f28379d
Motor Control Blockset™
Embedded Coder®
C2000™ Microcontroller Blockset
Fixed-Point Designer™(仅在优化代码生成时需要)
前提条件
1.获取电机参数。我们对 Simulink® 模型提供了默认电机参数,您可以用电机数据表或其他来源的值替换这些默认值。
不过,如果您有电机控制硬件,则可以通过使用 Motor Control Blockset 参数估计工具来估计要使用的电机的参数。有关说明,请参阅使用推荐的硬件估计 PMSM 参数。
参数估计工具使用估计的电机参数更新 motorParam 变量(在 MATLAB® 工作区中)。
2.如果您从数据表或其他来源获得电机参数,请在与 Simulink® 模型相关联的模型初始化脚本中更新电机参数和逆变器参数。有关说明,请参阅估计控制增益和使用工具函数。
如果您使用参数估计工具,则可以在模型初始化脚本中更新逆变器参数,但不能更新电机参数。该脚本会自动从更新后的 motorParam 工作区变量中提取电机参数。
仿真模型
此示例支持仿真。请按照以下步骤仿真模型。
1.打开此示例附带的一个模型。
2.点击仿真选项卡上的运行来仿真该模型。
3.点击仿真选项卡上的数据检查器来查看和分析仿真结果。
生成代码并将模型部署到目标硬件
本节将指导您生成代码并在目标硬件上运行 FOC 算法。
此示例使用一个主机模型和一个目标模型。主机模型是控制器硬件板的一个用户界面。您可以在主机上运行主机模型。使用主机模型的前提条件是将目标模型部署到控制器硬件板上。主机模型使用串行通信对目标 Simulink® 模型发出指令,并以闭环控制方式运行电机。
必需的硬件
此示例支持以下硬件配置。您还可以在 MATLAB® 命令提示符下使用目标模型名称打开对应硬件配置的模型。
F28069M 控制板 + DRV8312-69M-KIT 逆变器:mcb_pmsm_foc_qep_f28069m
有关与前述硬件配置相关的连接,请参阅 F28069 控制卡配置。
LAUNCHXL-F28069M 控制器 + BOOSTXL-DRV8305 逆变器:mcb_pmsm_foc_qep_f28069LaunchPad
LAUNCHXL-F28379D 控制器 +(BOOSTXL-DRV8305 或 BOOSTXL-3PHGANINV)逆变器:mcb_pmsm_foc_qep_f28379d
注意:使用 BOOSTXL-3PHGANINV 逆变器时,请确保 BOOSTXL-3PHGANINV 的底层和 LAUNCHXL 板之间有适当的绝缘。
有关与前述硬件配置相关的连接,请参阅 LAUNCHXL-F28069M 和 LAUNCHXL-F28379D 配置。
生成代码并在目标硬件上运行模型
1.仿真目标模型并观测仿真结果。
2.完成硬件连接。
3.该模型自动计算 ADC(或电流)偏移值。要禁用此功能(默认启用),请在模型初始化脚本中将变量 inverter.ADCOffsetCalibEnable 的值更新为 0。
您也可以计算 ADC 偏移值,并在模型初始化脚本中手动更新它。有关说明,请参阅以开环控制方式运行三相交流电机并校准 ADC 偏移量。
4.计算正交编码器索引偏移值,并在与目标模型相关联的模型初始化脚本中更新它。有关说明,请参阅 PMSM 的正交编码器偏移量校准。
注意:验证连接到电机的正交编码器中可用的刻线数量。检查并更新模型初始化脚本中可用的变量 pmsm.QEPSlits
。此变量对应于正交编码器模块的 Encoder slits 参数。有关 Encoder slits 和 Encoder counts per slit 参数的更多详细信息,请参阅Quadrature Decoder。
5.按所需的硬件配置打开目标模型。如果您要更改该模型的默认硬件配置设置,请参阅模型配置参数。
6.将一个示例程序加载到 LAUNCHXL-F28379D 的 CPU2(例如使用 GPIO31 操作 CPU2 蓝色 LED 的程序 c28379D_cpu2_blink.slx),以确保 CPU2 没有错误地配置为使用预留给 CPU1 的板载外设。
7.点击硬件选项卡上的编译、部署和启动以将目标模型部署到硬件上。
8.点击目标模型中的主机模型超链接以打开关联的主机模型。您也可以使用 open_system 命令打开主机模型。例如,对基于 F28069M 的控制器使用以下命令。
open_system('mcb_host_model_f28069m.slx');
有关主机模型和目标模型之间串行通信的详细信息,请参阅Host-Target Communication。
9.在与目标模型关联的模型初始化脚本中,使用变量 target.comport 指定通信端口。该示例使用此变量来更新主机模型中可用的 Host Serial Setup、Host Serial Receive 和 Host Serial Transmit 模块的端口参数。
10.更新主机模型中的 Reference Speed 值。
11.点击仿真选项卡上的运行以运行主机模型。
12.将 Start / Stop Motor 开关的位置切换到 On 以开始运行电机。
13.在主机模型的 Time Scope 中,观测来自 RX 子系统的调试信号。
注意:如果您使用基于 F28379D 的控制器,还可以选择要监控的调试信号。