單片機(jī)的可靠性與抗干擾論文_第1頁(yè)
單片機(jī)的可靠性與抗干擾論文_第2頁(yè)
單片機(jī)的可靠性與抗干擾論文_第3頁(yè)
單片機(jī)的可靠性與抗干擾論文_第4頁(yè)
單片機(jī)的可靠性與抗干擾論文_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第一章 緒論單片機(jī)也叫做嵌入式微控制器,是指在一塊芯片上集成了微處理器(CPU)、存儲(chǔ)器、并串行輸入/輸出接口、定時(shí)器/計(jì)數(shù)器和中斷控制器等部件。新型的單片機(jī)功能越來(lái)越多,速度越來(lái)越快,如內(nèi)部集成了A/D轉(zhuǎn)換器、脈寬調(diào)制器、CAN總路線、倍頻及低功耗設(shè)計(jì)等電路。目前,單片機(jī)的品種繁多,由于MCS-51單片機(jī)具有結(jié)構(gòu)體系完整、指令系統(tǒng)功能完善和內(nèi)部寄存器的規(guī)范化等特色,另外與其配套的種類開(kāi)發(fā)系統(tǒng)和種類軟件也不例外比較完善,因此在中國(guó)的單片機(jī)市場(chǎng)上一直是主流芯片。單片機(jī)應(yīng)用系統(tǒng)的可靠性取決于應(yīng)用系統(tǒng)的抗干擾性能,而整個(gè)系統(tǒng)的抗干擾性能取決于抗干擾的設(shè)計(jì)方法。單片機(jī)應(yīng)用系統(tǒng)的硬件抗干擾設(shè)計(jì)是整個(gè)抗干

2、擾設(shè)計(jì)的主要部分,也是抗干擾設(shè)計(jì)的基礎(chǔ)。它必須為軟件抗干擾設(shè)計(jì)提供良好的條件,因?yàn)樵俸玫能浖垢蓴_技術(shù)也是由硬件的正常工作來(lái)保證的。本論文講解單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的可靠性設(shè)計(jì)與抗干擾問(wèn)題的解決方法。如:系統(tǒng)的可靠性的設(shè)計(jì)方法。單片機(jī)應(yīng)用系統(tǒng)軟件抗干擾的設(shè)計(jì)方法。單片機(jī)應(yīng)用系統(tǒng)硬件抗干擾的設(shè)計(jì)方法。在單片機(jī)應(yīng)用系統(tǒng)中,硬件抗干擾是在單片機(jī)的外部采取的抗干擾措施,其方根措施有濾波、屏隔去耦接地自動(dòng)復(fù)位與電源的監(jiān)測(cè)電路等。與其他電子電路不同的是,單片機(jī)在內(nèi)部也可以采取一些抗干擾措施,這些措施有數(shù)字濾波、軟件冗余、軟件陷阱和軟件看門狗等。在單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)中,既可以采取軟件抗干擾措施,也可以采取硬件

3、抗干擾措施,有時(shí)也把兩者結(jié)合起來(lái)用。具體采取哪種抗干擾措施,還應(yīng)根據(jù)干擾源的具體情況而定。第二章 單片機(jī)的可靠性設(shè)計(jì)21 可靠性可靠性設(shè)計(jì)是電子系統(tǒng)設(shè)計(jì)中的一項(xiàng)很重要指標(biāo)。同樣可靠性設(shè)計(jì)也是單片機(jī)應(yīng)用系統(tǒng)的一項(xiàng)重要性能指標(biāo)??煽啃杂啥喾N因素決定,其中干擾信號(hào)是影響可靠性的方根因素。干擾是指迭加在電源電壓或正常工作信號(hào)電壓上無(wú)用的電信號(hào)。干擾有多種來(lái)源:電網(wǎng)、空間電磁場(chǎng)、輸入/輸出通道等。干擾會(huì)影響傳送信息的正確性,擾亂程序的正常運(yùn)行,甚至可能損壞系統(tǒng)的硬件。實(shí)時(shí)測(cè)控單片機(jī)應(yīng)用系統(tǒng)的運(yùn)行是在與外部環(huán)境的動(dòng)態(tài)交換中進(jìn)行的,內(nèi)部的故障、外界的干擾都會(huì)導(dǎo)致系統(tǒng)的不穩(wěn)定。因此,系統(tǒng)的可靠性關(guān)系到設(shè)計(jì)的成

4、敗問(wèn)題。1可靠度可靠度是在規(guī)定的環(huán)境條件下和規(guī)定的時(shí)間內(nèi)完成規(guī)定功能的概率,是系統(tǒng)可靠性的量度。單片機(jī)應(yīng)用系統(tǒng)的可靠度為指數(shù)型:失效率是單位時(shí)間內(nèi)出現(xiàn)的失效次數(shù),是系統(tǒng)試驗(yàn)研究的統(tǒng)計(jì)數(shù)據(jù)。常用元器件的失效率可參見(jiàn)器件手冊(cè)。失效特性曲線如圖1-1所示。曲線分為三段。(1) 早期失效。(2) 使用壽命期。(3) 損耗失效期。Yt規(guī)定的失效率有效壽命損耗期圖2-1 失效特性曲線22 提高可靠性的措施用單片機(jī)構(gòu)成實(shí)時(shí)控制系統(tǒng)和數(shù)據(jù)采集系統(tǒng)時(shí),最重要的一個(gè)基本要求是有很高的可靠性。因?yàn)橐涣肯到y(tǒng)出故障,出現(xiàn)數(shù)據(jù)采集錯(cuò)誤,將造成生產(chǎn)過(guò)程的混亂,從而導(dǎo)致嚴(yán)重后果。因此,在系統(tǒng)設(shè)計(jì)過(guò)程中,對(duì)可靠性的設(shè)計(jì)應(yīng)貫穿于

5、每一個(gè)環(huán)節(jié)為了提高單片機(jī)應(yīng)用系統(tǒng)的可靠性,可以采取以下幾個(gè)措施。工藝設(shè)計(jì)其中包括選用高質(zhì)量的元器件、電路設(shè)計(jì)、PCB板設(shè)計(jì)、接地與電磁兼容設(shè)計(jì)。元器件參數(shù)設(shè)計(jì)上留有余地,工藝嚴(yán)格把關(guān),產(chǎn)品要進(jìn)行例行試驗(yàn)。2. 3硬件改進(jìn)措施在設(shè)計(jì)上,用增加硬件來(lái)提高系統(tǒng)的可靠性,可采用以下兩種措施。(1) 掉電保護(hù)。由于單片機(jī)應(yīng)用系統(tǒng)所用的工業(yè)電網(wǎng)不穩(wěn)定,會(huì)出現(xiàn)突然掉電現(xiàn)象。此時(shí)必須保存好現(xiàn)場(chǎng)的數(shù)據(jù),待電壓恢復(fù)正常,系統(tǒng)便能從掉電處繼續(xù)執(zhí)行程序。掉電保護(hù)是許多測(cè)量?jī)x器、控制和通信設(shè)備必備的功能,有得提高系統(tǒng)的可靠性。進(jìn)行掉電保護(hù)有幾種方法:一是通過(guò)電源監(jiān)測(cè)電路,在電源電壓跌到某一數(shù)值之前,啟動(dòng)備用電源,把要保

6、護(hù)的數(shù)據(jù)轉(zhuǎn)移到非易失性存儲(chǔ)器;二是把系統(tǒng)中的數(shù)據(jù)存在有備用電源供電的RAM中;三是直接把數(shù)據(jù)存在FLASH結(jié)構(gòu)的聲易失存儲(chǔ)器中。(2)硬件故障自檢功能。利用單片機(jī)應(yīng)用系統(tǒng)自身具備的條件,可設(shè)計(jì)硬件故障自檢功能。單片機(jī)應(yīng)用系統(tǒng)一般應(yīng)具有如下自檢功能:上電復(fù)位后,首先進(jìn)行硬件自檢,以聲、光信號(hào)顯示硬件工作是否正常;利用擴(kuò)展的鍵盤來(lái)檢查每一模塊的功能:在程序運(yùn)行中,可在程序的某些點(diǎn)上插入自檢,并顯示故障部分。2 .4 抗干擾的設(shè)計(jì)原則干擾是造成單片機(jī)應(yīng)用系統(tǒng)故障的主要原因之一。因此抗干擾的設(shè)計(jì)也是單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的首要問(wèn)題。要進(jìn)行抗干擾的設(shè)計(jì),首先要了解干擾源。由于工業(yè)應(yīng)用環(huán)境紛雜,要抑制、清除干

