提高单片机系统可靠性的研究

发布者:捡漏来了最新更新时间:2016-11-07 来源: ofweek关键字:单片机  系统可靠性 手机看文章 扫描二维码
随时随地手机看文章
  目前,大量的嵌入式系统均采用了单片机,并且这样的应用正在更进一步扩展;但是多年以来人们一直为单片机系统的可靠性问题所困惑。在一些要求高可靠性的控制系统中,这往往成为限制其应用的主要原因。

  1 单片机系统的失效分析

  一个单片机系统的可靠性是其自身软硬件与其所处工作环境综合作用的结果,因此系统的可靠性也应从这两个方面去分析与设计。对于系统自身而言,能不能在保证系统各项功能实现的同时,对系统自身运行过程中出现的各种干扰信号及直接来自于系统外部的干扰信号进行有效的抑制,是决定系统可靠性的关键。有缺陷的系统往往只从逻辑上去保证系统功能的实现,而对于系统运行过程中可能出现的潜在的问题考虑欠缺,采取的措施不足,在干扰信号真正袭来的时候,系统就可能会陷入困境。任何系统的可靠性都是相对的,在一种环境下能够很好工作的系统在另一种环境下却有可能是很不稳定的。这就充分说明环境对系统可靠运行的重要性。在针对系统运行环境去设计系统的同时,应尽量采取措施改善系统运行的环境,降低环境干扰,但这样的措施往往比较有限。

  2 提高可靠性的措施

  提高单片机系统可靠性的方法与措施很多。一般地,应根据系统所面临的具体的可靠性问题,针对引起或影响系统不可靠的因素采取不同的处理措施。这些措施一般从这样两个目的出发:第一,尽量减少引起系统不可靠或影响系统可靠的外界因素;第二,尽量提高系统自身抗干扰能力及降低自身运行的不稳定性。例如,为了抑制电源的噪声和环境干扰信号而采用的滤波技术、隔离技术、屏蔽技术等都是出于第一个目的;另外,针对系统自身而采用的看门狗电路、软件抗干扰技术、备份技术等均是出于第二个目的而采取的措施。其中第一类的措施较常使用,其使用简单而且效果也较好,但其对系统可靠性的提高是有限的,许多情况下不能满足系统的要求。第二类措施的使用可以更进一步提高系统的可靠性,往往在高可靠性的系统设计中被广泛使用。下面就第二类技术使用中的一些相关问题作进一步的分析。

  2.1 用监视定时器技术提高系统的可靠性

  监视定时器(Watchdog)技术现在使用得非常广泛,技术已较为成熟,这一技术的支持手段也很多。目前,各处理器的生产厂家几乎都在生产内置有看门狗定时器的单片机产品,市场上还有许多独立的看门狗定时器芯片可供选择。要实现这样的电路已经较为容易,因此这里对于如何实现这一技术的一般细节不作详细的论述,仅就采用此技术所导致的可重人性问题进行分析。采用监视定时器技术后,一旦程序跑飞,系统立即会被监视定时器复位掉,从头重新启动系统,从而退出不正常的运行状态,但是这样使用时必须注意系统的可重人性。所谓系统的可重人性可以这样来定义:当一个微处理器系统在重新复位启动以后,系统对外的执行操作不因重新启动而改变,或者说这种改变是能够容忍的,从而保证整个系统对外操作的连续性和顺序性,也就是系统最终的安全性和可靠性。对于一个系统,如果它对外的控制操作只与系统当前的输入状态有关,那么这个系统就几乎具有完全的重入性能;相反,如一个系统对外的输出操作不仅与系统当前的输入相关,而且与系统的历史状态有关,那么如果系统重入时系统的历史状态没有保留或者历史状态被破坏,那么此时系统对外的操作就可能完全是错误的,这样的系统虽然在看门狗定时器的作用下退出了不正常的运行状态,但重入的状态也不会正常,那么这样的系统也只能是病态的系统,不能使用。因此,对于采用了看门狗电路来提高可靠性的系统,必须严格保证系统的可重入性。

  对于与历史状态相关的系统,为保证其重入性能,可以把其历史状态保存在系统的RAM中,即在单片机系统的内存或其扩展的外部存储器中,开辟出专用于保存历史状态的缓冲区。在确保系统不掉电的情况下,这些历史数据在系统重入时可以被重新使用。如果不能保证系统的电源稳定,还必须考虑采用备用电池供电,以保证RAM数据的安全稳定;对于时间不是太敏感的系统,还可以采用E2PROM或Flash ROM来保存历史数据。

  2.2软件抗干扰技术

  一个系统可能由于存在着各种干扰及不稳定因素而出现运行故障。为解决这一问题,可以从程序的设计方面采取一些措施。传统的为抑制系统的干扰信号而经常采用的软件滤波技术、软件冗余设计就是这一类的典型应用。根据设计经验,通常还可以采用软件锁设计、程序陷阱设计。这一类方法主要是针对程序跑飞的情况而采用的。当系统在干扰信号的作用下发生程序跑飞时,程序指针有可能指向两个区域:一种可能正好转到程序区的其他地址进行执行,一种可能转移到程序空间的盲区进行执行。所谓盲区,就是说那里并没有存放有效的程序指令。对于第一种情况,可以采取软件锁加以抑制。例如为保证对外操作的安全,在软件锁设计中,对于每一个相对独立的程序块在其执行以前或执行中对一个预先设定好的密码进行校验,只有当这一密码相符时执行才真正有效,也只有程序是通过正常的转移途径转移过来时,才会由上一级的程序设定正确的密码;否则,会根据校验错而使程序强制发生转移,错误状态得到处理,并恢复程序的正常运行状态。可以看下面的一个例子:假设有顺序执行的三个程序块,每一个程序块执行时都对其设定的密码进行校验。

 

  

  

 

  当程序顺序执行时,每一个程序块都能够得到有效正确的执行。现在假设程序由于干扰而发生跑飞,由SUB—PRO1的块处理跳到了程序SUB-PR03处开始执行,那么在执行中密码校验会出错,程序将转移到错误处理程序进行处理,避免进行错误的操作。

  设计程序陷阱的目的,主要是为了防止程序跑飞到程序盲区进行执行。一般情况下,对于程序代码空间以外的ROM空间的处理是采用空置的方法。固化程序时,这些空置空间被全写为1或全写为O,这样程序跳入这一区域将不可控。为了捕获跳入此区的程序,可以采用程序陷阱来予以实现。下面通过例子来说明:假设某系统程序空间为32KB,程序编译后共生成18 KB的代码,那么,还有14 KB的程序空间未被使用,可以在该区域放置下面的陷阱程序:

 

  

 

  用上面程序段重复覆盖剩余的程序空间陷阱程序里的每一段含有的NOP指令的多少对于捕获的成功率及捕获的时间有影响。NOP指令放置的越多捕获的成功率就越高,但花费的时间就越长,程序失控的时间也越长;否则,情况则相反。因为只有程序跳转到NOP指令或LJMP指令的首个字节时,才能成功捕获;当程序跳到LJMP指令的后两个字节时,可能会出现不可预知的执行结果。被捕获的程序如果跳到程序的起始处执行时,还必须考虑程序的可重人性。

  2.3采用备份系统提高可靠性

  备份系统在许多重要控制系统中已被广泛使用,但多在工控机中或较大型的系统中采用。备份系统可根据具体的情况分为在线备份系统和后备备份系统。对于在线备份系统,系统中的两个CPU均处于工作状态,有可能两个CPU处在对等的位置,也可能一个处在主CPU的位置,而另一个处在从CPU的位置。在对等的情况下,两个CPU共同决定系统对外的操作,任何一个CPU出错都将

  引起对外操作的禁止。对于一主一从的情况,往往是主CPU负责系统控制逻辑的实现,而从CPU负责对主CPU的工作状态进行监控。当监控到主CPU工作异常时,从CPU通过强行复位主CPU等操作使主CPU恢复正常,同时,为确保从CPU工作正常,从CPU的工作状态也被主CPU监控;当从CPU的工作状态不正常时,主CPU也可采取措施使从CPU恢复正常工作,即实现互相监控的目的。在具体的设计中,主从CPU进行信息交换的途径非常灵活、多样。例如,采用公用的存储器来实现监控信息的交换(如把公用信息存入双口RAM),采用握手信号的方法实现监控信息的交换等。

  3 提高系统可靠性的综合设计方法

 

  在一个具体的系统设计中,为提高系统的稳定性和可靠性,往往要综合采用多种措施来达到满意的效果,这是全面提高系统可靠性的必由之路。系统不同,其具体的控制对象就可能不同,运行环境也会千差万别,因而其面临的主要干扰问题就不同,采取的措施也就不同;但仅采取某项措施就希望全面提高系统的可靠性常常是不现实的,而要针对主要问题综合采取多项措施联合提高可靠性。

 

  4 设计实例

  下面给出一个设计实例,以进一步说明提高系统可靠性设计的一些常用方法。

  在某卫星通信系统中,为了降低系统的相噪,要求其前置低噪声放大器(LNA)的工作温度保持恒定(40℃);而该放大器在野外工作的环境温度范围为一40~+60℃之间,因此必须把该放大器放入特制的恒温箱中。该恒温箱应具有既能制热又能制冷的功能。制热采用电阻丝加热器,制冷采用半导体制冷片来实现。为防止恒温箱因控制器失灵而造成温度失控甚至损坏低噪声放大器,破坏整个系统的正常工作,恒温箱的设计主要采用了主从双CPU系统来提高系统的可靠性。除此以外,还采用了如电源监控技术、看门狗技术、软件陷阱技术、光电隔离技术等措施综合提高系统的可靠性。该系统的结构框图如图1所示。

 

  

 

  主CPU负责加热器、制冷片及箱内箱外温度的检测,担负主要的控制任务。主CPU选AT89S52单片机,内含看门狗定时器,在芯片外加MAX707作为电源监控电路;除可以向主CPU提供可靠的复位信号以外,还可以检测掉电中断申请信号,当掉电发生时及时保存现场数据。加热棒使用交流220V供电,制冷片采用15V直流稳压电源供电。为防止高电压强电流对弱电部分的干扰,主CPU

  产生的控制信号都经过光电隔离送向驱动电路,以提高系统的可靠性。

  从CPU选AT89C2051,主要负责对主CPU工作情况的监控及电源供电电压的监视。当掉电现象发生时,AT89C2051内的电压比较器会检测到这种变化,并由后备电池供电,通过485口向监控台报告。

  主从CPU之间的监控是相互的。主从CPU通过它们之间的I/O口线握手,彼此监视对方的工作状态,并采取相应的处置措施,保证系统对外操作的安全。通过上述措施的实施,系统的可靠性非常出色,自投入运行以来一直稳定可靠,无不明原因的死机或失控现象发生,充分说明了系统设计的成功。而根据以往的经验,如不采用上述的综合设计方法,这样的系统通常在连续运行1~2周后就很可能产生问题。

  结 语

  本文详细分析了单片机系统失效的原因,讨论了提高系统可靠性的措施,并提出了提高系统可靠性的综合设计方法。在低噪声放大器恒温控制器中的成功应用,表明这种设计方法是行之有效的,系统的可靠性得到了充分的保障。

