微型计算机系统软件抗干扰方法研究

时间:2022-06-11 08:29:26

微型计算机系统软件抗干扰方法研究

摘要:微机系统在作业现场可能遇到各种干扰和自身的随机性故障,现场恶劣的环境也有可能使计算机系统发生异常,甚至酿成严重事故。为此,在提高硬件系统抗干扰能力的同时,必须利用软件抗干扰方法保证计算机系统在错综复杂的环境里稳定运行,以提高微机测控系统的可靠性。

关键词:微型计算机;软件系统;抗干扰方法;可靠性

0引言

抗干扰技术贯穿于微机测控系统的设计、制造、安装以及运行各个阶段。由于系统作业环境复杂,在设计和开发微机系统时,一般难以周全地预计系统在实际工业现场中可能遇到的干扰和自身的随机性故障。因此,在提高硬件系统抗干扰能力的同时,利用软件设计灵活、节省硬件资源的特点,来提高微机测控系统的可靠性显得非常重要。

1软件抗干扰方法的研究

可靠性设计是一项系统工程,必须从硬件、软件以及结构设计等方面全面考虑。硬件系统的可靠性是微机系统可靠性的根本,而软件系统的可靠性设计可以起到抑制外来干扰,增强系统自身抗干扰能力的作用。通过软件系统的可靠性设计,能够最大限度地降低干扰对系统工作的影响,确保测控系统及时发现因干扰导致程序出现的错误,并使系统恢复到正常工作状态或者及时报警。实践中,软件抗干扰的主要手段是:消除模拟输入信号的噪声;程序运行混乱时使程序重入正轨。

1.1数字滤波

抑制叠加在模拟输入信号上的噪声,要多采取数字滤波技术。数字滤波是通过一定的方法计算或判断程序减少叠加在有用信号中的噪声干扰比重,从而提高系统采集信号的质量。数字滤波通常采用的方法有:中值滤波法、算术平均值法、防脉冲干扰平均值法、一阶递推数字滤波法。利用程序实现RC低通滤波,对周期性干扰和频率较高的随机干扰的滤波效果较好。当然,在程序中采用多重滤波算法,效果更佳,此时软件开发者应在算法复杂性、数值处理精度、采样实时性等几方面综合考虑。工程实践中,考虑到多数输入干扰信号呈毛刺状,作用时间短,可采用输入多次采样确认的方法进行滤波,即对输入信号进行采样,必须连续多次输入相同才有效。

1.2软件拦截技术

所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。CPU复位后,首先取指令的操作码,之后顺序取出操作数,当一条完整指令执行完成后,紧接着取下一条指令的操作码、操作数。这些操作时序完全由程序计数器PC控制。一旦PC因干扰而出现错误,程序便脱离正常运行轨道,出现“乱飞”,当飞出到某一个双字节指令时,若取指令时落在操作数上,误将操作数当作操作码,程序将出错。若飞出到了三字节指令时,出错的机率更大。为了使“乱飞”程序迅速纳入正轨,要多采用指令冗余技术,同时要合理设计陷阱,并将陷阱安排在适当的位置。

1.2.1指令冗余

指令冗余是指程序设计时应多用单字节指令,并在对程序流向起决定作用的关键地方人为地插入一些单字节指令NOP,或者将有效单字节指令重写,来保证“乱飞”的程序迅速纳入正轨。

NOP的使用在双字节指令和3字节指令之后插入2个单字节NOP指令,可保证其后的指令不会因前面的指令“乱飞”而继续。因为“乱飞”的程序即使落到操作数上,由于2个空操作指令NOP的存在,避免了后面的指令被当作操作数执行,从而使程序再次回到正轨。对程序流向起决定作用的指令和某些对系统工作状态起重要作用的指令前插入2条NOP指令,可保证程序迅速纳入轨道,确保这些指令正确执行。

重要指令冗余 对于那些对程序流向起决定作用的指令(如:RET,RRETI,ACALL等)和某些对系统工作状态有重要作用的指令(如:SERB,EA)的后面,可以重复写上这些指令,以确保这些指令的正确执行。

1.2.2软件陷阱

当“乱飞”程序进入非程序区或表格区时,不能采用冗余技术,此时可设定软件陷阱,来截断乱飞程序。所谓软件陷阱就是引导指令,强行将捕获的程序引向一个指定地址,在那里有一段专门处理程序出错的程序(用来诊断系统扰前的工作状态,并使程序运行恢复正常)。通常在EPROM中的非程序区填入以下指令作为软件陷阱:

