4. 故障检测与确认状态机设计

在故障管理系统中,传感器信号从“出现异常”到“被判定为故障”之间,必须经过一套可标定、可复现的确认逻辑。如果仅凭单次采样越界就立即置位故障,系统会被噪声和瞬态干扰频繁触发;如果确认条件过于保守,又会延误真实故障的响应。本节围绕阈值判断、持续时间、去抖动和计数器四种机制,说明如何在 Stateflow 中构建故障检测与确认状态机,并给出参数标定的具体方法。

一、四种确认机制的本质区别

阈值判断解决“信号是否越界”的问题,它是最基础的判据。例如冷却液温度正常范围为 -40~120 ℃,当采样值大于 120 ℃ 时,阈值条件成立。但阈值条件成立不等于故障成立,因为传感器噪声、电磁干扰、工况瞬变都可能造成短时越界。

持续时间机制要求越界条件连续保持一段时间才确认故障。设确认时间为 T_confirm,只有当越界标志连续为真且累计时间达到 T_confirm 时,才输出故障确认。它适合缓变型故障,如温度缓慢爬升、压力逐渐泄漏。

去抖动机制针对的是信号在阈值附近反复跳变的情况。常见实现是“连续 N 次采样同向才认可”,或“进入和退出使用不同阈值”的迟滞设计。例如温度高于 120 ℃ 进入报警,低于 115 ℃ 才退出报警,5 ℃ 的迟滞带可以有效抑制临界抖动。

计数器机制则对离散事件计数,例如“10 秒内出现 3 次越界”即确认故障。它比纯持续时间更灵活,允许越界不连续,但要求事件密度足够高。四种机制可以单独使用,也可以组合使用,组合后的确认逻辑更贴近真实工程需求。

故障检测与确认状态机:信号链与状态迁移 原始采样信号 x[k] 周期采样 阈值判断 x[k] > TH_high 去抖动 / 迟滞 TH_high / TH_low 持续时间确认 t ≥ T_confirm 计数器 cnt ≥ N Stateflow 确认状态机 Normal 故障标志 = 0 Pending 计时/计数进行中 故障标志 = 0 Confirmed 故障标志 = 1 上报故障码 Cleared 恢复 越界条件成立 确认条件满足 恢复条件 条件消失 计数未达标 关键标定参数(示例值) TH_high = 120 ℃ 上限阈值 TH_low = 115 ℃ 迟滞下限 T_confirm = 2.0 s 持续时间 N = 3 次 / 10 s 计数窗口

二、Stateflow 状态机结构设计

推荐将确认状态机划分为四个状态:Normal、Pending、Confirmed 和 Cleared。Normal 表示信号正常,故障标志为 0;Pending 表示越界条件已成立,但确认条件尚未满足,此时计时器或计数器正在累加;Confirmed 表示故障已确认,故障标志置 1 并上报故障码;Cleared 表示故障恢复后的过渡状态,用于执行恢复确认和故障码清除。

状态迁移的核心逻辑如下:Normal 在越界条件成立时进入 Pending;Pending 在确认条件满足时进入 Confirmed,在越界条件消失时回退到 Normal;Confirmed 在恢复条件满足时进入 Cleared;Cleared 在恢复稳定后回到 Normal。这里的关键是 Pending 状态必须同时维护计时器和计数器,因为实际工程中往往需要“持续时间满足且计数达标”才确认故障。

三、参数标定方法

阈值标定应基于传感器量程、正常工况分布和故障边界。以冷却液温度为例,正常工况下温度在 85~105 ℃ 之间波动,故障边界设定为 120 ℃,则 TH_high 取 120 ℃,TH_low 取 115 ℃,迟滞带 5 ℃ 可以覆盖传感器噪声和工况波动。

持续时间 T_confirm 的标定需要权衡响应速度和抗干扰能力。如果 T_confirm 取 2.0 s,采样周期为 10 ms,则 Pending 状态需要连续保持 200 个采样周期。这个值可以通过分析正常工况下越界脉冲的最大持续时间来确定:若正常瞬态越界最长不超过 1.5 s,则 T_confirm 取 2.0 s 可以可靠滤除瞬态。

计数器参数 N 和窗口时间 T_window 的标定则针对间歇性故障。例如某传感器在 10 s 内出现 3 次越界,每次持续 0.3 s,若仅用持续时间机制,每次越界都不足以确认故障;但用计数器机制,3 次事件累计后即可确认。N 的取值应大于正常工况下窗口内最大越界次数,通常取 3~5 次。

四、Stateflow 实现要点

在 Stateflow 中,计时器可以用 after(T_confirm, sec) 实现,计数器则需要在 Pending 状态的 during 动作中累加。以下是一个简化的实现示例:

% Stateflow 伪代码示例
state Normal
  during:
    if (x > TH_high)
      timer = 0;
      cnt = 0;
      goto Pending;
    end

state Pending
  during:
    timer = timer + Ts;
    if (x > TH_high)
      cnt = cnt + 1;
    end
    if (timer >= T_confirm && cnt >= N)
      goto Confirmed;
    end
    if (x < TH_low)
      goto Normal;
    end

state Confirmed
  entry:
    fault_flag = 1;
    fault_code = CODE_OVER_TEMP;
  during:
    if (x < TH_low)
      goto Cleared;
    end

state Cleared
  during:
    if (x < TH_low && timer_clear >= T_clear)
      fault_flag = 0;
      goto Normal;
    end

需要注意,计时器和计数器应在进入 Pending 时清零,避免上一次残留值影响本次确认。同时,Confirmed 状态应保持故障标志为 1,直到恢复条件满足并经过 Cleared 状态的恢复确认。

五、验证与结果判读

验证时,可以构造三类测试信号:第一类是持续越界信号,用于验证持续时间机制;第二类是间歇越界信号,用于验证计数器机制;第三类是阈值附近抖动信号,用于验证迟滞和去抖动效果。观察 Stateflow 的状态迁移序列和故障标志输出,判断确认逻辑是否符合预期。

例如,输入一个持续 3 s 的 125 ℃ 温度信号,采样周期 10 ms,TH_high=120 ℃,T_confirm=2.0 s,N=3。预期状态迁移为 Normal → Pending → Confirmed,故障标志在约 2.0 s 后置 1。若输入一个在 118~122 ℃ 之间抖动的信号,由于迟滞带为 115~120 ℃,信号在 120 ℃ 以上时进入 Pending,低于 115 ℃ 时才回退,抖动期间不会频繁切换状态,故障标志保持稳定。

参数标定不是一次性的,建议在台架或 HIL 环境中用真实信号回放验证,并根据误报率和漏报率调整 TH_high、TH_low、T_confirm 和 N。通常先固定阈值和迟滞,再调整持续时间和计数器,最后联合验证。
如果 Pending 状态中计时器和计数器同时使用,必须明确两者的逻辑关系:是“与”关系还是“或”关系。工程中常用“与”关系,即持续时间和计数都满足才确认故障,这样可以同时抑制持续干扰和间歇干扰。

综上,故障检测与确认状态机的设计核心在于:用阈值判断越界,用迟滞抑制抖动,用持续时间滤除瞬态,用计数器捕捉间歇故障,并在 Stateflow 中通过 Normal、Pending、Confirmed、Cleared 四个状态清晰表达确认过程。参数标定应结合信号特性和工况分布,通过测试信号验证确认逻辑的响应速度和抗干扰能力。