库特有数据类型

数据类型 Axis_Ref

数据类型 Axis_RefMotionInterface 库的接口 IF_Axis 的别名。有关详细信息,请参阅 MotionInterface 库指南。

数据类型 MC_AxisDirection

数据类型 MC_AxisDirectionMotionInterface 库的枚举 ET_AxisDirection 的别名。有关详细信息,请参阅 MotionInterface 库指南。

数据类型 MC_Buffer_Mode

此数据类型定义新/缓存的运动相对于正在进行的运动的启动方法。

名称

描述

Aborting

0

正在进行的运动被中止,且在下一个可能的实时循环中立即执行新运动。

Buffered

1

一旦正在进行的运动达到其稳定状态,便执行新/缓存的运动,这对应于功能块输出 DoneInVelocityInSyncEndOfProfile,具体取决于正在进行的运动。当前一个作业达到其稳定状态时,缓存的作业在实时循环中立即激活。它不需要等到输出随后在下一个应用程序任务循环中编程 TRUE

BlendingLow(1)

2

一旦正在进行的运动已完成,便执行新/缓存的运动,但这两种运动之间不存在静止状态。转换是以正在进行的运动和新/缓存的运动的两个速度值中较低的速度值来执行的。

BlendingPrevious(1)

3

一旦正在进行的运动已完成,便执行新/缓存的运动,但这两种运动之间不存在静止状态。转换是以正在进行的运动的速度值来执行的。

BlendingNext(1)

4

一旦正在进行的运动已完成,便执行新/缓存的运动,但这两种运动之间不存在静止状态。转换是以新/缓存的运动的速度值来执行的。

BlendingHigh(1)

5

一旦正在进行的运动已完成,便执行新/缓存的运动,但这两种运动之间不存在静止状态。转换是以正在进行的运动和新/缓存的运动的两个速度值中较高的速度值来执行的。

StartAtMasterposition(1)

6

用于缓冲要通过 MC_CamIn 从指定主轴位置开始运动的凸轮。

(1) 仅适用于功能块 MC_MoveVelocityMC_MoveAbsoluteMC_MoveAdditiveMC_MoveRelative

下表详细介绍了不同功能块的缓存 (MC_BufferMode.Buffered) 是如何工作的:

功能块

可以将功能块的运动指定作为缓存的运动

缓存的运动可以沿循功能块的运动

缓存命令的激活条件

MC_Power

(1)

-

MC_Power 不是运动功能块。

MC_MoveVelocity

InVelocity

MC_MoveAbsolute

Done

MC_MoveAdditive

Done

MC_MoveRelative

Done

MC_Home

MC_Stop

Done 和输入 Execute 设置为 FALSE

MC_Halt

Done

MC_CamIn

(1)

EndOfProfile,无论输入 Periodic 是设置为 TRUE 还是设置为 FALSE

MC_GearIn

InGear

MC_PhasingAbsolute

-

MC_MoveSuperImposed

-

MC_CustomJob

InSteadyState

(1) 不同于 PLCopen Motion Control Part 1, Version 2.0 规范。

控制器在与(比如计算循环参考和目标值的)实时运动任务分开的任务中执行(调用运动控制功能块的)用户应用程序任务。如要在已激活的功能块达到其稳定状态(DoneinVelocityEndOfProfileInGear)的同一 Sercos 循环中启动功能块,则需要提前缓存此功能块。如果通过(比如)前一个功能块的 EndOfProfile 信号而不是通过缓存此信号来触发下一个功能块的启动 (Execute),则会导致一个或多个延迟循环,在此延迟循环期间,没有功能块被激活,且轴保持在静止状态。有关详细信息,请参阅任务概念

数据类型 MC_CamSwitch

数据类型 MC_CamSwitchMotionInterface 库的结构 ST_CamSwitch 的别名。有关详细信息,请参阅 MotionInterface 库指南。

数据类型 MC_CamSwitchMode

数据类型 MC_CamSwitchModeMotionInterface 库的枚举 ET_CamSwitchMode 的别名。有关详细信息,请参阅 MotionInterface 库指南。

数据类型 MC_CamSwitch_Ref

数据类型 MC_CamSwitch_RefMotionInterface 库的结构 ST_CamSwitch_Ref 的别名。有关详细信息,请参阅 MotionInterface 库指南。

