单片机测控系统件抗干扰技术分析研发_第1页
单片机测控系统件抗干扰技术分析研发_第2页
单片机测控系统件抗干扰技术分析研发_第3页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机测控系统软件抗干扰技术研究摘要:软件抗干扰措施是单片机测控系统硬件抗干扰措施的一个补 充和延伸,具有简单、灵活、方便、耗费硬件资源少及容易实现等 特点。软件抗干扰技术的使用会显著提高系统的可靠性。本文着 重讨论了测控系统中的软冗余技术、软件陷阱技术以及“看门狗” 数字滤波技术,重点介绍了实时测控系统软件运行的自监视法和 互监视法,并给出了软件抗干扰的其他一般方法。1绪论单片机测控系统设计中,对软件有以下几个方面的基本要求:(1) 可维护性:要求尽可能地采用模块化设计,程序流程清晰 明了,最大限度地控制使用和调用嵌套次数;(2) 可理解性:软件源代码应注意加注提示内容,一般应不少 于整个代

2、码行数的 60%,使其易于理解和阅读, 便于修改和补充;(3) 实时性:随着集合度和运算速度的提高,实时性已经成为 测试系统对软件的普遍要求,在工程应用软件设计中,采用汇编 语言要比采用高级语言更具有实时性;(4) 准确性:系统要求在进行大量运算时,要选取合适的算法,以便控制最后结果的精度;(5) 可靠性:可靠性是测控软件最重要的指标之一,他要求两方面的内容:一方面是运行参数环境发生变化时(如电压在规定范围内出现较大波动),软件都能可靠运行并得出正确的结果,也就是软件的自适应性;另一方面是在工作环境恶劣,干扰环境复杂 严重的情况下,软件必须保证可靠运行,这对测控软件尤为重要。 为了保证以上两方

3、面的要求,就必须使用多种抗干扰技术。2单片机软件抗干扰技术及一般方法2.1简介软件抗干扰技术是当系统受干扰后,使系统恢复正常运行或 输入信号受干扰后去伪存真的一种辅助方法。此技术属于一种被 动抗干扰措施,但是由于软件抗干扰设计灵活,节省硬件资源, 操作起来方便易行,所以软件抗干扰技术越来越受到人们的重视。 软件抗干扰技术主要研究的方面:(1) 采取软件的方法对叠加在模拟输入信号上的噪声进行抑 制,以读取真正有用的信息,如数字滤波器;(2) 在程序受到干扰"跑飞"的情况下,采取措施使程序回到正常的轨道上来,常见的抗干扰技术有:软件拦截技术(软件陷阱等); 输人口信号重复检测方

4、法;输出口数据刷新;数字滤波;(3) 程序具有自检功能。2.2软件拦截技术2.2.1 NOP指令使用单片机中最容易受到干扰的是内部程序计数 -PC的值,当受到干扰时,PC值被改变,CPU误将程序从正确位置跳转到无意 义区域,导致程序运行出错。目前常用的方法是在对程序走向有重要作用的指令(RET ,LCALL , SJMP, JC, LJMP , ACALL 等)之前加人23个单字节的NOP指令,当失控的程序遇到该指令后得到调整,使接下来的 程序得以正常执行。从实际使用过程中总结可知,应尽量多的使 用NOP指令,而且发现 NOP指令成对使用时,能起到比较满意 的抗干扰效果。软件陷阱(1)未使用的

5、中断区对于未使用的中断源因干扰而开放,从而直接影响软件的正 常工作的中断源,采用的方法一般是在对应的中断服务地址入口 处设置软件陷阱,使其跳转到程序入口,通常的软件陷阱设置如 下面的程序: ORG 0003HLJMP 0000H ;主程序入口。这样做既可以使程而在实际使用中,此种处理方法并不合适,特别是在系统联 试中,突然重新执行程序的情况应尽量避免。实际处理应该是让 其进入一个信息处理程序,并显示相关信息ORtl tMOHH£时熬W邱斷序捕捉到错误的中断后,及时离开,又可以根据相关信息快速定 位便于试验顺利进行。F:血如程序所示,只有定时器TO中断开放,对于可能影响程序的中 断,如

