在当今工业自动化和智能化的大趋势下,安全相关系统(SRS)广泛采用微控制器(MCU)作为处理器。然而,为了确保这些系统的安全运行,有效的诊断措施必不可少。本文作为 “利用高性能监控电路提高工业功能安全合规性” 系列的第 4 部分,将深入探讨如何使用看门狗定时器进行程序序列监测,以提高工业功能安全的合规性。
引言:安全需求催生看门狗定时器应用
随着微控制器在安全相关系统中的广泛应用,为了保证系统安全运行,IEC 61508 - 2 推荐使用由硬件支持的自检作为针对处理器的诊断技术之一。其中,看门狗定时器 IC 作为特殊硬件,可周期性地监测 MCU 输出的特定位模式,提高故障检测速度并扩大检测范围。它能在程序出现异常时及时采取措施,避免系统因故障而导致严重后果。比如在一些自动化生产线上,如果 MCU 的程序出现问题,可能会导致生产设备运行异常,影响产品质量甚至造成安全事故,而看门狗定时器就能在一定程度上防止此类情况的发生。
具有独立时基但无时间窗口的看门狗
IEC 61508 的第 2 部分将简易看门狗描述为具有独立时基的外部定时元件。其运行机制是:MCU 需在看门狗达到超时之前向其发出复位信号,表明程序序列运行正常;若未及时发出信号,看门狗超时后会向 MCU 发出复位信号,意味着程序运行出现问题。

图 1. 简易看门狗操作
通常,MCU 内置有看门狗定时器(WDT),但当它成为故障微控制器的一部分时,仅依靠它检测故障并不可靠,因为可能会发生共因故障(CCF)。为解决这一问题,应使用单独的 WDT 确保 MCU 处于复位状态。图 1a 展示了通过 MAX6814 实现的此类看门狗示例,图 1b 的流程图说明了其在 MCU 程序执行中的行为。在流程开始前,需设置看门狗超时周期(WDT)的复位间隔,程序执行时 WDT 会运行,MCU 必须在 MAX6814 达到超时前向其 WDI 引脚发送信号,否则器件将向 MCU 发出复位信号,使系统进入安全状态。
这种 WDT 的超时周期能捕获一些程序序列问题,如程序卡在循环中或中断服务例程未及时返回。例如,软件每个循环原本应运行 10 个子例程,实际只执行了 5 个。但它无法解决程序执行时间异常或序列执行顺序错误等问题。
具有独立时基和时间窗口的看门狗
窗式 WDT 存在独立的时间窗口,既能检测过度延迟情况,也能检测过早执行情况。它禁止 MCU 在规定的开放(有效)窗口之外作出响应,相比简易看门狗,能保证程序按时执行所有子例程,否则会使 MCU 复位。

图 2. 窗式看门狗操作
图 2 展示了采用 MAX6753 实现的程序序列监测示例,其看门狗周期可通过外部电容配置。图 3 展示了采用 MAX42500 的另一种实现方案,其看门狗时间设置可通过 I2C 配置,这不仅减少了外部元件数量,还能通过分组差错校验(PEC)字节提高故障覆盖率。PEC 字节能提高对 I2C 通信相关故障的诊断覆盖率,如总线错误、卡塞总线情况、时序问题和不当配置。

图 3. 另一种实现方案:通过 I2C 配置的窗式看门狗

图 4.PEC 字节能够覆盖 I2C 接口故障
尽管这种看门狗能实现较高的诊断覆盖率,但仍无法捕捉软件子例程是否按正确顺序执行的问题。
程序序列的时间和逻辑监测的组合
根据 IEC 61508 - 2,采用时间和逻辑监测组合的诊断技术能对程序序列实现高诊断覆盖率。该技术包含窗式看门狗和检查程序序列是否按正确顺序执行的功能。当图 2 中的电路与图 5 中的序列结合时,可得到可视化示例,其中 MCU 的每个程序例程都采用的字符与数字组合。每次执行例程时,这些组合会放置在数组中,执行完一个例程后,只有当数组中的所有字都正确设置时,MCU 才会向看门狗发送复位信号。

图 5. 通过标记来检查序列逻辑是否正确
质询 / 响应架构
某些对诊断覆盖率要求更高的系统,仅依靠窗口时间内发送回脉冲无法满足需求。在这种情况下,MAX42500 的质询 / 响应看门狗可发挥作用。在这种模式下,需读取 IC 中的键 - 值寄存器作为质询消息的起始点,MCU 须利用此消息计算并发送适当响应回看门狗 IC,以在有效窗口内重启看门狗。

图 6. 质询 / 响应窗式看门狗
MAX42500 包含一个线性反馈移位键控(LFSK)寄存器,使用多项式 x8 + x6 + x5 + x4 + 1,将所有位上移到有效位(MSB),并将计算出的位作为新的有效位(LSB)插入。MCU 必须按此方式计算响应,并通过 I2C 将其返回到 MAX42500 的寄存器。这种多项式是本原多项式和 8 位情况下的长度反馈多项式,能确保所有位值组合(1 到 255)都由该多项式生成,且数字顺序伪随机。这种质询 / 响应方式能实现比时间和逻辑程序序列监测组合更高的覆盖率,因为它表明 MCU 仍具备实际计算能力,而非仅进行决策例程。
可达到的诊断覆盖率
根据基本功能安全标准,针对 SRS 中每个模块推荐的每项诊断措施,都给出了可达到的诊断覆盖率。如下表所示:
诊断技术 / 措施经考量认为能够达到的诊断覆盖率
具有独立时基但无时间窗口的看门狗低
具有独立时基和时间窗口的看门狗中
程序序列的时间和逻辑监测的组合高
此外,由于存在标准可能未涵盖的其他实现方案,可达到的诊断覆盖率只能通过故障插入测试进行验证。
结语
本文详细介绍了三类使用看门狗定时器的诊断措施,这些措施由 IEC 61508 - 2 推荐用于应对程序序列中的故障。类具有独立时基但无时间窗口的看门狗,可利用简易看门狗实现,但诊断覆盖率较低;第二类具有独立时基和时间窗口的看门狗,通过窗式看门狗实现,能达到中等诊断覆盖率;第三类通过结合程序序列的时间和逻辑监测,可将诊断覆盖率提升到更高水平。而质询 / 响应窗式看门狗架构能进一步检查 MCU 的计算能力,提高对程序序列故障的诊断覆盖率。在实际工业应用中,应根据系统的安全需求和特点,选择合适的看门狗定时器诊断措施,以确保系统的安全可靠运行。同时,通过不断进行故障插入测试,验证和优化诊断覆盖率,进一步提高工业功能安全的合规性。