此功能块用于通过自定义算法来控制轴,此算法能够计算 PLC 代码中轴的循环设定位置、速度和加速度。
为了对运动轨迹编程而创建的功能块必须扩展 MotionInterface 库的 FB_CustomJobBase。然后,此功能块在输入 CustomJob 处提供。
库名称:PLCopen MC part 1
命名空间:PLCO
输入 |
数据类型 |
描述 |
---|---|---|
Master |
Axis_Ref |
对将执行功能块的轴的引用。 如果自定义作业(输入 CustomJob 处提供)不使用主站轴,则可以不进行分配。 如果分配了轴,那么在为定义运动轨迹而回调用户功能块时,会获取主站轴的运动值。否则,主站轴的运动值为零。 |
Axis |
Axis_Ref |
对将执行功能块的轴的引用。 |
Execute |
BOOL |
值范围:FALSE,TRUE。 缺省值: FALSE。 输入 Execute 的上升沿可启动功能块。功能块持续执行,且输出 Busy 设置为 TRUE。 此功能块可在执行期间重启。目标值将被上升沿出现时该点的新值所覆盖。 |
BufferMode |
当功能块在轴上激活时,轴的目标值(位置、速度、加速度)被运动任务循环中的新值覆盖。 缺省值:Aborting 缓冲模式。 可能的值: o值 Aborting o值 Buffered 有关值描述,请参阅 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 之前,计算主站轴的用于正在运行的实时循环的新目标值或参考值。这就意味着,当被调用来计算从站轴的相应值时,自定义作业的实现会从主站轴获取最新(从实时循环中新计算得到的)值。
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 服务代表。 |