7、擾必須白領(lǐng)形成干擾的三要素:干擾源、耦合通道長(zhǎng)期存在接收設(shè)備,采用相應(yīng)的抗干擾設(shè)計(jì)原則解決問(wèn)題。干擾的來(lái)源單片機(jī)應(yīng)用系統(tǒng)的干擾主要來(lái)自以下幾個(gè)方面:(1) 外部干擾:主要是來(lái)自電源的干擾。切斷感性負(fù)載產(chǎn)生的瞬變電壓脈沖、可控硅通斷造成的浪涌等,工業(yè)電網(wǎng)瞬變干擾、電氣設(shè)備的電弧和火花放電形成的高頻電磁波干擾、空間中的各種各樣的電磁波等。(2) 耦合通道的干擾:主要有輸入/輸出通道、電源和地的干擾。其中耦合干擾方式有共阻耦合、靜電耦合、互感耦合、磁輻射耦合等。(3) 內(nèi)部干擾:主要是接地電位差揚(yáng)形成的地環(huán)流、PCB板設(shè)計(jì)的不合理,模擬與數(shù)字電路未隔離、電路的虛焊和接觸不良等。抗干擾的設(shè)計(jì)原則抗干擾

8、的設(shè)計(jì),就是針對(duì)干擾的性質(zhì)、產(chǎn)生條件、傳播途徑、被干擾的對(duì)象,采取有效的措施,白領(lǐng)干擾源、切斷干擾的傳輸通道、減弱電路對(duì)哭聲干擾的第三性等幾方面進(jìn)行綜合治理。對(duì)于大型的電子設(shè)備一般采用以下設(shè)計(jì)原則。(1) 消除干擾源:在電源線上,通常采用壓敏電阻和RC電路吸收浪涌電壓、消除電弧和火花放電干擾。如在繼電器、接觸器觸點(diǎn)兩端并接RC吸收電路,消除火花放電。(2) 切斷干擾的耦合通道:切斷傳導(dǎo)耦合、共阻抗耦合、感應(yīng)耦合與輻射大師傅的干擾。采用隔離變壓器、光電耦合器、濾波器等方法切斷干擾的耦合通道。(3) 減弱電路對(duì)哭聲干擾的敏感性:在電路設(shè)計(jì)上采用對(duì)稱結(jié)構(gòu)。電橋和差分放大器,可使干擾在電路中自行抵消;

9、降低電路輸入阻抗,可減弱哭聲的影響;使用共模干擾;使用負(fù)反饋電路,對(duì)抑制內(nèi)部哭聲十分有效。(4) 在電路板上使用抗干擾設(shè)計(jì):使用表面貼裝(SMT)技術(shù),增大元件與線路的接觸面;采用多層板設(shè)計(jì),使信號(hào)層和電源層隔離;電路中電流一路保持最?。辉O(shè)計(jì)上使模擬電路和數(shù)字電路分離,模擬地與數(shù)字地一點(diǎn)共地;改善接地方式,盡量減小接地阻抗,必要時(shí)可使用浮置地等方法來(lái)掏干擾。25 硬件抗干擾 軟件抗干擾的優(yōu)點(diǎn)是成本低,但其效率較低,也存在著一定的局限性。在很多場(chǎng)合還需要加入硬件抗干擾,才能夠滿足需要。人們經(jīng)過(guò)長(zhǎng)期的研究與實(shí)踐,積累了豐富的經(jīng)綸,有了許多硬件抗干擾措施。由于硬件抗干擾的效率較高,所以在許多電子設(shè)備

10、中都能夠看到硬件抗干擾的設(shè)計(jì)。硬件抗干擾的設(shè)計(jì)有濾波技術(shù)。屏蔽技術(shù)、隔離技術(shù)、去耦技術(shù)、接地技術(shù)及電源的監(jiān)測(cè)和保護(hù)技術(shù)等。251 濾波 濾波是壓縮信號(hào)回路干擾頻譜的一種方法。當(dāng)干擾頻譜萬(wàn)分不同于有用信號(hào)的頻帶時(shí),可以用濾波器將無(wú)用的干擾濾除。有源濾波器有源濾波器可分為低通濾波器、高通濾波器、帶阻濾波器和帶通濾波器等多種。這些知識(shí)應(yīng)該在模擬電路中講過(guò),這里就不一一敘述了。信號(hào)濾波器信號(hào)濾波器是用在各種信號(hào)線上的低通濾波器,其作用是消除導(dǎo)線上的各種高頻干擾。信號(hào)濾波器可分為線路板安裝濾波器、饋通濾波器和濾波器連接器等到三種。電源濾波器目前,許多廠家已生產(chǎn)出用于電源輸入端的濾波器件。這種濾波器能夠防

11、止射頻的干擾,可用于各種電子設(shè)備的輸入端。屏蔽技術(shù)屏蔽技術(shù)是采用各種屏蔽的方法抑制沿空間傳播的電磁干擾,即阻斷輻射干擾的傳播路徑。常用的屏蔽方法有機(jī)箱屏蔽、采用高層磁材料制造屏蔽體或地線、在工藝設(shè)計(jì)上保證屏蔽機(jī)箱的完整性和電纜線的屏蔽。252隔離 在單片機(jī)應(yīng)用系統(tǒng)中,為了防止電氣干擾信號(hào)從前向和后向通道進(jìn)入系統(tǒng),通常在輸入/輸出通道上設(shè)置光電耦合器,這種方法有效地改善了單片機(jī)應(yīng)用系統(tǒng)的工作環(huán)境,使其工作可靠性大大提高。1光電耦合器的的種類常用的光電耦合的作用有兩種:一是輸入信號(hào)隔離,用于單片機(jī)應(yīng)用系統(tǒng)的前身通道,可防止由輸入信號(hào)帶來(lái)的干擾;二是控制隔離,用于系統(tǒng)的兵役通道,可以防止來(lái)自繩開(kāi)關(guān)上

12、的干擾。光電耦合器種類繁多,常用的有發(fā)光二極管/光晶體管、發(fā)光二極管/復(fù)合晶體管、發(fā)光二極管/光電阻器、發(fā)光二極管/光觸發(fā)可控硅和高速光電耦合器等幾種,其中用于輸入信號(hào)隔離的光電耦合器電路如圖2-2所示。這三種光電耦合器都是以發(fā)光二極管為輸入端,一般用于100kHz以下的頻率信號(hào),在輸出端,如果基級(jí)有引出線,則可滿足溫度補(bǔ)償、檢測(cè)和調(diào)制的要求。調(diào)整光電大師傅器的內(nèi)部電路如圖2-2(C)所示,它以發(fā)光二極管為輸入端,以PN型光敏二極管和調(diào)整開(kāi)關(guān)管組成復(fù)合式的輸出端,具有較高的響應(yīng)速度。(a) 發(fā)光二極管/光晶體管 (b) 發(fā)光二極管/光電阻器 (c) 高速光電耦合器 圖2-2 用于輸入信號(hào)隔離的

13、光電耦合器用于輸出控制隔離的光電耦合器電路。用于輸出控制隔離的光電耦合器也是發(fā)光二極管為輸入法端,但輸出端有可控硅和達(dá)林頓管等兩種。具有達(dá)林頓輸出的光電耦合器可用于驅(qū)動(dòng)低頻率的負(fù)載,并用于遠(yuǎn)距離的光電傳輸。具有可控硅輸出的光電耦合器可用于交流大功率隔離驅(qū)動(dòng)。2. 光電耦合器的應(yīng)用常用的光電耦合器應(yīng)用電路如圖2-3所示。一般光電耦合器由光源(如發(fā)光二極管)和光傳感器(如光敏三極管)組成,當(dāng)輸入端Vi為高電平(+12)時(shí),發(fā)光二極管因?qū)ǘl(fā)光,光敏三極管的基極因光電流的作用而導(dǎo)通,所以輸出端Vo可輸出高電平;當(dāng)輸入端Vi為低電平(0V)時(shí),發(fā)光二極管截止,光敏三極管也截止,輸出端Vo為低電平。V

14、oVi圖2-3 光電耦合器的應(yīng)用電路26 接地 接地的設(shè)計(jì)是電子設(shè)備中的一項(xiàng)重要設(shè)計(jì)。如果地線設(shè)計(jì)的不好,系統(tǒng)的抗干擾能力就差,那么電子設(shè)備就不能正常運(yùn)行。在單片機(jī)控制系統(tǒng)中,有以下幾種地線:模擬地、數(shù)字地、信號(hào)地、系統(tǒng)地、交流地和保護(hù)地。模擬地作為傳感器、放大器、A/D和D/A轉(zhuǎn)換器中模擬電路的零電位;數(shù)字地作為計(jì)算機(jī)各種數(shù)字電路的零電位,應(yīng)該與模擬地分開(kāi),避免模擬信號(hào)受到數(shù)字信號(hào)的干擾;系統(tǒng)地是上述幾種地的最終回流點(diǎn),直接與大地相連作為基準(zhǔn)零電位;交流地是計(jì)算機(jī)交流供電電源地,即動(dòng)力線地,它的地電位節(jié)不穩(wěn)定,因此,交流地不允許上述幾種地相邊,而且是交流電源變壓器的絕緣性能要好,絕對(duì)避免漏電

