Skip to main content

在凸轮之间切换

基本上,您可以随时在不同的凸轮之间切换。但是,您应该考虑以下几点:

  • 在凸轮编辑器中,从站的位置被唯一地定义为凸轮函数的函数值。该函数定义在主值范围内,可表示如下:

    SlavePosition = CAM( MasterPosition )

  • 由于主驱动器的当前位置通常偏离主值范围,因此您必须在凸轮函数的定义范围内缩放主位置以表示有效参数:

    SlavePosition = CAM( MasterScale*MasterPosition + MasterOffset )

  • 以类似的方式,如果凸轮在模式下开始,则必须缩放功能值(从位置) Absolute 会导致跳跃:

    SlavePosition = SlaveScale*CAM( MasterPosition ) + SlaveOffset

  • 您可能必须同时应用这两个缩放值,这会导致以下结果:

    Slaveposition = SlaveScale*CAM( MasterScale*Masterposition + MasterOffset ) + SlaveOffset

  • 缩放和偏移参数的适当值可能因周期而异。

  • 凸轮之间的切换可以通过三种方式完成:

    1. 通过第二个实例启动第二个凸轮 MC_CamInBufferMode = MC_BUFFER_MODE.BufferedStartMode = relativeMasterAbsolute = FALSE, 和 SlaveAbsolute = FALSE

      重要

      作为 CODESYS SoftMotion 版本 4.17.0.0

    2. 通过分配启动新凸轮 MC_CamIn.CamTableID 到新凸轮(不重新启动 MC_CamIn 需要功能块)。

      如果以下几点适用于您的用例,则建议使用此变体:

      • 以下所有凸轮都应相对执行 MasterAbsolute = FALSE 或者 SlaveAbsolute = FALSE.

      • 新凸轮应该正好在前一个凸轮的末尾开始。

      • 没有更改其他参数(例如: SlaveOffset)。

        重要

        • 跳转,在以下示例中对周期性凸轮和 SlaveAbsolute = FALSE, 做 不是 应用于此变体,因为下一个凸轮正好放置在前一个凸轮的末端位置。

        • 仅当在前一个凸轮报告时在同一循环中完成到新凸轮的切换时,新凸轮才会准确放置在前一个凸轮的末尾 EndOfProfile = TRUE.

    3. 通过重新启动新凸轮来启动 MC_CamIn 功能块。

      如果必须为新凸轮的正确功能更改参数(例如, SlaveOffset 从下面的例子)。以下示例的限制适用。

9. 例子

在以下示例中,它从 CAM1CAM2

CAM1 由一个 5 阶多项式和两个线段组成。

_sm_img_cam_switching_1.png

CAM2 由两条线段和一个 5 阶多项式组成。

_sm_img_cam_switching_2.png

在两个凸轮之间切换时,应考虑以下事项:

  • 为防止跳跃,第一个凸轮终点处的速度和加速度值应与第二个凸轮起点处的值一致。在这个例子中,这个条件是满足的,因为相同的速度(=1)和加速度(=0)被分配到终点 CAM1 和起点 CAM2.

  • 您可以启动第二个凸轮 Relative 当您将从站的起始位置定义为 0 时的模式。但是,第一个凸轮必须在 non-periodic 模式。否则,如果 CAM1 是周期性的,那么 Relative 设置会导致跳转。

_sm_img_cam_switching_3.png

放大率显示从 CAM1CAM2.蓝线标记在主位置对凸轮功能的评估 x1x2.

现在,我们来看看不利的情况 periodic

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=TRUE);

该调用在主位置开始评估凸轮 x1, 小于 master 的结束位置 CAM1.然后 CAM1 默认情况下进行评估并产生点 1 作为奴隶的位置。

CAM(x2, CAM1, PERIODIC:=TRUE);

为了模块的后续调用,主位置 x2 超出主值范围 CAM1,其界限用绿色虚线标记,与点的横轴一致 3p。因此, EndOfProfile 已设置。因为 CAM1 开始于 periodic 模式,其重新启动发生在值范围的末尾,最终产生点 2p 作为模块调用的结果。

CAM(EXECUTE:=FALSE);

切换到新凸轮

CAM(x2, CAM2, PERIODIC:=TRUE);

主位的二次评价 x2.这一次,新 CAM2 被评估。后 CAM2 开始于 Relative 模式,当前从站位置(2p) 作为偏移量添加到 cam 函数的图像中 CAM2.这会将其图形的起点移动到该点 3p 及其在主位置的评估 x2 产生点 4p,因此是不利的跳跃。

选择 non-periodic 模式以防止跳跃:

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=FALSE);

该调用在主位置开始评估凸轮 x1, 小于 master 的结束位置 CAM1.然后 CAM1 默认情况下进行评估,并将点 1 作为从站的位置。

CAM(x2, CAM1, PERIODIC:=FALSE);

为了模块的后续调用,主位置 x2 超出主值范围 CAM1,其界限用绿色虚线标记,与点的水平轴一致 3n。因此, EndOfProfile 已设置。因为 CAM1 开始于 non-periodic 模式,从属位置(2n)分配给主位置 x2 与到达值范围末尾时从站的位置相同 CAM13n)。

CAM(EXECUTE:=FALSE);

切换到新凸轮。

CAM(x2, CAM2, PERIODIC:=FALSE);

主位的二次评价 x2.这一次,新 CAM2 被评估。后 CAM2 开始于 Relative 模式,当前从站位置(2n) 作为偏移量添加到 cam 函数的图像中 CAM2.这会将其图形的起点移动到该点 3n 及其在主位置的评估 x2 产生点 4n,它在通过点的特定线上 13n.

启动凸轮 Absolute 模式下,您必须确保从站处于适当的起始位置。如果主站的取值范围与从站的周期一致,那么无论凸轮是否周期性,凸轮之间的切换都没有任何复杂性。

在上面的例子中,你可以开始 CAM2Absolute 主从周期与主控值范围一致时的模式 CAM2 (每个都是 360°)。

如果不是,例如从机的周期是 270° (由浅蓝色线表示),然后 Absolute 如果不采取其他措施,则不允许使用该选项。

_sm_img_cam_switching_4.png

在这种情况下,从站切换时从站处于 90° CAM1CAM2.开始 CAM2Absolute 模式会导致跳转到 0°(由灰线表示)。

但是,可以通过将从属偏移设置为 90° 的适当值来防止跳跃。