變頻空調(diào)單片機測控系統(tǒng)的抗干擾設(shè)計
單片機在惡劣的環(huán)境中工作時,干擾源不僅會影響到硬件系統(tǒng)的正常工作,也常常會使系統(tǒng)的軟件運行發(fā)生混亂。因此系統(tǒng)的抗干擾問題不能完全靠硬件去解決,軟件的抗干擾設(shè)計也是一項重要措施。當系統(tǒng)受到干擾時,可能使單片機的程序跑飛,改變程序指針PC值,從而使程序進入死循環(huán)而不能正常工作;也可能改變單片機內(nèi)部特殊功能寄存器(SFR)的值使程序狀態(tài)混亂,甚至發(fā)生故障,損壞器件;如果被測量信號受到干擾,則會造成測量值失真。對于這種情況的對策是及時發(fā)現(xiàn),及時引導(dǎo)程序走向正確位置,或者使系統(tǒng)重新復(fù)位開始運行。在本系統(tǒng)中采用了以下措施。
圖5提高系統(tǒng)抗干擾能力的原理框圖
31利用冗余指令
當CPU受到干擾后,往往將一些操作數(shù)當作指令碼來執(zhí)行,引起程序混亂。此時,若程序彈飛到某一條單字節(jié)指令上時,便自動納入正規(guī);若程序彈飛到某一條雙字節(jié)或三字節(jié)指令上時,有可能落到其操作數(shù)上而繼續(xù)出錯。為此,在對程序流向起著決定作用的指令之前插入兩條NOP指令,保證彈飛的程序迅速納入正確的控制軌道。此類指令有RET、RETI、LCALL、LJMP、JNC、JNB、CJNE、DJNZ等。
指令冗余措施可以減少程序彈飛的次數(shù),使其很快納入程序軌道,但這不能保證在失控期間不出錯,更不能保證程序納入正常軌道后就太平無事了。解決這個問題還必須采用軟件容錯技術(shù),使系統(tǒng)的誤動作減少,并盡可能消除重大誤動作。
32設(shè)置軟件陷阱
所謂軟件陷阱,就是一條引導(dǎo)指令,強行將捕獲的程序引向一個指定的地址,在那里有一段專門對程序出錯進行處理的程序。如果把這段程序的入口標號稱為ERR的話,軟件陷阱即為一條LJMPERR的指令,為加強其捕捉效果,一般還在它前面加兩條NOP指令。因此,真正的軟件陷阱由三條指令構(gòu)成: NOP NOP LJMPERR
軟件陷阱一般安排在下列四種地方:
(1)未使用的中斷向量區(qū)當干擾使未使用的中斷開放,并激活這些中斷時,就會引起系統(tǒng)程序的混亂,但如果在這些地方布上陷阱,就能及時捕捉到錯誤中斷;
(2)未使用的大片ROM空間對于剩余的大片
未編程的ROM空間,一般都維持原狀(0FFH)。程序彈飛到這一區(qū)域后將順流而下,不再跳躍(除非受到新的干擾)。這時只要每隔一段設(shè)置一個陷阱,就能捕捉到彈飛的程序;
(3)表格表格有兩類,一類是數(shù)據(jù)表格;另一類是
散轉(zhuǎn)表格。由于表格中內(nèi)容和檢索值有一一對應(yīng)關(guān)系,在表格中安排陷阱將會破壞其連續(xù)性和對應(yīng)關(guān)系,所以只能在表格的最后安排五字節(jié)陷阱(NOPNOPLJMP);
(4)程序區(qū)程序區(qū)是由一序列執(zhí)行指令構(gòu)成
的,一般不能在這些指令串中間任意安排陷阱,否則正常執(zhí)行的程序也可能被抓走。在這些指令串中間有一些斷裂點,正常執(zhí)行的程序到此便不會往下繼續(xù)執(zhí)行了,這類指令有LJMP、SJMP、AJMP、RET、RETI等,在它們后面加軟件陷阱。
33設(shè)置程序運行監(jiān)視系統(tǒng)(WDT)
利用CPU內(nèi)部的WDT可以實現(xiàn)系統(tǒng)定時復(fù)位。在程序正常運行時,每隔一段時間對WDT清零。一旦程序運行不正常,沒有及時給WDT送清零信號,則在WDT計數(shù)溢出時自動將系統(tǒng)復(fù)位。所使用的西門子公司生產(chǎn)的C504單片機的WDT溢出時間可人為設(shè)定。若晶振用12MHz,其可選時間為512μs~11s。本系統(tǒng)設(shè)計溢出時間為7ms。
34采用軟件濾波
被測信號的抗干擾可以采用“軟件濾波”的方法解決。常用的有:算術(shù)平均值法,比較取舍法,中值法,一階遞推數(shù)字濾波法。本系統(tǒng)采用的是比較取舍法。
4結(jié)語
經(jīng)試驗,該系統(tǒng)工作半年多來,運行狀況良好,性能穩(wěn)定,噪音低,沒有出現(xiàn)錯誤及損壞器件現(xiàn)象,取得了良好的效果,達到了預(yù)期的目的,證明在系統(tǒng)設(shè)計中采用的上述抗干擾措施是行之有效的。
評論