15、現(xiàn)象;保護(hù)地也叫安全地,目的是使設(shè)備機(jī)殼與大地等電位,以避免機(jī)殼帶電,影響人身臉設(shè)備安全。一. 接地的設(shè)計(jì)方法單片機(jī)應(yīng)用系統(tǒng)中接地技術(shù)的設(shè)計(jì)方法如下:(1) 單點(diǎn)接地就是把需要接地的電路、單元臉屏蔽體都接到設(shè)備接地面的同一個(gè)接地點(diǎn)上。單點(diǎn)接地方式適用于低頻電路。(2) 多點(diǎn)接地就是把需要接地的電路、單元臉屏蔽體用多條通路和設(shè)備接地面相連,多點(diǎn)接地降低了接地線的阻抗。多點(diǎn)接地方式試用于高頻電路。(3) 懸浮接地就是把控制系統(tǒng)的地線與外殼或大地浮軒,提高對(duì)電源、外殼引進(jìn)干擾的抑制。二. 接地的設(shè)計(jì)原則1出現(xiàn)地線一路問(wèn)題時(shí),應(yīng)采用浮地隔離技術(shù)。2接地線應(yīng)盡量的短,并具有良好的導(dǎo)電性。3對(duì)于那些出現(xiàn)較

16、大突變電流的電路,要采用單獨(dú)接地的系統(tǒng),以減小其他電路的瞬態(tài)耦合。4低電平接地線要和其他接地線隔離。5系統(tǒng)中數(shù)字地、模擬地應(yīng)一點(diǎn)相連。6信號(hào)線電源線交叉的地方要使導(dǎo)線相互垂直。、7采用平衡差分電路,以晝盡量減小接地電路的干擾。、8低電平傳輸時(shí)要使用多層屏蔽。27 動(dòng)復(fù)位與監(jiān)測(cè)技術(shù) 單片機(jī)的自動(dòng)復(fù)位是單項(xiàng)獎(jiǎng)片機(jī)抗干擾技術(shù)的一個(gè)重要方法。當(dāng)單片機(jī)受到干擾后,可以按下人工復(fù)位按鈕,強(qiáng)制系統(tǒng)復(fù)位。如果操作者不能一直監(jiān)視著系統(tǒng),不能進(jìn)行人工復(fù)位時(shí),系統(tǒng)就冰能正常運(yùn)行。單片機(jī)的自動(dòng)復(fù)位電路就可以解決上述問(wèn)題。下面介紹幾種常用的自動(dòng)復(fù)位電路。1 4060構(gòu)成的自動(dòng)復(fù)位電路4060是14級(jí)分頻計(jì)數(shù)器,構(gòu)成的自

17、動(dòng)復(fù)位電路如圖2-4所示。4060計(jì)數(shù)頻率由R和C決定。單片機(jī)的復(fù)位頻率由4060的計(jì)數(shù)頻率分頻(Q4Q14)而來(lái),大小由此及彼由用戶自行設(shè)定。設(shè)Q4Q14輸出的信號(hào)周期為T0,單片機(jī)的P1.3定期輸出一個(gè)使4060復(fù)位的信號(hào)T1(使4060發(fā)不出掃描信號(hào))。系統(tǒng)正常工作時(shí),T0>T1;如果系統(tǒng)受到干擾,程序跑飛,單片機(jī)就不能正常發(fā)出T1信號(hào)從而使T1>T0,那么計(jì)數(shù)器的輸出信號(hào)使單片機(jī)自動(dòng)復(fù)位。圖2-4 4060硬件看門狗電路2 采用MAX813L構(gòu)成的自動(dòng)復(fù)位與電源監(jiān)測(cè)電路MAX813L是MAX公司生產(chǎn)的uP監(jiān)控芯片。當(dāng)單片機(jī)由干擾引起的系統(tǒng)失控時(shí),為單片機(jī)提供可靠的上、掉電復(fù)

18、位、電源監(jiān)測(cè)、“看門狗”臉電源管理功能。采用MAX813L構(gòu)成的自動(dòng)復(fù)位電路如圖2-5所示。電路有兩種復(fù)位方式,即手動(dòng)復(fù)位和“看門狗”自動(dòng)復(fù)位,手動(dòng)復(fù)位是通過(guò)復(fù)位鍵使系統(tǒng)復(fù)位的;使用“看門狗”自動(dòng)復(fù)位電路時(shí),程序在正常時(shí),從0000H開(kāi)始執(zhí)行,即在80C51系列單片機(jī)的RESET端加上一個(gè)持續(xù)兩個(gè)機(jī)器周期以上高電平信號(hào)使系統(tǒng)復(fù)位。每隔一段時(shí)間單片機(jī)就通過(guò)I/O口P1.0向MAX813L輸出一個(gè)脈沖,當(dāng)單片機(jī)由于干擾等原因不能正常向MAX813L輸出復(fù)位脈沖時(shí),MAX813L內(nèi)部有一個(gè)定時(shí)器,定時(shí)時(shí)間到時(shí)MAX813L的/ RESET端將輸出一個(gè)脈沖給單片機(jī)的RESET端,使單片機(jī)各單位。當(dāng)電源

19、電壓下降到界限值(4.4V)以下時(shí),MAX813L的內(nèi)部電源監(jiān)測(cè)電路將使/TESET端輸出一個(gè)低電平,使單片機(jī)復(fù)位。當(dāng)電源電壓恢復(fù)到界限值(4.4V)以上時(shí),單片機(jī)仍維持一段低電平,從而保證單片機(jī)能夠可靠地復(fù)位。圖2-5 MAX813L構(gòu)成的自動(dòng)復(fù)位電路第三章 單片機(jī)測(cè)控系統(tǒng)的設(shè)計(jì)要求31程序設(shè)計(jì)要求軟件的可靠性問(wèn)題常常容易被人們忽視,但隨著單片機(jī)測(cè)控系統(tǒng)越來(lái)越復(fù)雜,工作環(huán)境干擾越來(lái)越嚴(yán)重,軟件可靠性問(wèn)題逐漸為人們所重視。軟件的可靠性問(wèn)題雖然和硬件的可靠性問(wèn)題不盡相同,在基于單片機(jī)的測(cè)控系統(tǒng)中,軟件的重要性與硬件是處于同等重要的地位。單片機(jī)測(cè)控系統(tǒng)本身對(duì)程序設(shè)計(jì)的要求除了可靠、易理解、易維護(hù)、

20、準(zhǔn)確和測(cè)試以外,還提出以下要求:(1)容錯(cuò)性。在工業(yè)控制中,由于單片機(jī)測(cè)控系統(tǒng)所處的環(huán)境比較惡劣,常存在干擾源,如環(huán)境溫度、電場(chǎng)、磁場(chǎng)等,使數(shù)據(jù)采集不可靠、控制失靈或程序運(yùn)行失常。當(dāng)發(fā)生這些錯(cuò)誤或故障時(shí),測(cè)控軟件要能夠不受影響,從錯(cuò)誤或故障中恢復(fù),保證系統(tǒng)的正常進(jìn)行。(2)實(shí)時(shí)性。實(shí)時(shí)性是測(cè)控系統(tǒng)的普通要求,即要求系統(tǒng)及時(shí)響應(yīng)外部事件的發(fā)生,并及時(shí)給出處理結(jié)果。隨著電子技術(shù)的飛速發(fā)展,硬件的集成度與速度都在不斷提高,因此,這就要編寫相應(yīng)的測(cè)控軟件來(lái)滿足實(shí)時(shí)性要求。在工程應(yīng)用程序設(shè)計(jì)中,采用匯編語(yǔ)言要比高級(jí)語(yǔ)言更具有實(shí)時(shí)性。(3)足夠的時(shí)序裕度。時(shí)序是程序設(shè)計(jì)中必須考慮的問(wèn)題。系統(tǒng)在中心控制器的

21、控制下,實(shí)現(xiàn)分時(shí)操作,在非握手控制方式下,程序運(yùn)行完成依靠時(shí)序調(diào)度、切換控制,這就要求在編寫程序時(shí),不僅要時(shí)序正確,而且要有足夠的時(shí)序裕度。32軟件抗干擾的特點(diǎn)由于軟件抗干擾的特殊性,單片機(jī)測(cè)控系統(tǒng)的軟件抗干擾技術(shù)與硬件抗干擾技術(shù)有著很大的不同,其主要表現(xiàn)在以下幾個(gè)方面。(1)軟件抗干擾的兩個(gè)作用。在兩種情況下需要應(yīng)用軟件抗干擾:一種情況是為了提高系統(tǒng)的效能、節(jié)省硬件,用軟件的功能去代替硬件;另一種情況是用軟件去解決硬件解決不了的問(wèn)題。大量的干擾源雖然不能造成硬件的破壞,但卻使系統(tǒng)工作不穩(wěn)定,數(shù)據(jù)不可靠,運(yùn)行失常,程序“跑飛”,嚴(yán)重時(shí)可造成單片機(jī)系統(tǒng)失靈,發(fā)生嚴(yán)重的故障。一些不穩(wěn)定的因素產(chǎn)生于

