单片机的干扰分析及MCU的改进

发布者:HarmonyJoy最新更新时间:2012-08-01 来源: 重庆工业自动化仪表研究所 关键字:单片机  干扰分析  容错  Watchdog 手机看文章 扫描二维码
随时随地手机看文章

  长久以来,计算机系统的抗干扰一直是人们关心的重要问题,因为计算机用得越来越广,可靠性越来越重要,而抗干扰本身就是可靠性的重要组成部分。为了汽车、飞机、卫星、反应堆的安全,人们在抗干扰问题上花费了大量精力与金钱,尽管已经取得了长足的进展,但在性价比上远不能满足要求,以致高抗干扰的要求只是在高技术领域才加以考虑。本文讨论了干扰对错误的形成机制,提出了对MCU改进的建议。这个建议如果实施,不仅有利于高技术领域的应用,也会惠及一般的民用领域。

1  干扰源的讨论

  很久以前,还在“8031+2764+14433”的年代,我们做了一批过程监控仪表,用于灭菌过程F0的监控,遇到了强烈的干扰问题。灭菌过程约30 min,由电触点压力表控制进气电磁阀,间接控制温度。F0是一个温度函数的积分值,可以反映灭菌的效果,它综合考虑了温度波动的影响。当时采取了一些抗干扰措施,例如,硬件上对信号线屏蔽,信号滤波;软件上的智能滤波,程序复执,程序分段保护,数据后备,端口等重复初始化,ROM的定时校验和检验,多种出错报警,出错时重新热启动(可使问题有所缓和,但偶然会有判为ROM校验和错而停机的情况出现)。由于当时F0只是用作参考,问题尚不严重,如要掩盖,也可以用热启动代替停机;但很快F0要作为产品工艺参数,用记录纸备案,于是就重新设计了监控仪。新的监控仪用89C51+14433,再加上光耦和TI5617 D/A转换器,将温度和F0变为模拟量后送到双笔记录仪,实现产品工艺过程的记录与存档。硬件上,光耦隔离后部分是D/A和模拟电路,软件在原有基础上添加与TI5617有关的串行通信部分。TI5617的串行通信类似I2C,由CS、DIN和SCLK三条线构成,SCLK数据位时钟可达到25  ns,速度很高。用于计算的周期是6 s,仪表用定点算法配以查表,所以留出了充足的时间做许多抗干扰的工作。在D/A用的串行通信中甚至考虑了多次重复发送的子程序,希望减少通信错误的影响;但结果却很坏,记录纸上是一片墨带。由于不知道通信对错,很可能最后一次传送就是错的,于是不得不重新处理抗干扰问题。

  经查干扰主要发生在电磁阀动作的时候,由于不可能在现场为每一个简单的小表制作一个良好的地线,一般的市售电源滤波器件根本不起作用。现场用的是220 V交流电磁阀,无法设计缓冲线路。分析认为,电磁阀断开时会在电源上产生很大的反向电压。交流电源的示波器受到干扰,在无法看清干扰的情况下,就用数字万用表观察,可以观察到1 300 V以上的读数。考虑到数字万用表输入的滤波效果,真正的峰值还要大,因此推想,高频的干扰穿越了变压器绕组间电容,造成变压器次级交流电压瞬间反向。尽管反向波幅的衰减很大,但因方向已改变,整流二极管来不及响应,已不供电,而滤波的电解电容器动态上来不及反应,也不供电,造成稳压前直流电源瞬间下降。同时它通过整流二极管,78L15、78L05等低频器件到达二组隔离的电源,造成直流电源跌落。循此思路,发现TI5617的SCLK可能出现不正确的时钟信号,造成数据传送的错误。TI5617的读数发生在SCLK的下降沿,说明书上强调,在非传送时减少馈通应使SCLK=LOW,为节省电流消耗,SCLK是从光耦的基极输出的。因此若光耦次级电源跌落,确实会造成SCLK下降而误读。然后我们在基极电阻(20 kΩ)上并联0.1 μF电容,在光耦次级电源上串接高频二极管,以防0.1 μF电容器通过光耦反向放电。采取此措施后,记录曲线不再有墨带。对本应用而言,干扰问题初步解决,但仍不彻底。干扰得到解决本身证实了分析是正确的——来自电源的干扰有可能进到直流电源部分。

  国际标准ISO 7637是针对汽车电子领域电源的传导干扰问题的。它规定有#1、#2a/b、#3a/b、#4、#5a/b等多种测试波形,反映实际应用中会遇到的情形。其中,关断感性负载(例如雨刮器的马达)引起的电压升高,在12 V系统中可达50 V,虽有瞬间超过元器件耐压而引起损伤的可能性,但不会直接引起误动作。而在波形#1中,关断感性负载(例如电动座椅的马达和座椅的加热系统)产生的脉冲,在电源为12 V的系统中1 μs可达到-100 V,衰减到10%的时间为2 ms。在波形#3a中,电源为12 V的系统里5 ns可达到-138 V,回到0 V的时间大约为100 ns。这些是典型数据,实际上电源线不是匹配的传输线,干扰波还要来回反射,情况更为复杂。在这些场合,也可能发生直流电源的跌落干扰。

  空间的幅射干扰也是经常遇到的问题,例如在太空或反应堆附近,电子器件会受到重离子的轰击而产生故障;又如在空港区或大电流、高电压区域,电子器件也会受到强电磁辐射而发生故障。在这些场合,干扰也会引起MCU的基本门电路工作失误。