6、外部中断、定时器 T1中断,在其中断地址人口,均加上了 软件陷阱,使其跳转到ER38这个故障处理程序,从而避免程序的 "跑飞",也便于判断程序的走向。(2)未使用的EPROM空间当装载软件程序的存储芯片为27C64,其地址空间为0000H 仆FFFH,一般程序很少能够用完, 可填充"FF"。而FFH是MOV R7 , A的机器码,当程序乱入非程序区后,不仅无法转入正轨,而且还会破坏R7的内容,因此在实际使用过程对未使用的EPROM空间应全部填充为"0",因为程序复位入口地址为0000H,当"跑飞"的程序指针跳至无程

7、序处,可以让其重新指向主程序入口,可以 起到防"跑飞"的功能。(3)程序区为了保证可靠的运行, 以及一旦发生"跑飞",不但使其有出口 而且便于判断,实际应用中在整个程序中设置了若干软件陷阱, 当程序进入陷阱后,让其强制进入一个指定地址执行一段专门对 程序出错进行处理的程序。通过试验验证和使用中的经验总结, 在外场软件编写中,软件陷阱的设置,主要是在正常的程序流程 中,在认为较为重要的程序段中,随机设置若干个故障信息显示 程序区,一方面是完成正常的故障信息的显示,另一方面就是在 程序"跑飞"的情况下,通过故障信息的显示,可以快速判断&q

8、uot;跑飞', 的程序段,从而使程序步入正轨。程序流程如图1所示。223输入口信号重复检测方法对于重要开关量输入信号的检测,实际应用中一般采用3次或5次重复检测的方法,即对接口中的输人数据信息进行重复进 行3次或5次检测,若结果完全一致则认为是"真"的输入信号,若 多次测试结果不一致,即可以停止检测显示故障信息,又可以重 复进行再检测。对于软件测量而言,输入量干扰大多数是叠加到有效信号上 的一系列作用时间短的尖脉冲,但是频率不一致,因此应在相邻 的检测之间应有一定的时间间隔。理论上可以是等时间段的,而 在实际使用过程中,由于外部环境比较复杂,等时间段只能滤除 某个

9、频段的干扰,为了滤除尽可能多的干扰,间隔时间应为不等 的时间段,但是对数据影响较大的尖峰,通过观察其波形可知,其作用的时间宽度在几十到几百US之间,所以把滤波时间限定ms级上。在经过使用和验证,此方法可以有效地保证软件可靠运 行。需要注意的是,对于软件时序要求比较严格场合,延时查询 时间不宜过长,查询次数一般以3次为宜。输出端口数据刷新开关量输出软件抗干扰技术主要采用的方法是重复输出,这 是提高输出端口稳定性的有效措施之一。外场设备的微机系统为 51单片机系统,采用了 8155,8255可编程I/O扩展芯片,理论上 只在上电启动时,进行初始化一次即可。但是在实际使用中发现, 由于干扰等原因,可

10、使芯片的工作控制字遭到破坏,从而使系统 输入输出状态混乱的情况时有发生,因此,在读取重要信号之前, 先对8155,8255进行初始化操作,通过一段时间软件运行,稳定 度大大提高,但是状态混乱情况仍有发生,经过分析数据特点和 系统要求后,认为 8155、8255允许多次设置状态字、控制字等, 而且对系统并无不良影响。 因此,在实际应用中,用到8255和8155 之前均首先进行初始化操作,然后再进行状态的读取和写入。通 过长时间试验和联试,不再出现此类问题,软件运行稳定可靠。 另外应注意,在重复设置 8255,8155芯片时,一定要将其工作方 式、控制字一起设置,方可确保软件可靠工作。数字滤波为了

11、克服干扰对 A/D转换结果的影响,可根据情况采取相应 的数字滤波技术。数字滤波的方法很多,如有中值滤波法、平均 值滤波法等,经过对不同滤波法的实际使用和试验验证,认为采 用防脉冲干扰平均值滤波法,抗干扰效果比较明显。普通的平均值滤波,在干扰十分严重的场合,所得到的平均值中干扰的成分仍比较大,不易消除由于脉冲干扰而引起的误差。而防脉冲干扰平均值滤波是在采集的N个数据中,去掉数据中的最大值和最小值,然后计算N-2个数据的算术平均值。在实际应用中,此法主要是用在 AD值的检测上,由于外场设备中AD采集值判定,直接影响此设备能否投入使用,所以对所采AD值的可靠性要求高,采用此滤波法后,通过仿真可以清楚