22、生產(chǎn)的全過(guò)程中,實(shí)時(shí)控制系統(tǒng)往往是24個(gè)小時(shí)連續(xù)工作的,不允許斷電檢測(cè)。這些令工業(yè)控制系統(tǒng)大受困擾的問(wèn)題不是硬件都能解決的,因?yàn)檫@些干擾信號(hào)大多數(shù)是瞬時(shí)存在,時(shí)間間隔不確定,傳播途徑不清楚,而單片機(jī)軟件卻能處理這些具有隨時(shí)性、瞬時(shí)性的干擾,例如在單片機(jī)電源電壓上,由于開(kāi)關(guān)、繼電器和雷電的影響而形成的浪涌電壓,電源出現(xiàn)的瞬時(shí)欠壓、過(guò)壓、掉電,各內(nèi)外因素產(chǎn)生的瞬間干擾脈沖都屬于這類干擾。(2)軟件抗干擾是一種價(jià)廉、靈活、方便的抗干擾方法。純軟件抗干擾不需要硬件資源,不改變硬件的環(huán)境,不需要對(duì)干擾源精確定位,不需要定量分析,因此使用起來(lái)靈活、方便。用于工業(yè)過(guò)程控制可很好地保證控制的可靠性。(3)用軟

23、件方法處理故障,實(shí)質(zhì)上是采用冗余技術(shù)對(duì)故障進(jìn)行屏蔽,對(duì)干擾響應(yīng)進(jìn)行掩蓋,在干擾過(guò)后對(duì)干擾進(jìn)行多層次、多角度的預(yù)防、屏蔽和監(jiān)控。(4)應(yīng)用軟件抗干擾,需要首先搞清楚干擾的種類、性質(zhì)于影響的部位。然后對(duì)癥下藥,確定軟件抗干擾的方法,同時(shí),要注意其具體實(shí)現(xiàn)的時(shí)間開(kāi)銷等問(wèn)題。例如用備份的方法來(lái)抗干擾,實(shí)際上是用軟件完成判別和轉(zhuǎn)換,付出的是備份的硬件設(shè)施,等于用增加空間來(lái)?yè)Q取工作的可靠性;用軟件數(shù)字濾波代替硬件濾波,用重復(fù)取數(shù)、比較來(lái)判斷輸入、輸出數(shù)據(jù)的正確性,這種對(duì)付干擾的做法實(shí)質(zhì)上是用時(shí)間抗干擾。對(duì)于付出的時(shí)間或空間,必須考慮系統(tǒng)能否承受的問(wèn)題。(5)應(yīng)用軟件抗干擾技術(shù)的前提是干擾尚未引起硬件的破壞

24、,RAM中的程序與數(shù)據(jù)未丟失。(6)高可靠、不停頓連續(xù)運(yùn)行的容錯(cuò)抗干擾工業(yè)控制單片機(jī)系統(tǒng)發(fā)展的必然產(chǎn)物,也是單片機(jī)系統(tǒng)發(fā)展的必經(jīng)階段。33 軟件抗干擾的條件軟件抗干擾是屬于測(cè)試系統(tǒng)的自身防御行為。采用軟件抗干擾設(shè)計(jì)的最根本的前提條件是:系統(tǒng)中抗干擾軟件不會(huì)因干擾而損壞。在單片機(jī)應(yīng)用系統(tǒng)中,由于程序及一些重要常數(shù)都放置在ROM中,著就為軟件抗干擾創(chuàng)造了良好的前提條件。因此,軟件抗干擾的設(shè)置前提條件概括為以下三個(gè)方面:(1)在干擾作用下,微機(jī)系統(tǒng)硬件部分不會(huì)受到任何損壞,或易損壞部分設(shè)置有檢測(cè)狀態(tài)可供查詢。(2)程序區(qū)不會(huì)受干擾侵害。系統(tǒng)的程序及重要常數(shù)不會(huì)因干擾侵入而變化。對(duì)于單機(jī)系統(tǒng),程序及表

25、格、常數(shù)均固化在ROM中,著一條件自然滿足,而對(duì)于以下在ROM中允許用戶應(yīng)用程序的微機(jī)系統(tǒng),無(wú)法滿足這一條件。但這種系統(tǒng)因干擾造成運(yùn)行失常時(shí),只能在干擾過(guò)后,重新向ROM區(qū)調(diào)入應(yīng)用程序。(3)ROM區(qū)中的重要數(shù)據(jù)不被破壞,或雖被破壞但可以重新建立。通過(guò)重新建立的數(shù)據(jù),系統(tǒng)的重新運(yùn)行不會(huì)出現(xiàn)不可允許的狀態(tài),例如,在一些控制系統(tǒng)中,ROM中的大部分內(nèi)容時(shí)為了進(jìn)行分析、比較而臨時(shí)寄存的,即使用一些不允許丟失的數(shù)據(jù)也只占極少部分,這些數(shù)據(jù)被破壞后,往往只引起控制系統(tǒng)一個(gè)短期波動(dòng),在閉環(huán)環(huán)節(jié)的糾正下,控制系統(tǒng)能很快恢復(fù)正常,這種系統(tǒng)都能采用軟件恢復(fù)。34 軟件技術(shù)存在于測(cè)控系統(tǒng)內(nèi)部的干擾,具有隨機(jī)性,采

26、用硬件抗干擾措施,只能抑制某些干擾,但仍有一些干擾會(huì)侵入系統(tǒng)而引起系統(tǒng)不時(shí)地出現(xiàn)一些功能性故障,如:程序運(yùn)行溢出形成死機(jī),控制開(kāi)機(jī)不起作用,產(chǎn)生誤動(dòng)作或不按程序設(shè)定的邏輯順序動(dòng)作,測(cè)試結(jié)果不能正常輸出,數(shù)據(jù)存儲(chǔ)區(qū)內(nèi)個(gè)別或全部數(shù)據(jù)發(fā)生錯(cuò)誤等。由于故障的特點(diǎn)是暫時(shí)、間歇和隨機(jī)的,用硬件解決比較困難。因此,對(duì)于單片機(jī)測(cè)控系統(tǒng)來(lái)說(shuō),除了采取硬件抗干擾方法外,還要采取必要的軟件干擾措施。常用到的軟件抗干擾技術(shù)有:(1)利用軟件陷阱技術(shù)防止干擾造成的亂序?qū)捳瓜氯?。?)利用時(shí)間冗余技術(shù),屏蔽干擾信號(hào)。該技術(shù)包含多次采樣輸入、判斷,以提高輸入的可靠性;利用多次重復(fù)輸出判斷,提高輸出信息的可靠性;重新初始化,

27、強(qiáng)行恢復(fù)正常工作,以免影響輸入與輸出;查詢中斷源狀態(tài),防止干擾造成誤中斷;在不需要的大部分時(shí)間里對(duì)中斷進(jìn)行屏蔽,從而大大減少因干擾引起的誤中斷。(3)容錯(cuò)技術(shù)。采用一些特定的編碼,對(duì)經(jīng)過(guò)存放的數(shù)據(jù)進(jìn)行檢查,判斷是否是因?yàn)榇娣鸥蓴_,然后從邏輯上對(duì)錯(cuò)誤進(jìn)行糾正。(4)指令冗余技術(shù)。對(duì)重要的指令重復(fù)寫上多個(gè),即使某一個(gè)被干擾,程序仍可執(zhí)行。(5)空間冗余技術(shù)。整機(jī)、電源、接口、數(shù)據(jù)區(qū)均可設(shè)置備份,軟件用于判別干擾和轉(zhuǎn)換設(shè)備。(6)設(shè)立標(biāo)志技術(shù)。設(shè)置特征標(biāo)志、識(shí)別標(biāo)志,常在內(nèi)部數(shù)據(jù)區(qū)的保護(hù)中使用。(7)數(shù)字濾波技術(shù)。該技術(shù)既可稱為硬件仿真(代替濾波器的功能)技術(shù),又可屬于時(shí)間冗余技術(shù)。它不需要硬件,靠

28、單片機(jī)特殊設(shè)計(jì)的計(jì)算程序,高速、多次運(yùn)算達(dá)到對(duì)采樣數(shù)據(jù)序列進(jìn)行平滑的目的,以提高其有用信號(hào)在采樣值中所占的比例,減少乃至消除各種干擾和噪聲,以保證測(cè)控系統(tǒng)工作的可靠性。軟件抗干擾技術(shù)是當(dāng)系統(tǒng)受干擾后使系統(tǒng)恢復(fù)正常運(yùn)行或輸入信號(hào)受干擾后偽求真的一種輔助方法。因此,軟件抗干擾是被動(dòng)措施,而硬件抗干擾是主動(dòng)措施。但由于程序設(shè)計(jì)靈活,節(jié)省硬件資源,所以軟件抗干擾設(shè)計(jì)越來(lái)越引起人們的重視。在微機(jī)測(cè)控系統(tǒng)中,只要認(rèn)真分析系統(tǒng)所處環(huán)境的干擾設(shè)計(jì)來(lái)源以及傳播途徑,采用硬件、軟件相結(jié)合的抗干擾措施,就能保證長(zhǎng)期穩(wěn)定可靠的運(yùn)行。第四章 可靠的程序本質(zhì)可靠性程序設(shè)計(jì)是指程序可以不依靠附加部分就可以完成規(guī)定的功能。要

