工控机应用中应注意的一些问题

🏠 首页 《无线电》杂志 1994年 🔗 第11期 🔗 第30页 分类:无线电技术自学经验交流 🔗 郭岩 🔗

随着计算机在工业领域应用的日益广泛和深入,给我国的工农业生产带来了巨大的经济效益和社会效益。

工业环境中使用的工控机,与人们常遇到的个人计算机有着很大的区别。前者通常运行于环境较恶劣的工业现场,温、湿度变化很大,常伴有尘埃和腐蚀性气体等,并会遇到各种各样的电磁干扰,这就决定了工业控制计算机在设计和应用时有其特殊性。

本文根据近几年来我们在工控机应用方面的经验,谈一谈一些应注意的具体问题和相应的措施、方法。

一、WATCHDOG(俗称“看门狗”)的使用

WATCHDOG是目前工控机普遍采用的抗干扰和可靠性措施之一。

WATCHDOG实质上是可由CPU在一定的时间间隔内复位的定时器。正常状态下,CPU在一定的时间间隔内复位WATCHDOG,若因某种异常情况CPU未在预定时间间隔内复位WATCHDOG,则WATCHDOG便输出信号至CPU的复位端或中断端,强行CPU恢复正常运行。如果WATCHDOG的实现方法不当,有时便不能真正起到作用。

WATCHDOG一般不要使用可编程定时器/计数器,也不要用CPU内部的定时/计数器,因为此类定时器自身工作方式(模式)在寄存器的内容被意外改变后,便失去了预先设置好的功能,从而使WATCH-DOG瘫痪。

使用简单的带复位的分频器或定时器可以可靠地实现WATCHDOG功能,这些芯片的时钟输入可以取自系统时钟。

WATCHDOG的输出常常接到CPU的复位端或非屏蔽中断端。有时,工控机系统需要区分是机器加电冷启动CPU复位还是由WATCHDOG起作用而使CPU复位或者是人为干预按复位键使系统复位。这时,我们可以将WATCHDOG的输出先与一个R-S触发器的R端相连,同时将WATCHDOG输出经一级OC门缓冲连至CPU的RST端。这样CPU可以通过寻址查询R-S触发器的Q端状态,来判定复位是否由WATCHDOG引起,进而执行相应的程序。这就为WATCHDOG建立了一个标志。当然,此标志在CPU查询后应清除掉。

WATCHDOG除了可以用来监视CPU的工作状况外,还可根据系统的实际情况灵活加以使用。在有较严格定时关系的局部功能模块部分,可以用WATCHDOG监视其运行情况,发生异常便通知CPU做相应处理。例如,在某监控系统中,需实时检测32路模拟量,各路通过多路开关,共用同一个A/D转换芯片,各路从切换到转换完毕在时间上是相同的,A/D处于中断工作方式。我们可以设置—WATCH-DOG,监视A/D运行情况,A/D的中断输出同时作为WATCHDOG的复位输入。这样,当A/D因某种原因未正常工作而没有定时的中断信号输出时,WATCH-DOG便输出信号告知CPU做异常事务处理以恢复A/D的运行。这时,WATCHDOG的输出可接非屏蔽中断或比A/D中断级别更高一级的中断。

二、中断的设置

中断在计算机系统中起着十分重要的作用。一个功能很强的中断系统,能大大提高计算机处理外界事件的能力。中断实际上是迫使CPU暂停现行工作转而处理中断源一方的事务,这一方面提高了CPU的工作效率,同时也使CPU容易受到中断源的“打扰”。如果这种打扰是在异常情况下错误产生的,不仅扰乱CPU的正常工作,并且有可能造成“死机”。例如,某接口芯片因外界干扰使得其中断输出端恒有效,从而使CPU进入了一直响应该中断的“死机”状态。

在工控机应用中,往往需要CPU与大量的外部设备打交道,如数据采集、通信、控制台输入输出等。如果一味地设置成中断方式,便增加了系统的不安全性。这就要求我们要有这样一种概念:CPU应该永远处于主动地位。中断虽然可以让CPU转而响应中断源,但CPU也应能识别响应之中断是正常产生还是异常情况,若为后者,CPU能主动采取措施加以处理。

有的CPU中断能力比较强,可以有多个中断源,应用中未必全部用到。对剩余中断,可以置成相同的中断服务地址,并在此处安排出错处理程序。有时CPU收到一个中断请求后(因干扰引起),却找不到中断源,这时也应安排出错处理(通常将之舍弃)。

根据我们在一些应用中的体会,在对工控机系统各功能模块设置工作方式时应权衡考虑,在允许情况下,一般使用查询工作方式,这样可使CPU一直处于比较主动的地位。在安排中断时应慎重,做到少而精,一般以2~3个为宜。

三、容错设计

此处所说的容错是指当工控机系统因干扰等引起系统运行出现错误、异常时,系统本身能自动地回到正常运行状态。前面提到的对未用剩余中断的处理便属于容错设计。下面从几方面具体说明。

