FB_UnitModeManager2 功能块用于在应用程序中实现各种设备控制模式。该功能块处理设备模式切换的命令以及控制当前设备控制模式的状态模型的命令。
命令由该功能块提供的方法触发。
请求模式切换时,会验证是否允许在当前状态下切换设备控制模式。如果允许模式切换,则将设置请求的设备控制模式,否则将保持当前模式并发出相应的错误消息。
状态命令用于执行活动状态模型的状态转换。如果触发了命令,将根据配置的状态模型验证在当前状态下是否允许该命令。如果允许该命令,则接受该命令并设置最终状态。如果不允许该命令,则会发出相应的错误消息。
各个设备控制模式必须使用 DefineUnitMode() 方法指定。FB_UnitModeManager2 功能块最多支持 31 个设备模式。
已知所需的设备控制模式为 FB_UnitModeManager2。设备控制模式通过其数值来识别。
在当前状态下允许退出当前设备模式。
当前状态也存在于目标设备控制模式的状态模型中。设备模式转换仅在两种设备模式(当前模式和目标模式)中通用的状态下发生。
提供的用于触发状态命令或状态转换的方法对应于 ANSI/ISA TR88.00.02 – 2022 中定义的 PackML 基本状态模型。请参阅 PackML 基本状态模型。
StateComplete() 方法用于根据定义的状态模型,执行从当前动作状态到后续状态的状态转换。请参阅 StateComplete(方法)。
方法 Cmd<command name>() 用于触发相应的状态命令。根据当前状态和配置的状态模型,将执行状态转换或拒绝命令。请参阅 IF_StateCommands — 一般信息。
支持的状态命令及其反应
命令方法 |
描述 |
---|---|
CmdReset() |
仅在状态 Stopped 和 Complete 下接受命令。 反应:转换到状态 Resetting。 |
CmdStart() |
只有处于状态 Idle 或状态 Stopped(如果状态 Idle 不存在)的命令才可接受。 反应:转换到状态 Starting。 |
CmdHold() |
仅在状态 Execute 或 Suspended 下接受命令。 反应:转换到状态 Holding。 |
CmdUnHold() |
仅在状态 Held 下接受命令。 反应:转换到状态 Unholding。 |
CmdSuspend() |
仅在状态 Execute 下接受命令。 反应:转换到状态 Suspending。 |
CmdUnSuspend() |
仅在状态 Suspended 下接受命令。 反应:转换到状态 Unsuspending。 |
CmdComplete() |
仅在状态 Execute、Held 或 Suspended 下接受命令。 反应:转换到状态 Completing。 |
CmdAbort() |
在除 Aborting 和 Aborted 之外的所有状态下接受命令。 反应:转换到状态 Aborting。 |
CmdClear() |
仅在状态 Aborted 下接受命令。 反应:转换到状态 Clearing。 |
CmdStop() |
在除 Aborting、Aborted、Clearing、Stopping 和 Stopped 之外的所有状态下接受命令。 反应:转换到状态 Stopping。 |
StateComplete() |
仅在状态 Resetting、Starting、Holding、Unholding、Suspending、Unsuspending、Aborting、Clearing 或 Stopping 下接受命令。 反应:根据状态模型转换到下一个状态。 |