此功能块是对机械轴或导轨上的凸轮开关单元的数字模拟。此功能块提供最多 32 个轨道。一旦到达预定位置,就会触发逻辑和/或物理输出。
轨道表示为 32 个布尔值的数组。在这些导轨上总共可以布置 255 个切换事件。
在 MC_CamSwitch_Ref(其为 MotionInterface 库的结构 ST_CamSwitch_Ref 的别名)中,可设置切换事件数 (NumberOfSwitches) 以及指向切换事件数组 (ST_CamSwitch) 的指针。参数 NumberOfSwitches 的值必须等于数组中的 ST_CamSwitch 条目数。
切换事件由 MotionInterface 库的结构 ST_CamSwitch 表示。
功能块 MC_DigitalCamSwitch 无法验证参数 NumberOfSwitches 的正确性,也无法验证使用结构 ST_CamSwitch 的条目定义的切换事件数组中各个切换事件的正确性。
警告 | |
---|---|
结构 ST_CamSwitch 的参数 TrackNumber 指定轨道的编号;即输出。最大值为 32。
结构 ST_CamSwitch 的参数 Position 指定以用户自定义单位触发切换事件的轨道位置。
结构 ST_CamSwitch 的参数 AxisDirection 指定触发切换事件的运动方向。相应的枚举 ET_AxisDirection 提供了三个值:
Both (0):在两个运动方向的运动期间触发切换事件。
Positive (1):只有在正运动方向运动时才会触发切换事件。
Negative (2):只有在负运动方向运动时才会触发切换事件。
结构 ST_CamSwitch 的参数 CamSwitchMode 指定要触发的切换事件的切换类型。相应的枚举 ET_CamSwitchMode 提供了四个值:
On (0):到达指定位置时,输出设置为 ON。
Off (1):到达指定位置时,输出设置为 OFF。
Invert (2):到达指定位置时,切换输出。
TimeBased (3):在参数 Duration 指定的时段内,输出一直设置为 ON。
功能块的输入 TrackOptions 让您能够指定通过 MC_Track_Ref(其为 MotionInterface 库的结构 ST_Track_Ref 的别名)触发切换事件的补偿时间。结构 ST_Track_Ref 的数组中的每个元素指定相应轨道的补偿时间。数组的元素有两个值:
OnCompensation:指定输出设置为 ON 时的补偿时间(秒)。
OffCompensation:指定输出设置为 OFF 时的补偿时间(秒)。
您可以使用正值和负值作为补偿时间来允许进行正值或负值补偿。如果 CamSwitchMode 为 Invert,则仅使用 OnCompensation 的值,而不考虑输出的先前状态。如果 CamSwitchMode 为 TimeBased,则仅使用 OnCompensation 的值(对于包含参数 Duration 的切换事件,输出保持 ON 指定时间)。补偿(新触发位置)取决于计算时的加速度和速度:((新触发位置 + 补偿时间)* 速度)+(0.5 * 加速度 * 补偿时间2)。对于模数轴,切换事件的新触发位置可能位于下一个模数周期中。如果切换事件的新触发位置大于两个模数周期,则会检测到错误 EdgePositionOutOfTwoModuloRanges。
功能块的输入 EnableMask 让您能够指定要由功能块控制的轨道。在使用缺省值 FFFFFFFF hex 的情况下,所有轨道都由功能块控制。如果 EnableMask 的值在运行期间修改,则 EnableMask 为 0 的轨道不会复位,但轨道不再由功能块控制。
示例:模数轴两个轨道上的七个切换事件(由结构 ST_CamSwitch_Ref 和 ST_CamSwitch 定义):
切换事件 |
TrackNumber | CamSwitchMode | Position | AxisDirection | Duration |
S01 |
1 |
0 (On) |
2000 |
1 (Positive) |
- |
S02 |
1 |
1 (Off) |
3000 |
1 (Positive) |
- |
S03 |
1 |
0 (On) |
4000 |
1 (Positive) |
- |
S04 |
1 |
1 (Off) |
1000 |
1 (Positive) |
- |
S05 |
2 |
0 (On) |
2500 |
2 (Negative) |
- |
S06 |
2 |
1 (Off) |
3200 |
2 (Negative) |
- |
S07 |
2 |
3 (TimeBased) |
3000 |
0 (Both) |
1750 毫秒 |
示例的图形表示形式:
运动方向为正,如箭头所示。
切换事件 S01、S02、S03 和 S04 通过参数 TrackNumber 分配给轨道 1;也就是说,它们通过输出 1 执行操作。切换事件 S05、S06 和 S07 通过参数 TrackNumber 分配给轨道 2;也就是说,它们通过输出 2 执行操作。
切换事件 S01 在位置 2000 触发 (CamSwitchMode = On)。切换事件 S02 在位置 3000 触发 (CamSwitchMode = Off)。
切换事件 S03 在位置 4000 触发 (CamSwitchMode = On)。模数跳转对输出没有影响。输出 1 保持为 On,直到下一个切换事件,无论在此期间是否可能发生模数跳转。切换事件 S04 在位置 1000 触发 (CamSwitchMode = Off)。
切换事件 S05 和 S06 的参数 AxisDirection 设置为 2 (Negative),因此不会使用示例中的正运动方向来触发这些切换事件。
切换事件 S07 在位置 3000 触发 (CamSwitchMode = TimeBased),并按照参数 Duration 设置的持续时间,保持开启 1750 毫秒。
输入 |
数据类型 |
描述 |
---|---|---|
Axis |
Axis_Ref |
对将执行功能块的轴的引用。 |
Switches |
MC_CamSwitch_Ref(其为 MotionInterface 库的结构 ST_CamSwitch_Ref 的别名)让您能够设置切换事件数 (NumberOfSwitches) 以及指向切换事件数组 (ST_CamSwitch) 的指针。切换事件最大数量为 255。 |
|
Enable |
BOOL |
值范围:FALSE,TRUE。 缺省值: FALSE。 输入 Enable 可启动或终止功能块的执行。
|
EnableMask |
DWORD |
缺省值:FFFFFFFF hex 此输入指定要由功能块控制的轨道。在使用缺省值的情况下,所有轨道都由功能块控制。如果 EnableMask 的值在运行期间修改,则 EnableMask 为 0 的轨道不会复位,但轨道不再由功能块控制。 |
TrackOptions |
此输入指定用于触发通过 MC_Track_Ref(它是 MotionInterface 库的结构 ST_Track_Ref 的别名)分配给轨道的切换事件的补偿时间。 |