FB_UnitModeManager2 — 一般信息

概述

类型:

功能块

适用的版本:

V1.4.2.0

功能描述

FB_UnitModeManager2 功能块用于在应用程序中实现各种设备控制模式。该功能块处理设备模式切换的命令以及控制当前设备控制模式的状态模型的命令。

命令由该功能块提供的方法触发。

请求模式切换时,会验证是否允许在当前状态下切换设备控制模式。如果允许模式切换,则将设置请求的设备控制模式,否则将保持当前模式并发出相应的错误消息。

状态命令用于执行活动状态模型的状态转换。如果触发了命令,将根据配置的状态模型验证在当前状态下是否允许该命令。如果允许该命令,则接受该命令并设置最终状态。如果不允许该命令,则会发出相应的错误消息。

各个设备控制模式必须使用 DefineUnitMode() 方法指定。FB_UnitModeManager2 功能块最多支持 31 个设备模式。

模式更改

必须满足以下前提条件才能更改设备控制模式:
  • 已知所需的设备控制模式为 FB_UnitModeManager2。设备控制模式通过其数值来识别。

  • 在当前状态下允许退出当前设备模式。

  • 当前状态也存在于目标设备控制模式的状态模型中。设备模式转换仅在两种设备模式(当前模式和目标模式)中通用的状态下发生。

状态命令

提供的用于触发状态命令或状态转换的方法对应于 ANSI/ISA TR88.00.02 – 2022 中定义的 PackML 基本状态模型。请参阅 PackML 基本状态模型

StateComplete() 方法用于根据定义的状态模型,执行从当前动作状态到后续状态的状态转换。请参阅 StateComplete(方法)

方法 Cmd<command name>() 用于触发相应的状态命令。根据当前状态和配置的状态模型,将执行状态转换或拒绝命令。请参阅 IF_StateCommands — 一般信息

支持的状态命令及其反应

命令方法

描述

CmdReset()

仅在状态 StoppedComplete 下接受命令。

反应:转换到状态 Resetting

CmdStart()

只有处于状态 Idle 或状态 Stopped(如果状态 Idle 不存在)的命令才可接受。

反应:转换到状态 Starting

CmdHold()

仅在状态 ExecuteSuspended 下接受命令。

反应:转换到状态 Holding

CmdUnHold()

仅在状态 Held 下接受命令。

反应:转换到状态 Unholding

CmdSuspend()

仅在状态 Execute 下接受命令。

反应:转换到状态 Suspending

CmdUnSuspend()

仅在状态 Suspended 下接受命令。

反应:转换到状态 Unsuspending

CmdComplete()

仅在状态 ExecuteHeldSuspended 下接受命令。

反应:转换到状态 Completing

CmdAbort()

在除 AbortingAborted 之外的所有状态下接受命令。

反应:转换到状态 Aborting

CmdClear()

仅在状态 Aborted 下接受命令。

反应:转换到状态 Clearing

CmdStop()

在除 AbortingAbortedClearingStoppingStopped 之外的所有状态下接受命令。

反应:转换到状态 Stopping

StateComplete()

仅在状态 ResettingStartingHoldingUnholdingSuspendingUnsuspendingAbortingClearingStopping 下接受命令。

反应:根据状态模型转换到下一个状态。

多任务应用程序

由于实现使用方法和属性,因此可能会按不同的任务来调用每种方法。为了确保完整处理命令,实现相应的方法时应确保仅当没有其他命令正在进行时才会接受命令。如果由于正在进行的处理而拒绝了命令,该方法将返回相应的诊断消息。

但是,在实现应用程序时,必须考虑多任务应用程序的行为。