杜仲平 潘陽(yáng)陽(yáng)
1.山東科力光電技術(shù)有限公司 山東濟(jì)南 250000 2.濟(jì)寧科力光電產(chǎn)業(yè)有限責(zé)任公司 山東濟(jì)寧 272000
當(dāng)前在我國(guó)各個(gè)領(lǐng)域,運(yùn)用單片機(jī)的范圍越來(lái)越廣泛,例如金融、農(nóng)業(yè)自動(dòng)化、工業(yè)控制等等,如何保證單片機(jī)應(yīng)用系統(tǒng)的可靠性,成為研究領(lǐng)域的重要課題。單片機(jī)分為硬件系統(tǒng)軟件系統(tǒng)等。進(jìn)行可靠時(shí)設(shè)計(jì)要考慮多種因素。
(1)在系統(tǒng)進(jìn)行硬件設(shè)計(jì)加工時(shí),選用質(zhì)量好的插件進(jìn)行工藝結(jié)構(gòu)設(shè)計(jì),將合格的元器件進(jìn)行嚴(yán)格的篩選測(cè)試,對(duì)于技術(shù)參數(shù)余量和元器件等進(jìn)行分析研究,得到相關(guān)的印制組裝的質(zhì)量參數(shù)。
(2)單片機(jī)需要增加容忍故障的能力,如果系統(tǒng)百分之百?zèng)]有故障,則在部件發(fā)生故障的時(shí)候,系統(tǒng)依然要正常的工作。系統(tǒng)中增加適當(dāng)?shù)娜哂鄦卧?,要保證某個(gè)部件發(fā)生故障時(shí)有冗余部件接替,出錯(cuò)前的狀態(tài)進(jìn)行工作,可以在子系統(tǒng)或者是元件及系統(tǒng)中進(jìn)行,用于設(shè)計(jì)容易設(shè)計(jì),可以使用兩套設(shè)備相互備用的方式進(jìn)行。
(3)對(duì)于硬件抗干擾措施,采用單面機(jī)系統(tǒng)不穩(wěn)定設(shè)計(jì)理念,對(duì)于電磁耦合和導(dǎo)線傳輸?shù)入姶鸥蓴_信號(hào),容易發(fā)生故障的部位,進(jìn)行系統(tǒng)監(jiān)控和電路檢測(cè)。自動(dòng)報(bào)警系統(tǒng)是當(dāng)前較為常用的系統(tǒng)工作狀態(tài),采用電源故障監(jiān)視,電子狗定時(shí)器等,都可以對(duì)系統(tǒng)發(fā)生的故障和錯(cuò)誤進(jìn)行監(jiān)測(cè)。例如看門狗電路中,芯片就包含了看門狗定時(shí)器,通過軟件對(duì)于系統(tǒng)的監(jiān)控時(shí)間進(jìn)行預(yù)制,輸出看門狗定時(shí)器預(yù)制時(shí)間,經(jīng)過微分電路輸出,正脈沖復(fù)位CPU、上電復(fù)位、人工復(fù)位等都屬于cpu復(fù)位信號(hào)[1]。
通過綜合RESET端將CPU的振蕩器在時(shí)間常數(shù)的規(guī)定范圍內(nèi)進(jìn)行工作,短時(shí)間內(nèi)開門口電路可以實(shí)現(xiàn)循環(huán)周期的運(yùn)行。開門口的定時(shí)時(shí)間可以在軟件的合適地方,加上較大循環(huán)周期的時(shí)間設(shè)定,無(wú)法捕捉回程序時(shí),可以防止系統(tǒng)跑飛,系統(tǒng)不會(huì)復(fù)位,而且在正常工作下可以迫使系統(tǒng)自動(dòng)復(fù)位,應(yīng)該在適當(dāng)?shù)牡胤阶⒁膺M(jìn)行指令的設(shè)置,保證程序能夠正常運(yùn)行[2]。
(1)軟件可靠性設(shè)計(jì)。使用單片機(jī)進(jìn)行軟件設(shè)計(jì)的時(shí)候,要保證整個(gè)系統(tǒng)能夠達(dá)到軟硬件緊密結(jié)合,軟件的可靠性設(shè)計(jì)在提高硬件可靠性的前提下,從長(zhǎng)期使用測(cè)試等方面來(lái)解決可靠性的問題。
工業(yè)控制的場(chǎng)景下,系統(tǒng)可靠性是單片機(jī)系統(tǒng)抗干擾能力等。這些重要指標(biāo)包含了單片機(jī)的指令系統(tǒng),復(fù)雜指令集結(jié)結(jié)構(gòu),單片機(jī)軟件抗干擾設(shè)計(jì),包括了工業(yè)控制,抗干擾措施等等,將程序拉入到正常軌道,可以防止跑飛程序發(fā)生,還可以規(guī)避軟件陷阱等[3]。
(2)指令用于是在雙字節(jié)等關(guān)鍵地方取得操作數(shù)和操作碼。根據(jù)指令過程中的相應(yīng)的環(huán)節(jié),從跑飛程序到雙字節(jié)指令,使用窄操作指令NOP避免后面的指令錯(cuò)誤執(zhí)行,為程序納入正軌做好準(zhǔn)備。
在指令插入后,可以實(shí)行質(zhì)量的跑,非納入到正軌之后,確保這些重要指令的執(zhí)行。需要注意的是,CPU不再將操作數(shù)當(dāng)作操作碼錯(cuò)誤執(zhí)行,而需要糾正程序的錯(cuò)誤執(zhí)行方向,將程序的錯(cuò)誤執(zhí)行方向扭轉(zhuǎn)過來(lái),還需要實(shí)行跑飛程序的指令,插入致命令。
(3)設(shè)計(jì)軟件陷阱,要考慮到程序存儲(chǔ)器中的填入指令,在執(zhí)行一段空操作后,轉(zhuǎn)入未使用的空間,均勻地插入只跳轉(zhuǎn)指令和空操作指令。在空操作指令中設(shè)置一定的結(jié)構(gòu),這個(gè)結(jié)構(gòu)可以防止軟件陷阱發(fā)生。
在程序執(zhí)行階段,錯(cuò)誤操作后,如果遇到一個(gè)軟件限定,那么軟件部分發(fā)生陷阱的錯(cuò)誤是無(wú)法執(zhí)行的。數(shù)據(jù)表較大的情況下,軟件陷阱中會(huì)出現(xiàn)執(zhí)行錯(cuò)誤操作,修正之后才能轉(zhuǎn)入正軌。除了程序存儲(chǔ)器的空白區(qū)域,還有在數(shù)據(jù)表的中間設(shè)置軟件陷阱,保證程序跑飛到數(shù)據(jù)區(qū),及時(shí)轉(zhuǎn)入程序存儲(chǔ)器之后,在兩個(gè)子程序中間設(shè)置軟件陷阱,及時(shí)捕獲錯(cuò)誤中斷,在對(duì)應(yīng)的中斷服務(wù)器程序中設(shè)置軟件陷阱,使用中斷干擾開放的形式,將干擾的情況和存儲(chǔ)器的容量進(jìn)行確定。如果太多占用大量的程序存儲(chǔ)器,則不可能出現(xiàn)跑飛攔截。
(4)軟件看門狗技術(shù)是一種通過不斷檢測(cè)程序循環(huán)運(yùn)行,來(lái)達(dá)到對(duì)錯(cuò)誤操作進(jìn)行糾正的程序。在實(shí)際應(yīng)用中,如果發(fā)現(xiàn)程序循環(huán)時(shí)間超過最大循環(huán)運(yùn)行時(shí)間,則可以定時(shí)檢查主程序的運(yùn)行情況。在選擇一個(gè)字節(jié)的時(shí)候,定時(shí)器的中斷服務(wù)程序,可以一次性將存儲(chǔ)器中的循環(huán)進(jìn)行檢查,系統(tǒng)如果陷入死循環(huán),則看門狗寄存器可能會(huì)發(fā)生改變。此時(shí)如果是在工業(yè)運(yùn)行中就要采用環(huán)形中斷揭示系統(tǒng),破壞中斷方式,關(guān)閉中斷用定時(shí)器,通過上述操作,看門狗實(shí)現(xiàn)了定時(shí)啟動(dòng)。
采用這種環(huán)形結(jié)構(gòu),可以使看門狗具有很好的抗干擾性能。定時(shí)器不能進(jìn)行中段的時(shí)候,可以采用窗口通訊的測(cè)控系統(tǒng),全盤合理考慮軟件看門狗技術(shù),采取技巧性的處理方式,運(yùn)用好定時(shí)器資源,就能完成定時(shí)功能,以及軟件看門狗功能。在檢查RAM區(qū)發(fā)現(xiàn)了嚴(yán)重干擾的時(shí)候,可以在程序執(zhí)行過程中,對(duì)于不能可靠運(yùn)行下去的單片機(jī)系統(tǒng)進(jìn)行檢查,如果發(fā)現(xiàn)有改變數(shù)據(jù)的情況,則可以立即執(zhí)行相關(guān)語(yǔ)句。強(qiáng)制單片機(jī)中的數(shù)據(jù)發(fā)生變化進(jìn)行復(fù)位[4]。
單片機(jī)系統(tǒng)運(yùn)行可靠性,可以采用多種可靠性方法進(jìn)行自身防御和軟硬件的維護(hù)。本文從軟硬件不確定因素干擾進(jìn)行分析,提出了提高單片機(jī)應(yīng)用系統(tǒng)可靠性設(shè)計(jì)的方法。在實(shí)際操作中還要根據(jù)實(shí)際情況進(jìn)行方法的結(jié)合,達(dá)到最佳的抗干擾效果,保證單片機(jī)系統(tǒng)能夠可靠穩(wěn)定地運(yùn)行。