关键字:单片机  系统可靠性 引用地址:提高单片机系统可靠性的研究

上一篇:自动巡线轮式机器人控制系统设计方案
下一篇:基于RAM的嵌入式可编程控制器的设计与实现

推荐阅读最新更新时间:2024-03-16 15:19

单片机实验板2011_V1.1-ADC0809练习程序
原理图: ADC0809控制时序: 测试程序 /************单片机教学实验板 ******************/ /*功能描述:ADC0809练习 */ /*作者:郑 文 */ /*编写时间:2011.3.1 */ /*接外部晶振11.0592 MHZ */ /*功能描述*/ //AD采集声音 LED输出 #include reg52.h #include STC_Delay.h #include stdio.h #include stdlib.
[单片机]
<font color='red'>单片机</font>实验板2011_V1.1-ADC0809练习程序
基于单片机的智能感应灯设计
  引言   能源日益紧张的今天,产品设计的主要考虑要点就是节能了。既节约又能合理利用电能的设计更应是产品设计的主要目标。同时,照明灯具发展到今天,发展方向逐步转向低成本、自动化阶段。先进今市场上的各种感应灯已基本实现自动控制功能。但仍然存在一些不足之处。 红外自动感应灯受到红外发射角度的影响。无法在较大的范围形成有效的感应空间。   单片机因体积小、重量轻、成本低廉、灵活性好、易于开发与应用等优点而被广泛应用于工业自动化、生产过程控制、智能化仪器、仪表等领域。随着照明用电量占总用电量比例的不断增加,人们努力实现照明灯具的智能控制。单片机自然成了照明灯具实现智能化的首选器件。但有些设计都过于复杂,也忽视了教室马路等用电量较大的