29、做到程序設(shè)計(jì)的本質(zhì)可靠性,必須從以下幾方面著手。41 確保程序正確程序在編制和調(diào)試時(shí)對(duì)系統(tǒng)將來(lái)所處的環(huán)境不可能做到完全的模擬,因此,看似正確的程序,實(shí)際上還是存在一定的缺陷。這些缺陷,有的是顯性的,可以通過(guò)進(jìn)一步的調(diào)試與仿真加以改進(jìn),還有是隱性的,如因?yàn)樾盘?hào)的延誤而造成程序的判斷錯(cuò)誤。這就需我們?cè)诰幹瞥绦驎r(shí),需作綜合、全面、動(dòng)態(tài)的考慮,并讓程序有一定的容錯(cuò)及限時(shí)退出能力。42 復(fù)位時(shí)序在系統(tǒng)中,通常需要復(fù)位的不僅僅是MCU,一些帶有工作寄存器的外圍器件也要復(fù)位。實(shí)際中經(jīng)常出現(xiàn)的情況是各個(gè)器件共享同一根復(fù)位信號(hào)線,造成當(dāng)單片機(jī)已經(jīng)復(fù)位完畢并開(kāi)始向其他器件寫控制字時(shí),其他器件因?yàn)樯形赐耆珡?fù)位,狀態(tài)

30、字也就未實(shí)際寫入,造成后續(xù)程序的運(yùn)得、行錯(cuò)誤。解決此種問(wèn)題的方法是在主程序向外圍器件寫控制字前加入一小段延時(shí)程序,或者,在硬件上保證外圍器件先復(fù)位,MCU最后、復(fù)位,在整個(gè)系統(tǒng)完全復(fù)位后再寫入控制字。43 工作過(guò)程 器件工作時(shí)序是器件應(yīng)用程序設(shè)計(jì)的基礎(chǔ)。程序中必須保證時(shí)序工作的正確性,而且,要有足夠的時(shí)序裕度。例如,語(yǔ)音芯片ISD4004在向其發(fā)出上電命令字后,必順延時(shí)20ms,才能發(fā)和續(xù)指令,這是由器件的工作特性決定的。在考慮器件運(yùn)行時(shí)序時(shí),MCU的操作必須保證時(shí)序信號(hào)的銜接控制和時(shí)序信號(hào)的時(shí)序裕度。1狀態(tài)轉(zhuǎn)換時(shí)序 在MCU應(yīng)用系統(tǒng)的實(shí)際運(yùn)行中,存在許多的狀態(tài)轉(zhuǎn)換過(guò)程,如低功耗運(yùn)行方式的轉(zhuǎn)換

31、、電源系統(tǒng)的切換管理、外圍器件的關(guān)斷激勵(lì)與響應(yīng)等。這些狀態(tài)轉(zhuǎn)換中有一個(gè)過(guò)濾過(guò)程,應(yīng)用程序設(shè)計(jì)時(shí),必須保證有足夠的時(shí)序空裕度。(1)應(yīng)用系統(tǒng)中的狀態(tài)轉(zhuǎn)換時(shí)序。應(yīng)用系統(tǒng)中的狀態(tài)轉(zhuǎn)換有MCU運(yùn)行狀態(tài)轉(zhuǎn)換、外圍器件運(yùn)行狀態(tài)轉(zhuǎn)換和電源系統(tǒng)的供電狀態(tài)轉(zhuǎn)換等。這些轉(zhuǎn)換時(shí)序有如下特點(diǎn):自動(dòng)保證時(shí)序空裕度的狀態(tài)轉(zhuǎn)換。這一類狀態(tài)轉(zhuǎn)換過(guò)程較短、或由器件邏輯控制電路來(lái)保證過(guò)渡過(guò)程的時(shí)序的時(shí)序裕度。例如一些帶關(guān)斷控制的AD轉(zhuǎn)換器,關(guān)斷后再次啟動(dòng)時(shí),內(nèi)部邏輯電路可保證在電源或時(shí)鐘穩(wěn)定后才開(kāi)始AD轉(zhuǎn)換。在許多MCU的狀態(tài)轉(zhuǎn)換中,MCU內(nèi)部都會(huì)有相應(yīng)的監(jiān)視管理操作。過(guò)渡參數(shù)可查的狀態(tài)轉(zhuǎn)換。這些器件其狀態(tài)轉(zhuǎn)換過(guò)程都有過(guò)渡參數(shù)說(shuō)

32、明。例如,在許多帶關(guān)斷控制的DCDC器件中,都給出了輸出ONOFF控制的過(guò)渡時(shí)間參數(shù)。具有握手標(biāo)志的狀態(tài)轉(zhuǎn)換。這些器件或電路的狀態(tài)轉(zhuǎn)換帶有一些臨測(cè)的電路,它可以輸出狀態(tài)轉(zhuǎn)換結(jié)束標(biāo)志。具有握手標(biāo)志的狀態(tài)轉(zhuǎn)換。這些器件或電路的狀態(tài)轉(zhuǎn)換帶有一些監(jiān)測(cè)的電路,它可輸出狀態(tài)轉(zhuǎn)換結(jié)束標(biāo)志。(2)狀態(tài)轉(zhuǎn)換的程序設(shè)計(jì)處理在程序設(shè)計(jì)中,必須考慮狀態(tài)轉(zhuǎn)換時(shí),過(guò)渡時(shí)期間對(duì)程序運(yùn)行的影響。例如,采用可關(guān)斷DCDC供電的串行通信接口,在串行通信時(shí),對(duì)DCDC供電操作后立即進(jìn)入通程序,可能由于串行通信接口尚示進(jìn)入穩(wěn)定狀態(tài),導(dǎo)致通信失敗。在狀態(tài)轉(zhuǎn)換的程序設(shè)計(jì)中,應(yīng)根據(jù)狀態(tài)轉(zhuǎn)換的時(shí)序特點(diǎn),進(jìn)行精心的時(shí)序控制設(shè)計(jì)。通常,MCU本

33、身的狀態(tài)轉(zhuǎn)換,如復(fù)位、ID、PD方式的進(jìn)入或退出,片內(nèi)外圍集成電路單元的關(guān)斷與運(yùn)行,都有自動(dòng)監(jiān)視、自動(dòng)運(yùn)行管理功能。程序設(shè)計(jì)中只需按MCU數(shù)據(jù)手冊(cè)及指令系統(tǒng)的操作要求進(jìn)行程序設(shè)計(jì)即可。對(duì)于有較長(zhǎng)過(guò)渡時(shí)間的外圍狀態(tài)轉(zhuǎn)換過(guò)程,可采取足夠的延時(shí)時(shí)間等待或設(shè)置提前轉(zhuǎn)換狀態(tài)的辦法。在單片機(jī)應(yīng)用系統(tǒng)中,有并行總線與串行總線,串行總線中又有通信總線與擴(kuò)展總線。這些總線在規(guī)范化操作時(shí),其時(shí)序由數(shù)據(jù)通信協(xié)議保證。在非規(guī)范運(yùn)行,例如在虛擬總線方式下,其虛擬總線運(yùn)行的可靠性在于時(shí)序的準(zhǔn)確模擬。在并行總線中要保證讀寫操作指令運(yùn)行下的讀寫時(shí)序;同步串行總線要保證時(shí)鐘線控制下的同步運(yùn)行時(shí)序;串行異步時(shí)序則要考慮數(shù)據(jù)傳輸率

34、對(duì)數(shù)據(jù)傳送的影響。第五章 軟件抗干擾 在單片機(jī)測(cè)控系統(tǒng)中,過(guò)程控制需要頻繁地讀入數(shù)據(jù)或狀態(tài),而且還要不斷地發(fā)出各種控制命令或輸出數(shù)據(jù)到執(zhí)行機(jī)構(gòu),如繼電器、數(shù)控電機(jī)等。為了提高輸入輸出的可靠性,在軟件上要采用相應(yīng)的措施。5.1 軟件陷阱采用指令冗余技術(shù),可以使”跑飛”的程序恢復(fù)正常工作,但是這是有條件的,首先”跑飛”的程序必須落在程序區(qū),其次冗余指令必須得到執(zhí)行.如果”跑飛”的程序進(jìn)入非程序區(qū),或在執(zhí)行指令前就已經(jīng)形成一個(gè)死循環(huán),則采用指令冗余技術(shù)不能使”跑飛”的程序恢復(fù)正常,此時(shí)可以設(shè)定軟件陷阱.歲外軟件陷阱,其本質(zhì)使一段攔截程序,當(dāng)失控的程序運(yùn)行至此后,可以將其迅速引向一個(gè)指定位置,在那里有

35、專門的錯(cuò)誤處理代碼,使程序回到正確的程序段.5.2 軟件陷阱的形式軟件陷阱的最終目的使將失控的程序引至復(fù)位入口地址0000H或處理錯(cuò)誤的程序入口地址ERR,在此處將程序轉(zhuǎn)向?qū)iT對(duì)程序出錯(cuò)進(jìn)行處理的程序,使程序納入正軌.軟件陷阱可以采用3種形式:形式一為:LJMP 0000P形式二為:LJMP 0202H形式三為:LJMP ERR根據(jù)亂飛程序落人陷阱區(qū)的位置不同,可選擇執(zhí)行轉(zhuǎn)到0000H、轉(zhuǎn)到0202H單元或轉(zhuǎn)到處理錯(cuò)誤的程序入口地址ERR三種形式的其中之一,使程序納入正軌,指定運(yùn)行到預(yù)定位置。程序形式軟件陷阱形式對(duì)應(yīng)入口形式形式之一NOPNOP LJMP 0000H0000H:LJMP MAI

36、N;運(yùn)行程序形式之二LJMP 0202HLJMP 0000H0000H:LJMP MAIN;運(yùn)行主程序0202H:LJMP 0000H形式之三LJMP ERRERR 錯(cuò)誤處理程序表一 程序形式5.3 軟件陷阱的防治措施 (1)在未使用的中斷向量區(qū)MSC-51單片機(jī)的中斷向量區(qū)為0003H002FH,如果系統(tǒng)程序未使用完全部中斷向量區(qū),則可以在剩余的中斷向量區(qū)安排軟件陷阱,以便埔捉到錯(cuò)誤的中斷.具體做法是,開(kāi)始此中斷,在中斷服務(wù)程序中設(shè)置軟件陷阱,就可以實(shí)現(xiàn)在對(duì)錯(cuò)誤中斷的截獲.中斷服務(wù)程序須以RETI或LJMP返回。如某系統(tǒng)使用了兩個(gè)外部中斷INT0、INT1和一個(gè)定時(shí)溢出中斷T0,它們的中斷服

37、務(wù)子程序入口地址分別為FUINT0、FUINT1和FUT0,即可按下面的方式來(lái)設(shè)置中斷向量區(qū). ORG 0000H0000H START: LJMP MAIN LJMP FINT0 NOP NOP LJMP ERR LJMP FUT0 NOP NOP LJMPERR LJMP ERR NOP NO LJMP ERR LJMP ERR NOP NOP0030H MAIN: (2) 未使用的大片EPROM空間的處理 程序一般都不會(huì)占用EPROM芯片的全部空間,對(duì)于未使用完的芯片空間,一般都維持原狀,即使內(nèi)容為0FFH,0FFH對(duì)于MSC-51單片機(jī)指令系統(tǒng)來(lái)說(shuō)是一條單字節(jié)指令.如果程序”跑飛”到這

38、一區(qū)域,則將順利向下執(zhí)行,不再跳躍,因此在這段空間內(nèi)每隔一段設(shè)置一個(gè)陷阱,就一定能捕捉到”跑飛”的程序。(3)表格 單片機(jī)程序設(shè)計(jì)中一般會(huì)遇到兩種表格:一類是數(shù)據(jù)表格,供“MOV A,A+PC” 指令或“MOVC A,+DPTR” 指令使用,其內(nèi)容是一系列的3字節(jié)的指令LJMP或2字節(jié)的指令A(yù)JMP。由于表格的內(nèi)容與檢驗(yàn)索值是一一對(duì)應(yīng)的關(guān)系,在表格中安排陷阱會(huì)破壞表格的連續(xù)性和對(duì)應(yīng)關(guān)系,因此只能在表格的最后安排陷阱。如果表格區(qū)較長(zhǎng),則安排的陷阱不能保證一定能夠捕捉到“跑飛”的程序,這時(shí)只能借助于別的軟件陷阱或冗余指令來(lái)使程序恢復(fù)正常。(4)運(yùn)行程序區(qū)程序區(qū)是由一系列的指令構(gòu)成,不能在這些指令中

39、間任意的安排軟件陷阱,否則會(huì)破壞正常的程序流程。但是,對(duì)于一些指令中間常常有些斷點(diǎn),正常的程序執(zhí)行到斷點(diǎn)處就不再往下執(zhí)行了,而此時(shí)PC的值應(yīng)該發(fā)生正常跳變,如果在這些地方設(shè)置陷阱就有可能捕捉到“跑飛”的程序。例如,對(duì)一個(gè)累加器A的內(nèi)容的正、負(fù)和零的情況進(jìn)行三分支的程序,軟件陷阱安排如下: JNZ XYZ AJMP ABC NOP NOP LJMP ERRXYZ:JB ACC.7,UVW AJMP ABC NOPNOPLJMP ERRUVW: ABC: MOV A,R2RET NOPNOPLJMP ERR 如果程序采用模塊化設(shè)計(jì)的程序,可以主程序的各模塊之間設(shè)置指令冗余或?qū)④浖葳宸胖迷谟脩舫绦?/p>

40、模塊之間空余單元里。程序正常時(shí)不會(huì)進(jìn)入陷阱,而當(dāng)出現(xiàn)異常而進(jìn)入陷阱時(shí)是,有可以快速的跳轉(zhuǎn)到正確的位置。(5)RAM數(shù)據(jù)保護(hù)的條件陷阱單片機(jī)受到干擾嚴(yán)重的干擾時(shí),可能不能正確地讀寫外部的RAM區(qū)。為解決這個(gè)問(wèn)題,可以在進(jìn)行RAM的數(shù)據(jù)讀寫之前,測(cè)試RAM讀寫通道的暢通性,這可以通過(guò)編寫陷阱實(shí)現(xiàn),當(dāng)讀寫正常時(shí),不會(huì)進(jìn)入陷阱,若不正常,則會(huì)進(jìn)入陷阱,且形成死循環(huán)。實(shí)現(xiàn)程序?yàn)椋篊S:MOV A,#XXHMOV DPTR,#XXXXHXJ: MOV 6EH,#55HMOV 6FH,#0AAHNOPNOPCJNE 6EH,#55H,XJCJNE 6FH,#0AAH,XJMOVX DPTR,ANOPNOPM

41、OV 7EH,#00HMOV 6FH,0RET5.4 陷阱標(biāo)志技術(shù)陷阱標(biāo)志技術(shù)是對(duì)軟件陷阱技術(shù)的一種改進(jìn)。上述在程序中設(shè)置軟件陷阱的方法可以在一般情況下提高系統(tǒng)的抗干擾性能,仁是在實(shí)時(shí)控制系統(tǒng)中卻無(wú)法勝任,原因在天系統(tǒng)對(duì)實(shí)時(shí)信號(hào)的處理推動(dòng)了依據(jù),同時(shí)不能自我修復(fù),在無(wú)人值守的情況下,自動(dòng)返回到因干擾而跨出的程序模塊更為困難。軟件陷阱標(biāo)志技術(shù)與軟件陷阱技術(shù)最大的不同點(diǎn)在于:程序中設(shè)置了多個(gè)標(biāo)志。執(zhí)行的不是一條轉(zhuǎn)移指令,而是根據(jù)標(biāo)志情況轉(zhuǎn)移到某個(gè)地址的散轉(zhuǎn)到處理程序。軟件陷阱標(biāo)志技術(shù)具有一定的自我挽救能力,它的安排和使用方法與軟件陷阱技術(shù)基本類似。第六章 實(shí)例設(shè)計(jì)6.1 硬件介紹在工業(yè)環(huán)境中,單片

42、機(jī)會(huì)因?yàn)楦蓴_的存在引起PC錯(cuò)誤,導(dǎo)致程序的跑飛,或陷入死循環(huán),此時(shí),指令冗余技術(shù)、軟件陷阱技術(shù)和軟件陷阱標(biāo)志技術(shù)都無(wú)能為力了,這時(shí)可以采用程序監(jiān)視定時(shí)器(WATCHDAG,WDT),俗稱“看門狗”措施。WDT通過(guò)不斷監(jiān)視程序每周期的運(yùn)行事件是否超過(guò)正常狀態(tài)下所需的時(shí)間,從而判斷程序是否進(jìn)入了“死循環(huán)”,并對(duì)系統(tǒng)進(jìn)行復(fù)位。WDT可以由硬件實(shí)現(xiàn),也可以由軟件實(shí)現(xiàn),也可以將兩者結(jié)合起來(lái)。這時(shí)我以硬件形式介紹。MAX813L 是一款帶有WDT和電壓監(jiān)控功能可以保證當(dāng)電源電壓低于1.25V時(shí),產(chǎn)生掉電輸出。此外MAX813L還具有上電時(shí)自動(dòng)產(chǎn)生200MS寬的復(fù)位脈沖、人工復(fù)位功能,是一款對(duì)CPU提供良好

