智能接觸器可靠性設(shè)計(jì)的軟件實(shí)現(xiàn)方法(06-100)
·對(duì)表格使用軟件陷阱
本文引用地址:http://2s4d.com/article/81284.htm單片機(jī)表格有兩類:一類是數(shù)據(jù)表格供“MOVC A,@A+PC”或“MOVE A,@A+DPTR”兩類指令使用,它的內(nèi)容完全不是指令,僅僅是指令所使用的數(shù)據(jù),可以不按排陷阱。另一類是散轉(zhuǎn)表格供“JMP @A+DPTR” 指令使用,其內(nèi)容為一系列三字節(jié)指令LJMP或兩字節(jié)指令A(yù)JMP,單片機(jī)對(duì)此類表格可以在最后安排五字節(jié)的陷阱。
·對(duì)程序區(qū)設(shè)置軟件陷阱
當(dāng)程序運(yùn)行到含有LJMP、SJMP、AJMP、RET、RETI、ACALL、LCALL等指令則會(huì)發(fā)生跳轉(zhuǎn),即正常執(zhí)行的程序運(yùn)行到此類指令便不會(huì)繼續(xù)往下執(zhí)行(程序斷裂點(diǎn)),PC的值將出現(xiàn)正常轉(zhuǎn)移。如果干擾使彈飛來(lái)的程序剛好落到斷裂點(diǎn)的操作數(shù)上或斷裂點(diǎn)下一條指令的操作數(shù)上時(shí),則程序就會(huì)越過(guò)斷裂點(diǎn),繼續(xù)往前沖,應(yīng)用軟件必然出錯(cuò)。所以,在程序斷裂點(diǎn)處設(shè)置軟件陷阱可有效地捕獲因干擾引起的跨斷點(diǎn)彈飛,而不會(huì)影響正常執(zhí)行的程序流程。
軟件看門狗
當(dāng)程序受干擾,彈飛到一個(gè)臨時(shí)構(gòu)成的死循環(huán)中,軟件陷阱就無(wú)能為力了。此時(shí),系統(tǒng)將面臨著完全癱瘓。而軟件看門狗(SWD)法可以成功地解決此類問(wèn)題。軟件看門狗實(shí)質(zhì)上是一種監(jiān)控定時(shí)器,它具有以下特征:
·本身能獨(dú)立工作,基本上不依賴于CPU。
·CPU在一個(gè)固定的時(shí)間間隔與該系統(tǒng)打一次交道,以表明系統(tǒng)目前尚正常。
·當(dāng)CPU陷入死循環(huán)后,能及時(shí)發(fā)覺(jué)并使系統(tǒng)復(fù)位。
軟件看門狗(SWD)技術(shù)具體實(shí)現(xiàn)方法如下:
首先,在初始化程序中設(shè)置Ti的工作方式,并啟動(dòng)其中斷和計(jì)數(shù)功能。其次,計(jì)算各條指令執(zhí)行時(shí)所耗時(shí)間,以適當(dāng)?shù)拈g隔設(shè)置Ti的初值。最后,設(shè)計(jì)Ti溢出所對(duì)應(yīng)的中斷子程序。此子程序只有一條指令,即在Ti對(duì)應(yīng)的中斷向量地址(000BH)寫入無(wú)條件轉(zhuǎn)移指令,把PC拖回整個(gè)程序的第一行,對(duì)單片機(jī)重新進(jìn)行初始化,并獲得正確執(zhí)行順序。
控制器中的軟件冗余技術(shù)
“冗余設(shè)計(jì)”原是系統(tǒng)可靠性設(shè)計(jì)的一種技術(shù),常用于系統(tǒng)工程設(shè)計(jì)上。在零侵蝕接觸器的控制器軟件容錯(cuò)模塊設(shè)計(jì)中,筆者充分利用冗余設(shè)計(jì)思想,有效的解決許多難點(diǎn)問(wèn)題。軟件冗余模塊,可分為兩類,其一是,“工作冗余軟件模塊”,它利用冗余資源(CPU時(shí)間,RAM空間)把干擾的后果“屏蔽”掉,而不改變現(xiàn)行監(jiān)控程序的進(jìn)程;其二是“備用冗余軟件模塊”,它在發(fā)現(xiàn)特定的隨機(jī)干擾后,通過(guò)中斷程序,調(diào)用對(duì)應(yīng)的軟件模塊,恢復(fù)或重構(gòu)數(shù)據(jù)結(jié)構(gòu)。然后,再返回現(xiàn)行監(jiān)控程序。
下面,簡(jiǎn)單介紹筆者在零侵蝕接觸器的控制器應(yīng)用軟件開發(fā)中,常使用的幾種軟件冗余設(shè)計(jì)技巧。
評(píng)論