[单片机]
基于<font color='red'>单片机</font>的智能感应灯设计
DSP与单片机高速通信实现的方案
 1引言   数字信号处理器(DSP)是一种适合于实现各种数字信号处理运算的微处理器,具有下列主要结构特点:(1)采用改进型哈佛(Harvard)结构,具有独立的程序总线和数据总线,可同时访问指令和数据空间,允许实际在程序存储器和数据存储器之间进行传输;(2)支持流水线处理,处理器对每条指令的操作分为取指、译码、执行等几个阶段,在某一时刻同时对若干条指令进行不同阶段的处理;(3)片内含有专门的硬件乘法器,使乘法可以在单周期内完成;(4)特殊的指令结构和寻址方式,满足数字信号处理FFT、卷积等运算要求;(5)快速的指令周期,能够在每秒钟内处理数以千万次乃至数亿次定点或浮点运算;(6)大多设置了单独的DMA总线及其控制器,可以在
[嵌入式]
DSP与<font color='red'>单片机</font>高速通信实现的方案
PIC单片机入门指南
第一步首先得下载个开发环境,PIC的开发环境有,MPLAB IDE和MPLAB X IDE其中X的需要安装JAVA的东西, 所以这里先推荐安装旧版的,以下是连接, http://www.microchip.com/stellen ... 9&part=SW007002 打开后在下面找到最大的那个压缩包下载。 下载完毕后解压出来,运行setup.exe安装, 猛点下一步,如果需要更改路径就要更改下,直到安装完毕。 下载XC8编译器 http://www.microchip.com/pagehandler/zh-cn/devtools/mplabxc/ 连接在左边的 XC8 Windows -- 点这个下载完后运行x
[单片机]
PIC<font color='red'>单片机</font>入门指南
51单片机不能正常起振的原因分析
如何确定晶振正常起振? 1、判断方法很多,用示波器看波形是最直接的,用数字万用表的电压档测电压也行,因晶振波形的占空比为50%,所以测得的平均电压为1/2Vcc左右,对于51单片机,在使用外置程序存储器的时候还可以测PSEN引脚或P0口引脚的电压或波形,只有晶振电路正常工作,那些引脚才会有信号输出,但现在很少采用片外扩展存储器,所以测晶体两端的电压或波形即可,只是晶振电路设计不良时,测试设备的引入有可能导致停振。 2、晶体两端的电压差不是平均电压差,虽然事实上因外电路的影响,晶体两端的电压可能会有差别,但这不是判断晶振是否起振的依据,也不是晶振电路正常工作的条件。至于一高一低没有工作是指一端为Vcc或接近Vcc,另一端为0或接
[单片机]
51<font color='red'>单片机</font>不能正常起振的原因分析
AVR单片机测温基于DS18B20
#include iom16v.h #include macros.h #include delay.h #define uint unsigned int #define uchar unsigned char #define dula_set PORTA |=BIT(3) //数码管段选 #define dula_clr PORTA &=~BIT(3) #define wale_set PORTA |=BIT(4)//数码管位选 #define wale_clr PORTA &=~BIT(4) #define DQ_IN DDRA&=~BIT(5) #define DQ_OUT DDRA|=BIT(5) #define
[单片机]
单片机c语言教程:运算符和表达式(位运算符)
学过汇编的朋友都知道汇编对位的处理能力是很强的,但是单片机C语言也能对运算对象进行按位操作,从而使单片机C语言也能具有一定的对硬件直接进行操作的能力。位运算符的作用是按位对变量进行运算,但是并不改变参与运算的变量的值。如果要求按位改变变量的值,则要利用相应的赋值运算。还有就是位运算符是不能用来对浮点型数据进行操作的。单片机c语言中共有6种位运算符。位运算一般的表达形式如下: 变量 1 位运算符 变量 2 位运算符也有优先级,从高到低依次是:“~”(按位取反)→“ ”(左移) →“ ”(右 移) →“&”(按位与)→“^”(按位异或)→“|”(按位或) 表 8-1 是位逻辑运算符的真值表,X 表示变量 1,Y 表示变量 2
[单片机]
24C02在PIC单片机系统中的应用
MICROCHIP公司的PIC16系列单片机以其精简的指令和较强的端口驱动能力在各个领域得到广泛的应用。在需要储存较大数量数据的控制领域,24C02可以解决PIC16C8 系列单片机片内EEPROM不足的问题,用以保存诸如用户设置参数、采集到的数据等。 由于部分PIC单片机不具备I2C总线接口,在应用时必须用软件法加以解决。 在软件编制时应当严格遵循I2C总线规则,并注意24C02的片内读写周期时间,调整好程序流程,以避免写不进、读不出的问题。 下面将笔者在实际工作中遇到的问题和解决的方法进行简单的介绍,希望可以给同行一些帮助。 首先约定,数据由微处理器发送到24C02称 写 、 发 ,反之称 读 、
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved