精华内容
下载资源
问答
  • 因此,除了整个系统的结构和每个具体的工控机都需要仔细设计硬件抗干扰措施之外,还需要注重软件抗干扰措施的应用。我们在多年的工业控制研究中,深感工业现场意外因素太多并且危害很大。有时...

    0 引言

    工业现场各种动力设备在不断地启停运行。使得现场环境恶劣,电磁干扰严重。工业控制计算机在这样的环境里面临着巨大的考验。可以说我们研制的工业控制系统能否正常运行,并且产生出应有的经济效益,其抗干扰能力是一个关键的因素。因此,除了整个系统的结构和每个具体的工控机都需要仔细设计硬件抗干扰措施之外,还需要注重软件抗干扰措施的应用。我们在多年的工业控制研究中,深感工业现场意外因素太多并且危害很大。有时一个偶然的人为或非人为干扰,例如并不很强烈的雷击,就使得我们自认为无懈可击的硬件抗干扰措施无能为力,工控机死机了(即程序跑飞了)或者控制出错了(此时CPU内部寄存器内容被修改或者RAM和I/O口数据被修改)。这在某些重要的工业环节上将造成巨大的事故。使用软件抗干扰措施就可以在一定程度上避免和减轻这些意外事故的后果。软件抗干扰技术就是利用软件运行过程中对自己进行自监视,和工控网络中各机器间的互监视,来监督和判断工控机是否出错或失效的一个方法。这是工控系统抗干扰的最后一道屏障。

    1 工控软件的结构特点及干扰途径

    在不同的工业控制系统中,工控软件虽然完成的功能不同,但就其结构来说,一般 具有如下特点:

    * 实时性:工业控制系统中有些事件的发生具有随机性,要求工控软件能够及时地 处理随机事件。

    * 周期性:工控软件在完成系统的初始化工作后,随之进入主程序循环。在执行主 程序过程中,如有中断申请,则在执行完相应的中断服务程序后,继续主程序循 环。

    * 相关性:工控软件由多个任务模块组成,各模块配合工作,相互关联,相互依 存。

    * 人为性:工控软件允许操作人员干预系统的运行,调整系统的工作参数。 在理想情况下,工控软件可以正常执行。但在工业现场环境的干扰下,工控软件的 周期性、相关性及实时性受到破坏,程序无法正常执行,导致工业控制系统的失 控,其表现是:

    * 程序计数器PC值发生变化,破坏了程序的正常运行。PC值被干扰后的数据是随机 的,因此引起程序执行混乱,在PC值的错误引导下,程序执行一系列毫无意义的指 令,最后常常进入一个毫无意义的“死循环”中,使系统失去控制。

    * 输入/输出接口状态受到干扰,破坏了工控软件的相关性和周期性,造成系统资源 被某个任务模块独占,使系统发生“死锁”。

    * 数据采集误差加大。干扰侵入系统的前向通道,叠加在信号上,导致数据采集误 差加大。特别是当前向通道的传感器接口是小电压信号输入时,此现象更加严重。

    * RAM数据区受到干扰发生变化。根据干扰窜入渠道、受干扰数据性质的不同,系统 受损坏的状况不同,有的造成数值误差,有的使控制失灵,有的改变程序状态,有 的改变某些部件(如定时器/计数器、串行口等)的工作状态等。

    * 控制状态失灵。在工业控制系统中,控制状态的输出常常是依据某些条件状态的 输入和条件状态的逻辑处理结果而定。在这些环节中,由于干扰的侵入,会造成条 件状态错误,致使输出控制误差加大,甚至控制失常。

    2 工控计算机实时控制软件运行过程中的自监视法

    自监视法是工业控制计算机自己对自己的运行状态的监视。

    一般的工控机CPU内部具有Watchdog Timer,使用定时中断来监视程序运行状态。定时器的定时时间稍大于主程序正常运行一个 循环的时间,在主程序运行过程中执行一次定时器时间常数刷新操作。这样,只要 程序正常运行,定时器不会出现定时中断。而当程序运行失常,不能及时刷新定时 器时间常数而导致定时中断,利用定时中断服务程序将系统复位。在8031应用系统 中作为软件抗干扰的一个事例,具体做法是:

    * 使用8155的定时器所产生的“溢出”信号作为8031的外部中断源INT1。用555定时 器作为8155中定时器的外部时钟输入;

    * 8155定时器的定时值稍大于主程序的正常循环时间;

    * 在主程序中,每循环一次,对8155定时器的定时常数进行刷新;

    * 在主控程序开始处,对硬件复位还是定时中断产生的自动恢复进行分类判断处 理。

    然而,这并不等于万无一失。例如,① Watchdog电路本身失效;②设置Watchdog的指令正好在取指令时被干扰而读错;③ Watchdog“发现”程序跑飞之后,其产生的复位脉冲或者NMI申请信号正好被干扰而没奏效等等。虽然以上的导致Watchdog失效的因素的几率很小,但总是存在的。另一个方面,还有相当数量的工业控制计算机没有Watchdog电路。因此,以下重点讨论的软件自监视法就势在必行了。

    2.1 随时监督检查程序计数器PC的值是否超出程序区 计算机正常运行,其PC值一定在程序区内。如果PC值跑出程序区,计算机肯定已发生了程序跑飞。检查程序计数器PC值是否在程序区内的方法,是在一个经常要产生外部中断的某个中断服务程序中,读取转入该中断时压入堆栈的断点地址。如果该地址在程序区内,则认为PC值正常,否则一定是程序跑飞了。此时,程序跳转到机器的重启动入口或者复位入口,机器重新启动。于是机器又自救活了。如果没有一个这样合适的中断源,可以专门设置一个定时中断或者几个定时中断,在中断服务程序中检查PC值是否合法,一旦发现不对就立即转入机器的重启动入口。定时器中断的时间常数,可视机器的繁忙程度和重要性设定,一般从几个毫秒到几十毫秒都可以。

    这个方法的局限性是不能查出PC值在程序区内的乱跳,即此时PC值虽受干扰却并没有超出程序区,而是错位乱拼指令而构成一些莫名其妙的操作,或者死循环。

    2.2 主循环程序和中断服务程序相互监视

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

    2.3 随时校验程序代码的正确性 工业控制计算机的实时控制程序代码通常都采用EPROM固化运行,一般不易发生被改写的情况。但成年累月运行,我们有时也会发现极个别的单元出错。其原因可能是芯片质量问题或者因静电、雷击干扰等造成的改写。程序出错了,将直接造成运行错误或者无法运行。校验的方式可以采用累加和校验或者BCH校验(一种CRC校验方法)。当采用BCH校验时,其分组附加的冗余字节可以集中在程序区之外的某个EPROM区域里。校验方法是在某个短小而且经常发生的中断服务程序内安排一个校验模块,可以设计成每次循环校验一部分程序代码,分若干次校验完成;或者当代码少,任务轻松时也可以一次校验完。如果发现校验错,应当立即向工控网络主站报告或者以自身报警的办法告知操作人员,以便及时处理。这个方法的局限性是被损坏的程序代码不是校验程序块,而且以该中断还可以正常响应为前提。由于该中断服务程序短小,通常还是有很大的概率自监视程序代码的正确性。

    2.4 随时校验RAM的正确性 在实时控制过程中,干扰造成比较严重的危害之一就是冲毁RAM中的数据,由于RAM中保存的是各种原始数据、标志、变量等,如果被破坏,会造成系统出错或无法运行,根据数据被冲毁的程度,一般可分为三类:

    * 整个RAM数据被冲毁;

    * RAM中某片数据被冲毁;

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

    * 将RAM工作区重要区域的始端和尾端各设置一个标志码“0” 或“1”;

    * 对RAM中固定不变的数据表格设置校验字。在程序的执行过程中,每隔一定的时间通过事先设计的查错程序来检查其各标志码是否正常,如果不正常,则利用数据冗余技术通过抗干扰处理程序来进行修正;冗余数据表的一般设计原则是:

    * 各数据表应相互远离分散设置,减少冗余数据同时被冲毁的概率。

    * 数据表应尽可能远离栈区,减少由于操作错误造堆栈被成数据冲的可能 。上述对RAM区域的恢复处理方法,在不同的应用系统中应根据的具体情况进行取舍3 实时控制系统的互监视法 在实时控制系统中,人们关注的问题是能否确保正常的控制状态。如果干扰进入系统,会影响各种控制条件、造成控制输出失误。为了确保系统安全可以采取下述软件抗干扰措施:3.1.软件冗余对于条件控制系统,将控制条件的一次采样、处理控制输出,改为循环采样、处理控制输出。这种方法具有良好的抗偶然因素干扰作用。

    3.2.设置当前输出状态寄存单元当干扰侵入输出通道造成输出状态破坏时,系统可以及时查询当前输出状态寄存单元的输出状态信息,及时纠正错误的输出状态。

    3.3.设置自检程序在计算机系统内的特定部位或某些内存单元设状态标志,在运行中不断循环测试,以保证系统中信息存储、传输、运算的高可靠性。

    4 其它常采用的软件抗干扰方法

    4.1 陷井法 有时意想不到的干扰,破坏了中断和所有程序的正常运行。此时PC值可能在程序区内,也可能在程序区之外,要使其能够自恢复正常运行,只有依赖于广布“陷井”的绝招了。 这里所谓的“陷井”,是指某些类型的CPU提供给用户使用的软中断指令或者复位指令。例如,Z80指令RST 38H,其机器码为FFH。CPU执行该指令时,则将当前程序计数器PC的值压入堆栈,然后转到0038H地址执行程序。如果把0038H作为一个重启动入口,则机器就可以恢复新的工作了。再例如,INTEL8098、80198系列的复位指令RST,机器码也为FFH。CPU执行该指令时,其内部进行复位操作,然后从2080H开始执行程序。当然,80198系列还有更多的非法操作码可作为陷井指令使用,这时只需要在2012H的一个字的中断矢量单元里安排中断入口,并且编制一个处理非法操作码的中断服务程序,一遇非法操作码就能进行故障处理。作者多年的经验表明,陷井不但需要在ROM的全部非内容区、RAM的全部非数据区设置,而且在程序区内的模块之间广泛布置。一旦机器程序跑飞,总会碰上陷井,立即就可以救活机器了。

    4.2 重复功能设定法

    工控机的很多功能的设定,通常都是在主程序开始时的初始化程序里设定的,以后再也不去设定了。这在正常情况下本无问题。但偶然的干扰会改变CPU内部的这些寄存器或者接口芯片的功能寄存器,例如,把中断的类型、中断的优先级别、串行口、并行口的设定修改了,机器的运行肯定会出错,因此,只要重复设定功能操作不影响其当前连续工作的性能,都应当纳入主程序的循环圈里。每个循环就可以刷新一次设定,避免了偶然不测发生。对于那些重复设定功能操作会影响当前连续工作性能的,要尽量想法找机会重新设定。例如串行口,如果接收完某帧信息或者发送完某帧信息之后,串口会有一个短暂的空闲时,就应作出判断并且安排重新设定一次的操作。

    4.3 重要数据备份法 工控机中的一些关键数据,应当有至少有两个以上的备份副本,当操作这些数据时,可以把主、副本进行比较,如其改变,就要分析原因,采取预先设计好的方法处理。还可以把重要数据采用校验和或者分组BCH校验的方法进行校验。这两种方法一并使用则更可靠。

    4.4 系统“死锁”的软件对策 在工业控制系统中,A/D、D/A,显示等输入/输出接口电路是必不可少的。这些接口 与CPU之间采用查询或中断方式工作,而这些设备或接口对干扰很敏感,干扰信号一 旦破坏了某一接口的状态字后,就会导致CPU误认为该接口有输入/输出请求而停止 现行工作,转去执行相应的输入/输出服务程序。但由于该接口本身并没有输入/输 出数据,从而使CPU资源被该服务程序长期占用,而不释放,其它任务程序无法执 行,使整个系统出现“死锁”。对这种干扰造成的“死锁”问题,在软件编程中, 可采用“时间片”的方法来解决。其具体步骤为:

    * 根据不同的输入/输出外设对时间的要求,分配相应的最大正常的输入/输出时 间。

    * 在每一输入/输出的任务模块中,加入相应的超时判断程序。这样当干扰破坏了接 口的状态造成CPU误操作后,由于该外设准备好信息长期无效,经一定时间后,系统 会从该外设的服务程序中自动返回,保证整个软件的周期性不受影响,从而避免 “死锁”情况的发生。

    4.5 数据采集误差的软件对策根据数据受干扰性质及干扰后果的不同,采取的软件对策各不相同,没有固定的模式。对于实时数据采集系统,为了消除传感器通道中的干扰信号,在硬件措施上常采取有源或无源RLC网络,构成模拟滤波器对信号实现频率滤波。同样,运用CPU的运算、控制功能也可以实现频率滤波,完成模拟滤波器类似的功能,这就是数字滤波。在许多数字信号处理专著中都有专门论述,可以参考。随着计算机运算速度的提高,数字滤波在实时数据采集系统中的应用将愈来愈广。在一般数据采集系统中,可以采用一些简单的数值、逻辑运算处理来达到滤波的效果。用的方法有算术平均值法、比较取舍法、中值法、一阶递推数字滤波法等。具体见本版的有关文章。

    5 结束语

    软件抗干扰的内容还有很多,例如,检测量的数字滤波、坏值剔除;人工控制指令的合法性和输入设定值的合法性判别等等,这些都是一个完善的工业控制系统必不可少的,有关的文章可以参阅本版的其他文章。 工业控制是计算机的最重要的应用领域,也是计算机的最艰难的应用环境。我从多年来的研究经验认为:工业控制计算机的抗干扰性能根本在硬件结构,软件抗干扰只是一个补充。硬件的设计应当尽可能的完善,不能轻易降低标准,让软件去补救!而软件的编制则要处处考虑到硬件可能的失效,可能受到的干扰等种种问题,在保证实时性、控制精度和控制功能的前提下,尽力提高系统的抗干扰性能。要考虑得很细致,努力赋予软件高度的智能。这样,软件才是完美的。把硬件和软件有机的结合起来,一个经得起长期现场考验的尽可能完善的工业控制系统才能实现。

    展开全文
  • 单片机电路EMC电磁抗干扰设计,包含降低干扰输出和增强看外部干扰的能力。
  • 在电子系统设计中,为了少走弯路和节省时间,应充分考虑并满足抗干扰性 的要求,避免在设计完成后再去进行抗干扰的补救措施。  形成干扰的基本要素有三个:  (1)干扰源,指产生干扰的元件、设备或信号,用数学语言...
  • 李佳学号 19011210599【嵌牛导读】本文介绍了单片机软件抗干扰的几种常见方法【嵌牛鼻子】软件抗干扰【嵌牛提问】单片机中该用哪些抗干扰技术来解决干扰的问题?【嵌牛正文】在提高硬件系统抗干扰能力的同时,软件...

    李佳

    学号 19011210599

    【嵌牛导读】本文介绍了单片机软件抗干扰的几种常见方法

    【嵌牛鼻子】软件抗干扰

    【嵌牛提问】单片机中该用哪些抗干扰技术来解决干扰的问题?

    【嵌牛正文】在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。

    1 软件抗干扰方法的研究

    在工程实践中,软件抗干扰研究的内容主要是:一、消除模拟输入信号的噪声(如数字滤波技术);二、程序运行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法。

    1.1 指令冗余

    CPU取指令过程是先取操作码,再取操作数。当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。若“飞” 到了三字节指令,出错机率更大。

    在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的NOP。这样即使乱飞程序飞到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。

    此外,对系统流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行。

    1.2 拦截技术

    所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截乱飞的程序。因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。

    (1 )软件陷阱的设计

    当乱飞程序进入非程序区,冗余指令便无法起作用。通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。通常在EPROM中非程序区填入以下指令作为软件陷阱:

    NOPNOPLJMP 0000H其机器码为0000020000。

    (2 ) 陷阱的安排

    通常在程序中未使用的EPROM空间填0000020000。最后一条应填入020000,当乱飞程序落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入陷阱指令。当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:

    NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障诊断程序与系统自恢复程序的设计可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。

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

    1.3软件“看门狗”技术

    若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。

    “看门狗”技术可由硬件实现,也可由软件实现。在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断。则系统无法定时“喂狗”,硬件看门狗电路失效。而软件看门狗可有效地解决这类问题。

    笔者在实际应用中,采用环形中断监视系统。用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0。采用这种环形结构的软件“看门狗”具有良好的抗干扰性能,大大提高了系统可靠性。对于需经常使用T1定时器进行串口通讯的测控系统,则定时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列单片机,也可用T2代替T1进行监视)。这种软件“看门狗”监视原理是:在主程序、T0中断服务程序、T1中断服务程序中各设一运行观测变量,假设为MWatch、T0Watch 、T1Watch,主程序每循环一次,MWatch加1,同样T0、T1中断服务程序执行一次,T0Watch、 T1Watch加1。在T0中断服务程序中通过检测T1Watch的变化情况判定T1运行是否正常,在T1中断服务程序中检测MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测T0Watch的变化情况判别T0是否正常工作。若检测到某观测变量变化不正常,比如应当加1而未加1,则转到出错处理程序作排除故障处理。当然,对主程序最大循环周期、定时器T0和T1定时周期应予以全盘合理考虑。限于篇幅不赘述。

    2 、系统故障处理、自恢复程序的设计

    单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。

    2.1 非正常复位的识别

    程序的执行总是从0000H开始,导致程序从 0000H开始执行有四种可能:一、系统开机上电复位;二、软件故障复位;三、看门狗超时未喂狗硬件复位; 四、任务正在执行中掉电后来电复位。四种情况中除第一种情况外均属非正常复位,需加以识别。

    (1 )硬件复位与软件复位的识别

    此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器有影响,如复位后PC=0000H, SP=07H,PSW=00H等。而软件复位则对SP、SPW无影响。故对于微机测控系统,当程序正常运行时,将SP设置地址大于07H,或者将PSW的第5位用户标志位在系统正常运行时设为1。那么系统复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。

    由于硬件复位时片内RAM状态是随机的,而软件复位片内RAM则可保持复位前状态,因此可选取片内某一个或两个单元作为上电标志。设40H用来做上电标志,上电标志字为78H,若系统复位后40H单元内容不等于78H,则认为是硬件复位,否则认为是软件复位,转向出错处理。若用两个单元作上电标志,则这种判别方法的可靠性更高。

    (2 )开机复位与看门狗故障复位的识别

    开机复位与看门狗故障复位因同属硬件复位, 所以要想予以正确识别,一般要借助非易失性RAM或者EEROM。当系统正常运行时,设置一可掉电保护的观测单元。当系统正常运行时,在定时喂狗的中断服务程序中使该观测单元保持正常值(设为 AAH),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否看门狗复位。

    (3 )正常开机复位与非正常开机复位的识别

    识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过程控制系统尤为重要。如某以时间为控制标准的测控系统,完成一次测控任务需1小时。在已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗。因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。

    2.2 非正常复位后系统自恢复运行的程序设计

    对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模块或任务恢复运行。所以测控系统要作好重要数据单元、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。

    当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的初始化、片外扩展芯片的初始化等。其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面等的恢复。之后再把复位前的任务、参数、运行时间等恢复, 再进入系统运行状态。

    应当说明的是,真实地恢复系统的运行状态需 要极为细致地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性。

    其次,对多任务、多进程测控系统,数据的恢复需考虑恢复的次序问题。

    系统基本初始化是指对芯片、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。而复位前任务的初始化是指任务的执行状态、运行时间等。

    对于软件抗干扰的一些其它常用方法如数字滤波、RAM数据保护与纠错等,限于篇幅,本文未作讨论。在工程实践中通常都是几种抗干扰方法并用,互相补充 完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的单片机系统是完全可行的。

    展开全文
  • 高单片机抗干扰

    2015-12-02 10:12:17
    如何提高单片机抗干扰让你少走弯路 搞过产品的朋友都有体会,一个设计看似简单,硬件设计和代码编写很快就搞定,但在调试过程中却或多或少的意外,这些都是抗干扰能力不够的体现。 下面讨论一下如何让你的设计避免...

    如何提高单片机抗干扰让你少走弯路

    搞过产品的朋友都有体会,一个设计看似简单,硬件设计和代码编写很快就搞定,但在调试过程中却或多或少的意外,这些都是抗干扰能力不够的体现。
    下面讨论一下如何让你的设计避免走弯路:
    抗干扰体现在2个方面,一是硬件设计上,二是软件编写上。
    这里重点提醒:在MCU设计中主要抗干扰设计是在硬件上,软件为辅。因为MCU的计算能力有限,所以要在硬件上花大工夫。
    看看干扰的途径:
    1:干扰信号干扰MCU的主要路径是通过I/O口,一是影响了MCU的数据采集,二是影响内部其它寄存器。
    解决方法:后面讨论。
    2:电源干扰:MCU虽然适应电压较宽(3-5。5V),但对于电源的波动却很敏感,比如说MCU可以在3V电压下稳定工作,但却不能在电压在3V-5。5V波动的情况下稳定工作。
    解决方法:用电源稳压块,做好电源的滤波等工作,提示:一定要在电源旁路并上0。1UF的瓷片电容来滤除高频干扰,因为电解电容对超过几十KHZ的高频干扰不起作用。
    3:上下电干扰:但每个MCU系统在上电时候都要经过这样一个过程,所以要尤其注意。
    MCU虽然可以在3V电压下稳定工作,但并不是说它不能在3V以下的电压下工作,当然在如此低的电压下MCU是超不稳定状态的。在系统加电时候,系统电源电压是从0V上升到额定电压的,比如当电压到2V时候,MCU开始工作了,但这时是超不稳定的工作,极容易跑飞。
    解决方法:1让MCU在电源稳定后才开始工作。PIC在片内集成了POR(内部上电延时复位),这功能一定要在配置位中打开。
    外部上电延时复位电路。有多种形式,低成本的就是在复位脚接个阻容电路。高成本的是用专用芯片。这方面的资料特多,到处都可以查找。
    最难排除的就是上面第一种干扰,并且干扰信号随时可以发生,干扰信号的强度也不尽相同。
    但它们也有相同点:干扰信号也遵循欧姆定律,干扰信号偶合路径无非是电磁干扰,一是电火花,二是磁场。
    其中干扰最厉害的是电火花干扰,其次是磁场干扰。电火花干扰表现场合主要是附近有大功率开关、继电器、接触器、有刷电机等。磁场干扰表现场合主要是附近有大功率的交流电机、变压器等。
    解决方法:第一点:也是最经典的,就是在PCB步线和元件位置安排上下工夫,这中间学问很多,说几天都说不完^^。
    二:综合考虑各I/O口的输入阻抗,采集速率等因素设计I/O口的外围电路。
    一般决定一个I/O口的输入阻抗有3种情况:
    A:I/O口有上拉电阻,上拉电阻值就是I/O口的输入阻抗。
    一般大家都用4K-20K电阻做上拉,(PIC的B口内部上拉电阻约20K)。
    由于干扰信号也遵循欧姆定律,所以在越存在干扰的场合,选择上拉电阻就要越小,因为干扰信号在电阻上产生的电压就越小。
     由于上拉电阻越小就越耗电,所以在家用设计上,上拉电阻一般都是10-20K,而在强干扰场合上拉电阻甚至可以低到1K。
    (如果在强干扰场合要抛弃B口上拉功能,一定要用外部上拉。)
     B:I/O口与其它数字电路输出脚相连,此时I/O口输入阻抗就是数字电路输出口的阻抗,一般是几十到几百欧。
     可以看出用数字电路做中介可以把阻抗减低到最理想,在许多工业控制板上可以看见大量的数字电路就是为了保证性能和保护MCU的。
    C:I/O口并联了小电容。
    由于电容是通交流阻直流的,并且干扰信号是瞬间产生,瞬间熄灭的,所以电容可以把干扰信号滤除。但不好的是造成I/O口收集信号的速率下降,比如在串口上并电容是绝不可取的,因为电容会把数字信号当干扰信号滤掉。
    对于一些检测开关、干簧管、霍尔元件之类的是可以并电容的,因为这些开关量的变化是不可能有很高的速率的,并一个小电容对信号的采集是没任何影响的。

    展开全文
  • 在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。 1 软件抗干扰方法的研究 在工程实践中,软件...

          在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。 
       1  软件抗干扰方法的研究 
          在工程实践中,软件抗干扰研究的内容主要是: 一、消除模拟输入信号的嗓声(如数字滤波技术);二、程序运行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法。 
        1.1 指令冗余 
          CPU取指令过程是先取操作码,再取操作数。当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。若“飞” 到了三字节指令,出错机率更大。 
          在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的NOP。这样即使乱飞程序飞到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。 
          此外,对系统流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行。
        1.2 拦截技术 
          所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截乱飞的程序。因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。
        1.2.1 软件陷阱的设计 
          当乱飞程序进入非程序区,冗余指令便无法起作用。通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。通常在EPROM中非程序区填入以下指令作为软件陷阱: 
                           NOP 
                           NOP 
                           LJMP 0000H 
    其机器码为0000020000。
       1.2.2 陷阱的安排 
          通常在程序中未使用的EPROM空间填0000020000。最后一条应填入020000,当乱飞程序 落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入陷阱指令。当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式: 
                           NOP 
                           NOP 
                           RETI 
          返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障诊断程序与系统自恢复程序的设计可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。 
         考虑到程序存贮器的容量,软件陷阱一般1K空间有2-3个就可以进行有效拦截。 
        1.3 软件“看门狗”技术 
         若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。
          “看门狗”技术可由硬件实现,也可由软件实现。 在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断。则系统无法定时“喂狗”,硬件看门狗电路失效。而软件看门狗可有效地解决这类问题。 
          笔者在实际应用中,采用环形中断监视系统。用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0。采用这种环形结构的软件“看门狗”具有良好的抗干扰性能,大大提高了系统可靠性。对于需经常使用T1定时器进行串口通讯的测控系统,则定时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列单片机,也可用T2代替T1进行监视)。这种软件“看门狗”监视原理是:在主程序、T0中断服务程序、T1中断服务程序中各设一运行观测变量,假设为MWatch、T0Watch 、T1Watch,主程序每循环一次,MWatch加1,同样T0、T1中断服务程序执行一次,T0Watch、 T1Watch加1。在T0中断服务程序中通过检测T1Watch的变化情况判定T1运行是否正常,在T1中断服务程序中检测MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测T0Watch的变化情况判别T0是否正常工作。若检测到某观测变量变化不正常,比如应当加1而未加1,则转到出错处理程序作排除故障处理。当然,对主程序最大循环周期、定时器T0和T1定时周期应予以全盘合理考虑。限于篇幅不赘述。
        2  系统故障处理、自恢复程序的设计 
         单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。
        2.1 非正常复位的识别 
        程序的执行总是从0000H开始,导致程序从 0000H开始执行有四种可能:一、系统开机上电复位;二、软件故障复位;三、看门狗超时未喂狗硬件复位; 四、任务正在执行中掉电后来电复位。四种情况中除第一种情况外均属非正常复位,需加以识别。 
        2.1.1 硬件复位与软件复位的识别 
           此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器有影响,如复位后PC=0000H, SP=07H,PSW=00H等。而软件复位则对SP、SPW无影响。故对于微机测控系统,当程序正常运行时,将SP设置地址大于07H,或者将PSW的第5位用户标志位在系统正常运行时设为1。那么系统复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。图1是采用PSW.5作上电标志位判别硬、软件复位的程序流程图。

    图1 硬、软件复位识别流程图 
           此外,由于硬件复位时片内RAM状态是随机的,而软件复位片内RAM则可保持复位前状态,因此可选取片内某一个或两个单元作为上电标志。设 40H用来做上电标志,上电标志字为78H,若系统复位后40H单元内容不等于78H,则认为是硬件复位,否则认为是软件复位,转向出错处理。若用两个单元作上电标志,则这种判别方法的可靠性更高。
        2.1.2 开机复位与看门狗故障复位的识别 
          开机复位与看门狗故障复位因同属硬件复位, 所以要想予以正确识别,一般要借助非易失性RAM或者EEROM。当系统正常运行时,设置一可掉电保护的观测单元。当系统正常运行时,在定时喂狗的中断服务程序中使该观测单元保持正常值(设为 AAH),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否看门狗复位。 
       2.1.3 正常开机复位与非正常开机复位的识别 
          识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过程控制系统尤为重要。如某以时间为控制标准的测控系统,完成一次测控任务需1小时。在已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗。因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。 
        2.2 非正常复位后系统自恢复运行的程序设计 
          对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模块或任务恢复运行。所以测控系统要作好重要数据单元、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。 
          当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的初始化、片外扩展芯片的初始化等。其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面等的恢复。之后再把复位前的任务、参数、运行时间等恢复, 再进入系统运行状态。 
          应当说明的是,真实地恢复系统的运行状态需 要极为细致地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性。 
         其次,对多任务、多进程测控系统,数据的恢复需考虑恢复的次序问题,笔者实际应用的数据恢复过程流程图如图2所示。
    图2 系统自恢复程序流程图
    图中恢复系统基本数据是指取出备份的数据覆盖当前的系统数据。系统基本初始化是指对芯片、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。而复位前任务的初始化是指任务的执行状态、运行时间等。
        3  结束语 
          对于软件抗干扰的一些其它常用方法如数字滤波、RAM数据保护与纠错等,限于篇幅,本文未作讨论。在工程实践中通常都是几种抗干扰方法并用,互相补充完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的单片机系统是完全可行的。

    转载于:https://www.cnblogs.com/masky5310/archive/2011/02/25/1964849.html

    展开全文
  • 如何提高单片机抗干扰让你少走弯路 搞过产品的朋友都有体会,一个设计看似简单,硬件设计和代码编写很快就搞定,但在调试过程中却或多或少的意外,这些都是抗干扰能力不够的体现。 下面讨论一下如何让你的设计...
  • 在有继电器的应用场合,尤其是大电流时,防继电器触点火花对电路的干扰,可在继电器线圈间并一104和二极管,在触点和常开端间接472电容,效果不错!
  • 本文将介绍串行接口的高频瞬态干扰处理电路及方法
  • 一种基于DSP强抗干扰无线通信_张冬红.pdf
  • 在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。 1、软件抗干扰方法的研究 在工程实践中,软件...
  • 在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。 1、软件抗干扰方法的研究 在工程实践中,软件...
  • 解决常见的RS485通讯中的静电,共模电压,阻抗匹配
  • 单片机软件抗干扰的几种常见方法

    千次阅读 2014-01-23 21:07:21
    在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。    1 软件抗干扰方法的研究   ...
  • 本文主要讲了一下关于PLC与RS-232C通信接口抗干扰技术,希望对你的学习有所帮助。
  • 如何提高单片机抗干扰让你少走弯路 搞过产品的朋友都有体会,一个设计看似简单,硬件设计和代码编写很快就搞定,但在调试过程中却或多或少的意外,这些都是抗干扰能力不够的体现。 下面讨论一下如何让你的设计避免...
  • 串口的接收引脚设置为上拉输入,这样可以避免因干扰而收到乱码,从而避免因长时间收到乱码持续进入串口中断而没有处理其 他事情而导致的程序复位或死机。 10.涉及除法时,在进行除法运算之前先加一个判断语句判断...
  • 超声波相关——抗干扰

    千次阅读 2019-07-25 19:32:21
    这样如果串口上位机距离值一直打印为2cm便很明显知道该超声波模块没有接。 2.同时测量: 创建一个系统时钟,每一个超声波模块在测量过程中只记录时间戳,不直接占用定时器,这样便可以实现多个超声波模块同时测量...
  • 在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。 1、软件抗干扰方法的研究 在工程实践中,...
  • 单片机抗干扰技术

    千次阅读 2012-05-06 21:45:56
    摘 要 近年来,单片机在工业自动化、生产过程控制、智能仪器仪表等领域的应用越来越广泛,大大提高了产品的质量,有效地提高了生产效率。...本文主要介绍了单片机应用系统在工业现场中的干扰来源和
  • 搞过产品的朋友都有体会,一个设计看似简单,硬件设计和代码编写很快就搞定,但在调试过程中却或多或少的意外,这些都是抗干扰能力不够的体现。 下面讨论一下如何让你的设计避免走弯路:抗干扰体现在2个方面,一是...
  • 设计了双核的DSP28335母板,实现了40路I/O、16路A/D、6路PWM舵回路控制、15路串行接口的双MCU飞控计算机功能,简化了外设扩展接口的电路设计,并使CPU降额使用。通过单片的CPLD可编程逻辑芯片实现了全部译码、缓冲...
  • usb接口抗干扰特性普遍很差

    千次阅读 2012-08-28 11:31:14
    今天打了几个电话给usb开发板的销售商,得到的信息是usb接口抗干扰特性普遍很差,真是令人郁闷的结论。 也许是双绕组的共模电感能好一些。 ... 受到冲击就要重新插拔,当然了用硬件做模拟插拔也是个假手段。...
  • 在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。1、软件抗干扰方法的研究在工程实践中,软件...
  • 所以,必须要注意相应的系统抗干扰设计。首先,电源是PLC受到干扰侵袭的主要途径,所以可以将带有屏蔽层的隔离变压器以及低通滤波器设计到PLC的交流电源输入端,并确保屏蔽层接地可靠。其次,如果PLC受到的干扰过于...
  • FPGA芯片的强电磁干扰串口控制器设计.pdf
  • RS-485总线具有结构简单、通信距离远、通信速度快、...脉冲群干扰是一种常见的干扰。通常采用电快速脉冲群(EFT)免疫试验来模拟干扰,验证系统的可靠性。  1、脉冲群骚扰的来源  在工业控制环境中经常会出现雷...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,321
精华内容 3,328
关键字:

串口抗干扰