3. Alarm状态机模型:Alarm的激活(Set)、清除(Clear)与恢复(Recover)状态转换图

在SECS/GEM协议中,Alarm(报警)并非简单的“发生”与“消失”两种状态。为了精确描述设备从异常发生到完全恢复的完整生命周期,GEM标准定义了一个三态状态机模型。理解这个模型是正确实现Alarm上报、清除与恢复逻辑的核心前提。

3.1 Alarm三态定义

每个Alarm ID在设备内部都维护一个逻辑状态机。该状态机由以下三种状态组成:

状态 英文术语 描述 典型触发条件
未激活 Inactive 设备处于正常状态,该报警条件不成立。这是所有Alarm的初始状态。 设备上电初始化、报警条件消失
已激活 Set / Active 设备检测到异常条件,报警被触发。此时设备可能处于降级运行或停机状态。 传感器超限、硬件故障、软件异常
已恢复 Recovered 异常条件已消失,但Host尚未确认该报警已被操作人员处理或知晓。这是一个“待确认”的中间状态。 异常条件消失、操作员复位
关键概念:“已恢复”状态是GEM协议区别于普通报警系统的核心特征。它强制要求Host端对报警的解除进行显式确认,确保报警事件被完整记录和闭环管理,避免因报警自动消失而导致维护记录缺失。

3.2 Alarm状态转换图

下图展示了Alarm在三种状态之间的完整转换路径。每个转换都对应一个特定的SECS消息事件。

Alarm状态机转换图(Set / Clear / Recover) 未激活 Inactive 已激活 Set / Active 已恢复 Recovered 报警条件发生 S5 F1 (Set) 直接清除(无恢复确认) S5 F3 (Clear) 异常条件消失 自动转换 Host发送S5 F5 (Recover) 确认 条件再次恶化 状态转换说明: 1. 正常流程:Inactive → Set (S5F1) → Recovered (自动) → Inactive (S5F5) 2. 直接清除:Inactive → Set (S5F1) → Inactive (S5F3),跳过Recover状态 3. 条件反复:Recovered状态下若异常再次发生,直接回到Set状态 4. 初始状态:设备上电或重置后,所有Alarm默认处于Inactive状态

3.3 状态转换与SECS消息映射

每个状态转换都对应一个特定的SECS-II消息流。下表列出了核心的转换事件及其对应的消息ID:

转换路径 触发角色 SECS消息 方向 说明
未激活 → 已激活 设备(EQ) S5F1 (Alarm Report Send) EQ → Host 设备主动上报报警发生,包含Alarm ID、严重等级和文本描述
已激活 → 未激活 设备(EQ) S5F3 (Enable/Disable Alarm Send) EQ → Host 设备直接清除报警,不经过Recover状态。通常用于非关键报警或自动恢复场景
已激活 → 已恢复 设备(EQ) S5F1 (Alarm Report Send) EQ → Host 设备再次发送S5F1,但ALED(报警状态位)标记为“Recovered”
已恢复 → 未激活 主机(Host) S5F5 (Alarm Acknowledge Send) Host → EQ Host发送确认消息,设备将Alarm状态置为Inactive
已恢复 → 已激活 设备(EQ) S5F1 (Alarm Report Send) EQ → Host 在Recovered状态下,若异常条件再次满足,设备重新上报Set状态

3.4 典型流程场景分析

根据实际应用场景,Alarm状态机通常表现为以下三种典型流程:

场景一:标准报警与恢复流程(推荐)

  1. Set:设备检测到异常(如温度超限),发送S5F1,ALED=1(Set),状态进入已激活。
  2. Recover:异常条件消失(温度回落),设备自动发送S5F1,ALED=2(Recovered),状态进入已恢复。此时设备功能可能已恢复正常,但报警记录仍处于“待确认”状态。
  3. Clear:Host操作员确认报警并执行确认操作,Host发送S5F5,设备将状态置为未激活。
最佳实践:对于需要完整审计追踪的关键报警(如安全门打开、真空丢失),强烈建议使用“Set → Recovered → Clear”三态流程。这可以确保每次报警的解除都经过Host的显式确认,形成完整的报警生命周期记录。

场景二:直接清除流程(简化)

  1. Set:设备检测到异常,发送S5F1,状态进入已激活。
  2. Clear:异常条件消失后,设备直接发送S5F3,状态回到未激活。此过程不经过Recovered状态,Host也不会收到恢复确认请求。
注意事项:直接清除流程适用于低优先级或自动恢复的报警(如短暂通信超时、瞬时抖动)。但需谨慎使用,因为Host端将无法区分“报警已自动恢复”和“报警从未发生过”,可能导致维护记录不完整。

场景三:条件反复与重入

  1. 设备处于已恢复状态,等待Host确认。
  2. 在Host尚未发送S5F5之前,异常条件再次出现(如温度再次超限)。
  3. 设备重新发送S5F1,ALED=1(Set),状态从已恢复回到已激活。
  4. 此行为符合GEM规范,设备无需等待Host确认即可重新激活报警。

3.5 Alarm状态机实现要点

  • 状态持久化:设备在断电或重启后,所有Alarm应默认回到未激活状态。如果报警条件在重启后仍然存在,设备应重新发送S5F1。
  • 消息去重:设备应避免在状态未改变时重复发送相同的S5F1消息。例如,如果Alarm已经处于已激活状态,设备不应再次发送Set消息,除非状态发生了转换。
  • 超时处理:如果Host长时间未对Recovered状态的Alarm发送S5F5确认,设备应保持该状态不变。GEM协议未定义超时机制,但建议设备在本地维护一个“待确认报警列表”,供操作员查看。
  • 并发报警:多个Alarm ID各自独立维护自己的状态机。一个Alarm的状态转换不影响其他Alarm的状态。
标准报警恢复流程时序(Set → Recovered → Clear) 设备 (EQ) 主机 (Host) S5F1 (ALED=1, Set) 报警发生,状态进入“已激活” S5F1 (ALED=2, Recovered) 异常消失,状态进入“已恢复” S5F5 (Alarm Acknowledge) Host确认,状态回到“未激活”