在凸轮之间切换
基本上,您可以随时在不同的凸轮之间切换。但是,您应该考虑以下几点:
在凸轮编辑器中,从站的位置被唯一地定义为凸轮函数的函数值。该函数定义在主值范围内,可表示如下:
SlavePosition = CAM( MasterPosition )
由于主驱动器的当前位置通常偏离主值范围,因此您必须在凸轮函数的定义范围内缩放主位置以表示有效参数:
SlavePosition = CAM( MasterScale*MasterPosition + MasterOffset )
以类似的方式,如果凸轮在模式下开始,则必须缩放功能值(从位置)
Absolute
会导致跳跃:SlavePosition = SlaveScale*CAM( MasterPosition ) + SlaveOffset
您可能必须同时应用这两个缩放值,这会导致以下结果:
Slaveposition = SlaveScale*CAM( MasterScale*Masterposition + MasterOffset ) + SlaveOffset
缩放和偏移参数的适当值可能因周期而异。
凸轮之间的切换可以通过三种方式完成:
通过第二个实例启动第二个凸轮
MC_CamIn
和BufferMode = MC_BUFFER_MODE.Buffered
,StartMode = relative
,MasterAbsolute = FALSE
, 和SlaveAbsolute = FALSE
。重要
作为 CODESYS SoftMotion 版本 4.17.0.0
通过分配启动新凸轮
MC_CamIn.CamTableID
到新凸轮(不重新启动MC_CamIn
需要功能块)。如果以下几点适用于您的用例,则建议使用此变体:
以下所有凸轮都应相对执行
MasterAbsolute = FALSE
或者SlaveAbsolute = FALSE
.新凸轮应该正好在前一个凸轮的末尾开始。
没有更改其他参数(例如:
SlaveOffset
)。重要
跳转,在以下示例中对周期性凸轮和
SlaveAbsolute = FALSE
, 做 不是 应用于此变体,因为下一个凸轮正好放置在前一个凸轮的末端位置。仅当在前一个凸轮报告时在同一循环中完成到新凸轮的切换时,新凸轮才会准确放置在前一个凸轮的末尾
EndOfProfile = TRUE
.
通过重新启动新凸轮来启动
MC_CamIn
功能块。如果必须为新凸轮的正确功能更改参数(例如,
SlaveOffset
从下面的例子)。以下示例的限制适用。
在以下示例中,它从 CAM1
到 CAM2
:
CAM1
由一个 5 阶多项式和两个线段组成。

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

在两个凸轮之间切换时,应考虑以下事项:
为防止跳跃,第一个凸轮终点处的速度和加速度值应与第二个凸轮起点处的值一致。在这个例子中,这个条件是满足的,因为相同的速度(=1)和加速度(=0)被分配到终点
CAM1
和起点CAM2
.您可以启动第二个凸轮
Relative
当您将从站的起始位置定义为 0 时的模式。但是,第一个凸轮必须在non-periodic
模式。否则,如果CAM1
是周期性的,那么Relative
设置会导致跳转。

放大率显示从 CAM1
到 CAM2
.蓝线标记在主位置对凸轮功能的评估 x1
和 x2
.
现在,我们来看看不利的情况 periodic
:
| |
| 该调用在主位置开始评估凸轮 |
| 为了模块的后续调用,主位置 |
| 切换到新凸轮 |
| 主位的二次评价 |
选择 non-periodic
模式以防止跳跃:
| |
| 该调用在主位置开始评估凸轮 |
| 为了模块的后续调用,主位置 |
| 切换到新凸轮。 |
| 主位的二次评价 |
启动凸轮 Absolute
模式下,您必须确保从站处于适当的起始位置。如果主站的取值范围与从站的周期一致,那么无论凸轮是否周期性,凸轮之间的切换都没有任何复杂性。
在上面的例子中,你可以开始 CAM2
在 Absolute
主从周期与主控值范围一致时的模式 CAM2
(每个都是 360°)。
如果不是,例如从机的周期是 270°
(由浅蓝色线表示),然后 Absolute
如果不采取其他措施,则不允许使用该选项。

在这种情况下,从站切换时从站处于 90° CAM1
到 CAM2
.开始 CAM2
在 Absolute
模式会导致跳转到 0°(由灰线表示)。
但是,可以通过将从属偏移设置为 90° 的适当值来防止跳跃。