单片计算机系统抗干扰的软件途径
数据码,无检测错误的能力。奇偶校验则是在数据中增加1位冗余位(图4B),使汉明距离变为2,因此可以检测奇数位错误。若再增加冗余位使码系间的汉明距离延长为3(图4C),还可具有校正1位错误的能力。在干扰信号特别强烈的场合中,控制或采集终端与上位机之间的串行传送还可以考虑采用循环冗余校验(CRC)手段来增加数据的可靠性。
2.3 重复执行
程序指令在执行的过程中或者保持(锁存)之后,都有可能被噪声修改而导致控制失效乃至引发事故,为此应当尽量增加重要指令的执行次数以纠正干扰造成的错误。对于频率较低的传感器数据,建议在有效时间内多次采集并比较;对于控制外部设备的指令,则需要多次重复执行以确保有关信号的可靠性。为达此目的,可把重要的指令设计成定时扫描模块,使其在整个程序的循环运行过程中反复执行。如此即使干扰信号改写了指令内容,也能在受控设备的反应时间内自动恢复正常。
2.4 重要数据的保护和恢复
编写专门的数据保护子程序,是提高工控微机系统可靠性的有效途径。在编写程序的过程中,对于由指令改变结果性质的数据,可以考虑在每次改变后都尽可能地保护起来,以便在需要时能够恢复正确值。 对于大多数工控微处理机而言,在运行错误而强制"复位"之后,I/O端口和特殊寄存器SFR中的内容都将变成芯片出厂时的设定值[4],这很可能会引起整个系统的运行混乱。因此计算机在重新启动后,应当首先执行数据恢复程序,把控制端口等重要寄存器被保护的内容恢复还原。基于前述的试验结果,保护数据最可靠的地址位于微处理机的片内RAM;若数据的保护量较大,则建议扩展非易失性的SRAM作为片外数据存储器。这种新型芯片具有很高的抗干扰性能,其缺点是目前的价位较高。
3 片内软WDT监控
"看门狗"(WDT)已经成为工控微机必不可少的成员之一,其通常采用软件与片外专门电路相结合的技术,来防止CPU程序的"跑飞"。我们在课题的研究过程中注意到,利用微处理机内部闲置的定时/计数器,配合以适当的程序就可以方便地构成WDT,在PC异常时能够及时有效地强制"软复位"而恢复系统的正常运行。
3.1 基本原理
与前面提及的软件补偿措施相配合,此WDT可以有效地防止由于CPU的PC"飞出"正常运行的程序区域而导致的系统瘫痪。用微处理机片内的一个定时器单元接收内部时钟提供的稳定脉冲,当此定时器溢出(加法型)或者为零(减法型)时提出中断请求;对应的中断服务程序使PC回到初始化程序的第一行,从而实现强制性"软复位"。 程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器清零或置数,即可预防溢出中断而引起的误复位。
3.2 设计示例
下面以常用的MCS-51系列单片机的T0为例,介绍软WDT的设计思路。
首先,在初始化程序块中设置T0的工作方式,并开启其中断和计数功能。设主频为12MHz,T0为8位计数器,则:
最大计数值为 28-1=255
计数速率是主频的112(1次/μs),故:
溢出周期为(255+1)÷1=256μs
其次,计算各条指令的执行耗时,以适当的间隔设置 T0=0。由于MCS-51系列单片机的指令集中只有"乘"、"除"两条指令耗用4个机器周期,其它均只耗用1~2个机器周期,为保险起见简化为"每条指令均耗用2个机器周期",即每执行一条指令耗用2μs。据此可以推算出"清零定时器T0"的指令执行间隔应当少于:
256÷2=128(条)
即每执行不多于128条程序指令(计入多次循环执行的指令),就应当执行一条清零T0的指令,以防止软复位被误执行。
第三,设计T0溢出所对应的中断服务程序。此子程序只须一条指令,即在T0对应的中断向量地址(000BH)写入"无条件转移"命令,把PC 拖回整个程序的第1行,对单片机重新进行初始化并获得正确的执行顺序。由于这条中断指令并没有结束中断子程序就转出去了,为了能够继续响应其它的中断请求,可以在程序的初始化功能块中把SP定高2字节,在此2字节中写入"中断返回" (RETI)之后应执行指令的地址,以便RETI执行后自动弹栈装入PC,并在初始化程序结束前写上RETI指令。
在工业控制系统的研制过程中,微机的抗干扰性能是系统成败的关键之一。数十年来,人们已经研究出了许多抗干扰的硬件措施,包括采用净化电源、接地、屏蔽、光电耦合、数据滤波及延时除颤等等。本文针对微处理机易受干扰的部件提出了软件抗干扰的一些方案,实用表明具有较高的经济性和可靠性,很容易将其结合进工业控制程序之中,不失为一类简便而有效的抗扰手段。
- 单片机系统软件如何抗干扰的方法(04-19)
- 软件抗干扰经验之四、话说指令冗余技术(11-22)
- 软件抗干扰经验之一(11-22)
- 软件抗干扰经验之二、不要轻信软件狗(11-22)
- 软件抗干扰经验之三、话说RAM冗余技术(11-22)
- 单片机软件抗干扰的这几种办法,以后不能说不知道啦~(11-22)