数据类型 MC_CAM_ID

数据类型 MC_CAM_IDCommonMotionTypes 库的结构 ST_MultiCam 的别名。有关详细信息,请参阅 CommonMotionTypes 库指南。

数据类型 MC_Direction

此数据类型定义运动方向。

对于 MC_MoveVelocity MC_MoveRelative,此方向能够(通过反转速度或距离的正负符号来)使运动方向反转。这一操作不受轴类型(模式或线性)影响。

对于 MC_MoveAbsolute 以及 MC_CamIn 的斜坡逼近功能,方向输入指定的是逼近绝对目标位置时所沿循的方向。对于这些功能块,仅为模数轴考虑此方向。对于线性轴,则会忽略此方向(因为线性轴上的绝对位置逼近发生在仅算术上可能的方向)。

名称

描述

PositiveDirection

0

正运动方向

NegativeDirection

1

负运动方向

ShortestWay(1)

2

运动方向取决于距离目标位置行程最短的是正向运动还是负向运动。

(1) 仅适用于功能块 MC_MoveAbsoluteMC_CamIn

数据类型 MC_Interpolation_Mode

数据类型 MC_Interpolation_ModeMotionInterface 库的枚举 ET_InterpolationMode 的别名。有关详细信息,请参阅 MotionInterface 库指南。

数据类型 MC_Interpolation_Parameter

数据类型 MC_Interpolation_ParameterMotionInterface 库的结构 ST_Interpolation_Parameter 的别名。有关详细信息,请参阅 MotionInterface 库指南。

数据类型 MC_Master_Start_Mode

名称

描述

Absolute

0

凸轮在等于运动开始时的绝对主轴位置的 X 坐标处开始。

Relative

1

凸轮在等于第一个凸轮点的 X 坐标的 X 坐标处开始,此第一个凸轮点被假设为与运动开始时的主轴位置相关。

注:PLCopen Motion Control Part 1, Version 2.0 中,存在数据类型 MC_Start_Mode,以及两个布尔标志 MasterAbsoluteSlaveAbsolute。为了更加简明,此库改为实现两种数据类型 MC_Master_Start_ModeMC_Start_Mode MasterAbsolute 的组合)和 MC_Slave_Start_ModeMC_Start_ModeSlaveAbsolute 的组合)。后一种类型还包含 RampIn 模式。

数据类型 MC_OperationMode

数据类型 MC_OperationMode 通过输入 OperationMode 指定 MC_MoveVelocity 的运行模式。

名称

描述

Position

0

速度控制,且驱动器中激活了位置控制回路 (Cyclic Synchronous Position)。

Velocity

1

Cyclic Synchronous Velocity,纯速度控制。

Position 值以功能块 MC_MoveVelocity 的输入 Velocity 处设置的速度执行运动。在这个运行模式下,驱动器的位置控制回路保持激活 (Cyclic Synchronous Position)。这是功能块 MC_MoveVelocity 的缺省运行模式。

Velocity 值激活 Cyclic Synchronous Velocity 运行模式。在这个运行模式下,驱动器的位置控制回路不激活(纯速度控制)。

当功能块 MC_MoveVelocity 的输入 OperationMode 的值为 Velocity 且输入 Execute 的值从 FALSE 改为 TRUE 时,启动 Cyclic Synchronous Velocity 运行模式。

必须勾选“功能配置”选项卡上的复选框 VelocityOperationMode,才能启用 Cyclic Synchronous Velocity 运行模式。

如果轴的驱动器不支持 Cyclic Synchronous Velocity 运行模式,或者如果尚未为轴启用此运行模式,那么在此运行模式下为这个轴执行 MC_MoveVelocity 时,会导致 MC_MoveVelocity 检测到错误,但轴行为不受影响。

如果已激活的运行模式是 Cyclic Synchronous Velocity 且执行了功能块 MC_StopMC_Halt,或者如果检测到错误并导致转换到 ErrorStop 运行状态,那么 Cyclic Synchronous Velocity 运行模式会保持激活状态。

如果正在 Cyclic Synchronous Velocity 运行模式下执行 MC_MoveVelocity 时,试图启动运动功能块(比如,MC_MoveAbsolute),那么便不会执行该运动功能块,且其输出 Error 设置为 TRUEMC_MoveVelocity 继续在 Cyclic Synchronous Velocity 运行模式下运行。

