运动控制函数库 SM3_Basic 中提供了有关处理cam的一些功能块。在设备树中配置运动控制设备之后,此函数库会自动添加到函数库管理中。如果不能自动添加,也可以通过函数库管理中的“添加函数库...” 命令进行手动添加。
以下文档详细介绍了有关电子齿轮一些特殊参数(周期,偏移等)并且详细介绍了几个电子齿轮之间的相互连接。
Cam 特性
模块 MC_CAMTableSelect
输入变量 StartMode和电子凸轮的TableSelect.SlaveAbsolute
MC_CamIn.StartMode |
MC_CamTableSelect.SlaveAbsolute |
MC_CamIn.StartMode: New value |
---|---|---|
绝对位置 |
TRUE |
绝对位置 |
绝对位置 |
FALSE |
相对位置 |
相对位置 |
TRUE |
相对位置 |
相对位置 |
FALSE |
相对位置 |
ramp_in |
TRUE |
ramp_in 绝对位置 |
ramp_in |
FALSE |
ramp_in 相对位置 |
ramp_in_pos |
TRUE |
ramp_in_pos 绝对位置 |
ramp_in_pos |
FALSE |
ramp_in_pos 相对位置 |
ramp_in_neg |
TRUE |
ramp_in_neg 相对位置 |
ramp_in_neg |
FALSE |
ramp_in_neg 绝对位置 |
示例
如果输入 Periodic 被置为TRUE,重新启动电子凸轮表会导致周期的变化。
通过以下图片对周期时间有一个更清楚的了解:形象的说明,图片中就像一个传送带在连续的运送相同的物体,而主轴值的范围是从0到运动物体的长度。在这个范围内一个物体是相互靠近的并且同过一个工具被分离(例如一个刻印标记),位置是受从轮决定的(图中蓝线表示)。
当然,主轮的位置 (即定义的主轴的范围) 与主驱动器的周期(即示例中多次重复的显示)。 因此,表达式 'SlavePosition = CAM( 主轮位置 )',这是根据主轴的凸轮的位置定义的从轴的位置, 仅在第一次电子凸轮的扫描过程中是可行的。一个新对象的到达表示着电子凸轮新的扫描周期的开始。由于在传送带是的对象有一定的间距(该距离可能每次都不相同),生产率,也就是凸轮连续开始的时间,是与主轮的范围不同的。
有关模式的详细说明,请参阅: ⇘ MC_Camin.StartMode. |
模块 MC_CamIn
示例
以下图片表示了“绝对位置”和“相对位置”在电子凸轮表中的不同。凸轮表中定义的一个主轴的范围在图中被一条绿色的虚线将左右两部分分开。正如我们看到的那样,对于一个周期性的凸轮,在主轴超出范围之后仍旧会回到原来的位置进行处理。
绝对位置:在一个新的凸轮周期开始时,凸轮重新从从轮的起始位置进行运动。对于结果中的跳跃,是因为从轮对应到主轮起始点的位置与其对应到主轮终止点的位置不同。
相对移动: 新的一个凸轮周期开始时,凸轮会继续在当前位置进行新的周期的开始;从轮在上次凸轮表周期结束时所处的位置将会作为“从轴偏移”量累加到新的凸轮周期上。然而,如果从轮对应到主轮起始位置为0,就会产生一个跳跃。
ramp_in:启动电子凸轮内部的跳跃将会产生一个补偿运动(根据限定的速度,加速度和减速度)。因此,如果从轮是旋转轴,选项ramp_in_pos 将只在正方向进行补偿,相应的 ramp_in_neg 只在反方向进行补偿。对于线性电机,补偿将会自动进行,这里的 ramp_in_pos 和 ramp_in_neg同ramp_in是一样的。
基本上两个凸轮直接可以在任何时候进行切换。但是也有时候会出现一些特殊情况。
在cam编辑器中,从轴的位置被定义为一个凸轮的输出,此输出是和包含主轴范围的主轴位置对应的,可以通过以下简单的公式进行表达:
SlavePosition = CAM( MasterPosition )
由于实际的主轮周期不同于定义范围内cam定义的周期,主轮位置将会被缩放到从轴定义的周期内:
SlavePosition = CAM( MasterScale*MasterPosition + MasterOffset )
模拟函数值(例如当前从轴位置)必须进行调整,如果凸轮模式为‘绝对位置’那么会导致一个跳跃:
SlavePosition = SlaveScale*CAM( MasterPosition ) + SlaveOffset
最坏的情况下俩种比例方式都将被采用,因此从轮位置实际上会变的更复杂
Slaveposition = SlaveScale*CAM( MasterScale*Masterposition + MasterOffset ) + SlaveOffset
在每个cam周期的结束时候可能会发生适当的缩放和偏移。
不幸的是,cam模块 MC_CamIn 的重启过程将会清除它的内存以及缩放和偏移值。因此,定义的 cam 函数值将会被应用于一般从站值的不同区域。由于这个原因,建议只在不同的凸轮进行处理的过程中重新启动 MC_CamIn-功能块。
示例
以下是从 CAM1 到 CAM2跳转的一个示例:
CAM1是由两行五次多项式构成的曲线。
CAM2是由五次多项式构成的两行曲线。
两个凸轮之间的切换应该遵循以下规则:
右侧框中详细描述从 CAM1 到 CAM2 的转化过程。蓝线表示主轴凸轮功能在位置 x1 和 x2的详细值。
让我们首先考虑一下定期循环方式:
MasterAbsolute := TRUE; SlaveAbsolute := FALSE; |
|
CAM(x1, CAM1, PERIODIC:=TRUE); |
这个调用值发生在主轴位置 x1处,比在CAM1范围内的结束位置要小。所以 CAM1 会以通常的方式进行处理并会到达从轴位置的点1处。 |
CAM(x2, CAM1, PERIODIC:=TRUE); |
当模块在下一次调用的时候,主轴位置 x2 将会在 CAM1 结束位置进行处理(以绿色虚线定义的位置与点 3p的位置相同)。因此, EndOfProfile 点将会上升。 CAM1 是以周期模式启动的,它将会在 CAM1范围内的结束位置重新启动并在点 2p 作为调用的返回值。 |
CAM(EXECUTE:=FALSE); |
切换到新的凸轮 |
CAM(x2, CAM2, PERIODIC:=TRUE); |
第二次评估发生在主位置 x2。这次新的电子凸轮 CAM2 将会被计算值。CAM2 将会在从站相对模式下的 (2p) 位置启动并添加一个偏移到 CAM2映射中。 所以启动点偏移到图标中的点 3p位置处。与主轴位置 x2 处的点 4p相同,从而导致一个不良的跳跃。 |
选择非周期模式避免跳跃
MasterAbsolute := TRUE; SlaveAbsolute := FALSE; |
|
CAM(x1, CAM1, PERIODIC:=FALSE); |
在主轴位置 x1处的电子凸轮调用,这个值比CAM1范围内结束值要小。所以 CAM1 的值在通常情况下与从轴位置处的点 1 值相同。 |
CAM(x2, CAM1, PERIODIC:=FALSE); |
当模块在下一次调用的时候,主轴位置 x2 将会在 CAM1 的最后位置进行处理(绿色虚线的点等同于点 3n)。因此预编译结束点将会上升。CAM1 以非周期方式启动,从轴位置相当于 x2 (2n) CAM1主轴范围结束点的从轴位置点 3n。 |
CAM(EXECUTE:=FALSE); |
跳转到新的 cam |
CAM(x2, CAM2, PERIODIC:=FALSE); |
主轴位置x2处的第二次评估。这次评估中新的 cam CAM2 将会被测量。CAM2 以相对模式启动时,从轴当前位置 (2n) 将作为一个偏移值添加到 CAM2 映射中。所以表格中的点将偏移到 3n。在主轴中的测评结果 x2 点 4n 与 1 和3n处于同一直线上。 |
警告以 ⇘ ‘绝对’方式启动cam时,要注意从站的启动位置。如果主轴范围等于从轴定义位置,那么之间不应该有切换并且对于是否是周期模式并不在意。
在上述例子中 CAM2 可以通过绝对方式启动,这两个周期根据CAM2 的主轴范围(主从轴位置)都为 360° 。
否则,如果从轴的运动范围是270° (图中蓝色虚线表示),绝对选项是不会被允许的:
如果从轮的位置位在从CAM1 到CAM2转换的过程中位于 90° 。以绝对方式启动的 CAM2 将会导致一个灰线所示的到 0° 的一个跳转。
然而可以通过将从轴偏移设置为 90°来避免这种情况的发生。