43、保護(hù)的芯片。MAX813L芯片的各引腳功能描述如表二所示。通過(guò)設(shè)計(jì),MAX813L可以實(shí)現(xiàn)“看門狗”功能以及對(duì)工業(yè)現(xiàn)場(chǎng)數(shù)據(jù)的保護(hù)。、引腳功能MR手動(dòng)復(fù)位端。當(dāng)該端有140MS低電平輸入時(shí),MAX813L有200ms寬的復(fù)位輸出VCC工作電源,接+5VGND工作地端PFI電壓監(jiān)控端。當(dāng)該端電壓輸入低于1.25V時(shí),MAX813L的PFO端產(chǎn)生由高到低的變化PFO電源故障輸入端。正常時(shí)保持高電平;電源電壓變低時(shí),輸出由高變低WDI喂狗信號(hào)。每1.6s之內(nèi)要向該端輸送變化的信號(hào);超過(guò)1。6S該端不變化,就有RETLW輸出RST復(fù)位信號(hào)輸出端。上電時(shí)產(chǎn)生200MS的復(fù)位脈沖;搬運(yùn)復(fù)位端輸入低電平時(shí),該

44、端也有復(fù)位信號(hào)輸出WDO看門狗信號(hào)輸出端。正常時(shí)保持高電平;看門狗輸出時(shí),該輸出由高變低表二 MAX813L芯片引腳的功能該項(xiàng)電路實(shí)現(xiàn)程序監(jiān)控的原理是:通過(guò)把WO與WR直接相連,一量程序跑飛,WO 變?yōu)榈碗娖?,并保?40MS 以上。該項(xiàng)信號(hào)將MAX813L復(fù)位,同時(shí)看門狗定時(shí)器被清零、RST引腳輸出高電平,將單項(xiàng)獎(jiǎng)片機(jī)復(fù)位。200MS結(jié)束后,單片機(jī)脫離復(fù)位狀態(tài),重新恢復(fù)正常的程序運(yùn)行。該電路還具有上電使單片機(jī)自動(dòng)復(fù)位功能,之后便自動(dòng)監(jiān)視電源故障。若電阻R1的一端接的是未經(jīng)穩(wěn)壓直流電源,PI接的是由R1、R2的壓值,當(dāng)電源正常時(shí),PI輸入大于1.26V,故障時(shí),該值降低,電源故障輸出端PO的輸

45、出將由高電平變?yōu)榈碗娖?,引起單片機(jī)INT0中斷,CPU響應(yīng)中斷,執(zhí)行中斷服務(wù)程序,實(shí)現(xiàn)數(shù)據(jù)保護(hù)、斷開(kāi)外部用電電路等。在設(shè)計(jì)中斷服務(wù)程序時(shí),由于INT0的中斷適量是以0003H,它有8個(gè)單元。若程序短,可把程序放在此處;若中斷服務(wù)程序長(zhǎng),可在此處入一條轉(zhuǎn)移指令,轉(zhuǎn)到處理程序。處理程序要先保存重要的數(shù)據(jù)到RAM(掉電時(shí)由備用電池供電),如指令“MOV DIRECT,DPTR”,發(fā)出控制信號(hào)斷開(kāi)外部設(shè)備,最后把電源控制寄存器PCON的PD位置1,激活掉電工作方式,中斷返回。6.2 “看門狗”實(shí)例各種硬件形式的“看門狗”技術(shù)在實(shí)際應(yīng)用中是被證明切實(shí)有效的。但有時(shí),干擾會(huì)破環(huán)中斷方式控制字,導(dǎo)致中斷的關(guān)

46、閉,與之對(duì)應(yīng)的中斷服務(wù)程序也就得不到執(zhí)行,硬件“看門狗”將失去作用。這時(shí),可采用軟件“看門狗”鄧以配合。軟件“看門狗”的設(shè)計(jì)過(guò)程分為以下3部分:計(jì)數(shù)器0監(jiān)視主程序的運(yùn)行時(shí)間。在主程序中設(shè)置一個(gè)標(biāo)志變量,開(kāi)始時(shí),將該標(biāo)志變量清零,在主程序的結(jié)束處,將標(biāo)志變量賦給個(gè)非零值R 。主程序在開(kāi)始處啟動(dòng)計(jì)數(shù)器0,計(jì)數(shù)器件開(kāi)始計(jì)數(shù),每中斷一次,就將設(shè)在中斷服務(wù)程序中的記錄中斷發(fā)生次數(shù)的整型變量M加1。設(shè)主程序正常結(jié)束時(shí),M的值勤為P(P值由調(diào)試程序使確定,并留有一定的裕度)。在中斷服務(wù)程序中,當(dāng)M已等于P時(shí),讀取標(biāo)志變量,若其等于R,可確定程序正常,若不等于,則可斷定主程序已“跑飛”,中斷服務(wù)須修改返回地址

47、至主程序入口處。計(jì)數(shù)器1 監(jiān)視計(jì)數(shù)器0的運(yùn)行,原理與(1)相同,通過(guò)在計(jì)數(shù)器0設(shè)置標(biāo)志變量,每中斷一次,該變量要加1。計(jì)數(shù)器1 在中斷服務(wù)程序中查看該值是否是前一次的值加上一個(gè)常量或近似常量,并以此確定計(jì)數(shù)器0是否在正常計(jì)數(shù)。若發(fā)現(xiàn)不正常,則可斷定主程序已“跑飛”,中斷服務(wù)須修改返回地址至主程序入口處。主程序監(jiān)視計(jì)數(shù)器1。主程序在各功能模塊的開(kāi)始處儲(chǔ)存計(jì)數(shù)器具的當(dāng)前計(jì)數(shù)值于某一變量L,在功能模塊的結(jié)束處,若程序正常,則計(jì)數(shù)器1的計(jì)數(shù)值會(huì)改變?yōu)镻。通過(guò)前后L與P的比較,若值不同,則可確定計(jì)數(shù)器1正常;若L等于P,則計(jì)數(shù)器具 出現(xiàn)錯(cuò)誤,主程序要返回0000H,進(jìn)行出工錯(cuò)處理。在實(shí)際應(yīng)用中,可以將硬

48、件“看門狗”與軟件“看門狗”同時(shí)使用。實(shí)踐證明,將兩者結(jié)合起來(lái)后,程序的可靠會(huì)大大提高。軟件WDT和硬件WDT的組合設(shè)計(jì)硬件“看門狗”可以很好地解決主程序陷入死循環(huán)的故障,但若程序中中斷控制寄存器的內(nèi)容被更改,導(dǎo)致中斷關(guān)閉,硬件“看門狗”則無(wú)法探測(cè)到這種故障;軟件“看門狗”的相互監(jiān)督機(jī)制可以保證對(duì)中斷關(guān)閉故障的發(fā)現(xiàn)和處理,但若單片機(jī)的死循環(huán)發(fā)生在某個(gè)高優(yōu)先級(jí)的中斷服務(wù)程序中,則顯得無(wú)能為力。利用軟硬件結(jié)合的“看門狗”組合可以克服單一“看門狗”功能的缺陷,實(shí)現(xiàn)對(duì)故障的全方位監(jiān)控。軟硬件結(jié)合的看門狗設(shè)計(jì)包括硬件和軟件兩部分,其硬件電路可以與圖中相同,也可以選擇其他的芯片或皎潔,這在設(shè)計(jì)上沒(méi)有特定的

49、要求。需要注意的是在其程序設(shè)計(jì)中,要通過(guò)編程以實(shí)現(xiàn)軟件“看門狗”的功能。這主要由下述的方式實(shí)現(xiàn)。T0、T1計(jì)數(shù)器工作在自動(dòng)裝填的計(jì)數(shù)器狀態(tài),在主程序中設(shè)置變t0,t1,T0發(fā)生一次中斷,將t0加1,T1發(fā)生一次中斷,將t1加1。在主程序的功能模塊開(kāi)始處記錄下t0,t1的當(dāng)前值,設(shè)置計(jì)數(shù)器的計(jì)數(shù)周期,使之小于功能模塊的執(zhí)行時(shí)間,這種,在功能模塊的執(zhí)行周期內(nèi),計(jì)數(shù)器肯定會(huì)發(fā)生中斷,通過(guò)在功能模塊的出口處檢測(cè)這種變化來(lái)確定是否發(fā)生了中斷關(guān)閉的情況,并進(jìn)行故障的處理。在實(shí)際中,有可能出現(xiàn)在功能模塊的執(zhí)行時(shí)間很短,其前后t0和t1未發(fā)生改變,為了把這種正常的工作狀態(tài)和故障區(qū)分開(kāi)來(lái),可以通過(guò)多次檢測(cè)的方法