如要从 Cyclic Synchronous Velocity 运行模式切换到别的运行模式,请使用功能块 MC_StopMC_Halt 停止轴。若执行除 MC_MoveVelocity 之外的任何运动功能块,则运行模式会从 Cyclic Synchronous Velocity 切换到该功能块所使用的运行模式。例如,如要在不启动运动的情况下从 Cyclic Synchronous Velocity 运行模式切换到 Cyclic Synchronous Position 运行模式,可以使用值为 0 的距离执行功能块 MC_MoveRelative。如要在不执行运动功能块的情况下离开 Cyclic Synchronous Velocity 运行模式,请通过功能块 MC_Power 禁用、然后再重新启用驱动器的输出级。

如果驱动器未在 30 个 Sercos 循环内确认所请求的运行模式,则会检测到错误(发出请求的功能块的暑促 Error 设置为 TRUE)。

数据类型 MC_Slave_Start_Mode

名称

描述

Absolute

0

如要启动凸轮,从轴的位置应直接设置为第一个计算 Y 值。从轴位置基于凸轮定义以及“从站所见的主站”来计算。这与从站启动模式 RelativeRampIn 不同,在这两种模式下,不存在偏移和叠加运动。参考速度和加速度与凸轮定义来计算。

如果从站的位置与其针对凸轮的计算起始位置(Y 值)之间不存在位置差,并且如果此起始位置无法在一个任务扫描内到达,则会报错。然而,如果尽管存在位置差,但仍能够到达此起始位置,那么此运动可能是以突然位置跳跃的形式进行的。

Relative

1

凸轮在 f(X start) 定义的 Y 坐标处开始,其中 f() 是凸轮函数,X start 由主站起始模式决定 (MC_Master_Start_Mode)。这个 Y 坐标与当前从轴位置相关。

RampIn

2

假设绝对从轴位置应等于用于要同步的凸轮的凸轮Y 坐标。

在一开始,凸轮以类似于相对于从站运动的方式开始,这就意味着,在凸轮开始时,f(X start) 与绝对从轴位置相关。然后执行斜坡逼近运动,这会使从轴偏移以便使得轴位置的坐标系与 Y 轴坐标系一致。

 警告
意外的设备操作
检查凸轮启动时从轴的物理位置,并确认其与凸轮定义中的位置匹配。
未按说明操作可能导致人身伤亡或设备损坏等严重后果。
注:PLCopen Motion Control Part 1, Version 2.0 中,存在数据类型 MC_Start_Mode,以及两个布尔标志 MasterAbsoluteSlaveAbsolute。为了更加简明,此库改为实现两种数据类型 MC_Master_Start_ModeMC_Start_Mode MasterAbsolute 的组合)和 MC_Slave_Start_ModeMC_Start_ModeSlaveAbsolute 的组合)。后一种类型还包含 RampIn 模式。

数据类型 MC_Track_Ref

数据类型 MC_Track_RefMotionInterface 库的结构 ST_Track_Ref 的别名。有关详细信息,请参阅 MotionInterface 库指南。

数据类型 MC_Trigger_Ref

MC_Trigger_RefDAL.IF_Trigger 的别名。这是一种用于 MC_TouchProbeMC_AbortTrigger 的输入类型,旨在将功能块连接到相应的 TouchProbe,类似于 Axis_Ref

接口 MC_Trigger_Ref/DAL.IF_Trigger 提供 UINT 类型的属性 CaptureEdge,此属性的值可以在 0 至 2 的范围内。

名称

描述

FallingEdge

0

下降沿

RisingEdge

1

上升沿

BothEdges

2

上升沿和下降沿

VAR
fb_MC_TriggerRef: PLCO.MC_Trigger_Ref;
fb_MC_Touchprobe : PLCO.MC_TouchProbe;
END_VAR

fb_MC_TriggerRef := DRV_Lexium32S.triggerCap1;
fb_MC_TriggerRef.CaptureEdge := MOIN.ET_CaptureEdge.RisingEdge;
fb_MC_Touchprobe(Axis := DRV_Lexium32S.Axis, ifTrigger := fb_MC_TriggerRef);