12、看出,在某 些特定的情况下,AD采集值波动较大,但此法可以有效地避免了 CPU对采集值的误判,使软件得以可靠运行。此程序完成的主要功能是调用A/D测量输入子程序 ACD,将循环采集的6个AD值,放在70H至75H的寄存器中,RO为记 录采集次数,70H和75H分别放置最大值和最小值,去除最大值 和最小值后,将其余4个值求算术平均数, 以得到的值为最终 AD 采集值放在68H寄存器中。程序自检程序自检是提高测控软件可靠性的有效方法之一。在实际应用中,自检程序主要是对单片机系统的主要器件如8031的I/O 口、外部扩展的可编程I/O接VI芯片、A/D器件、ROM器件等进行 检测,如出现故障能够给出

13、故障部位。因此自检程序不但可以了 解与测试相关外设的工作情况,而且可避免因外设原因而使测控 系统不能正常工作的干扰。2.3实时控制软件运行过程中的自监视法基本概念自监视法是工业控制计算机自己对自己的运行状态的监视。般的工控机 CPU内部具有 Watchdog Timer,使用定时中断来监视程序运行状态。定时器的定时时间稍大于主程序正常运行 一个 循环的时间,在主程序运行过程中执行一次定时器时间常数 刷新操作。这样,只要 程序正常运行,定时器不会出现定时中断。 而当程序运行失常, 不能及时刷新定时 器时间常数而导致定时中 断,利用定时中断服务程序将系统复位。在8031应用系统中作为软件抗干扰的一

14、个事例,具体做法是:*使用8155的定时器所产生的溢出”信号作为8031的外部中断源INT1。用555定时 器作为8155中定时器的外部时钟输入; * 8155定时器的定时值稍大于主程序的正常循环时间;*在主程序中,每循环一次,对 8155定时器的定时常数进行 刷新;*在主控程序开始处,对硬件复位还是定时中断产生的自动 恢复进行分类判断处 理。然而,这并不等于万无一失。例如,Watchdog电路本身失 效;设置 Watchdog的指令正好在取指令时被干扰而读错; Watchdog发现”程序跑飞之后,其产生的复位脉冲或者NMI申请信号正好被干扰而没奏效等等。虽然以上的导致 Watchdog失效的

15、因素的几率很小,但总是存在的。另一个方面,还有相当数量的 工业控制计算机没有 Watchdog电路。因此,以下重点讨论的软件 自监视法就势在必行了。随时监督程序计数器 PC值计算机正常运行,其 PC值一定在程序区内。如果 PC值跑出 程序区,计算机肯定已发生了程序跑飞。检查程序计数器 PC值是否在程序区内的方法,是在一个经常要产生外部中断的某个中断 服务程序中,读取转入该中断时压入堆栈的断点地址。如果该地址在程序区内,则认为PC值正常,否则一定是程序跑飞了。 此时, 程序跳转到机器的重启动入口或者复位入口,机器重新启动。于 是机器又自救活了。如果没有一个这样合适的中断源,可以专门 设置一个定时

16、中断或者几个定时中断,在中断服务程序中检查 PC值是否合法,一旦发现不对就立即转入机器的重启动入口。定时 器中断的时间常数,可视机器的繁忙程度和重要性设定,一般从 几个毫秒到几十毫秒都可以。这个方法的局限性是不能查出 PC值在程序区内的乱跳,即此 时PC值虽受干扰却并没有超出程序区,而是错位乱拼指令而构成一些莫名其妙的操作,或者死循环。主循环程序和中断服务程序相互监视每个工控机的主循环程序和中断服务程序都有一定的运行规 律可循。因此可以设计出主循环程序与各中断服务程序、各中断 服务程序之间的相互监视。 每个监视对要定义一个 RAM单元,依 靠对其计数/清零的方法表达相互监视信息。例如,某工控机