2  Watchdog不能解决软件可靠性问题

  Vcc的跌落会引起MCU的误动作。MCU里每一个读/写操作都是由门电路实现的,门的开关依赖于门的阈值和信号的时序。电源跌落时阈值发生变化,振荡器产生的信号时序也会变形。下面以8051单片机为例,考察如果干扰发生在执行指令“MOV dir1, dir2”时会产生什么后果。假定错误发生在指令的第1字节,最坏的情形是每个bit都反转,而最大的概率是只有一个bit发生反转。一个bit发生反转的情况如表1所列。

表1
按此在新窗口浏览图片[page]

从表1可见,一个bit的变化完全改变了指令的意义,程序流或数据产生不可预测的变化。例如,表中的跳转部分(bit 0, 2或5发生变化)可能不转入死循环,不引起Watchdog动作,也有可能跳到非正常指令处,直至死循环。表中非跳转指令则有可能改变累加器(bit 0, 1, 3, 4,6或7发生变化),数据RAM(bit 1,3, 6或7发生变化)或状态寄存器(bit 0, 1, 3, 4,6或7发生变化)。如果错误发生在指令的第2或第3字节,数据的源或目的地址就错了。因此,即使Watchdog没动作,也不表示程序运行正常。对8051其他指令作分析可得到类似的结果。由此可见,Watchdog至多保证系统不死机,却有可能掩盖了数据的错误。

  F0设计中,在关键点大量采用了“MOV dir1,tmp”,“MOV tmp, dir2”的形式将数据从dir1送到dir2,而不采用“MOV A,@R1”类指令,以减小对原始数据破坏的可能性,从而为程序复执创造条件。例如在备份数据Treh到Tbkh时,先将Treh送tmp1,然后将数据由tmp1送到备份Tbkh,再校验Tbkh与Treh是否一样。若不一样,就重作备份。采用的部分程序如下:

  MOVtmp1, Tbkh85 53 19
  MOVA, tmp1E5 19
  XRLA, Treh65 4C
  JNZtbkp70 F1

  其中“MOV A, tmp1”仍有破坏tmp1的可能性,但tmp1是Treh的拷贝,坏了可重做;“XRL A, Treh”有可能破坏Treh,但已无法作其他选择。

  在硬件抗干扰方面,有许多专用的电源监控芯片,如TL7705等,但是它们只适合在较慢的电源扰动下使用。对于直流电源的跌落干扰,MCU根本来不及作现场的保护工作,所以它不是解决快速干扰问题的办法。

  在F0中使用的办法也不尽完善,一般单片机线路中还有很多外围线路,例如F0中的光耦,3个光耦同时导通时要消耗约50 mA的电流,它们形成的动态电阻很小,发生电源跌落时,并联于MCU的解耦电容对此电阻放电,无法保证MCU正常工作的额定电压。如在MCU电源中串接高频二极管,就会引起额外的电源消耗,在低功耗的应用中也会形成新的缺点。有些功能强大的MCU本身功耗就大,容许的电源变化范围小,能否依靠解耦电容对抗电源跌落还需要检验。综上所述,软件解决办法不彻底,硬件解决办法也有很多缺点与限制。

