基于MCS-96单片机控制系统的程序失控防范
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.
评论