DSP:……:显示子程序

RET

RET

NOP

:软件陷阱

NOP

NOP

:软件陷阱

NOP

LJMP FLY

LIMP FLY

FLY:……:“乱飞”处理子程序

RET

考虑到程序存贮器的容量,一般IK空间有2―3个软件陷阱就可以进行有效拦截。

软件陷阱安排在以下几种场合:

(1)未使用的中断向量区;

(2)未使用的大片EPROM空间;

(3)控制字表,时间常数表的最后的未使用空间;

(4)程序区中的一些断裂点,如LJMP,AJMP,RET,RETI指令之后,正常执行的程序到此不会继续往下执行了,在这种地方安排陷阱,就能有效地捕捉程序,而又不影响正常的程序执行流程。

1.2.3程序运行监视系统

若失控的程序在遇到冗余指令前就已自动形成死循环,则冗余指令和软件陷阱也无能为力了,这时系统会陷入完全瘫痪。为了避免此种情况,采取的措施是建立程序运行监视系统,不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入死循环,运行出错处理程序。例如,当硬件电路设计时未考虑到采用watchdog,为了简化硬件电路,可以建立―个纯软件的watchdog监视系统。这个watchdog系统只有采用比这个死循环更高级的中断子程序才能夺走对CPU的控制权。可以用一个定时器来作watchdog,将它的溢出中断设定为高级中断,系统中的其他中断均设为低级中断。当程序掉入死循环后,在设定的间隔时间内得不到主程序“目前正常”信号后,watchdog系统有一次溢出,产生高级中断,从而退出死循环。在中断向量区安放一条LJMP ERR指令,即可直接转向出错处理程序,由出错处理程序来完成各种善后工作,并用软件方法使系统复位。

1.3设置功能模块入口标志

一般情况下,在自动化生产线的控制系统中,当程序失去控制后,不允许从控制程序的入口处重新开始执行,而应当从失去控制的程序模块恢复执行。为此,控制程序应模块化,可以在每个功能模块的入口处设置一个标志。系统故障复位后,可根据这些标志选择进入相应的功能模块。

1.4信息冗余

信息冗余是为了检测或纠正信息在运算或传输中的错误而外加的一部分信息。在传送数据序列中,按一定的规律加入一些信息码,使原来不相关的数据变为相关,在接受端按发送端的编码进行译码,附加的信息码元就能自动检测传输中产生的差错并采取纠错措施。在通信和危机系统中,信息经常是以编码形式出现的,奇偶码、汉明码、法尔码、循环码及各种算术误差码都有很强的检错和纠错能力。一般冗余的信息码越多,其检错和纠错能力越强。

1.5自诊断

系统自诊断是提高微机系统可靠度和检测干扰的有效方法之一。自诊断一般分为:开机自诊断、周期性自诊断和键控自诊断。

开机自诊断又称为静态自检,主要是系统对RAM区数据、系统定时器功能、相互通道的读写、接口通信等部件的测试。检查RAM是否读写正确或运行过程中RAM区数据是否安全,诊断系统定时器、系统相互通道、系统接口等的完整性和可靠性,若不正常则给出信息提示或报警提示。

周期性自诊断又称为动态检测,是在程序运行过程中进行的,包括系统零漂自检、系统自动校正、系统自动补偿等。控制系统在运行过程中有关器件性能参数将受到各种干扰的影响,造成系统零点的偏移或漂移,影响系统工作的准确性和可靠性,因此系统在自检的过程时进行自动补偿,以提高系统运行的准确性和可靠性。

键控自诊断是通过人机对话设定特殊的系统自诊断功能。

2结束语

目前,采用抗干扰技术方法较多,提高硬件系统抗干扰能力是关键,同时利用软件抗干扰也越来越受到重视。在工程实践中通常都是几种抗干扰方法并用,互相补充完善,才能取得较好的抗干扰效果。实践证明,通过细致周到地分析干扰源、硬件与软件抗干扰相结合、完善系统监控程序等办法,设计一个稳定可靠的微机系统是完全可行的。

(注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。)

上一篇:手写数字识别的原理及应用 下一篇:决策支持评测系统的设计与实现