FB_ModeManager

概述

类型:

功能块

适用的版本:

V1.0.1.0

功能描述

功能块 FB_ModeManager 可用于管理机器应用程序中的模式更改请求,该请求基于 PackML 状态模型。基于设备模式定义,功能块验证所请求的模式更改是否可行。

设备模式定义包含每种可用控制模式可能的状态的定义、以及允许模式更改的状态的定义。为了执行设备模式定义,可以使用辅助功能 FC_InitStateModelStateChangeFC_InitStateModelExistingStates

最后,设备模式定义必须以 ST_UnitModeDefinition 型数组的形式提供。数组的索引对应于可用控制模式的数值(请参阅 ET_Modes)。

设备模式定义必须在应用程序启动(初始化阶段)时进行,发生在以 i_xEnable = TRUE 首次调用功能块 FB_ModeManager 的实例之前。

在输入 i_xEnable 的上升沿执行功能块 FB_ModeManager 的初始化阶段。在此阶段中,验证每种可用控制模式的设备状态定义,确认是否能够创建符合 PackML 的状态模型。如果初始化成功完成,则功能块的操作准备就绪,这由输出 q_xReady 来指示。

在初始化期间,会验证以下条件:

  • 状态的最大数量为 17 种。

  • 状态执行已停止是每种控制模式的必要状态。

  • 状态正在完成同时也要求有状态完成

  • 状态保持取消保持各自同时也要求有状态已保持

  • 状态正在挂起正在取消挂起各自同时也要求有状态已挂起

  • 状态正在中止正在清除各自同时也要求有状态已中止

  • 状态正在复位空闲只能组合使用。

在常规操作期间,功能块相对于当前控制模式 (iq_diUnitModeCurrent) 和当前状态 (i_diStateCurrent) 来验证模式更改请求(其由输入 i_diUnitModei_xUnitModeChange 指示)。只有 i_sUnitModeChange 的上升沿才会触发功能块的执行。结果由输出 q_diEnterModeq_xModeChangeRequestRejected 来指示。如果允许模式更改,则输出 q_xModeChangeRequestRejected 指示 FALSE,且输出 q_diEnterMode 以所请求的模式的值来更新。在这种情况下,必须根据您的应用程序执行控制模式更改的必需步骤。然后,必须将已执行模式更改的信息通过输入 i_xModeChangeDone 传送到功能块。如果此输入指示 TRUE,则以先前请求的控制模式来更新与输入/输出 iq_diUnitModeCurrent 链接的变量。

接口

输入

数据类型

描述

i_xEnable

BOOL

功能块的激活与初始化。

i_diNumberOfModes

DINT

操作模式的数量

如果更改了这个值,则需要对功能块重新执行初始化。

i_diUnitMode

DINT

请求的操作模式

应对输入应用 PackTag Command.UnitMode

i_xUnitModeChangeRequest

BOOL

在上升沿,功能块验证操作模式更改是否可行。

应对输入应用 PackTag Command.UnitModeChangeRequest

i_diStateCurrent

DINT

机器当前状态

应对输入应用 PackTag Status.StateCurrent

i_xModeChangeDone

BOOL

由已执行所请求的模式更改的应用程序发出的反馈。在上升沿,相应地更新链接至 iq_diUnitModeCurrent 的变量。

i_pstInitMode

POINTER TO ST_UnitModeDefinition

设备模式定义的指针地址通过此输入传送到功能块。*

* 设备模式定义为每种可用的操作模式提供状态定义,必须以 ST_UnitModeDefinition 数组的形式提供。数组的索引对应于可用控制模式的数值(请参阅 ET_Modes)。因此,指针必须指向与操作模式 Producing(其为第一个模式)相关联的索引。

输入/输出

数据类型

描述

iq_diUnitModeCurrent

DINT

功能块在接收到更改请求时,通过链接到此输入/输出的变量获取当前操作模式,并在更改执行结束后,写入新操作模式。

应对输入/输出应用 PackTag Status.UnitModeCurrent

输出

数据类型

描述

q_xActive

BOOL

如果此输出设置为 TRUE,则功能块处于激活状态。

q_xError

BOOL

如果此输出设置为 TRUE,则检测到错误。请参考 ET_Result

q_xReady

BOOL

如果此输出设置为 TRUE,则功能块的操作准备就绪。

q_etResult

ET_Result

结果的枚举。

q_sResultMsg

STRING[80]

其他结果消息。

q_xUnitModeRequested

BOOL

它反映的是输入 i_xUnitModeChangeRequest

应对此输出应用 PackTag Status.UnitModeRequested

q_diEnterMode

DINT

它指示将更改成的操作模式。如果功能块被禁用,则输出设置为 0。

q_xModeChangeRequestRejected

BOOL

只要此输出指示 TRUE,此功能块就不会对模式更改请求授权,且模式更改请求不应被执行。