本节将验证位置 PI 模块和位置环路。为了使该环路正常工作,必须成功完成速度环路。当命令电机运行时,电机将进入初始对齐阶段,在该阶段中,电角度和位置编码器角度值将设置为零确保稳定对齐后,电机开始运行。
- 打开 fcl_f2838x_tmdxiddk_settings_cpu1.h 并通过将 BUILDLEVEL 设置为 FCL_LEVEL5 (#define BUILDLEVEL FCL_LEVEL5) 来选择 5 级增量构建选项。
- 通过将 FCL_CNTLR 设置为 PI_CNTLR 或 CMPLX_CNTLR,可以将电流环路调节器选为 PI 控制器或复杂控制器。
- 将 CURRENT_SENSE 方法选为 LEM_CURRENT_SENSE。
- 根据与电机相连的编码器,将 POSITION_ENCODER 选为 QEP_POS_ENCODER 或 T_FORMAT_ENCODER。
- 将 SAMPLING_METHOD 选为 SINGLE_SAMPLING 或 DOUBLE_SAMPLING。如果使用的是 T-format 编码器,请选择 SINGLE_SAMPLING,且 PWM 频率不超过 10 KHz。如需更多信息,请参阅 Topic Link Label5.1.3.3。
- 右键点击工程名称,然后点击 Rebuild Project(重建工程)。编译完成时,点击 Debug (调试)按钮,重置 CPU ,重新启动,启用实时模式,然后运行。
关键步骤可解释如下:
- 在“Watch”(观察)窗口中将 enableFlag 设置为 1。在“Watch”(观察)窗口中看到 isrTicker 变量递增,可确认中断正常运转。
- 向“Expressions”(表达式)窗口中添加变量 pi_pos、posArray、ptrMax 和 posSlewRate。
- 逐渐增加自耦变压器上的电压以获得适当的直流总线电压。
- 将 runMotor 设置为 MOTOR_RUN 以运行电机。电机必须在旋转以跟随命令的位置(如果电机不能正常旋转,请参阅以下注意事项)。
- 电机通过由 refPosGen() 模块设定的预定义运动曲线和位置设置来运行。该模块基本上通过一组在数组 posArray 中定义的值来循环位置基准。这些值表示相对于初始对齐位置的转数。一旦达到数组中定义的某个位置值,电机会暂停一会儿,然后再转向数组中的下一个位置。因此,可以将这些数组值称为停驻位置。在从一个停驻位置过渡到下一个停驻位置期间,过渡速率(或速度)由 posSlewRate 设置。从第一个值重新开始之前在 posArray 中通过的位置数由 ptrMax 决定。因此,请向“Expressions”(表达式)窗口中添加变量 posArray、ptrMax 和 posSlewRate。
- 可以将 posArray 中的停驻位置更改为不同的值,以确定电机是否按照设置的转数旋转。
- 也可以更改停驻位置数量 ptrMax 以设置旋转模式。
- 可以使用 posSlewRate 更改位置压摆率。该速率表示每个采样瞬间的角度(以 pu 为单位)。
- 为获得满意的响应,可重新调整速度和位置 PI 控制器的比例和积分增益。TI 建议先调整速度环路,然后再调整位置环路。
- 降低总线电压、使控制器脱离实时模式并进行复位,从而使系统安全停止。现在,电机停止运转。
图 10-1 显示了实现方框图。
在图 10-2 显示的示波器图中绘制了位置参考和位置反馈。它们存在可以忽略不计的滞后,这可能是软件造成的。如果没有正确选择位置环路控制器的 Kp 和 Ki 增益,则可能导致反馈振荡或响应滞后。
注:
- 如果电机响应不稳定,则电机轴和编码器的旋转方向可能相反。交换与电机任何两相的连接,然后重复进行测试。
- 此处实现的位置控制基于初始对齐的电气位置 (= 0)。如果电机有多个极对,这种对齐方式可能使轴处于不同的机械位置,具体取决于转子的预启动机械位置。如果需要机械位置可重复性或一致性,则必须使用 QEP Index 脉冲来设置一个参考点。这一任务可以用作练习。对于绝对编码器,这可能是显而易见的。