智能接觸器可靠性設(shè)計(jì)的軟件實(shí)現(xiàn)方法(06-100)
監(jiān)控程序一般在上電、復(fù)位等操作時(shí),對(duì)單片機(jī)及片外擴(kuò)展接口芯片的各種功能、端口、方式、狀態(tài)等采用永久性或臨時(shí)性的設(shè)置,這就是通常的初始化??紤]到可能的干擾入侵,為保證嵌入式系統(tǒng)的自恢復(fù)功能,可進(jìn)行“重復(fù)初始化”,即:在重要功能模塊調(diào)用前,再一次對(duì)相應(yīng)的控制寄存器設(shè)定動(dòng)作模式,以加強(qiáng)該功能模塊的健壯性。
本文引用地址:http://www.ex-cimer.com/article/81284.htm數(shù)據(jù)傳輸冗余
控制或采集端與上位機(jī)之間的串行傳輸可考慮給數(shù)據(jù)添加冗余位的方式,以延長(zhǎng)數(shù)據(jù)代碼之間的海明距離(Hamming);或采用循環(huán)冗余校驗(yàn)(CRC)手段,來(lái)增加數(shù)據(jù)的檢測(cè)和糾正錯(cuò)誤能力。
重復(fù)執(zhí)行
把重要的指令設(shè)計(jì)成定時(shí)掃描模塊,使其在整個(gè)程序的循環(huán)運(yùn)行過(guò)程中反復(fù)執(zhí)行。這樣,即使干擾信號(hào)改寫(xiě)了指令的內(nèi)容,也能在受控設(shè)備的反應(yīng)時(shí)間內(nèi)自動(dòng)恢復(fù)正常。例如,對(duì)頻率較低的傳感器數(shù)據(jù),可在有效時(shí)間內(nèi)多次采集并比較;對(duì)控制外部設(shè)備的指令,則需多次重復(fù)執(zhí)行以確保輸出信號(hào)的可靠性。
標(biāo)志冗余法
考慮到干擾信號(hào)有可能對(duì)RAM區(qū)的數(shù)據(jù)進(jìn)行破壞,我們可以在RAM中每隔一定單元置入一些標(biāo)志(標(biāo)志冗余),而這些標(biāo)志在初始化時(shí)便設(shè)置好。事故處理程序一開(kāi)始,便檢查這些標(biāo)志是否正常;如不正常,說(shuō)明數(shù)據(jù)已被破壞,轉(zhuǎn)向事故處理程序。具體做法是:在單片機(jī)內(nèi)存(片內(nèi)RAM)中設(shè)立運(yùn)行標(biāo)志FLAG(冗余標(biāo)志)。若數(shù)據(jù)寫(xiě)在2K的RAM空間,地址從0000H開(kāi)始,每隔256個(gè)單元置一個(gè)標(biāo)志EEH。
“冗余標(biāo)志”還可以完成單片機(jī)系統(tǒng)的冷、熱啟動(dòng)的自動(dòng)判別。“冷啟動(dòng)”就是清零啟動(dòng),一切重新開(kāi)始。它通常包括清除內(nèi)外RAM中的所有中間運(yùn)行數(shù)據(jù)、各種狀態(tài)標(biāo)志。“熱啟動(dòng)”則是停電時(shí)保存的中間數(shù)據(jù)和各種有關(guān)標(biāo)志為基礎(chǔ)的條件下,繼續(xù)運(yùn)行。如果在RAM中將連續(xù)5個(gè)單元設(shè)為“AAH”作為正常標(biāo)志。即正常開(kāi)機(jī)時(shí),初始化程序?qū)lag全部置為AAH,然后,再執(zhí)行運(yùn)行程序。若軟復(fù)位后,程序查到Flag全為AAH,則是熱啟動(dòng),轉(zhuǎn)而執(zhí)行“事故處理程序”。
指令冗余
為了抑制程序的彈飛,在多字節(jié)指令后增加兩條沒(méi)有意義的空指令NOP,稱(chēng)之為“指令冗余”。單片機(jī)受到干擾后,往往會(huì)把操作數(shù)當(dāng)做指令碼來(lái)執(zhí)行,從而,引起整個(gè)程序的混亂。由于程序彈飛到某一條單字節(jié)指令上,不會(huì)發(fā)生將操作數(shù)當(dāng)成指令碼的錯(cuò)誤,而彈飛到雙字節(jié)或三字節(jié)指令的操作數(shù)時(shí),程序就會(huì)發(fā)生將操作數(shù)當(dāng)成指令碼的錯(cuò)誤,使程序繼續(xù)彈飛,引起整個(gè)軟件的崩潰。為了保證指令在干擾條件下不被拆散,在程序多字節(jié)指令后,通常,插入兩個(gè)單字節(jié)的空操作指令NOP,來(lái)抑制程序的彈飛。冗余指令NOP,在程序中不宜加得太多,否則,會(huì)使程序運(yùn)行速度減慢。
結(jié)語(yǔ)
在零侵蝕接觸器試驗(yàn)樣機(jī)容錯(cuò)控制算法的設(shè)計(jì)過(guò)程,筆者除使用搏弈、冗余等軟件容錯(cuò)技術(shù)外,還使用了數(shù)字濾波、堆棧溢出的預(yù)防、A/D和D/A通道的診斷與校正、以及輸入輸出界面的安全性設(shè)計(jì)等可靠性技術(shù)。軟件理論告訴我們,微處理系統(tǒng)的軟件不可能完美無(wú)缺,但軟件容錯(cuò)設(shè)計(jì)可以幫助設(shè)計(jì)師盡可能減少錯(cuò)誤,使控制器由于軟件問(wèn)題而出錯(cuò)的概率降低到完全可以接受的程度。
值得注意的是:軟件容錯(cuò)設(shè)計(jì)不可以取代硬件可靠性和抗干擾的基本設(shè)計(jì)!硬件可靠性和抗干擾基本設(shè)計(jì),包括元器件篩選、老化、防潮、防震、防塵、散熱問(wèn)題;濾波電路與抗干擾穩(wěn)壓電源的使用;系統(tǒng)的屏蔽、接地、光電隔離的處理等等。它們可以給微處理系統(tǒng)創(chuàng)造一個(gè)基本上是“干凈”的工作環(huán)境。由于軟件容錯(cuò)設(shè)計(jì)是以CPU和RAM的開(kāi)銷(xiāo)為代價(jià)的,如果沒(méi)有硬件可靠性和抗干擾一般措施消除絕大多數(shù)干擾,CPU將忙于奔命,沒(méi)有時(shí)間來(lái)干正經(jīng)的工作,嚴(yán)重影響到系統(tǒng)的工作效率和實(shí)時(shí)性。因此,一個(gè)成功的智能控制器可靠性設(shè)計(jì)應(yīng)是硬件與軟件有機(jī)結(jié)合的產(chǎn)物。
評(píng)論