17、的主 循环程序循环一次最长时间为80 ms,它的一个定时中断时间常数为10 ms,当我们安排该定时中断监视主循环程序运行时,可以每次10 ms中断对该RAM单元加1计数,而主循环程序每循环一次 对该RAM单元清零。因此,正常运行时,这个监视计数RAM单元的计数值不可能 >9,如果10 ms定时中断服务程序发现其计数 值9,就知道主循环程序已经被干扰跑飞或出现死循环,于是就 跳转到机器的重启动入口,重新恢复运行。使用这个方法,如果 设计得当的话,是非常有效的。我们多年的经验是:主循环程序 被干扰跑飞可能性最大,中断服务程序越短小越不易跑飞。主循 环程序和中断服务程序以及中断服务程序之间的相

18、互监视,应当 多设计几个监视对会更好。随时校验程序代码的正确性工业控制计算机的实时控制程序代码通常都采用EPROM固化运行,一般不易发生被改写的情况。但成年累月运行,我们有 时也会发现极个别的单元出错。其原因可能是芯片质量问题或者 因静电、雷击干扰等造成的改写。程序出错了,将直接造成运行 错误或者无法运行。 校验的方式可以采用累加和校验或者BCH校验(一种CRC校验方法)。当采用BCH校验时,其分组附加的冗 余字节可以集中在程序区之外的某个EPROM区域里。校验方法是在某个短小而且经常发生的中断服务程序内安排一个校验模 块,可以设计成每次循环校验一部分程序代码,分若干次校验完 成;或者当代码少

19、,任务轻松时也可以一次校验完。如果发现校 验错,应当立即向工控网络主站报告或者以自身报警的办法告知 操作人员,以便及时处理。这个方法的局限性是被损坏的程序代 码不是校验程序块,而且以该中断还可以正常响应为前提。由于 该中断服务程序短小,通常还是有很大的概率自监视程序代码的 正确性。随时校验RAM的正确性在实时控制过程中,干扰造成比较严重的危害之一就是冲毁 RAM中的数据,由于 RAM中保存的是各种原始数据、标志、变 量等,如果被破坏,会造成系统出错或无法运行,根据数据被冲 毁的程度,一般可分为三类:*整个RAM数据被冲毁;* RAM中某片数据被冲毁;*个别数据被冲毁。因此需要经常监视 RAM的

20、正确性。在工 业控制系统中,RAM的大部分内容是为了进行分析、比较而临时 存放的,不允许丢失的数据只占极少部分。在这种情况下,除了 这些不允许丢失的数据外,其余大部分内容允许短时间被破坏, 最多只引起系统的一个很短时间的波动,很快能自动恢复正常。 因此,在工控软件中,只要注意对少数不允许丢失的数据保护, 般常用的方法有 校验法”和 设标法”。这两种方法各有千秋, 校验法比较繁锁,但查错的可信度高。设标法简单,但对数据表 中个别数据冲毁的情况,查错则无难为力。在编程中一般应综合 使用,其具体做法为:*将RAM工作区重要区域的始端和尾端各设置一个标志码“ 0”或 “1;*对RAM中固定不变的数据表

21、格设置校验字。 在程序的执行 过程中,每隔一定的时间通过事先设计的查错程序来检查其各标 志码是否正常,如果不正常,则利用数据冗余技术通过抗干扰处 理程序来进行修正;冗余数据表的一般设计原则是:*各数据表应相互远离分散设置,减少冗余数据同时被冲毁的概率。*数据表应尽可能远离栈区,减少由于操作错误造堆栈被成 数据冲的可能。上述对RAM区域的恢复处理方法,在不同的应 用系统中应根据的具体情况进行取舍3实时控制系统的互监视法在实时控制系统中,人们关注的问题是能否确保正常的控制 状态。如果干扰进入系统,会影响各种控制条件、造成控制输出 失误。为了确保系统安全可以采取下述软件抗干扰措施:3.1.软件冗余C

22、PU取指令过程是先取操作码,再取操作数。当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令, 若取指令时刻落在操作数上,误将操作数当作操作码,程序将出 错。若“飞”到了三字节指令,出错机率更大。在关键地方人为插入一些单字节指令,或将有效单字节指令重 写称为指令冗余。通常是在双字节指令和三字节指令后插入两个 字节以上的NOP。这样即使乱飞程序飞到操作数上,由于空操作 指令NOP的存在,避免了后面的指令被当作操作数执行,程序自 动纳入正轨。此外,对系统流向起重要作用的指令如RET、RETI、LCALL、LJMP、JC等指令之前插入两条 NOP,也可将乱飞程序纳入正轨, 确保这些

