变频空调单片机测控系统的抗干扰设计
单片机在恶劣的环境中工作时,干扰源不仅会影响到硬件系统的正常工作,也常常会使系统的软件运行发生混乱。因此系统的抗干扰问题不能完全靠硬件去解决,软件的抗干扰设计也是一项重要措施。当系统受到干扰时,可能使单片机的程序跑飞,改变程序指针PC值,从而使程序进入死循环而不能正常工作;也可能改变单片机内部特殊功能寄存器(SFR)的值使程序状态混乱,甚至发生故障,损坏器件;如果被测量信号受到干扰,则会造成测量值失真。对于这种情况的对策是及时发现,及时引导程序走向正确位置,或者使系统重新复位开始运行。在本系统中采用了以下措施。
图5提高系统抗干扰能力的原理框图
31利用冗余指令
当CPU受到干扰后,往往将一些操作数当作指令码来执行,引起程序混乱。此时,若程序弹飞到某一条单字节指令上时,便自动纳入正规;若程序弹飞到某一条双字节或三字节指令上时,有可能落到其操作数上而继续出错。为此,在对程序流向起着决定作用的指令之前插入两条NOP指令,保证弹飞的程序迅速纳入正确的控制轨道。此类指令有RET、RETI、LCALL、LJMP、JNC、JNB、CJNE、DJNZ等。
指令冗余措施可以减少程序弹飞的次数,使其很快纳入程序轨道,但这不能保证在失控期间不出错,更不能保证程序纳入正常轨道后就太平无事了。解决这个问题还必须采用软件容错技术,使系统的误动作减少,并尽可能消除重大误动作。
32设置软件陷阱
所谓软件陷阱,就是一条引导指令,强行将捕获的程序引向一个指定的地址,在那里有一段专门对程序出错进行处理的程序。如果把这段程序的入口标号称为ERR的话,软件陷阱即为一条LJMPERR的指令,为加强其捕捉效果,一般还在它前面加两条NOP指令。因此,真正的软件陷阱由三条指令构成: NOP NOP LJMPERR
软件陷阱一般安排在下列四种地方:
(1)未使用的中断向量区当干扰使未使用的中断开放,并激活这些中断时,就会引起系统程序的混乱,但如果在这些地方布上陷阱,就能及时捕捉到错误中断;
(2)未使用的大片ROM空间对于剩余的大片
未编程的ROM空间,一般都维持原状(0FFH)。程序弹飞到这一区域后将顺流而下,不再跳跃(除非受到新的干扰)。这时只要每隔一段设置一个陷阱,就能捕捉到弹飞的程序;
(3)表格表格有两类,一类是数据表格;另一类是
散转表格。由于表格中内容和检索值有一一对应关系,在表格中安排陷阱将会破坏其连续性和对应关系,所以只能在表格的最后安排五字节陷阱(NOPNOPLJMP);
(4)程序区程序区是由一序列执行指令构成
的,一般不能在这些指令串中间任意安排陷阱,否则正常执行的程序也可能被抓走。在这些指令串中间有一些断裂点,正常执行的程序到此便不会往下继续执行了,这类指令有LJMP、SJMP、AJMP、RET、RETI等,在它们后面加软件陷阱。
33设置程序运行监视系统(WDT)
利用CPU内部的WDT可以实现系统定时复位。在程序正常运行时,每隔一段时间对WDT清零。一旦程序运行不正常,没有及时给WDT送清零信号,则在WDT计数溢出时自动将系统复位。所使用的西门子公司生产的C504单片机的WDT溢出时间可人为设定。若晶振用12MHz,其可选时间为512μs~11s。本系统设计溢出时间为7ms。
34采用软件滤波
被测信号的抗干扰可以采用“软件滤波”的方法解决。常用的有:算术平均值法,比较取舍法,中值法,一阶递推数字滤波法。本系统采用的是比较取舍法。
4结语
经试验,该系统工作半年多来,运行状况良好,性能稳定,噪音低,没有出现错误及损坏器件现象,取得了良好的效果,达到了预期的目的,证明在系统设计中采用的上述抗干扰措施是行之有效的。
评论