3  MCU要增加的功能

  由于干扰而使指令出错的问题不是Watchdog能解决的,特别是造成源数据错时,程序复执也不能纠正错误的结果。程序设计者要在现成的指令体系中找到对源数据危害性概率最小的指令不容易。即使找到,也不能保证指令在有多bit跳变时源数据不错。另外,有些指令错误也可能破坏其他处的数据。利用破坏数据概率最小的指令设计程序也不是好办法,它既耗ROM空间,又费运行时间。

  增大指令的Hamming距离可以改善这一情况。例如,给指令增加一到数位校验位,一旦指令通不过校验,就不执行,并重新取指。这样,问题就有可能在产生后果前解决。就目前MCU的设计与生产水平而言,在技术与成本上这种增加不会有很大困难。虽然这一办法在添加的校验位有限时仍会有一定出错概率,但这种概率可以小到能接受的程度。

  为了更为可靠,作校验的线路可有某种冗余。连续重取指可能反映有其他故障,应通过某种方式通知应用层。为了不打扰程序设计者,这些指令的添加位应该在写入ROM时自动生成,这样就不会产生与现有产品的兼容性问题。

  在早期的MCU应用中,Watchdog是外置的,后来都集成到MCU里面去了。如果实现上述功能,MCU的抗干扰能力会更强,Watchdog可能就不需要了。软件的可靠性分析就可以将程序走飞和数据的完整性问题分割出来加以处理,软件部分更专注于逻辑分析,意义深远。

关键字:单片机  干扰分析  容错  Watchdog 引用地址:单片机的干扰分析及MCU的改进

上一篇:单片机的图形化编程方法简介
下一篇:基于瑞萨单片机的交流感应电机驱动电路的设计

推荐阅读最新更新时间:2024-03-16 13:04

