新闻中心

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

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

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

3.2 使受扰程序快速重入正常运行状态的方法

  系统软件是由完成各种功能的程序组成的,因此可分成若干个功能模块。为了能使程序快速重入系统的正常运行状态,首先要将系统软件编制成模块化结构,并尽可能的将其细分为若干功能模块,每个功能模块在运行中需具有写入和记录功能,即设置RAM区的有效标志;记录编号和首地址;记录关键的又不可重新获得的数据;模块还应具有给运行监视系统发脉冲的功能等。为判断程序是否跑飞,要求在每个功能模块的结尾处将指定单元中保存的标志与本功能模块预先设置的标志进行对比。若不同,则程序跑飞,然后将它恢复到指定单元中保存的标志所对应的功能模块去重新执行;若相同,则运行正常。对于功能模块中的程序跑飞,可根据具体情况对结果的合理性进行分析和判断。若不合理,则返回重新执行;若合理,则进入下一个功能模块。具有这种功能的程序流程图如图3—2所示。

3.3 利用数据冗余技术实现RAM内容自救的方法

  为了保证系统实现无扰动重入正常运行状态,必须保证重要数据的正确性。实现这一目的的方法是采用数据冗余技术。

  在实时控制过程中,干扰会造成RAM中的数据被冲毁。数据被冲毁的情形,一般有如下3类:1)整个RAM区数据被冲毁;2)RAM中某一片数据被冲毁; 3)个别数据被冲毁。由于RAM中保存的是各种原始数据、标志、变量等,如果被破坏,会造成系统出错或无法运行。不过,对几乎所有的单片机实时控制系统而言,RAM中的大部分内容是为了进行分析、计算、比较而临时寄存的,不允许丢失的数据也只占RAM内容的极少部分。在这种情况下,除了那些不允许丢失的数据外,其余大部分内容允许短时被破坏,最多有过引起系统一个很短时间的波动,但很快就能恢复正常。因此,在实时软件中,只要注意对少数不允许丢失的数据进行保护即可。常用方法有“校验法”和“设标法”。这两种方法各有千秋,校验法比较繁琐,但查错的置信度高;设标法简单,但对数据表中个别数据被冲毁的情况无能为力。在编程中应综合使用。具体做法是:1)将RAM工作区重要区域的始端和尾端各设置一个标志码“0”或“1”;2)对RAM中固定不变的数据表格设置校验字。

  在程序执行过程中,每隔一定时间通过事先设计的查错程序来校验各标志码是否正常,如果不正常,则利用数据冗余技术通过抗干扰处理程序来进行修正。冗余设计的一般原则是:在RAM区中相隔尽可能远且远离堆栈区的不同区域将数据备份3份,当读取数据时,把3份数据备份相比较,采用3取 2的表决原则,确保数据的正确性。

3.4 锁定输出口的方法

  为了防止失控程序对输出口发生非正常操作,引起控制量产生波动和破坏系统的安全性,必须对输出口的操作进行严格的审查。解决的办法是硬件上采用锁定控制器,软件上采用功能块标志和口令字。

  锁定控制器由两个D触发器来实现,如图3—3所示。

  平时两个锁定控制器的输出端Q1、Q2均为低电平,而且Q1、Q2只要有一个信号是低电平,输出通道就处于被封锁状态。只有Q1、Q2同时为高电平时,该通道才被打开。为了防止程序对输出通道的非法写入,平时程序通过端口控制信号和置Q1、 Q2为低电平来关闭输出通道。而仅当需要输出时,程序通过端口控制信号和置Q1、Q2为高电平打开输出通道。程序输出时,需先给出口令字。输出模块程序流程图如图3—4所示。

4 结束语

  采用上述这些措施可以有效地提高系统运行的可靠性,获得令人满意的控制效果,并且稍做修改即可用于其它类型的单片机控制系统,具有很强的实用性和通用性。

[参考文献]

[1] 王幸之.单片机应用系统抗干扰技术[M].北京航空航天大学出版社,2000,2.
[2] 周航慈.单片机应用系统程序设计技术[M].北京航空航天大学出版社,1991,7.
[3] 刘大茂.智能仪表[M].机械工业出版社,1998.5


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