目前,在许多情况下设计人员会用软件实现以往由硬件完成的电路功能,其原因是低成本的微处理器(up)为大家提供了广泛的选择。软件常常是解决问题的成本最低、灵活性最高的方案,但它也带来一些麻烦 那就是设计人员为了确保系统的可靠性,要进行一些额外的软件测试。如果软件程序中没有代码错误,要求在10000条指令中出错率不要超过10处,即其准确率能够保证千分之一左右,则系统的可靠性就有了保证,然而这实际上并非易事,从而系统可靠性就不能得到确保。
在台式机系统中出现导致系统瘫痪的软件错误并不可怕,因为用户只需重新启动系统即可,它只会造成少量数据的丢失。然而,对于运行在工控系统的软件,系统必须能够在没有人为干预的条件下恢复故障。这一特性在两种情况下是非常关键的,即一种是高有效性系统,如服务器、电话系统以及生产线等,另一种是高可靠性系统,一旦出现错误将造成伤害,如汽车、医疗设备、工业控制、机器人、自动门等。即使不考虑上述设备应用上的严格要求,系统也应在无需用户干预(按下复位键或重新上电)的条件下能自动从故障状态进行恢复,这是非常重要和有益的,因为只有这样才能使用户觉察不到设备内部出现了问题。为改善并解决这类系统可靠性,人们迫切要寻求出一种简单、有效的技术措施来以确保此要求的实现,而应用“看门狗”技术和电路,是一种最佳方案。
看门狗(Watchdog)技术
看门狗是一个计数器,它需要在一定的看门狗延时周期内被清零,如果没有清零动作,看门狗电路将产生一个复位信号使系统重新启动或建立—个非屏蔽中断(NMl)、执行故障恢复子程序。大多数看门狗电路是沿触发,这样,无论是上升沿还是下降沿触发看门狗的输入端(WDl)都能够清计数器。WDI引脚连接在处理器的一个I/O口,这条口线由软件触发(图1)。清看门狗计数器的命令必须在主程序内(图2)。如果看门狗没有被清零,复位后软件将从地址0000(启动程序)开始运行。计算主程序的运行时间往往很困难,因为在此期间可能需要多次调用子程序,调用次数的多少与系统输入有关。因此,设计人员常常选择看门狗延时周期远远高于所测试到的循环时间或计算出的循环时间。图3表示正常工作情况下(看门狗在延时周期内被请零)的看门狗信号和复位信号。图4中,在看门狗计数器溢出时发生了一次复位,工业标准的看门狗电路延时周期在lOOms至2s范围内,当然也有些可调节或定制的看门狗电路能够覆盖更宽的延时范围 (30ms至几分钟)。如果主程序的执行时间过长(指相对于看门狗电路而言),设计人员可以在主程序的不同部位多次执行看门狗触发命令,也可以选用看门狗延时周期更长的器件。
一种防止系统滞留在死循环的技术是在主程序的开始部分将相应的I/O引脚置为高电平,而在主程序的另一部分将其置为低电平。如果软件在主程序的起始部分进入了死循环, 由于WDI始终保持高电平(图5),看门狗将产生延时输出、系统被复位。如果采用一个低—高—低的脉冲(图2所示),看门狗将被请零,但系统仍处于阻塞状态。为解决这个问题,一种更老练的方法是对程序中的多项任务进行监视,每项任务设置一个标志,只有当全部标志置位后看门狗电路才被触发。执行全部任务的时间要比看门狗延时周期短。虽然图2和图5对实际程序只作了一个最简单的对比,但它表达了与此相应的基本概念。在更复杂的系统中还存在一些潜在问题,如存储器泄漏、堆栈溢出等,系统同样需要对这些情况进行监视,只需通过合理的程序设计,认真审核代码或采用专门的软件工具也可以解决上述问题(在此对这些超出了本文的范围问题不作讨论)。
看门狗电路的应用与选择
内部看门狗与外部看门狗
许多μP(微处理器)集成了可编程看门狗功能,软件控制可禁止其工作。内置看门狗易受代码错误的影响,它无法提供外部独立看门狗电路所具有的保护能力。
在对安全性能要求较高的应用中(如自动门、医疗设备、机器人等),内置看门狗是无法接受的,管理层要求采用独立的外部看门狗电路。使用外部看门狗电路降低关键系统的风险是一个很好的习惯。
简单的看门狗+复位
通常看门狗延时将重新复位系统,大多数看门狗电路与μP复位集成在一起,它同时可以监视处理器的供电电压(工厂预设监视电压为2.5V、3.0V、3.3V或5V)。在出现看门狗延时或电源电压跌落的情况下均可产生复位动作(见图6的 输出)。 图6所示的MAX823-MAX825系列产品就包含了这两种功能,即看门狗和复位。它们可提供标准的复位电压门限、标准的看门狗延时周期(最小为1.12s)和复位延迟(最小为140ms),仅消耗6uA电流。这些器件具有超小型SC70封装。
工厂预置看门狗系列
MAX6316-MAX6322系列提供了26种工厂预置的复位电压门限、4种看门狗延时周期(分别为4.3ms、 71ms、1.12s、17.9s)、4种复位延迟(分别为1ms、20ms、140ms、1.12s)以及4种输出配置(推挽、开漏或双向输出)。
可用电容调节的看门狗
如果应用中要求灵活的看门狗延时周期,设计人员可以选用可调节电路,MAX6746-MAX6753系列产品既提供了工厂预置的复位电压门限,也提供了分压编程的复位电压门限(工厂预设,或可用分压器R1/R2在1.575V至5V间调节),另外,它们还可以利用外部电容调节看门狗延时周期(当电容Cswt为100Pf至100Nf数值时,在700ms至70s范围内分两段调节)和复位延迟(预设或用电容Csrt在0.5ms至5s调节)。
其中:复位电压由分压器R1/R2决定,复位延迟时间由电容Csrt设置,看门狗延时周期由电容Cswt设置。
设计人员利用如此宽范围的看门狗延时周期可以为任何应用提供解决方案。MAX6301-MAX6304系列基本与MAX6746-MAX6753系列相同,但可提供SO或DIP封装。
较长启动/延时周期、引脚可选的看门狗
对于启动过程较长的应用,希望提供两个不同的延时周期:一个较长
多电压监控看门狗
对于双电源供电系统,MAX6358-MAX6360系列可以监视两路标准电压,并提供长启动周期和标准延时周期的看门狗;对于三组电源供电或需要高有效和低有效复位输出的系统,设计人员可以选用MAX6721-MAX6729系列产品,这些器件提供长启动周期和标准延时周期的双模式看门狗功能。它们可监视两路标准的电源电压(MAX6721-MAX6722)或两路标准电压“+”一路可调电压(MAX6723-MAX6724)。这些器件带有手动复位输入,电源失效比较器,双复位输出和 输出。
窗式看门狗提供超高可靠性
为获得超高的可靠性,设计人员可以利用MAX6323/MAX6324窗式看门狗电路,使用这些器件时必须在规定的窗口定时周期内为看门狗提供清零脉冲,有效脉冲可以在上次触发脉冲1.5ms后送达,也可以在上次触发脉冲10ms后到达,利用MAX6323/MAX6324系统可以脱离离散循环,如果清看门狗指令在循环内执行,它将发出一串高速脉冲,这些脉冲可以将常规的看门狗清零,而且不产生复位。如果利用窗式看门狗电路则避免了上述问题,因为这种器件在两次看门狗触发脉冲之间要求一定的时间间隔。这些器件的典型应用包括防抱死(ABS)系统或其它汽车电路,工业控制、医疗产品等要求高安全性的应用或对系统有效性要求苛刻的应用。
结论
各种软件程序都会出现代码错误,设计人员必须保证系统不出现死锁。噪声和EMI也会影响系统中的数据,导致不可预测的系统动作,看门狗电路是提高系统可靠性的一种简单、廉价方案。利用外部看门狗电路可以防止系统死锁,如果WDI信号在规定的看门狗延时周期内没有被触发将对μP进行复位。在目前种类繁多的看门狗器件中,设计人员一定能够找到一款与其需求相吻合的技术与器件。
“看门狗”抗干扰新技术经在发电厂400吨工业锅炉炉堂安全控制系统中得到了较好的应用,在现场环境与电网干扰严重的情况下,计算机系统能对各种燃油喷嘴“关”与“开”进行实时控制,从而保证燃油进量的准确性,极大的提高了工业锅炉炉堂安全控制系统的可靠性和锅炉燃烧效率。其最大的成功在于,一改以往一受干扰,计算机系统要人工复位(Reset)并重新启动而突然造成燃油喷嘴“关”与“开”的失控。如今那种严重影响工业锅炉正常运转的现象己经一去不复返了。实践证明该“看门狗”技术不失为各类工控系统高可靠性有效新技术。