大多数嵌入式实时系统必须是独立的。嵌入式系统发生软件故障时,等待操作员重启系统不符合实际情况。因此,嵌入式系统必须能检测到故障状态,并执行相应的恢复程序。要检测软件故障并从软件故障中恢复,大多数嵌入式系统都包含一个嵌入式的硬件定时器,也称看门狗定时器或失知制动装置。看门狗定时器用于保证嵌入式软件进程正常执行,以及软件无响应时启动一个恢复程序。

硬软件接口

看门狗定时器是一个计数器,与嵌入式应用程序交互,检测是否发生软件故障,以及从故障中恢复。在正常操作时,应用程序将初始化看门狗定时器,从一个特定的数以固定间隔倒数计数,应用程序还定义定时器到达零时的操作。应用程序启动看门狗定时器后,将周期性地重置定时器,以确保定时器不会到达零值,如下列示意图所示:

如发生软件故障,应用程序无法重置定时器,将会发生超时。因为看门狗定时器独立于应用程序,会一直倒数直到零。看门狗定时器过期后,硬件触发恢复程序,如下列示意图所示:

RT系列PXI、CompactRIO和CompactRIO FieldPoint控制器中都包含内置的看门狗定时器硬件,可通过RT看门狗VI访问。使用看门狗配置VI,设置看门狗定时器的超时时间,并指定超时发生时的操作。使用Watchdog Whack VI,在超时发生前周期性地重置定时器。

注: Real-Time看门狗VI依赖于RT系列PXI、CompactRIO和Compact FieldPoint控制器的硬件特性。不建议将Real-Time看门狗VI与第三方看门狗硬件配合使用。

选择合适的超时设置

超时时间的合理范围取决于应用程序具体的执行速度特性以及时间要求。超时的时间必须大于可接受的系统抖动产生的时间差。超时的时间又必须小于应用程序启动故障恢复程序的等待时间。

使用高级看门狗VI

高层的看门狗VI-Watchdog Configure、Watchdog Whack和Watchdog Clear是基于低层的高级看门狗VI创建的。如使用高层看门狗VI无法满足应用程序的要求,可使用高级看门狗VI进行自定义设置。

创建多看门狗对象

可使用看门狗配置VI或高级看门狗VI,创建具有不同属性的多看门狗对象。多看门狗对象用于具有不同时间属性的独立状态的应用程序。例如,设计一个具有状态A和状态B的状态机,状态A的超时时间为5秒,状态B的超时时间为10秒。该情况下,可使用多看门狗对象。

但是,RT终端通常只有一个硬件看门狗定时器,所以一次只能使用一个看门狗对象。使用看门狗对象后,必须使用Watchdog Clear VI或高级看门狗VI,关闭当前看门狗对象后才能使用其他看门狗对象。