MC_DigitalCamSwitch

功能描述

此功能块是对机械轴或导轨上的凸轮开关单元的数字模拟。此功能块提供最多 32 个轨道。一旦到达预定位置,就会触发逻辑和/或物理输出。

轨道表示为 32 个布尔值的数组。在这些导轨上总共可以布置 255 个切换事件。

MC_CamSwitch_Ref(其为 MotionInterface 库的结构 ST_CamSwitch_Ref 的别名)中,可设置切换事件数 (NumberOfSwitches) 以及指向切换事件数组 (ST_CamSwitch) 的指针。参数 NumberOfSwitches 的值必须等于数组中的 ST_CamSwitch 条目数。

切换事件由 MotionInterface 库的结构 ST_CamSwitch 表示。

功能块 MC_DigitalCamSwitch 无法验证参数 NumberOfSwitches 的正确性,也无法验证使用结构 ST_CamSwitch 的条目定义的切换事件数组中各个切换事件的正确性。

 警告
意外的设备操作
  • 确认参数 NumberOfSwitches 的值等于包含由 ST_CamSwitch 定义的切换事件的数组条目数。
  • 确认使用 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 时的补偿时间(秒)。

您可以使用正值和负值作为补偿时间来允许进行正值或负值补偿。如果 CamSwitchModeInvert,则仅使用 OnCompensation 的值,而不考虑输出的先前状态。如果 CamSwitchModeTimeBased,则仅使用 OnCompensation 的值(对于包含参数 Duration 的切换事件,输出保持 ON 指定时间)。补偿(新触发位置)取决于计算时的加速度和速度:((新触发位置 + 补偿时间)* 速度)+(0.5 * 加速度 * 补偿时间2)。对于模数轴,切换事件的新触发位置可能位于下一个模数周期中。如果切换事件的新触发位置大于两个模数周期,则会检测到错误 EdgePositionOutOfTwoModuloRanges

功能块的输入 EnableMask 让您能够指定要由功能块控制的轨道。在使用缺省值 FFFFFFFF hex 的情况下,所有轨道都由功能块控制。如果 EnableMask 的值在运行期间修改,则 EnableMask 为 0 的轨道不会复位,但轨道不再由功能块控制。

示例:模数轴两个轨道上的七个切换事件(由结构 ST_CamSwitch_RefST_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 毫秒

示例的图形表示形式:

运动方向为正,如箭头所示。

切换事件 S01S02S03S04 通过参数 TrackNumber 分配给轨道 1;也就是说,它们通过输出 1 执行操作。切换事件 S05S06S07 通过参数 TrackNumber 分配给轨道 2;也就是说,它们通过输出 2 执行操作。

切换事件 S01 在位置 2000 触发 (CamSwitchMode = On)。切换事件 S02 在位置 3000 触发 (CamSwitchMode = Off)。

切换事件 S03 在位置 4000 触发 (CamSwitchMode = On)。模数跳转对输出没有影响。输出 1 保持为 On,直到下一个切换事件,无论在此期间是否可能发生模数跳转。切换事件 S04 在位置 1000 触发 (CamSwitchMode = Off)。

切换事件 S05S06 的参数 AxisDirection 设置为 2 (Negative),因此不会使用示例中的正运动方向来触发这些切换事件。

切换事件 S07 在位置 3000 触发 (CamSwitchMode = TimeBased),并按照参数 Duration 设置的持续时间,保持开启 1750 毫秒。

图形表示形式

输入

输入

数据类型

描述

Axis

Axis_Ref

对将执行功能块的轴的引用。

Switches

MC_CamSwitch_Ref

MC_CamSwitch_Ref(其为 MotionInterface 库的结构 ST_CamSwitch_Ref 的别名)让您能够设置切换事件数 (NumberOfSwitches) 以及指向切换事件数组 (ST_CamSwitch) 的指针。切换事件最大数量为 255。

Enable

BOOL

值范围:FALSETRUE

缺省值: FALSE

输入 Enable 可启动或终止功能块的执行。

  • FALSE:功能块的执行已终止。输出 ValidBusyError 将被设置为 FALSE

  • TRUE:功能块正在执行中。只要输入 Enable 被设置为 TRUE,功能块就会持续执行。

EnableMask

DWORD

缺省值:FFFFFFFF hex

此输入指定要由功能块控制的轨道。在使用缺省值的情况下,所有轨道都由功能块控制。如果 EnableMask 的值在运行期间修改,则 EnableMask 为 0 的轨道不会复位,但轨道不再由功能块控制。

TrackOptions

MC_Track_Ref

此输入指定用于触发通过 MC_Track_Ref(它是 MotionInterface 库的结构 ST_Track_Ref 的别名)分配给轨道的切换事件的补偿时间。

输出

输出

数据类型

描述

InOperation

BOOL

值范围:FALSETRUE

缺省值: FALSE

  • FALSE:功能块不执行计算,且不考虑切换事件。

  • TRUE:功能块执行计算,且考虑切换事件。

Error

BOOL

值范围:FALSETRUE

缺省值: FALSE

  • FALSE:功能块正在执行,且执行期间未检测到错误。

  • TRUE:已在执行功能块时检出错误。

ErrorID

ET_Result

此枚举提供诊断信息。

输入/输出

输入/输出

数据类型

描述

Outputs

ARRAY [1..32] OF BOOL

此输入/输出处的数组指定轨道。