| 功能块 | MC_DigitalCamSwitch | ||
|---|---|---|---|
| 使用轴位置来控制触发数位输出的开关,当轴达到特定的位置,开关即开启或关闭,而开关可由轴的向前或向后移动控制。 | |||
| VAR_IN_OUT | |||
| B | AxisIn | AXIS_REF | 轴的参考。 | 
| B | SwitchesIn | ARRAY [0..255] OF MC_CAMSWITCH_REF | 控制开关动作。轨道数量必须依照顺序排列。 | 
| E | OutputsIn | ARRAY [0..31] OF MC_OUTPUT_REF | 选择对应轨道所控制的数位输出。 | 
| E | TracksIn | ARRAY [0..31] OF MC_TRACK_REF | 将补偿时间和迟滞新增到轨道上的开关,TrackNumber 定义在 Switches 中。 | 
| VAR_INPUT | |||
| B | Enable | BOOL | 启用轨道,若值为 FALSE,所有轨道停用;若为 TRUE,请见 EnableMask 以检查指定轨道是否启动。 | 
| E | EnableMask | DWORD | 启用不同轨道。此参数为 BOOL 32 位元,当 BOOL 值设为一时将启动轨道阵列中的相应轨道。 | 
| E | ValueSource | MC_Source | 定义轴值的来源,例如,位置: 
 | 
| VAR_OUTPUT | |||
| B | InOperation | BOOL | 检查命令的轨道是否启用。 | 
| E | Busy | BOOL | 功能块尚未完成且预期将有新的输出值。 | 
| B | Error | BOOL | 功能块中出现错误的讯号。 | 
| E | ErrorID | MC_Error | 错误识别。 | 
| 
 | |||
