功能块 FB_ModeManager 可用于管理机器应用程序中的模式更改请求,该请求基于 PackML 状态模型。基于设备模式定义,功能块验证所请求的模式更改是否可行。
设备模式定义包含每种可用控制模式可能的状态的定义、以及允许模式更改的状态的定义。为了执行设备模式定义,可以使用辅助功能 FC_InitStateModelStateChange 和 FC_InitStateModelExistingStates。
最后,设备模式定义必须以 ST_UnitModeDefinition 型数组的形式提供。数组的索引对应于可用控制模式的数值(请参阅 ET_Modes)。
设备模式定义必须在应用程序启动(初始化阶段)时进行,发生在以 i_xEnable = TRUE 首次调用功能块 FB_ModeManager 的实例之前。
在输入 i_xEnable 的上升沿执行功能块 FB_ModeManager 的初始化阶段。在此阶段中,验证每种可用控制模式的设备状态定义,确认是否能够创建符合 PackML 的状态模型。如果初始化成功完成,则功能块的操作准备就绪,这由输出 q_xReady 来指示。
在初始化期间,会验证以下条件:
状态的最大数量为 17 种。
状态
和 是每种控制模式的必要状态。状态
同时也要求有状态 。状态
和 各自同时也要求有状态 。状态
和 各自同时也要求有状态 。状态
和 各自同时也要求有状态 。状态
和 只能组合使用。在常规操作期间,功能块相对于当前控制模式 (iq_diUnitModeCurrent) 和当前状态 (i_diStateCurrent) 来验证模式更改请求(其由输入 i_diUnitMode 和 i_xUnitModeChange 指示)。只有 i_sUnitModeChange 的上升沿才会触发功能块的执行。结果由输出 q_diEnterMode 和 q_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,此功能块就不会对模式更改请求授权,且模式更改请求不应被执行。 |