23、重要指令的执行。对于条件控制系统,将控制条件的一次采样、处理控制输出, 改为循环采样、处理控制输出。这种方法具有良好的抗偶然因素 干扰作用。32拦截技术所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处 理。通常用软件陷阱来拦截乱飞的程序。因此先要合理设计陷阱, 其次要将陷阱安排在适当的位置。3.2.1软件陷阱的设计当乱飞程序进入非程序区,冗余指令便无法起作用。通过软 件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。 软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。通常在EPROM中非程序区填入以下指令作为软件陷阱:NOPNOPLJMP 0000H其机器码为0000

24、020000。陷阱的安排通常在程序中未使用的 EPROM空间填0000020000。最后一 条应填入020000,当乱飞程序 落到此区,即可自动入轨。在用户 程序区各模块之间的空余单元也可填入陷阱指令。当使用的中断 因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及 时捕获错误的中断。如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:NOPNOPRETI返回指令可用“ RETI,也可用“_JMP 0000H :如果故障诊断程序与系统自恢复程序的设计可靠、完善,用LJMP 0000H ”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。考虑到程序存贮器的

25、容量,软件陷阱一般1K空间有2-3个就可以进行有效拦截。4其它常采用的软件抗干扰方法4.1陷井法有时意想不到的干扰,破坏了中断和所有程序的正常运行。此时PC值可能在程序区内,也可能在程序区之外,要使其能够自恢复正常运行,只有依赖于广布 陷井”的绝招了。 这里所谓的 陷 井”,是指某些类型的 CPU提供给用户使用的软中断指令或者复位指令。例如,Z80指令RST 38H,其机器码为FFH。CPU执行 该指令时,则将当前程序计数器 PC的值压入堆栈,然后转到0038H 地址执行程序。如果把 0038H作为一个重启动入口,则机器就可 以恢复新的工作了。再例如,INTEL8098、80198系列的复位指

26、令 RST,机器码也为 FFH。CPU执行该指令时,其内部进行复位操 作,然后从2080H开始执行程序。当然,80198系列还有更多的 非法操作码可作为陷井指令使用,这时只需要在2012H的一个字的中断矢量单元里安排中断入口,并且编制一个处理非法操作码 的中断服务程序,一遇非法操作码就能进行故障处理。作者多年 的经验表明,陷井不但需要在ROM的全部非内容区、RAM的全部非数据区设置,而且在程序区内的模块之间广泛布置。一旦机 器程序跑飞,总会碰上陷井,立即就可以救活机器了。4.2重复功能设定法工控机的很多功能的设定,通常都是在主程序开始时的初始 化程序里设定的,以后再也不去设定了。这在正常情况下

27、本无问 题。但偶然的干扰会改变 CPU内部的这些寄存器或者接口芯片的 功能寄存器,例如,把中断的类型、中断的优先级别、串行口、 并行口的设定修改了,机器的运行肯定会出错,因此,只要重复 设定功能操作不影响其当前连续工作的性能,都应当纳入主程序 的循环圈里。每个循环就可以刷新一次设定,避免了偶然不测发 生。对于那些重复设定功能操作会影响当前连续工作性能的,要 尽量想法找机会重新设定。例如串行口,如果接收完某帧信息或 者发送完某帧信息之后,串口会有一个短暂的空闲时,就应作出 判断并且安排重新设定一次的操作。4.3重要数据备份法工控机中的一些关键数据,应当有至少有两个以上的备份副 本,当操作这些数据时,可以把主、副本进行比较,如其改变, 就要分析原因,采取预先设计好的方法处理。还可以把重要数据 采用校验和或者分组 BCH校验的方法进行校验。 这两种方法一并 使用则更可靠。4.4系统死锁”的软件对策在工业控制系统中,A/D、D/A,显示等输入/输出接口电路是 必不可少的。这些接口与CPU之间采用查询或中断方式工作,而这些设备或接口对干扰很敏感,干扰信号一 旦破坏了某一接口的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论