- 打开交流或直流电源,逐渐增加电源上的输出电压以获得适当的直流母线电压。
- 必须在头文件 user_mtr1.h 中定义所需的电机参数,如以下示例代码所示。
#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)
- 构建工程并将代码加载到控制器中,通过取消选中“Tools”>“ARM Advanced Features”中的“Data Cache Enabled”来禁用数据缓存,通过点击“Resume”按钮来运行工程,或点击“Debug”选项卡中的 Run → Resume。经过固定的时长后,systemVars.flagEnableSystem 设置为 1,这意味着偏移校准已完成并且浪涌电源继电器已开启。电机故障标志 motorVars_M1.faultMtrUse.all 等于 0,否则用户必须检查电流和电压检测电路,如节 4.4.1 中所述。
- 在“Expressions”窗口中将变量 motorVars_M1.flagEnableRunAndIdentify 设置为 1,如图 4-26 所示。
- 开始运行电机后:
- 将目标速度值设为变量 motorVars_M1.speedRef_Hz,并观察电机轴速度如何随设定速度改变。
- 要改变加速度,请在变量 motorVars_M1.accelerationMax_Hzps 中输入不同的加速度值。
- 如节 4.5.2 所述,使用 PWMDAC 模块显示监视变量。电机角度和电流波形如图 4-27 所示。
- FOC 系统电流控制器的默认比例增益 (Kp) 和积分增益 (Ki) 在函数 setupControllers() 中计算。调用 setupControllers() 后,全局变量 motorSetVars_M1.Kp_Id、motorSetVars_M1.Ki_Id、motorSetVars_M1.Kp_Iq 和 motorSetVars_M1.Ki_Iq 将使用新计算得出的 Kp 和 Ki 增益进行初始化。如图 4-26 中所示,调整“Expressions”窗口中这四个变量的 Kp 和 Ki 值,使电流控制器实现预期的电流控制带宽和响应。Kp 增益会产生一个零点,以抵消电机定子的极点,可以轻松地计算得出。Ki 增益可调整电流控制器-电机系统的带宽。如果需要一个速度控制系统来实现特定阻尼,电流控制器的 Kp 增益将与速度控制系统的时间常数相关。
- 将变量 motorVars_M1.flagEnableRunAndIdentify 设为 0 停止运行电机。
- 完成后,现在可以停止控制器,并终止调试连接。通过首先点击工具栏上的“Suspend”按钮或点击 Target → Halt 来完全停止控制器。最后,通过点击“CPU Reset”按钮或依次点击 Run → Reset 来复位控制器。
- 通过点击“Terminate Debug Session”按钮或依次点击 Run → Terminate 来关闭 CCS 调试会话。
如节 4.2.2 所示,工程中可支持多种 FOC 算法。用户可以使用一种(eSMO、霍尔或编码器)算法或两种算法(eSMO + 编码器)进行工程中的电机控制。
,用户可以通过在工程属性中添加预定义名称 MOTOR1_ESMO 和 MOTOR1_ENC,在工程中同时实施 eSMO 和编码器估算器,如节 4.2.1 中所述。按照上述操作步骤,重新构建、加载和运行工程。
- systemVars.estType 值等于 EST_TYPE_ESMO_ENC,这意味着 eSMO 和编码器估算器在该工程中处于启用状态。
- motorVars_M1.estimatorMode 等于 ESTIMATOR_MODE_ESMO,这意味着 eSMO 估算器正在用于无传感器 FOC;等于 ESTIMATOR_MODE_ENC,这意味着编码器估算器正在用于有传感器 FOC。
- 来自 eSMO 和编码器的估算转子角度如图 4-28 所示。通过将 motorVars_M1.speedRef_Hz 设置为正值,电机在 eSMO 正向旋转的情况下运行。
- 用户可以将值更改为 ESTIMATOR_MODE_ENC,以选择有传感器 FOC 的编码器估算器。用户还可以更改值以动态地使用估算器进行切换。