您现在的位置是:首页 > PLC技术 > PLC技术
PLC的监视跟踪定时器
来源:艾特贸易2017-06-04
简介监视跟踪定时器也称为看门狗定时器 ( Watchdog) ,在硬件上可把它看成是一个相对独立于 CPU 的可复位定时系统,在软件程序的各主要运行点处,设有向看门狗发出的复位信号指令。看门
监视跟踪定时器也称为看门狗定时器( Watchdog),在硬件上可把它看成是一个相对独立于CPU的可复位定时系统,在软件程序的各主要运行点处,设有向看门狗发出的复位信号指令。看门狗可以使陷入“死机”的系统产生复位,重新启动程序运行。这是目前用于监视跟踪程序运行是否正常的最有效的方法之一,并得到了广泛的应用。 当系统运行时,Watchdog与CPU同时工作。程序正常运行时,会在规定的时间内由程序向看门狗发复位信号,使定时系统重新开始定时计数,没有输出信号发出;当程序“跑飞”到一个临时构成的死循环中时,冗余指令和软件陷阱将不起作用,造成系统完全瘫痪。Watchdog技术可以有效解决这一问题,若Watchdog不能在规定的时间内得到复位信号,其输出端会发出信号使CPU系统复位。 系统的应用程序往往采用循环运行方式,每一次循环的时间基本固定。Watchdog技术就是不断监视程序循环运行时间,若发现时间超过已知的循环设定时间,则认为系统陷入了“死循环”,然后强迫程序返回到OOOOH人口,在OOOOH处安排一段出错处理程序,使系统运行纳入正轨。 1)硬件Watchdog和软件Watchdog 为实现Watchdog的目标,需要解决两个方面的问题:一是硬件电路问题,二是软件编程问题。Watchdog的实现形式可以分为硬件Watchdog和软件Watchdog两种。Watchdog必须拥有独立的计数器(即硬件Watchdog)。现在好多芯片都提供了内部WDT。 在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断,但是,万一干扰导致中断被屏蔽了,可在主程序中反复刷新中断使能标志,保证不让中断被屏蔽。但万一程序飞到某个死循环中去了,不再执行“刷新中断使能标志”,也就不能保证中断不被屏蔽,所以这一功能也不完善。而采用软件Watchdog可有效地解决这类问题,软件Watchdog相当于软件的一种自律行为,一般的思路都是通过设立一个计数器,在计时中断中对其+1,在主程序的适当地方对其清零。如果程序失控了,清零指令未被执行,但中断正常发生,则计数器溢出。 实际应用中采用环形中断监视系统,用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0。采用这种环形结构的软件Watchdog具有良好的抗干扰性能,大大提高了系统可靠性。对于需经常使用T1定时器进行串口通信的系统,则定时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列单片机,也可用T2代替T1进行监视)。这种软件Watchdog监视原理是:在主程序、T0中断服务程序、T1中断服务程序中各设一运行观测变量,假设为MWatch、TOWatch、TIWatch,主程序每循环一次,MWatch加1,同样T0、T1中断服务程序执行一次,TOWatch、TIWatch加1。在T0中断服务程序中通过检测TIWatch的变化情况判定T1运行是否正常,在Tl中断服务程序中检测MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测TOWatch的变化情况判别T0是否正常工作。若检测到某观测变量变化不正常,比如应当加1而未加1,则转到出错处理程序作排除故障处理。当然,对主程序最大循环周期、定时器TO和Tl定时周期应予以全盘合理考虑。 2) PLC的Watchdog技术 PLC的CPU内部具有WatchdogTimer,可使用定时中断来监视程序运行状态。定时器的定时时间稍大于主程序正常运行一个循环的时间,在主程序运行过程中执行一次定时器时间常数刷新操作。这样,只要程序正常运行,定肘器不会出现定时中断。而当程序运行失常,不能及时刷新定时器时间常数而导致定时中断,利用定时中断服务程序将系统复位。 PLC正常运行时,其PC值一定在程序区内,如果PC值跑出程序区,PLC肯定已发生了程序跑飞。检查程序计数器PC值是否在程序区内的方法是在一个经常要产生外部中断的某个中断服务程序中,读取转入该中断时压入堆栈的断点地址。如果该地址在程序区内,则认为PC值正常,否则一定是程序跑飞了。此时,程序跳转到PLC的重启动入口或复位入口,PLC重新启动。如果没有一个这样合适的中断源,可以专门设置一个定时中断或者几个定时中断,在中断服务程序中检查PC值是否合法,一旦发现不对就立即转入PLC的重启动入口。定时器中断的时间常数,可视PLC的繁忙程度和重要性设定,一般从几毫秒到几十毫秒都可以。 在设计应用程序时,可以利用Watchdog技术实现对系统各组成部分运行状态的监控。如用PLC控制某一运动部件时,编程时可定义一个定时器作Watchdog用,对运动部件的工作状态进行监视。定时器的设定值,为运动部件所需要的最大可能时间。在发出该部件的动作指令时,同时启动Watchdog定时器。若运动部件在规定时间内达到指定位置,发出一个动作完成信号,使定时器清零,说明监控对象工作正常;否则,说明监控对象工作不正常,发出报警或停止工作信号。 这个方法的局限性是不能查出PC值在程序区内的乱跳,即此时PC值虽受干扰却并没有超出程序区,而是错位乱拼指令而构成一些莫名其妙的操作,或者死循环。 3) PLC控制系统的“死机” PLC控制系统的“死机”是指系统进入死循环或停机状态,防止“死机”是对在线运行的PLC控制系统的最基本要求。最有效的方法是设计完善的系统watchingdog电路,使系统在进入“死机”状态后能重新启动回到正常的状态下运行。watchingdog硬件可以采用专用的集成电路,关键在于软件程序,不仅要考虑干扰对系统造成影响产生的结果,还要分析这种结果可能造成程序运行的改变。 watchingdog电路的核心是一个可反复触发的单稳电路,一旦发生程序“跑飞”,watchingdog电路触发翻转,保证程序恢复运行,在线路及CPU接口无误的条件下,必须保证具有以下功能: ①CPU正常执行程序期间,定时给watchingdog电路发送触发脉冲使其复位,一旦因干扰使CPU程序“跑飞”,watchingdog电路不应再收到定时触发脉冲。 ②watchingdog电路在暂态过程结束后发生翻转,输出非屏蔽中断的脉冲信号,其宽度足以引起CPU重新复位。 4) PLC控制系统的“死锁” 在PLC控制系统中,A/D、D/A、显示等输入/输出接口电路是必不可少的,这些接口与CPU之间采用查询或中断方式工作,而这些设备或接口对干扰很敏感,干扰信号一旦破坏了某一接口的状态字后,就会导致CPU误认为该接口有输入/输出请求而停止现行工作,转去执行相应的输入/输出服务程序。但由于该接口本身并没有输入/输出数据,从而使CPU资源被该服务程序长期占用,而不释放,其他任务程序无法执行,使整个系统出现“死锁”。对这种干扰造成的“死锁”问题,在软件编程中,可采用“时间片”的方法来解决。其具体步骤为: ①根据不同的输入/输出外设对时间的要求,分配相应的最大正常的输入/输出时间。 ②在每一输入/输出的任务模块中,加入相应的超时判断程序。这样当干扰破坏了接口的状态造成CPU误操作后,由于该外设准备好信息长期无效,经一定时间后,系统会从该外设的服务程序中自动返回,保证整个软件的周期性不受影响,从而避免“死锁”情况的发生。 5) watchingdog电路失效 失效是watchingdog电路常见的故障,表现为系统在无干扰场合,CPU可以正常执行监控程序,而一旦干扰出现或干扰严重时,即发生程序“跑飞”,而watchingdog电路无动作,导致系统“死机”。 程序“跑飞”处理就是在程序由软件陷阱检测到“跑飞”后,转入“跑飞”处理程序。“跑飞”处理程序判断“跑飞”影响的程度,根据影响程度的不同,决定是报警复位还是自动恢复现场。如自动恢复现场,则需根据程序运行状态标记进行。具体如何进行程序“跑飞”处理,要根据控制系统的设计要求进行。 常见的失效原因在于程序“跑飞”后,watchingdog电路仍收到不应再出现的定时“复位”信号,因此,系统监控程序应针对不论程序何时何地“跑飞”,均应封锁定时“复位”信号。为此应根据CPU与watchingdog电路的连接形式进行全面考虑和设计,采取下列措施经实践证明非常有效: ①各中断服务子程序中均不可写入RST指令,因为CPU运行到何处“跑飞”、“跑飞”到何处及干扰对CPU片内寄存器(中断寄存器)RAM输入输出端口破坏情况等均有很大的随机性,而在程序“跑飞”时,只要CPU片内中断允许(控制)寄存器不受破坏,则不论程序“跑飞”到什么地方,CPU仍能像正常运行时一样响应和执行中断服务子程序。 ②不可在局部循环圈内写入RST指令,这样一旦出现程序“跑飞”,非正常进入该循环圈的程序将会由于watchingdog电路无法接收“复位”信号而使系统恢复正常运行。 ③排除watchingdog电路非正常“复位”的隐患,程序“跑飞”原因为PC值变成一个新的随机值,此时CPU执行的可能是随机“程序”,在这个随机程序中,如果形成死循环,其循环中又有“复位”指令,这就使watchingdog电路意外失效。 ④编程过程中以一条或几条其他指令代替可能会引起“复位”的指令,特别在程序的数据表格、字符表格中有RST字符机器码的,可用表格中不可能出现的字符代替,在程序读入该字符时,做该代码处理。
点击排行
