MC_CustomJob

功能描述

此功能块用于通过自定义算法来控制轴,此算法能够计算 PLC 代码中轴的循环设定位置、速度和加速度。

为了对运动轨迹编程而创建的功能块必须扩展 MotionInterface 库的 FB_CustomJobBase。然后,此功能块在输入 CustomJob 处提供。

库名称和命名空间

库名称:PLCopen MC part 1

命名空间:PLCO

图形表示形式

G-SE-0076976.1.gif-high.gif

 

 

输入

输入

数据类型

描述

Master

Axis_Ref

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

如果自定义作业(输入 CustomJob 处提供)不使用主站轴,则可以不进行分配。

如果分配了轴,那么在为定义运动轨迹而回调用户功能块时,会获取主站轴的运动值。否则,主站轴的运动值为零。

Axis

Axis_Ref

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

Execute

BOOL

值范围:FALSE,TRUE。

缺省值: FALSE。

输入 Execute 的上升沿可启动功能块。功能块持续执行,且输出 Busy 设置为 TRUE。

此功能块可在执行期间重启。目标值将被上升沿出现时该点的新值所覆盖。

BufferMode

MC_Buffer_Mode

当功能块在轴上激活时,轴的目标值(位置、速度、加速度)被运动任务循环中的新值覆盖。

缺省值:Aborting

缓冲模式。

可能的值:

oAborting

oBuffered

有关值描述,请参阅 MC_Buffer_Mode

CustomJob

MOIN.FB_CustomJobBase

必须衍生自 FB_CustomJobBase 的用户创建功能块类型的实例。此功能块实例可以使用额外的参数(如,目标位置、速度、加速度、变化率等)根据自定义作业所使用的算法的要求来参数化。

覆盖以下方法:

oCalculateMovement

oPrepare

oResetJob

不要覆盖此功能块的其他方法。

输出

输出

数据类型

描述

InSteadyState

BOOL

值范围:FALSE,TRUE。

缺省值:FALSE,如自定义作业所报告的那样

oFALSE:尚未达到稳定状态或已检出错误。

oTRUE:已达到稳定状态。这样,自定义作业就会指示缓存的作业可被激活。

Busy

BOOL

值范围:FALSE,TRUE。

缺省值:FALSE,如自定义作业所报告的那样

oFALSE:功能块不处于正被执行状态。

oTRUE:功能块正在执行中。

Active

BOOL

值范围:FALSE,TRUE。

缺省值: FALSE。

oFALSE:功能块不控制轴的运动。

oTRUE:功能块控制轴的运动。

CommandAborted

BOOL

值范围:FALSE,TRUE。

缺省值: FALSE。

oFALSE:执行尚未中止。

oTRUE:执行已被另一个功能块所中止。

Error

BOOL

值范围:FALSE,TRUE。

缺省值: FALSE。

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

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

ErrorID

ET_Result

此枚举提供诊断信息。

注:

如果轴用于输入 Master,则会在触发 MC_CustomJob 之前,计算主站轴的用于正在运行的实时循环的新目标值或参考值。这就意味着,当被调用来计算从站轴的相应值时,自定义作业的实现会从主站轴获取最新(从实时循环中新计算得到的)值。

ET_Result 的可能值

ErrorId

原因

纠正

AxisInErrorStop

由于检测到轴错误且轴处于运行状态 ErrorStop,因此无法执行功能块。

打算启动新功能块时,请确认轴未处于运行状态 ErrorStop。

AxisIsDisabled

由于轴处于运行状态 Disabled,因此无法执行功能块。

打算启动新功能块时,请确认轴未处于运行状态 Disabled。

AxisIsStopping

由于 MC_Stop 功能块已激活且轴处于运行状态 Stopping,因此无法执行功能块。

打算启动新功能块时,请确认轴未处于运行状态 Stopping。

AxisNotHomed

轴未执行基准点定位(轴的标志 xHomed 为 FALSE)。

对轴执行基准点定位,以获取有效的零点来启动相对于零点的运动。

BufferModeInvalid

输入 BufferMode 处提供了不同于 MC_Buffer_Mode.Aborting 或 MC_Buffer_ModeBuffered 的值。

MC_Buffer_Mode.Aborting 或 MC_Buffer_Mode.Buffered 的值提供作为 BufferModeInput(如果先前未提供任何值,则使用 MC_Buffer_Mode.Aborting)。

BufferSaturated

已达到可为轴缓存的最大功能块数量。

在任何时候,仅为给定轴缓存一个功能块。

InternalErrorInCyclicCalculation

FB_CustomJobBAse 返回了无效 LREAL 值。

纠正 FB_CustomJobBAse 的实现,使得它不返回无效 LREAL 值(无限元和 NaN(非数字)是无效的 LREAL 值)。

NoBusCommunication

现场总线未处于 Operational 状态(Sercos:阶段 4)。

确认在输入 Execute 的上升沿以及在执行期间,现场总线处于 Operational(Sercos:阶段 4)。

NotSupportedWithFeedbackAxis

运行自定义作业期间,不允许执行命令。

在 Motion Controller 应用程序中,为 MC_CustomJob 实现功能块。

OutOfMemory

内存不足,无法执行运动命令。

减小应用程序对内存的需求。

UnexpectedReturnValue

系统的返回值无法确定。

请联系 Schneider Electric 服务代表。