MSP430单片机实现秒表,使用proteus8.7仿真
程序中用到两个时钟。 MCLK设置为8MHZ 定时器A0时钟选择SMCLK,32768HZ,可在proteus中设置 功能描述: 数码管显示秒、分。在显示过程中如果按下按键,则触发中断,停止计数, 再按一次,秒表继续计数。 开发中遇到的问题:在同时显示两个以上数码管时,由于P2端口的数据没有全部置位(共阳极数码管), 导致显示不完整,相同部分缺失。 解决办法,在扫描显示切换时,增加中间过渡数据如下 void display(int sec, int min){ //数码管显示数字缓存 uchar buf = {0, 0, 0, 0}; buf = sec%10; buf = sec/10%10; b
[单片机]
MSP430<font color='red'>单片机</font>实现秒表,使用proteus8.7仿真
单片机全局变量的使用
我们都知道有一个规则,那就是尽量不要使用全局变量,但自己写程序,有时感觉使用全局变量很方便,而且并没感到有什么缺点。 将网上查的的资料总结一下,发现全局变量的缺点主要有两个,其它具体的危害一般都是这两个的具体的显现。 全局变量缺点: 1.全局变量存在周周期长,将会占用更多的内存。 2.全局变量多处被调用,使全局变量的值变得不确定。 (1)用全局变量会增加程序的耦合性,会有一定移植麻烦,代码重用率低。 (2)全局变量,使用和更改他的地方多了以后,各个地方逻辑关系难以确定。 (3)过多的全局变量,大大降低程序的可读性,可维护性。 (4)容易造成命名冲突 其实,全局变量是不可避免要用到的,比如说温度采集,我们将传感器送回
[单片机]
基于PIC单片机的便携式测试记录仪设计
  基于PIC单片机的便携式测试记录仪(以下简称记录仪)既有一般数据采集装置的实时采集与保存功能,同时又能够对采集数据进行实时处理、显示和打印。适用于对采集速度要求不高、交流供电比较困难以及无须长期留人值班的场合。   以追求高可靠、低功耗、小体积设计思想的本记录仪具有如下功能:对现场物理量进行实时采集、保存、处理与显示;自动识别现场安装的传感器数量、传感器号和量程;自动和手动两种采集方式,自动采集适用于长期无人值班的固定场合,手动采集便于对分布在不同区域的物理量进行测试;与PC机通讯,可根据需要将采集数据下载至PC数据库;实时打印;自检功能,避免了系统运行过程中可能遇到本身无法容错处理的异常事件而导致的死机现象。   1 硬
[单片机]
单片机系统软件抗干扰方法
在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。 1 软件抗干扰方法的研究 在工程实践中,软件抗干扰研究的内容主要是: 一、消除模拟输入信号的嗓声(如数字滤波技术);二、程序运行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法。 1.1 指令冗余 CPU取指令过程是先取操作码,再取操作数。当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。若“飞” 到了三字节指令,出错机率更大。 在关键地方人为插入一些单字节
[单片机]
<font color='red'>单片机</font>系统软件抗<font color='red'>干扰</font>方法
[51单片机学习笔记FOUR]----16*16LED点阵
一、LED点阵发光原理 8*8单色单片机结构图如下: 从电路图中很简单的就可以看出来,想要点亮点阵中的某一个LED灯。只要使得那个灯所在的行输出高电平,所在列输出低电平就好。 二、点阵扫描实验 1 /*********************************************** 2 实验名称: 点阵扫描 3 实验说明: 扫描每个LED灯,检查点阵是否完好 4 实验时间: 2014/12/24 5 ***********************************************/ 6 #include reg51.h 7 #include intrins.h 8
[单片机]
[51<font color='red'>单片机</font>学习笔记FOUR]----16*16LED点阵
单片机AT89C51--7.按键(独立按键,矩阵按键)
1.键盘类型 1.1 编码键盘 通过硬件电路产生被按按键的键值码,程序简单但是硬件电路复杂 如计算机键盘 1.2 非编码键盘 软件编程来识别的称为非编码键盘,非编码键盘硬件电路简单,单片机中最常是非编码键盘 2.独立键盘和矩阵键盘 非编码键盘分为独立键盘和矩阵键盘 2.1 独立键盘 一开始线寄存器默认都是高电平,G为0V,G,S不导通。管脚为5V 这就是上拉电阻。 按下按键,管脚和地导通,电压变为0V 未按下按键,管脚和Vcc连接,电压为5V 2.2 矩阵键盘 3. 按键特性 4. 编程 4.1 独立键盘 按下S2按钮,数字加1,按下S3数字减1,最高不超过9,最低不低于0.高于9变为0.小
[单片机]
<font color='red'>单片机</font>AT89C51--7.按键(独立按键,矩阵按键)
基于单片机的EMC测试及EMC故障排除
所谓EMC就是:设备或系统在其电磁环境中能正常工作,且不对该环境中任何事物构成不能承受的电磁骚扰的能力。EMC测试包括两大方面内容:对其向外界发送的电磁骚扰强度进行测试,以便确认是否符合有关标准规定的限制值要求;对其在规定电磁骚扰强度的电磁环境条件下进行敏感度测试,以便确认是否符合有关标准规定的抗扰度要求。对于从事单片机应用系统设计的工程技术人员来说,掌握一定的EMC测试技术是十分必要的。EMC是电磁兼容(Electro-Magnetic Compatibility)的缩写,它包括电磁干扰(EMI)和电磁敏感性(EMS)两部分。由于电器产品在使用时对其它电器有电磁干扰,或受到其它电器的电磁干扰,它不仅关系到产品工作的可靠性和安全
[单片机]
基于AT89S52单片机的温度控制系统
0 引 言 在激光倍频晶体温度匹配中,有时需要很高的工作温度。晶体升温过程中,温度过快变化会导致晶体出现破裂,因此在开机过程中需要操作人员不断手动控制激光器晶体的温度。为了避免这样繁锁的工作,我们以单片机AT89S52为核心制作了一套自动控制升降温系统,有效的保证了晶体温度在安全的速率下变化。由于热敏电阻的非线性关系,一般的控温仪正常控温范围有限。在对热敏电阻和恒流源的特性进行分析后,将恒流源做了适当的改进,扩展了控温仪的控制范围,使其在较宽的温度范围内也具有较高的精度。 1 硬件系统设计 控制系统电路的核心器件是Atmel公司生产的AT89S52单片机。它是一种低功耗、低电压、高性能的8位单片机,片内带有一个8KB的fl
[工业控制]
基于AT89S52<font color='red'>单片机</font>的温度控制系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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