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