| MC_DigitalCamSwitch | ||||||
|---|---|---|---|---|---|---|
| AXIS_REF | AxisIn | Axis | AXIS_REF | |||
| ARRAY [0..255] OF MC_CAMSWITCH_REF | SwitchesIn | Switches | ARRAY [0..255] OF MC_CAMSWITCH_REF | |||
| ARRAY [0..31] OF MC_OUTPUT_REF | OutputsIn | Outputs | ARRAY [0..31] OF MC_OUTPUT_REF | |||
| ARRAY [0..31] OF MC_TRACK_REF | TracksIn | Tracks | ARRAY [0..31] OF MC_TRACK_REF | |||
| BOOL | Enable | InOperation | BOOL | |||
| DWORD | EnableMask | Busy | BOOL | |||
| MC_Source | ValueSource | Error | BOOL | |||
| ErrorID | MC_Error | |||||
MC_CAMSWITCH_REF 结构内的元素
| B/E | 参数 | 类型 | 说明 | 
|---|---|---|---|
| B | TrackNumber | INT | 轨道索引,以零为起点。 | 
| B | FirstOnPosition [使用者单位] | LREAL | 开关开启的位置。 | 
| B | LastOnPosition [使用者单位] | LREAL | 开关关闭的位置。 | 
| E | AxisDirection | INT | 轴方向。预设值为零。若选择一或二,开关仅在当轴在指定方向移动时有效。 正负向:0;正方向:1;负方向:2。 | 
| E | CamSwitchMode | INT | 凸轮开关由轴的位置或时间控制,预设值为零。若选择位置 (Position),需设定 FirstOnPosition 与 LastOnPosition;若选择时间 (Time),需设定 FirstOnPosition 与 Duration。 位置 (Position):0,时间 (Time):1。 | 
| E | Duration | TIME | 开关开启的时间,此功能在 CamSwitchMode 为 Time 时可用,每秒为一单位。 | 
MC_TRACK_REF 结构内的元素
| B/E | 参数 | 类型 | 说明 | 
|---|---|---|---|
| E | OnCompensation | TIME | 在每个轨道的切换点之前或后打开开关(上升边缘)的时间长度。若值为正,则开启将延迟;若值为负,则将提前开启。 | 
| E | OffCompensation | TIME | 在每个轨道的切换点之前或后关闭开关(下降边缘)的时间长度。若值为正,则关闭将延迟;若值为负,则将提前关闭。 | 
| E | Hysteresis [unit] | LREAL | 在轴离开该区域之前,从开关未打开或未关闭的切换点(正向和负向)的距离。此可避免在开关点附近频繁切换。 | 
此凸轮定义具有起点与终点,如此使用者可定义每一个凸轮的 FirstOnPosition 与 LastOnPosition(或时间),此功能或功能块类似机械凸轮,但具有额外的优点,您可为输出设置一个特定时间,并设定时间补偿和迟滞。
CamSwitchMode:可为位置或时间。
Duration:时长,凸轮开启的输出时长,时间补偿 (OnCompensation 与 OffCompensation) 可为正或负值,负值表示输出在开关位置到达前即变更。
Hysteresis:此参数可避免轴在切换点附近及实际位置在切换位置附近抖动时,输出不断切换的现象。Hysteresis 是 MC_TRACK_REF 的一部分,表示每个轨道都可设定不同的迟滞。
MC_CAMSWITCH_REF 的范例
| 参数 | 型别 | 开关 01 | 开关 02 | 开关 03 | 开关 04 | ... | 开关 N | 
|---|---|---|---|---|---|---|---|
| TrackNumber | INTEGER | 1 | 1 | 1 | 2 | ||
| FirstOnPosition [单位] | LREAL | 2000 | 2500 | 4000 | 3000 | ||
| LastOnPosition [单位] | LREAL | 3000 | 3000 | 6000 | -- | ||
| AxisDirection | INTEGER | 1=正向 | 2=负向 | 0=双向 | 0=双向 | ||
| CamSwitchMode | INTEGER | 0=位置 | 0=位置 | 0=位置 | 1=时间 | ||
| Duration | LREAL | -- | -- | -- | 1.35 秒 | 
MC_OUTPUT_REF 的范例
| 参数 | MC_OUTPUT_REF[0] | MC_OUTPUT_REF[1] | MC_OUTPUT_REF[2] | - | - | - | MC_OUTPUT_REF[31] | 
|---|---|---|---|---|---|---|---|
| IsAxis | FALSE | FALSE | FALSE | - | - | - | FALSE | 
| Index | 0 | 0 | 0 | - | - | - | 0 | 
| BitOffset | 0 | 1 | 2 | - | - | - | 31 | 
I/O 模组的范例
                 
            
下图使用了上例 MC_CAMSWITCH_REF 的值,不使用 On/OffCompensation 与 Hysteresis,此为当轴持续朝正向移动时的输出行为。
MC_DigitalCamSwitch – 正向
                 
            
正向:输出行为
TrackNumber 1(开关 01, 02, 03)匹配到 McOutput[1];TrackNumber 2(开关 04)匹配到 McOutput[2]。当开关 01、开关 02、开关 03 被触发时,第一个 I/O 模组(索引 0)上的第二个输出(输出 1)即被开启。当开关 04 被触发时,第三个输出(输出 2)即被开启。
                 
            
On/Off 补偿的范例
以下范例使用 OnCompensation -125ms 与 OffCompensation +250ms。
                 
            
下图为当轴持续朝负向移动,且不使用 On/OffCompensation 与 Hysteresis 时的输出行为。
MC_DigitalCamSwitch – 负向
                 
            
负向:输出行为
                 
            
EnableMask
EnableMask 是一个含有 32 位元的 DWORD 参数,每个位元都是一个 bool 值,可控制输出,输出可透过将相应的位元设为 TRUE 或 FALSE 来启用或停用。例如位元 0 控制 McOutput[0];位元 1 控制 McOutput[1],若位元 0 和位元 1 都设为 TRUE,其输出即被启用,意即当相对应的开关被触发时,其输出即被开启。若位元 0 和位元 1 都设为 FALSE,其输出即被停用,即使相对应的开关被触发时,其输出也不会被开启。
| 位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 | 
|---|---|---|---|---|---|---|---|---|---|
| 值 | TRUE/FALSE | TRUE/FALSE | TRUE/FALSE | TRUE/FALSE | - | - | - | - | TRUE/FALSE | 
MC_OUTPUT_REF 的范例
| 参数 | MC_OUTPUT_REF[0] | MC_OUTPUT_REF[1] | MC_OUTPUT_REF[2] | - | - | - | MC_OUTPUT_REF[31] | 
|---|---|---|---|---|---|---|---|
| IsAxis | FALSE | FALSE | FALSE | - | - | - | FALSE | 
| Index | 0 | 0 | 0 | - | - | - | 0 | 
| BitOffset | 0 | 1 | 2 | - | - | - | 31 | 
EnableMask 位元 - 范例 1
位元 0、1、2 为 TRUE,意即输出 0、1、2 被启用,当相对应的开关被触发时,输出即被开启。
| 位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 | 
|---|---|---|---|---|---|---|---|---|---|
| 值 | TRUE | TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | 
正向:输出行为
                 
            
EnableMask 位元 - 范例 2
位元 0、2 为 TRUE,意即输出 0、2 被启用,当相对应的开关被触发时,仅有这 2 个输出会被开启。
| 位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 | 
|---|---|---|---|---|---|---|---|---|---|
| 值 | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | 
正向:输出行为
                 
            
EnableMask 位元 - 范例 3
所有位元均为 FALSE,意即所有输出均停用,即使相对应的开关被触发时,输出也不会被开启。
| 位元 | 位元 0 | 位元 1 | 位元 2 | 位元 3 | - | - | - | - | 位元 31 | 
|---|---|---|---|---|---|---|---|---|---|
| 值 | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | 
正向:输出行为
                