Skip to main content

表现

由于计算占用大量 CPU,因此运动规划在单独的任务中完成。此单独的任务称为规划任务,它与总线任务并行运行。如果 PLC 的性能不足以及时为总线任务规划规划任务中的路径,那么这就是性能问题。

运动规划中的性能问题可能导致 SMC_CP_QUEUE_UNDERRUN 错误,但也可能导致运动不平稳或比预期慢。有关 SMC_CP_QUEUE_UNDERRUN 错误,请参见 常见错误 章节。下面描述了与动作表现相关的问题的诊断。

动作缓慢或急促时的诊断

如果没有性能问题,那么每个动作的计划都是这样的: 有效限度 在整个运动过程中达到。例如,考虑一个简单的二维龙门架,有两个轴 X 和 Y 以及从位置 (0,0) 到 (10,-10) 的 PTP 运动。最大轴速度为 20,最大轴加速度为 100,最大轴抖动为 1000。

预期的运动如下:

sm_img_trajectory1.png

首先以最大加速度建立加速度,直到达到加速度极限值 100。经过短暂的恒定加速阶段后,加速度再次以最大加速度减小,以便以加速度 0 达到速度极限值 20。经过恒定速度阶段后,减速,以便以速度和加速度 0 达到目标位置。

现实运动偏离该理想曲线可能有两个原因:

  1. 由于规划任务中的性能问题,导致规划的运动与理想曲线不符。

  2. 规划的运动与理想曲线相对应,但机器人没有按照预期执行。

案例1:规划任务的性能问题

如果在规划过程中执行出现问题,那么动作可能看起来会像这样:

sm_img_trajectory2.png

这是因为规划任务中的移动规划与公交任务中的执行并行。平均而言,规划任务需要提供与公交任务所需的轨迹一样多的轨迹。如果性能不足以满足这一要求,则移动速度会减慢。这会导致速度曲线呈波浪形。

诊断此类问题的第一个也是最重要的工具是跟踪。除了 fSetPositionfSetVelocity, 和 fSetAcceleration 每个轴的变量, numTimeBudgetExceedednumSlowDownLowIpoQueue 产出 SMC_GroupReadPlanningStatistics 功能块也应该记录。如果这些计数器持续增加,则存在性能问题。

注意

类似于 fSetPositionfSetVelocity, 和 fSetAcceleration 变量,还有 fSetJerk 变量表示抖动。需要注意的是,抖动不是总线任务周期内应用的平均抖动(通常预期如此),而是周期结束时的瞬时抖动。因此, FSetJerk 对于诊断性能问题的意义有限。

改善运动的方法

以下列表包含处理性能问题的步骤:

  • 速度、加速度和加加速度的极限值的调整:

    • 从当前速度减速到静止所需的时间越长,所需的计算能力就越大

    • 因此,速度的有效极限值过高以及加速度和加加速度的有效极限值过低更容易导致性能问题。

    • 尤其是加速度和冲击的极限值不应设置得过低

  • 增加规划任务的优先级,或降低其他任务的优先级(如果其他任务阻碍了规划任务)。规划任务的优先级应仅次于总线任务,为第二高。

  • 如果有多个 CPU 核心可用,则将规划任务分配给专用核心(请参阅规划任务的配置)。

  • 使用 SMC_TuneCPKernel 增加价值 fPlanningInterval 和/或 fSyncBufferDuration 规划参数。

    • fPlanningInterval 参数指定最大规划增量(以秒为单位)。规划任务的循环时间不应永久超过此值。较高的值会降低计算能力,但也可能导致未充分利用速度、加速度和加加速度的设定限值。从起始值 0.016 秒(自 2009 年以来的默认值)开始 CODESYS SoftMotion 从版本4.6.0.0开始,应逐渐增加该值,直到性能可以接受为止。

    • fSyncBufferDuration 参数指定规划任务和总线任务之间的缓冲区大小。规划任务的峰值循环时间不得超过此值。更高的值可以补偿规划任务循环时间的峰值。但与此同时,这也增加了执行中断和中止运动的等待时间。

案例 2:机器人没有按照预期进行规划运动

如果机器人没有按照预期进行规划的运动,则可能是由于以下原因:

  • 控制器实时能力不足

  • 驱动器的控制回路问题

在非实时控制器上,例如 CODESYS Control Win或基于 Linux 的控制器没有底层 Linux 系统的实时补丁,即使性能足够好,也会出现运动太慢或不稳定的情况。如果总线任务没有在配置的时间范围内按时执行,就会发生这种情况。

改善运动的方法

  • 在任务配置的“监控”选项卡上 1,检查总线任务的任务抖动 2 太高。这可能是因为总线任务被具有相同或更高优先级的任务取代,或者因为控制器的实时能力不够强。

  • 如果抖动过高,并且已经确定总线任务具有最高优先级,则控制器的实时性不够。 在这种情况下,请使用实时性更好的控制器。

  • 如果驱动器的控制环路存在问题,则应调整控制环路参数。扭矩前馈控制也可以改善控制环路性能。

    有关详细信息,请参阅:For more information, see: 扭矩限制和扭矩前馈控制

1:建议在上下文菜单中重置任务监控的测量值,因为启动应用程序后的第一个 PLC 循环通常持续时间增加且抖动增加。

2:抖动值最高约为 20 us 时非常好,最高约为 100 us 时也很好。根据所用的驱动器,抖动值更高的操作也可能有效。达到总线任务的任务间隔数量级的抖动值可能会导致上述错误模式。