- 将交流电源输出设置为 0V (50/60Hz),打开交流电源,将输入电压从 0V 缓慢增加至 220V 交流。
- 必须在头文件 user_mtr1.h 中定义所需的电机参数,如以下示例代码所示。如果用户不太了解电机参数,那么在示例实验中使用 FAST 估算器的情况下,可以使用电机识别来获得电机参数。
#define USER_MOTOR1_TYPE MOTOR_TYPE_PM
#define USER_MOTOR1_NUM_POLE_PAIRS (4)
#define USER_MOTOR1_Rr_Ohm (NULL)
#define USER_MOTOR1_Rs_Ohm (0.38157931f)
#define USER_MOTOR1_Ls_d_H (0.000188295482f)
#define USER_MOTOR1_Ls_q_H (0.000188295482f)
#define USER_MOTOR1_RATED_FLUX_VpHz (0.0396642499f)
- 将 sys_main.c 文件中的 userParams.flag_bypassMotorId 值更改为“false”以启用电机识别并作为以下示例代码。
// false->enable identification, true->disable identification
userParams_M1.flag_bypassMotorId = false;
- 根据电机规格在 user_mtr1.h 文件中设置正确的识别值。
#define USER_MOTOR1_RES_EST_CURRENT_A (1.5f) // A - 10~30% of rated current of the motor
#define USER_MOTOR1_IND_EST_CURRENT_A (-1.0f) // A - 10~30% of rated current of the motor, just enough to enable rotation
#define USER_MOTOR1_MAX_CURRENT_A (4.5f) // A - 30~150% of rated current of the motor
#define USER_MOTOR1_FLUX_EXC_FREQ_Hz (40.0f) // Hz - 10~30% of rated frequency of the motor
- 重新构建工程并将代码加载到控制器中,通过点击按钮 来运行工程,或点击“Debug”选项卡中的 Run → Resume。经过固定的时长后,systemVars.flagEnableSystem 应设置为 1,这意味着偏移校准已完成并且浪涌电源继电器已开启。故障标志 motorVars_M1.faultMtrUse.all 应等于 0,否则用户应检查电流和电压检测电路,如节 3.5.1中所述。
- 在“Expressions”窗口中将变量 motorVars_M1.flagEnableRunAndIdentify 设置为 1(如图 3-46 所示),此时将执行电机识别,整个过程需要大约 150s。motorVars_M1.flagEnableRunAndIdentify 等于 0 并且电机停止后,电机参数即被识别。复制“watch”窗口中的变量值,替换 user_mtr1.h 文件中定义的电机参数,如下所示:
- USER_MOTOR1_Rs_Ohm = motorSetVars_M1.Rs_Ohm 的值
- USER_MOTOR1_Ls_d_H = motorSetVars_M1.Ls_d_H 的值
- USER_MOTOR1_Ls_q_H = motorSetVars_M1.Ls_q_H 的值
- USER_MOTOR1_RATED_FLUX_VpHz = motorSetVars_M1.flux_VpHz 的值
- 成功识别电机参数后,将 userParams_M1.flag_bypassMotorId 值设置为“true”以禁用识别,重新构建工程并将代码加载到控制器中。
- 按照以下步骤,该示例可以支持在线识别电机,而无需重新加载代码。
- 将 motorVars_M1.flagEnableRunAndIdentify 设为 0 停止运行电机。
- 将 motorVars_M1.flagEnableMotorIdentify 设置为“1”以启用识别。
- 将 motorVars_M1.flagEnableRunAndIdentify 设为 1 开始识别电机参数。motorVars_M1.flagEnableMotorIdentify 将自动设为“0”,这意味着识别正在进行。
- 如上面的步骤 6 所述,将识别新的电机参数。
- 识别完整的电机参数或在 user_mtr1.h 文件中设置正确的电机参数后。要开始运行电机,请执行以下步骤。
- 再次将变量 motorVars_M1.flagEnableRunAndIdentify 设为 1 以开始运行电机。
- 将目标速度值设为变量 motorVars_M1.speedRef_Hz,并观察电机轴速度如何随设定速度改变。
- 要改变加速度,请在变量 motorVars_M1.accelerationMax_Hzps 中输入不同的加速度值。
- 如节 3.4.2 或节 3.4.3 所述,使用 PWMDAC 或 DAC128S 模块显示监视变量。电机角度和电流波形如图 3-47 所示。
- FOC 系统电流控制器的默认比例增益 (Kp) 和积分增益 (Ki) 在函数 setupControllers() 中计算。调用 setupControllers() 后,全局变量 motorSetVars_M1.Kp_Id、motorSetVars_M1.Ki_Id、motorSetVars_M1.Kp_Iq 和 motorSetVars_M1.Ki_Iq 将使用新计算得出的 Kp 和 Ki 增益进行初始化。如图 3-46 中所示,调整“Expressions”窗口中这四个变量的 Kp 和 Ki 值,使电流控制器实现预期的电流控制带宽和响应。Kp 增益会产生一个零点,以抵消电机定子的极点,可以轻松地计算得出。Ki 增益可调整电流控制器-电机系统的带宽。如果需要一个速度控制系统来实现特定阻尼,电流控制器的 Kp 增益将与速度控制系统的时间常数相关。
- FOC 系统速度控制器的默认比例增益 (Kp) 和积分增益 (Ki) 也在函数 setupControllers() 中计算。调用 setupControllers() 后,全局变量 motorSetVars_M1.Kp_spd 和 motorSetVars_M1.Ki_spd 将使用新计算得出的 Kp 和 Ki 增益进行初始化。如图 3-46 中所示,调整“Expressions”监视窗口中这两个变量的 Kp 和 Ki 值,使速度控制器实现预期的电流控制带宽和响应。与调整电流控制器相比,调整速度控制器的未知情况更多,默认计算得出的 Kp 和 Ki 只是参考值作为起点。
- 将变量 motorVars_M1.flagEnableRunAndIdentify 设为“0”停止运行电机。
- 完成后,现在可以停止控制器,并终止调试连接。通过首先点击工具栏上的“Halt”按钮 或点击 Target → Halt 来完全停止控制器。最后,通过点击 或点击 Run → Reset 来重置控制器。
- 通过点击“Terminate Debug Session” 或点击 Run → Terminate 来关闭 CCS 调试会话。
当电机正向旋转时,将 DAC128S085EVM 与示波器结合使用可监测来自 FAST 估算器的电机转子角度、电机的反馈速度以及电机的相电流,如图 3-47 所示,方法是将 motorVars_M1.speedRef_Hz 设置为正基准值。
如节 3.3.2 所示,在示例实验中可以支持多种 FOC 算法。用户可以在实验工程中使用一个或两个算法进行电机控制,如表 3-7 所示。
用户可以通过在工程属性中添加预定义名称 MOTOR1_FAST 和 MOTOR1_ESMO,在工程中同时实施 FAST 和 eSMO 估算器,如节 3.3.1 中所述。按照上述操作步骤重新构建、加载和运行工程。设置将如图 3-46 中所示。
- systemVars.estType 值等于 EST_TYPE_FAST_ESMO,这意味着 FAST 和 eSMO 估算器在该工程中处于启用状态。
- motorVars_M1.estimatorMode 等于 ESTIMATOR_MODE_FAST,这意味着 FAST 估算器正在用于无传感器 FOC;等于 ESTIMATOR_MODE_ESMO,这意味着 eSMO 估算器正在用于无传感器 FOC。
- 图 3-48 显示了 FAST 和 eSMO 的估算转子角度。通过将 motorVars_M1.speedRef_Hz 设置为正 值,电机在 FAST 正向 旋转的情况下运行。
- 图 3-52 显示了 FAST 和 eSMO 的估算转子角度。通过将 motorVars_M1.speedRef_Hz 设置为负 值,电机在 FAST 逆向 旋转的情况下运行。
- 用户可以将值更改为 ESTIMATOR_MODE_ESMO 以选择无传感器 FOC 的 eSMO 估算器。用户还可以更改值以动态地使用估算器进行切换。
当电机正向旋转时,将 DAC128S085EVM 与示波器结合使用可监测来自 FAST 和 eSMO 估算器的电机转子角度、电机的相电流,如图 3-48 所示,方法是将 motorVars_M1.speedRef_Hz 设置为正基准值。
当电机逆向旋转时,将 DAC128S085EVM 与示波器结合使用可监测来自 FAST 和 eSMO 估算器的电机转子角度、电机的相电流,如图 3-49 所示,方法是将 motorVars_M1.speedRef_Hz 设置为负基准值。
用户可以通过在工程属性中添加预定义名称 MOTOR1_FAST 和 MOTOR1_ENC,在工程中同时实施 FAST 和编码器估算器,如节 3.3.1 中所述。按照上述操作步骤重新构建、加载和运行工程。
- systemVars.estType 值等于 EST_TYPE_FAST_ENC,这意味着 FAST 和编码器估算器在该工程中处于启用状态。
- motorVars_M1.estimatorMode 等于 ESTIMATOR_MODE_FAST,这意味着 FAST 估算器正在用于无传感器 FOC;等于 ESTIMATOR_MODE_ENC,这意味着编码器估算器正在用于有传感器 FOC。
- 图 3-50 展示了 FAST 和编码器的估算转子角度。通过将 motorVars_M1.speedRef_Hz 设置为正值,电机在 FAST 正向旋转的情况下运行。
- 用户可以将值更改为 ESTIMATOR_MODE_ENC,以选择有传感器 FOC 的编码器估算器。用户还可以更改值以动态地使用估算器进行切换。
当电机正向旋转时,将 DAC128S085EVM 与示波器结合使用可监测来自 FAST 估算器和编码器的电机转子角度、电机的相电流,如图 3-50 所示,方法是将 motorVars_M1.speedRef_Hz 设置为正基准值。
用户可以通过在工程属性中添加预定义名称 MOTOR1_FAST 和 MOTOR1_HALL,在工程中同时实施 FAST 和霍尔传感器估算器,如节 3.3.1 中所述。按照上述操作步骤重新构建、加载和运行工程。
- systemVars.estType 值等于 EST_TYPE_FAST_HALL,这意味着 FAST 和霍尔传感器估算器在该工程中处于启用状态。
- motorVars_M1.estimatorMode 等于 ESTIMATOR_MODE_FAST,这意味着 FAST 估算器正在用于无传感器 FOC;等于 ESTIMATOR_MODE_HALL,这意味着霍尔传感器估算器正在用于有传感器 FOC。
- 图 3-51 中显示了 FAST 和霍尔传感器的估算转子角度。通过将 motorVars_M1.speedRef_Hz 设置为正值,电机在 FAST 正向旋转的情况下运行。
- 图 3-51 中显示了 FAST 和霍尔传感器的估算转子角度。通过将 motorVars_M1.speedRef_Hz 设置为负值,电机在霍尔传感器逆向旋转的情况下运行。
- 用户可以将值更改为 ESTIMATOR_MODE_HALL 以选择有传感器 FOC 的霍尔传感器估算器。用户还可以更改值以动态地使用估算器进行切换。
当电机正向旋转时,将 DAC128S085EVM 与示波器结合使用可监测来自 FAST 估算器和霍尔传感器的电机转子角度、电机的相电流,如图 3-51 所示,方法是将 motorVars_M1.speedRef_Hz 设置为正基准值。
当电机逆向旋转时,将 DAC128S085EVM 与示波器结合使用可监测来自 FAST 估算器和霍尔传感器的电机转子角度、电机的相电流,如图 3-52 所示,方法是将 motorVars_M1.speedRef_Hz 设置为负基准值。
,用户可以通过在工程属性中添加预定义名称 MOTOR1_ESMO 和 MOTOR1_ENC,在工程中同时实施 eSMO 和编码器估算器,如节 3.3.1 中所述。按照上述操作步骤重新构建、加载和运行工程。
- systemVars.estType 值等于 EST_TYPE_ESMO_ENC,这意味着 eSMO 和编码器估算器在该工程中处于启用状态。
- motorVars_M1.estimatorMode 等于 ESTIMATOR_MODE_ESMO,这意味着 eSMO 估算器正在用于无传感器 FOC;等于 ESTIMATOR_MODE_ENC,这意味着编码器估算器正在用于有传感器 FOC。
- 来自 eSMO 和编码器的估算转子角度如图 3-53 所示。通过将 motorVars_M1.speedRef_Hz 设置为正值,电机在 eSMO 正向旋转的情况下运行。
- 用户可以将值更改为 ESTIMATOR_MODE_ENC,以选择有传感器 FOC 的编码器估算器。用户还可以更改值以动态地使用估算器进行切换。
当电机正向旋转时,将 DAC128S085EVM 与示波器结合使用可监测来自 eSMO 估算器和编码器的电机转子角度、电机的相电流,如图 3-53 所示,方法是将 motorVars_M1.speedRef_Hz 设置为正基准值。