50、或者有針對(duì)性的檢查定時(shí)器是否繼續(xù)計(jì)數(shù),以避免出現(xiàn)錯(cuò)誤的程序跳轉(zhuǎn)?!翱撮T狗”設(shè)計(jì)中的注意事項(xiàng)(1)“喂狗”的時(shí)機(jī) “喂狗”是指復(fù)位看門狗,使看門狗電路繼續(xù)起作用。喂狗不要加在MCU定時(shí)器中斷服務(wù)程序中,高度的時(shí)候可以這么做,但若系統(tǒng)已經(jīng)高度完畢,就可將“別致狗”安排在:等待查詢的循環(huán)體內(nèi)部耗時(shí)很大的函數(shù)體內(nèi)部主程序任務(wù)隊(duì)列中。 死機(jī)多發(fā)生在程序的指令和數(shù)據(jù)錯(cuò)位、PC跑飛等場(chǎng)合。因?yàn)樘幚砥魉俣群芸欤绻茱w的程序一被死循環(huán)套住,那么很容易自動(dòng)重新復(fù)位的,但是很多情況下偏偏會(huì)被死循環(huán)套牢,那么就必須將依舊正常喂狗,這們看門狗依舊無(wú)法復(fù)位。(2)“硬狗”與“軟狗”的區(qū)別與作用“硬狗”實(shí)現(xiàn)冷啟動(dòng),“軟狗

51、”實(shí)現(xiàn)抽刀斷水啟動(dòng),從可靠消息來(lái)說(shuō),“硬狗”的可靠消息和作用都要比“軟狗”強(qiáng)。但“軟狗”也有它獨(dú)特的優(yōu)點(diǎn),一般“軟狗”都使用定時(shí)器中斷,如果程序發(fā)生跑飛,在干擾不是特別嚴(yán)重的時(shí)候,也就是沒(méi)有破壞控制字時(shí),“軟狗”溢出可將跑飛的程序截回,然后轉(zhuǎn)而執(zhí)行相錯(cuò)程序,數(shù)據(jù)備份修復(fù)等相應(yīng)的程序,之后在進(jìn)入主程序,如果數(shù)據(jù)得到了很好修復(fù)就可以接著跑飛時(shí)處理的事件繼續(xù)運(yùn)行,這樣一亂扣帽子情況下從外部看起來(lái)運(yùn)行并沒(méi)有被打斷,這一點(diǎn)是“硬狗”做不到的,“硬狗”一量動(dòng)作就必須從頭再來(lái)。但如果干擾太大,而“軟狗”不一定要加。但加了“軟狗”的程序肯定比不加要好,軟硬兼施肯定要強(qiáng)于只用“硬狗”或“軟狗”,這一點(diǎn)無(wú)可爭(zhēng)辯。

52、程序運(yùn)行中的數(shù)據(jù)保護(hù)程序的正確運(yùn)行離不開(kāi)正確的數(shù)據(jù),單片機(jī)內(nèi)部寄存器、外部數(shù)據(jù)存儲(chǔ) 都會(huì)因干擾的存在或電壓的突然降低而被更改,因此,從提高軟件可靠性的角度來(lái)說(shuō),對(duì)單片機(jī)內(nèi)部的寄存器尤其是中斷和外部數(shù)據(jù)存儲(chǔ)器進(jìn)行保護(hù),也是一項(xiàng)在設(shè)計(jì)中必須考慮的事項(xiàng)。6.3 中斷設(shè)計(jì)對(duì)單片機(jī)的中斷保護(hù)主要是針對(duì)某些高優(yōu)先級(jí)的中斷對(duì)低優(yōu)先級(jí)中斷數(shù)據(jù)的破壞,幾種常用的中斷保護(hù)措施有:利用堆棧保護(hù)中斷現(xiàn)場(chǎng)在中斷服務(wù)程序中,為保護(hù)主程序不被破壞,均要在服務(wù)程序的開(kāi)始處將主程序需要使用的資源彈入堆棧,使用POP、PUSH指令可以方便地做到這一點(diǎn)。對(duì)堆棧的使用需要預(yù)防堆棧的溢出。MCS-51單片機(jī)的堆棧指示器復(fù)位值為SP=0

53、7H實(shí)際上將SP設(shè)置的這么低會(huì)給編程造成困難,可以用指令對(duì)SP重新賦值,例如MOV SP,#4FH,這時(shí)可利用的堆??臻g為50H70H。需要注意的是,單片機(jī)的堆棧資源非常有限,所以在編程中要晝避免多重調(diào)用子程序、程序的嵌套和遞歸。工作中的寄存器保護(hù) MCS-51單片機(jī)有寄存器組,每個(gè)寄存器組有寄存器R0R7,被稱為工作寄存器。 他們都可以做通用寄存器使用,且建起方式多樣。程序使用哪一個(gè)寄存器組是由PSW的D3、D4位確定。為避免主程序和中斷服務(wù)程序?qū)Ω髯怨ぷ骷拇嫫鞯南嗷ジ蓴_,編程時(shí),可以讓主程序使用寄存器組0,低優(yōu)先級(jí)國(guó)斷服務(wù)使用寄存器組成部分,高儔級(jí)中斷使用寄存器組2。在中斷服務(wù)的開(kāi)始處就須

54、將PSW彈入堆棧,并重新設(shè)置PSW的D3、D4指定中斷服務(wù)使用的寄存器組,在退出中斷服務(wù)時(shí)相應(yīng)的要將PSW彈出堆棧,并恢復(fù)中斷現(xiàn)場(chǎng)。公用數(shù)據(jù)區(qū)的保護(hù)公用數(shù)據(jù)也即程序均可訪問(wèn)的數(shù)據(jù)。使用公用數(shù)據(jù)的缺點(diǎn)是存在對(duì)公用數(shù)據(jù)有期望的修改這個(gè)隱患,而且,這種情況的發(fā)生很不容易被發(fā)現(xiàn)和調(diào)試。參考下面的C示例程序: int var void main() ;var=10;sub1();SUB2(VAR,);void sub1();for(var=15;var>0;var-);在上面的示例中,var 是全局變量,在主程序中稱被除數(shù)賦值,子函數(shù)sub1中需要利用var 的值實(shí)現(xiàn)循環(huán),但在執(zhí)行循環(huán)體的過(guò)程中,

55、var的值被更改,于是傳遞到sub2中的vat值已經(jīng)不是期望的輸入,程序的輸出也就晃正確了。為預(yù)防一些子函數(shù)對(duì)全局變量值的更改,可以在子函數(shù)的內(nèi)部設(shè)置一變量,并將全局變量的值賦給該變量,于是子函數(shù)中涉及到對(duì)全局變量的操作全部改為對(duì)子函數(shù)中局部變量的操作,這樣可保證全局變量的值不被更改。對(duì)上面的示例程序,可對(duì)sub1作如下修改:Void sub1() int temp;Temp=var;;For (temp=15;temp>0;temp-);對(duì)作片選功能的I/O線必須保護(hù)在設(shè)計(jì)中,某些I/O口用作片選,用以在不同的狀態(tài)下選擇不同的芯片,例如某I/O口低電平時(shí)選中液晶控制器,高電平時(shí)選中譯碼

56、器。在程序中,會(huì)出現(xiàn)這樣的情況:在主程序正處于對(duì)液晶的操作過(guò)程中發(fā)生中斷,程序轉(zhuǎn)入中斷服務(wù)中去;在中斷服務(wù)程序中,需要選中譯碼器,于是作片選的端口值被改變以選中譯碼器。在中斷服務(wù)結(jié)束后,主程序繼續(xù)對(duì)液晶進(jìn)行操作,但由于中斷已經(jīng)更改了端口值,液晶此時(shí)此刻是處于非選中狀態(tài),因此,主程序就會(huì)得到錯(cuò)誤的結(jié)果。對(duì)此類隱藏故障的解決,首先在硬件設(shè)計(jì)上晝避免中斷服務(wù)和主程序共享硬件端口,其次,在程序設(shè)計(jì)尤其是中斷服務(wù)退出前,要注意對(duì)硬件端口的恢復(fù),保持中斷前后主程序狀態(tài)的穩(wěn)定。充分使用芯片的節(jié)電功能或掉電模式某些外圍芯片具有掉電模式,使用掉電模式可以保護(hù)芯片的內(nèi)部寄存器不被更改。因此,對(duì)于此類外圍芯片,應(yīng)該在確實(shí)要對(duì)其操作時(shí)才讓其進(jìn)入供電模式,在不對(duì)其操作時(shí)使其進(jìn)入節(jié)電模式。6.4 上電方式上電方式辨別即根據(jù)某些信息來(lái)確定是以體積方式進(jìn)入0000H單元的,是以上電復(fù)位還是故障復(fù)位。通??梢圆捎密浖O(shè)置上電標(biāo)志的方式來(lái)判斷。軟件設(shè)置上電標(biāo)志是利用單片機(jī)上電復(fù)位后某些寄存器的值或在RAM 中預(yù)先廟宇的標(biāo)志位作為上電標(biāo)志,對(duì)于軟件復(fù)位的情況,這些位在設(shè)置后即使復(fù)位了也不會(huì)改變,因此在程序開(kāi)始處檢測(cè)這些標(biāo)志位,若改變了即可認(rèn)為是上電復(fù)位;若未改變則認(rèn)為是軟件復(fù)位??梢岳肞SW、

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論