新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于MCS-96单片机控制系统的程序失控防范

基于MCS-96单片机控制系统的程序失控防范

作者:时间:2012-02-15来源:网络收藏

1 引言

  单片机构成控制系统时,在满足了各项控制功能后,为了使系统投入实用,必须提高其可靠性。但是,由于工业现场环境恶劣,常会受到电磁设备启动、停止、电源波形畸变等因素的影响,各种干扰不可避免,若只靠避错设计很难满足要求,而且也很难确保这些硬件万无一失,必须为系统配备容错功能。所以,抗干扰设计、容错设计(包括故障检测与诊断技术)和功能设计成为单片机系统设计缺一不可的重要内容。

  在工业现场,大多数情况下干扰不会造成单片机系统硬件的损坏,主要是对软件运行造成不良影响。其主要特征是:指令码或数字码受干扰,使程序的执行出现错误。最典型的错误有:1)CPU中的程序计数器PC的值发生跳变,使程序跑飞,转去执行一个毫无意义或错误的程序段,使系统出现混乱或失控,严重时可能会造成设备损坏,甚至危及人身安全;2)输出口被失控程序非法操作,使控制量发生波动或使系统出现“死机”;3)RAM区域受干扰,造成数据被冲毁,使系统出现运行不正常,输出出错。下面以MCS-96系列单片机所组成的实时控制系统为例,提出一些有效、实用的防范措施。

2 捕捉跑飞程序的方法

2.1 

  单片机最易受干扰的是内部程序计数器——PC的值。在受到强干扰时,PC的值被改变,改变后的值是随机的不确定值。这可使CPU将程序从正确的位置跑飞到ROM中的任何一个地址,当PC值飞到用户工作程序ROM区内时,可采用的方法使程序走上正轨。具体方法是:1)在一些对程序流向起决定性作用的指令,如SJMP、LJMP、LCALL、CALL等之前插入几条NOP指令;2)在某些对系统工作至关重要的指令,如中断、堆栈等之前插入几条NOP 指令;3)在程序中每隔若干条指令,插入一条NOP指令;4)在多字节指令前插入一条或两条NOP指令。

  由于单片机指令大多数为单字节指令,在一个程序中,其中断和堆栈指令使用的次数也很有限,因此,采用这种方法增加存储单元的数量不会太多。区,如EPROM中未被使用的空间或程序中的数据表格区时,常采用软件陷阱的方法来使程序纳入正轨。

  所谓软件陷阱,就是一条引导指令,利用这条指令强行将程序引向一个指定的地址,在指定的地址上有一个专门的出错处理程序。假设该程序的入口标号为EPROM,则软件陷阱由以下3条指令构成:

  NOP
  NOP
  LJMP  ERROR

  该软件陷阱除了安装在未使用的用户EPROM区外,还常常安置在未使用的中断向量区、表格区的最后和程序的断裂点后(断裂点是指象LJMP、SJMP、RET等类指令)。

2.3 看门狗(WATCHDOGTIMER)

  当跑飞的程序既没有落入软件陷阱,又没有遇到冗余指令,而是在用户程序之间或用户根本未使用的地址空间内跳来跳去,自动形成一个死循环,解决这一问题的办法是利用软件启动单片机的监视定时器,俗称“看门狗”。当出现上述情况时,利用它来使系统复位。这种方法简单、直观,只需不超过64K状态周期(16ms)的时间(用12M晶振时),计算机就可恢复正常。但此时,一定要通过软件每隔一定时间(如15ms)使WATCHDOG TIMER复位一次。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