1.系统自检:个人计算机(IBM PC等)在冷启动和热启动时,首先进行硬设备的自测试。同样地,工控机在启动时也可以安排自检,一般主要是检查CPU本身、EPROM和RAM。

EPROM的自检用来检查EPROM本身和存放的程序是否被破坏:RAM的自检用来检查RAM的好坏和数据线、地址线有无短路、开路等故障。RAM的自检有两种:写数据图检查和写地址检查,前者是检查RAM本身和数据线的正确性,后者是检查地址线是否正确。CPU的自检主要是测试其内部寄存器的好坏。

上述检查若发现错误,系统便发出告警,要求人工干预。

2.接口芯片重复初始化:工控机主机与外设的联系是通过各种接口实现的,接口部分的可编程接口芯片往往是此处的“中枢”。由于这类芯片处于主机的“前沿”,直接与外界打交道,因而它们也就容易受到外界各种干扰的影响。要使这些芯片运行稳定,除了在硬件设计时采取措施(如进行光电隔离)外,程序运行过程中对它们重复进行初始化,是一个非常行之有效的办法。

3.外围接口程控关闭:前面提到的一些抗干扰容错方法是着眼于如果干扰发生后如何进行处理,我们能否主动地防止干扰的侵入呢?我们在外围接口设计时可以这样处理:对于那些不必随时都需要处于工作状态的接口部分,CPU可以暂时舍弃(若为查询方式可暂停访问,中断方式则关闭其中断)或暂停其工作,或者在接口前端加一道“防护门”,平时将其关闭,主机需要与外界打交道时,再恢复其工作或开启“防护门”。

例如:对于应用中经常遇到的开关量输入,可以在输入信号的滤波整理电路后加一级三态门,只有在CPU检测开关量状态时才打开,之后关闭。

4.数据区的容错:工控机数据区的数据一般包括系统运行参数、标志、重要结果数据和临时数据等。如果数据需要掉电后仍保持,可以使用带后备电池的SRAM,目前较好的方法一是使用封装有锂电池的NOVRAM,如DS1225(8K×8)、DS1230(32K×8)等,它们与相同容量的普通SRAM在引脚定义和使用上相同,可以直接替代。这类芯片实际上是厚膜集成电路块,已将微型电池、电源检测电路、切换开关和SRAM做成一体,厚度较普通SRAM大一些。另一种方法是使用带电池的智能插座,如DS1213C(8K×8或32K×8),插上普通 CMOS SRAM 后便成为NOVRAM,实现掉电记忆功能。

对于数据区的重要数据,一般应当进行备份,同时加检验,以保证其正确性。备份区一般应远离工作区,校验可以使用对随机错误检验能力很强的CRC校验。若校验时发现差错,则用备份区之数据替代工作区中的相应数据。备份区数据的校验如果也发现差错,这时就需要人工干预或者将数据舍弃。

对数据区的防护还包括程序误入数据区,将数据当做指令来执行的情况。这种情况发生时,后果很难预料,轻则使数据区被写乱或CPU“死机”,重则对外围执行控制机构产生误动作。我们可以在数据区的数据安排上采取一些措施。数据区内数据分块存放,块与块之间空出一些字节,这些字节中可以填入复位指令或跳转指令或停机指令(有WATCHDOG时)的机器码。如对于Intel 80C31 CPU,这些字节可以写入02H,机器码序列020202,相当于跳至0202H单元处,再在EPROM的0202H处安排相应的处理程序。同时,对于数据区中未用到的那些单元,也要做上述处理。实践证明,这种方法简单而行之有效。

我们还可以通过使用“越界写复位”电路来防止程序的错误运行。正常情况下,CPU对EPROM只进行读操作,“越界写复位”电路是当CPU对EPROM单元进行写操作(程序“跑飞”时有可能发生)时,向CPU发出一个复位信号,使程序运行恢复正常,防止错误的进一步蔓延。

四、其它抗干扰方法

下面几点在工控机设计和应用时也值得注意。

1.凡是主机与外界的接口电路部分,应尽量进行光电隔离,如开关量的输入输出、A/D转换、通信接口、甚至包括键盘到主机、主机到显示器的接口部分等。

2.及时选用新型器件、芯片。目前集成度更高或面向某类应用的新型元器件层出不穷,采用这类器件,可以简化逻辑设计,节省线路板空间,同时也增加了系统的可靠性和稳定性。

MAX690A是一种微处理器监视芯片,它可以在系统加电,掉电时刻向CPU输出一复位信号(电压阈值为4.65V),并有一个1.6秒的WATCHDOG供CPU使用;而MAX691A在MAX690A的功能基础上还增加了CMOS RAM或EEPROM写保护输出。

3.采用智能化设计:智能化设计是指在系统的某个功能模块也使用CPU,这样可以简化主程序设计,并提高系统的可靠性。各智能模块与主CPU的联络,可以利用单片机芯片本身具备的串行口,也可以使用双端口RAM。 (郭岩)