控制系统软件抗干扰设计对提高整个系统的可靠性,增强系统抗干扰能力非常重要。软件设计要充分考虑采取必要的抗干扰措施,利用软、硬件相结合实现系统抗干扰是单片机控制系统设计必须采取的措施,也是行之有效的手段。下面介绍几种常用的软件抗干扰措施。
由于系统干扰可能破坏程序指针PC,一旦PC失控程序就会“乱飞”,可能进入非程序,造成系统运行错误。设置软件陷阱,可防止程序“乱飞”。设置软件陷阱可以采用在ROM或RAM中,每隔一些指令,就把连续几个单元设置成空操作(所谓陷阱)。当失控的程序掉入“陷阱”,连续执行几个空操作后,程序自动恢复正常,继续执行后面的程序。将程序芯片没有被程序指令字节使用的部分全部置成空操作振荡器返回指令代码,一旦程序飞出到非程序区,能够顺利跳回到程序初始状态,重新执行程序,不至于因此造成死循环。
利用设置软件陷阱虽在一定程序上解决了程序“乱飞”的失控问题,但在程序执行过程中若进入死循环,无法撞上陷阱,就会使程序长时间运行不正常。因此,设置陷阱的办法并不能彻底有效地解决死循环问题。
设置程序监视器(Watchdog,即看门狗)可比较有效地解决死循环问题。程序监视器系统有的采用软件解决,大部分都是采用软、硬件相结合的办法。下面以两种解决办法来分折其原理。
在程序地大循环中,一开始就启动定时器工作,在主程序中增设定时器赋值指令,使该定时器文持在非溢出工作状态。定时时间要稍大于程序循环一次的执行时间。程序正常循环执行一次给定时器送一次初值,重新开始计数而不会产生溢出。但若程序失控,没能按时给定时器赋初值,定时器就会产生溢出中断,在中断服务中使主程序回到初始状态。
例如,设
ORG 0000H
START: LJMP
ORG 000BH
LJMP START
ORG 0060H
MAIN:SETB EA
SETB IE0
SETB TR0
… ;其他初始化程序
LOOP:MOV TMOD,#01H ;设置T0为定时器方式1
MOV RHO,#DATAH ;设置定时器
MOV TL0,#DATAL ;
.
.
.
LJMP LOOP ;循环
程序中设定T0为16位定时器工作方式,时间常数datah,datal要根据用户程序的长短以及所使用的6MHz晶振频率计算,实际选用值要比计算出的值略小些,使定时复位时间略长于程序的正常循环执行时间。这种方法是利用单片机内部的硬件资源定时器达到防止程序死循环的目的。
利用单稳态触发器构成程序监视器的电路很多。利用软件经常访问单稳电路,一旦程序有问题,CPU就不能正常访问,单稳电路则产生翻转脉冲使单片机复位,强制程序重新开始执行。
软件冗余技术就是多次使用同一功能的软件指令,以保证指令执行的可靠性。可从以下几个方面考虑:
1、采取多次读入法,确保开关量输入正确无误。重要的输入信息利用软件多次读入,比较几次结果一致后再让其参与运算。对于按钮和开关状态读入时,要配合软件延时消除抖动。
2、不断查询输出状态寄存器,及时纠正输出状态。设置输出状态寄存器,利用软件不断查询,当发现其和输出的正确状态不一致时,及时纠正,防止由于干扰引起的输出量变化导致设备错误动作。
3、对于条件控制系统,把对控制条件的一次性采样、处理控制输出改为循环采用、处理。这种方法对于惯性较大的控制系统具有良好的抗随机干扰作用。
4、为防止计算错误,可采用两组计算程序,分别计算,然后将两组计算结果进行比较,如两次计算结果相同,则将结果输出。如果出现偏差,则再进行计算,重新比较,直到结果相同,才认为计算结果正确。
软件冗余技术是提高软件可靠性,防止干扰造成误差,保证控制系统正常运行有力措施。
在软件设计时采用如下措施可以有效提高系统的抗干扰能力。
1、增加系统信息管理模块。与硬件相配合,对系统信息进行保护。其中包括防止信息被破坏,出故障时保护信息,故障排除之后恢复信息等。
2、防止信息在输入/输出过程中出错。如对关键数据采用多种校验方式,对信息采用重复传送校验技术,从而保证信息的正确性。
3、软件进行系统调度,包括出现故障时保护现场,迅速启用备用设备,将故障设备切换成备用状态进行文修。在环境条件发生变化时,采取应急措施,故障排除后,迅速恢复系统,继续投入运行等。
通常要编制一个可靠运行的应用软件,应考虑采用以下几项措施。
1、程序分段和采用层次结构
程序设计时,将程序分成若干个具有独立功能的子程序模块。各个程序模块可以单独使用,也可与其他程序模块共同使用。各程序模块之间可通过固定的通信区和一些指定的单片进行信息传递。每个程序模块都可单独进行调整和修改,不会影响其他程序模块。
2、采用可测试性设计
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页