Skip to main content

与移动坐标系同步

集成的跟踪功能允许对相对于移动坐标系的运动进行编程。一个典型的用例是从传送带上拾取产品并将其放在不同的传送带上。在为每条皮带定义了一个动态坐标系后,用户可以简单地为相对于这些坐标系的运动提供目标位置。 CODESYS SoftMotion 负责叠加轴组的指令运动和皮带的运动。

典型的跟踪运动包括三个阶段:

  • Tracking in:从另一个坐标系移动到动态坐标系中。到达目标位置后,轴组将跟随动态坐标系运动。

  • 跟踪移动:移动到同一动态坐标系内的不同位置。命令的运动和动态坐标系的运动将被叠加。

  • Tracking out:从动态坐标系移动到不同的坐标系。到达目标位置后,轴组的运动将不再受动坐标系运动的影响。

定义动态坐标系

实现动态跟踪应用程序的第一步是定义动态坐标系。 CODESYS SoftMotion 提供四个用于定义动态坐标系的功能块:

  • MC_TrackConveyorBelt:一个易于使用的功能块,适用于跟踪传送带的常见用例。通过以下方式提供对实际皮带的参考 ConveyorBelt 输入,需要 SoftMotion 类型的轴 AXIS_REF_SM3.

  • MC_TrackRotaryTable:一个易于使用的功能块,适用于跟踪转台的常见用例。通过以下方式提供对实际转台的参考 RotaryTable 输入,需要 SoftMotion 类型的轴 AXIS_REF_SM3.

  • MC_SetDynCoordTransform:功能块的工作方式类似于 MC_TrackConveyorBeltMC_TrackRotaryTable, 但是,不是由单个轴控制,而是由一个完整的轴组控制。这允许实现具有多达六个自由度的动态坐标系。

  • SMC_SetDynCoordTransformEx:功能块允许实现完全自定义的动态坐标系。

四个功能块中的每一个都有一个 CoordSystem 输入基本上允许给坐标系一个名字,要么 PCS_1 或者 PCS_2.当命令运动时,坐标系以此名称引用。

命令移动到动态坐标系中的某个位置

定义动态坐标系后,命令移动到该坐标系中的某个位置很容易。每个运动功能块,例如 MC_MoveLinearAbsolute, 有个 CoordSystem 输入。此输入必须设置为名称(PCS_1 或者 PCS_2) 赋予动态坐标系。这 Position 然后可以将输入设置为相对于动态坐标系原点的所需位置。执行移动功能块将导致移动到移动坐标系内的位置。一旦到达目标位置,轴组将遵循动态坐标系,同时停留在该相对位置。

动态坐标系功能块的“InUse”输出

每个动态坐标系功能块(MC_TrackConveyorBelt, MC_TrackRotaryTable, MC_SetDynCoordTransform, 和 SMC_SetDynCoordTransformEx) 有一个 InUse 输出。不允许在坐标系仍在使用时重新启动功能块,否则会导致错误 SMC_AXIS_GROUP_PCS_STILL_IN_USE.一旦命令移动到坐标系中的某个位置,就会立即使用动态坐标系。它将一直使用,直到到达不同坐标系中的目标位置。

跟踪运动的轴限制

轴限制必须考虑坐标系的运动以及相对于坐标系的命令运动。如果为了跟随坐标系需要高轴动力学,则相对于坐标系的运动可能很慢或根本不可能。如果轴组接近运动学的奇点,这甚至可能发生在移动速度相对较慢的坐标系中。

有关详细信息,请参阅: 标签:常规

跟踪时 CP 运动的路径动力学

必须特别考虑 CP 运动的路径动态。这包括 VelocityAccelerationDeceleration, 和 Jerk 输入 MC_MoveLinearAbsoluteMC_MoveLinearRelativeMC_MoveCircularAbsolute, 和 MC_MoveCircularRelative。如果起始位置和目标位置位于同一动态坐标系中,则路径动态将相对于该坐标系。但是,如果起始位置和结束位置位于不同的坐标系中,则路径动态将由相对于第一个坐标系的动态混合到相对于第二个坐标系的动态。重要的是,路径动态应设置为高于两个坐标系之间动态差异的绝对值。特别是,当从静态坐标系移动到动态坐标系时,路径动态应设置为高于坐标系动态的绝对值。

重要

无法监控路径速度 SMC_GroupReadPathDynamics 在坐标系之间移动时(在不同的动态坐标系内、外或之间跟踪)。

SMC_GroupReadPathDynamics 计算相对于指定坐标系的路径动力学。在跟踪进出或在动态坐标系之间移动的情况下,这是一个依赖于两个坐标系的运动(起始坐标系和目标坐标系不同)。结果, SMC_GroupReadPathDynamics 功能块不适合计算这些情况下的路径动态。

避免错误 SMC_AXIS_GROUP_MAX_AXIS_LAG_EXCEEDED、SMC_AXIS_GROUP_MAX_POSITION_LAG_EXCEEDED 或 SMC_AXIS_GROUP_MAX_ORIENTATION_LAG_EXCEEDED。

错误 SMC_AXIS_GROUP_MAX_AXIS_LAG_EXCEEDEDSMC_AXIS_GROUP_MAX_POSITION_LAG_EXCEEDED, 或者 SMC_AXIS_GROUP_MAX_ORIENTATION_LAG_EXCEEDED 如果无法遵循命令路径而不违反配置的轴限制或路径动态,则会报告此错误。 如果发生此错误,应首先检查轴限制和路径动态是否根据前两节配置。 路径偏差可以通过输出进行监控 PositionLagOrientationLagMC_GroupReadStatus 功能块。

可能的解决方案如下:

  • 增加轴限制。

  • 在跟踪到动态坐标系时增加 CP 运动的路径动态。

  • 减少坐标系的动态。

  • 避免接近运动学奇点的运动,例如通过重新定位机器人。

如果动态坐标系由噪声编码器的输出控制,则可能有助于使用逻辑轴过滤编码器信号。有关详细信息,请参阅 选项卡:逻辑轴.

位置和方向滞后的可接受公差可以使用 SMC_GroupSetPathTolerance 功能块。