24小时联系电话:18217114652、13661815404
中文
行业资讯
单片机软件抗干扰技术都有哪些
电子仪器设备的抗搅扰技术是一门博大精深的领域。大部分的电子设备地点的作业环境往往比较恶劣,搅扰严重,这些搅扰会严重影响设备的正常作业,使其不能正常运行,比方空调就作业在高温、大电流、强搅扰(电机)的环境下。因而,为了确保这些设备能在实际运用中可靠地作业,必需求缜密考虑和解决抗搅扰的问题。除了在硬件上考虑抗搅扰的问题,咱们也能够在软件上做一些抗搅扰的办法,来进步体系的抗搅扰才干。下面简略介绍了几个抗搅扰的办法,起一个抛砖引玉的效果,希望各位同事能够在作业中加以运用和完善。
一、数字量输入输出中的软件抗于扰
数字量输入进程中的搅扰,其效果时刻较短,因而在收集数字信号时,可屡次重复收集,直到若干次采样成果共同时才以为其有用。例如经过A/D转化器丈量各种模拟量时,假如有搅扰效果于模拟信号上,就会使A/D转化成果违背实在值。这时假如只采样一次A/D转化成果,就无法知道其是否实在可靠,而有必要进行屡次采样,得到一个A/D转化成果的数据系列,对这一系列数据再作各种数字滤波处理,最终才干得到一个可信度较高的成果值。假如对于同一个数据点经屡次采样后得到的信号值变化不定,阐明此刻的搅扰特别严重,现已超出允许的范围,应该当即中止采样并给出报警信号。假如数字信号归于开关量信号,如限位开关、操作按扭等,则不能用屡次采样取平均值的办法,而有必要每次采样成果必须共同才行。这时可编写一个采样子程序,程序中设置有采样成功和采样失利标志,假如对同一开关量信号进行若干次采样,其采样成果完全共同,则成功标志置位;否则失利标志置位。后续程序可经过判别这些标志来决定程序的流向。
单片机操控的设备对外输出的操控信号许多是以数字量的方式呈现的。单片机给出一个正确的数据后,由于外部搅扰的效果有可能使输出设备得到一个被改变了的过错数据,然后使输出设备产生误动作。对于数字量输出软件抗搅扰最有用的办法是重复输出同一个数据,重复周期应尽量短。这样输出设备在得到一个被搅扰的过错信号后,还来不及反应,一个正确的信号又来到了,然后能够避免误动作的产生。
在程序结构上,可将输出进程安排在监控循环中。循环周期获得尽可能短,就能有用地避免输出设备的过错动作。需求留意的是。经过这种安排后输出功用是作为一个完好的模块来履行的,与这种重复输出办法相对应。软件规划中还有必要为各个外部输出设备树立一个输出暂存单元,每次将应输出的成果存入暂存单元中,然后再调用输出功用模块将各暂存单元的数据逐个输出,不管该数据是刚送来的,仍是曾经就有的。这样能够让每个外部设备不断得到操控数据,然后使搅扰形成的过错状况不能得以维持。在履行输出功用模块时,应将有关输出接口芯片的初始状况也同时从头设置。因为由于搅扰的效果可能使这些芯片的作业方式操控字产生变化,而不能实现正确的输出功用,从头设置操控字就能避免这种过错.确保输出功用的正确实现。
二、程序履行进程中的软件抗于扰
前面述及的是针对输入输出通道而言的,搅扰信号还未效果到CPU自身,CPU还能正确地履行各种抗搅扰程序。假如搅扰信号现现已过某种途径效果到了CPU上,则CPU就不能按正常状况履行程序,然后引起紊乱,这便是一般所说的程序“跑飞”。程序“跑飞”后使其康复正常的一个最简略的办法是使CPU复位,让程序从头开始从头运行。许多单片机操控的设备中都有设置人工复位电路。人工复位一般是在整个体系现已完全瘫痪,无计可施的情况下才不得已而为之的。因而在进行软件规划时就要考虑到万一程序“跑飞”,应让其能够自动康复到正常状况下运行。
程序“跑飞”后往往将一些操作数当作指令码来履行,然后引起整个程序的紊乱。采用“指令冗余”是使“跑飞”的程序康复正常的一种办法。所谓“指令冗余”,便是在一些关键的当地人为地刺进一些单字节的空操作指令NOP。当程序“跑飞”到某条单字节指令上时,就不会产生将操作数当成指令来履行的过错。对于MCS51单片机来说,一切的指令都不会超过3个字节,因而在某条指令前面刺进两条NOP指令,则该条指令就不会被前面冲下来的失控程序拆散,而会得到完好的履行,然后使程序从头归入正常轨道。一般是在一些对程序的流向起关键效果的指令前面刺进两条NOP指令。应该留意的是在一个程序中“指令冗余”不能运用过多,否则会降低程序的履行效率。
采用“指令冗余”使“跑飞”的程序康复正常是有条件的,首要“跑飞”的程序有必要落到程序区,其次有必要履行到所设置的冗余指令。假如“跑飞”的程序落到非程序区(如 EPROM中未用完的空间或某些数据表格等),或在履行到冗余指令之前现已形成了一个死循环,则“指令冗余”办法就不能使“跑飞”的程序康复正常了。这时能够采用另一种软件抗搅扰办法,即肠胃“软件圈套”。“软件圈套”是一条引导指令,强即将捕获的程序引向一个指定的地址,在那里有一段专门处理过错的程序。假定这段处理过错的程序入口地址为ERR,则下面三条指令即组成一个“软件圈套”:
NOP
NOP
JR ERR
假如“跑飞”的程序落到一个暂时构成的死循环中时,冗余指令和软件圈套都将无能为力。这时能够采用人工复位的办法使体系康复正常,实际上能够规划一种仿照人工监测的“程序运行监视器”,俗称“看门狗”(WATCHDOG)。
WATCHDOG有如下特征:
(1)自身能独立作业,基本上不依赖于 CPU。CPU只在一个固定的时刻间隔内与之打一次交道,标明整个体系“现在尚属正常”。
(2)当CPU落入死循环之后,能及时发现并使整个体系复位。
现在有许多单片机在内部现已集成了片内的硬件WATCHDOG电路,运用起来更为方便。也能够用软件程序来形成WATCHDOG。例如能够采用单片机一个多于不必的定时器来形成10ms的软件WATCHDOG。软件WATCHDOG启动后,体系作业程序有必要每隔小于10ms的时刻从头设置定时器的计数初值。假如程序“跑飞”后履行不到这条指令,则在10ms之内即会产生一次定时器溢出中止,则定时器中止程序就能够处理体系“意外”的情况。
采用软件WATCHDOG有一个弱点,便是假如“跑飞”的程序使某些操作数变形成为了修改定时器功用的指令,则履行这种指令后软件WATCHDOG就会失效。因而软件WATCHDOG的可靠性不如硬件高。