當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1 引言單片機(jī)構(gòu)成控制系統(tǒng)時(shí),在滿(mǎn)足了各項(xiàng)控制功能后,為了使系統(tǒng)投入實(shí)用,必須提高其可靠性。但是,由于工業(yè)現(xiàn)場(chǎng)環(huán)境惡劣,常會(huì)受到電磁設(shè)備啟動(dòng)、停止、電源波形畸變等因素的影響,各種干擾不可避免,若只靠避錯(cuò)

1 引言

單片機(jī)構(gòu)成控制系統(tǒng)時(shí),在滿(mǎn)足了各項(xiàng)控制功能后,為了使系統(tǒng)投入實(shí)用,必須提高其可靠性。但是,由于工業(yè)現(xiàn)場(chǎng)環(huán)境惡劣,常會(huì)受到電磁設(shè)備啟動(dòng)、停止、電源波形畸變等因素的影響,各種干擾不可避免,若只靠避錯(cuò)設(shè)計(jì)很難滿(mǎn)足要求,而且也很難確保這些硬件萬(wàn)無(wú)一失,必須為系統(tǒng)配備容錯(cuò)功能。所以,抗干擾設(shè)計(jì)、容錯(cuò)設(shè)計(jì)(包括故障檢測(cè)與診斷技術(shù))和功能設(shè)計(jì)成為單片機(jī)系統(tǒng)設(shè)計(jì)缺一不可的重要內(nèi)容。

在工業(yè)現(xiàn)場(chǎng),大多數(shù)情況下干擾不會(huì)造成單片機(jī)系統(tǒng)硬件的損壞,主要是對(duì)軟件運(yùn)行造成不良影響。其主要特征是:指令碼或數(shù)字碼受干擾,使程序的執(zhí)行出現(xiàn)錯(cuò)誤。最典型的錯(cuò)誤有:1)CPU的程序計(jì)數(shù)器PC的值發(fā)生跳變,使程序跑飛,轉(zhuǎn)去執(zhí)行一個(gè)毫無(wú)意義或錯(cuò)誤的程序段,使系統(tǒng)出現(xiàn)混亂或失控,嚴(yán)重時(shí)可能會(huì)造成設(shè)備損壞,甚至危及人身安全;2)輸出口被失控程序非法操作,使控制量發(fā)生波動(dòng)或使系統(tǒng)出現(xiàn)“死機(jī)”;3)RAM區(qū)域受干擾,造成數(shù)據(jù)被沖毀,使系統(tǒng)出現(xiàn)運(yùn)行不正常,輸出出錯(cuò)。下面以MCS-96系列單片機(jī)所組成的實(shí)時(shí)控制系統(tǒng)為例,提出一些有效、實(shí)用的程序失控防范措施。

2 捕捉跑飛程序的方法

2.1 指令冗余

單片機(jī)最易受干擾的是內(nèi)部程序計(jì)數(shù)器——PC的值。在受到強(qiáng)干擾時(shí),PC的值被改變,改變后的值是隨機(jī)的不確定值。這可使CPU將程序從正確的位置跑飛到ROM中的任何一個(gè)地址,當(dāng)PC值飛到用戶(hù)工作程序ROM區(qū)內(nèi)時(shí),可采用指令冗余的方法使程序走上正軌。具體方法是:1)在一些對(duì)程序流向起決定性作用的指令,如SJMP、 LJMP、LCALL、CALL等之前插入幾條NOP指令;2)在某些對(duì)系統(tǒng)工作至關(guān)重要的指令,如中斷、堆棧等之前插入幾條NOP指令;3)在程序中每隔若干條指令,插入一條NOP指令;4)在多字節(jié)指令前插入一條或兩條NOP指令。

由于單片機(jī)指令大多數(shù)為單字節(jié)指令,在一個(gè)程序中,其中斷和堆棧指令使用的次數(shù)也很有限,因此,采用這種方法增加存儲(chǔ)單元的數(shù)量不會(huì)太多。區(qū),如EPROM中未被使用的空間或程序中的數(shù)據(jù)表格區(qū)時(shí),常采用軟件陷阱的方法來(lái)使程序納入正軌。

所謂軟件陷阱,就是一條引導(dǎo)指令,利用這條指令強(qiáng)行將程序引向一個(gè)指定的地址,在指定的地址上有一個(gè)專(zhuān)門(mén)的出錯(cuò)處理程序。假設(shè)該程序的入口標(biāo)號(hào)為EPROM,則軟件陷阱由以下3條指令構(gòu)成:
  NOP
  NOP
  LJMP  ERROR

該軟件陷阱除了安裝在未使用的用戶(hù)EPROM區(qū)外,還常常安置在未使用的中斷向量區(qū)、表格區(qū)的最后和程序的斷裂點(diǎn)后(斷裂點(diǎn)是指象LJMP、SJMP、RET等類(lèi)指令)。

2.3 看門(mén)狗(WATCHDOGTIMER)

當(dāng)跑飛的程序既沒(méi)有落入軟件陷阱,又沒(méi)有遇到冗余指令,而是在用戶(hù)程序之間或用戶(hù)根本未使用的地址空間內(nèi)跳來(lái)跳去,自動(dòng)形成一個(gè)死循環(huán),解決這一問(wèn)題的辦法是利用軟件啟動(dòng)單片機(jī)的監(jiān)視定時(shí)器,俗稱(chēng)“看門(mén)狗”。當(dāng)出現(xiàn)上述情況時(shí),利用它來(lái)使系統(tǒng)復(fù)位。這種方法簡(jiǎn)單、直觀,只需不超過(guò)64K狀態(tài)周期(16ms)的時(shí)間(用12M晶振時(shí)),計(jì)算機(jī)就可恢復(fù)正常。但此時(shí),一定要通過(guò)軟件每隔一定時(shí)間(如15ms)使WATCHDOG TIMER復(fù)位一次。

3 無(wú)擾動(dòng)重恢復(fù)

上述各項(xiàng)措施,只解決了如何發(fā)現(xiàn)系統(tǒng)被干擾和如何捕捉到失控的程序,這對(duì)于巡回檢測(cè)、顯示之類(lèi)的普通單片機(jī)應(yīng)用系統(tǒng)已經(jīng)足夠了。但是,在一些關(guān)鍵的工業(yè)控制系統(tǒng)中,由于工作過(guò)程和生產(chǎn)工藝的邏輯性和順序性,當(dāng)程序失控后,希望引導(dǎo)系統(tǒng)恢復(fù)執(zhí)行剛才失控發(fā)生時(shí)的那個(gè)程序模塊,不希望,甚至不允許程序從入口處重新執(zhí)行。更重要的是,失控程序往往會(huì)亂涂亂寫(xiě),不僅會(huì)破壞一些重要的信息,而且會(huì)對(duì)輸出口進(jìn)行非法操作。在此情況下前述方法就顯得太不完整了。因此,如何恢復(fù)系統(tǒng)的重要信息,盡量無(wú)擾動(dòng)地重新進(jìn)入正常工作狀態(tài),是一個(gè)必須解決的問(wèn)題,同時(shí)也是一個(gè)比較難解決的問(wèn)題。

3.1 利用軟件選擇啟動(dòng)方式的方法

復(fù)位有兩種方式:即初始復(fù)位和再次復(fù)位。習(xí)慣上稱(chēng)前者為“冷啟動(dòng)”,后者為“熱啟動(dòng)”。“冷啟動(dòng)”時(shí),系統(tǒng)的狀態(tài)全部無(wú)效,需進(jìn)行徹底的初始化操作。而 “熱啟動(dòng)”僅對(duì)系統(tǒng)的當(dāng)前狀態(tài)進(jìn)行修復(fù)和有選擇的初始化,從而使系統(tǒng)盡可能快的恢復(fù)正常。系統(tǒng)初次上電投入運(yùn)行時(shí),必須是“冷啟動(dòng)”。運(yùn)行過(guò)程中,由于抗干擾措施引起的復(fù)位,一般均為“熱啟動(dòng)”。為了使系統(tǒng)能正確地決定采用何種啟動(dòng)方式,往往由軟件用“上電標(biāo)志”來(lái)區(qū)分。系統(tǒng)入口程序設(shè)計(jì)策略如圖3—1 所示。

為使“熱啟動(dòng)”順利進(jìn)行,首先要關(guān)中斷,重新設(shè)置堆棧,將所有的I/O口設(shè)置為安全狀態(tài),封鎖I/O操作,以免事態(tài)擴(kuò)大,然后進(jìn)行信息的恢復(fù)和狀態(tài)的重入工作。

3.2 使受擾程序快速重入正常運(yùn)行狀態(tài)的方法

系統(tǒng)軟件是由完成各種功能的程序組成的,因此可分成若干個(gè)功能模塊。為了能使程序快速重入系統(tǒng)的正常運(yùn)行狀態(tài),首先要將系統(tǒng)軟件編制成模塊化結(jié)構(gòu),并盡可能的將其細(xì)分為若干功能模塊,每個(gè)功能模塊在運(yùn)行中需具有寫(xiě)入和記錄功能,即設(shè)置RAM區(qū)的有效標(biāo)志;記錄編號(hào)和首地址;記錄關(guān)鍵的又不可重新獲得的數(shù)據(jù);模塊還應(yīng)具有給運(yùn)行監(jiān)視系統(tǒng)發(fā)脈沖的功能等。為判斷程序是否跑飛,要求在每個(gè)功能模塊的結(jié)尾處將指定單元中保存的標(biāo)志與本功能模塊預(yù)先設(shè)置的標(biāo)志進(jìn)行對(duì)比。若不同,則程序跑飛,然后將它恢復(fù)到指定單元中保存的標(biāo)志所對(duì)應(yīng)的功能模塊去重新執(zhí)行;若相同,則運(yùn)行正常。對(duì)于功能模塊中的程序跑飛,可根據(jù)具體情況對(duì)結(jié)果的合理性進(jìn)行分析和判斷。若不合理,則返回重新執(zhí)行;若合理,則進(jìn)入下一個(gè)功能模塊。具有這種功能的程序流程圖如圖3—2所示。

3.3 利用數(shù)據(jù)冗余技術(shù)實(shí)現(xiàn)RAM內(nèi)容自救的方法

為了保證系統(tǒng)實(shí)現(xiàn)無(wú)擾動(dòng)重入正常運(yùn)行狀態(tài),必須保證重要數(shù)據(jù)的正確性。實(shí)現(xiàn)這一目的的方法是采用數(shù)據(jù)冗余技術(shù)。

在實(shí)時(shí)控制過(guò)程中,干擾會(huì)造成RAM中的數(shù)據(jù)被沖毀。數(shù)據(jù)被沖毀的情形,一般有如下3類(lèi):      1)整個(gè)RAM區(qū)數(shù)據(jù)被沖毀;2)RAM中某一片數(shù)據(jù)被沖毀;3)個(gè)別數(shù)據(jù)被沖毀。由于RAM中保存的是各種原始數(shù)據(jù)、標(biāo)志、變量等,如果被破壞,會(huì)造成系統(tǒng)出錯(cuò)或無(wú)法運(yùn)行。不過(guò),對(duì)幾乎所有的單片機(jī)實(shí)時(shí)控制系統(tǒng)而言,RAM中的大部分內(nèi)容是為了進(jìn)行分析、計(jì)算、比較而臨時(shí)寄存的,不允許丟失的數(shù)據(jù)也只占RAM內(nèi)容的極少部分。在這種情況下,除了那些不允許丟失的數(shù)據(jù)外,其余大部分內(nèi)容允許短時(shí)被破壞,最多有過(guò)引起系統(tǒng)一個(gè)很短時(shí)間的波動(dòng),但很快就能恢復(fù)正常。因此,在實(shí)時(shí)軟件中,只要注意對(duì)少數(shù)不允許丟失的數(shù)據(jù)進(jìn)行保護(hù)即可。常用方法有“校驗(yàn)法”和“設(shè)標(biāo)法”。這兩種方法各有千秋,校驗(yàn)法比較繁瑣,但查錯(cuò)的置信度高;設(shè)標(biāo)法簡(jiǎn)單,但對(duì)數(shù)據(jù)表中個(gè)別數(shù)據(jù)被沖毀的情況無(wú)能為力。在編程中應(yīng)綜合使用。具體做法是:1)將RAM工作區(qū)重要區(qū)域的始端和尾端各設(shè)置一個(gè)標(biāo)志碼“0”或“1”;2)對(duì)RAM中固定不變的數(shù)據(jù)表格設(shè)置校驗(yàn)字。

在程序執(zhí)行過(guò)程中,每隔一定時(shí)間通過(guò)事先設(shè)計(jì)的查錯(cuò)程序來(lái)校驗(yàn)各標(biāo)志碼是否正常,如果不正常,則利用數(shù)據(jù)冗余技術(shù)通過(guò)抗干擾處理程序來(lái)進(jìn)行修正。冗余設(shè)計(jì)的一般原則是:在RAM區(qū)中相隔盡可能遠(yuǎn)且遠(yuǎn)離堆棧區(qū)的不同區(qū)域?qū)?shù)據(jù)備份3份,當(dāng)讀取數(shù)據(jù)時(shí),把3份數(shù)據(jù)備份相比較,采用 3取2的表決原則,確保數(shù)據(jù)的正確性。

3.4 鎖定輸出口的方法

為了防止失控程序?qū)敵隹诎l(fā)生非正常操作,引起控制量產(chǎn)生波動(dòng)和破壞系統(tǒng)的安全性,必須對(duì)輸出口的操作進(jìn)行嚴(yán)格的審查。解決的辦法是硬件上采用鎖定控制器,軟件上采用功能塊標(biāo)志和口令字。

鎖定控制器由兩個(gè)D觸發(fā)器來(lái)實(shí)現(xiàn),如圖3—3所示。

平時(shí)兩個(gè)鎖定控制器的輸出端Q1、Q2均為低電平,而且Q1、Q2只要有一個(gè)信號(hào)是低電平,輸出通道就處于被封鎖狀態(tài)。只有Q1、Q2同時(shí)為高電平時(shí),該通道才被打開(kāi)。為了防止程序?qū)敵鐾ǖ赖姆欠▽?xiě)入,平時(shí)程序通過(guò)端口控制信號(hào)和置Q1、 Q2為低電平來(lái)關(guān)閉輸出通道。而僅當(dāng)需要輸出時(shí),程序通過(guò)端口控制信號(hào)和置Q1、Q2為高電平打開(kāi)輸出通道。程序輸出時(shí),需先給出口令字。輸出模塊程序流程圖如圖3—4所示。

4 結(jié)束語(yǔ)

采用上述這些措施可以有效地提高系統(tǒng)運(yùn)行的可靠性,獲得令人滿(mǎn)意的控制效果,并且稍做修改即可用于其它類(lèi)型的單片機(jī)控制系統(tǒng),具有很強(qiáng)的實(shí)用性和通用性。

[參考文獻(xiàn)]
[1] 王幸之.單片機(jī)應(yīng)用系統(tǒng)抗干擾技術(shù)[M].北京航空航天大學(xué)出版社,2000,2.
[2] 周航慈.單片機(jī)應(yīng)用系統(tǒng)程序設(shè)計(jì)技術(shù)[M].北京航空航天大學(xué)出版社,1991,7.
[3] 劉大茂.智能儀表[M].機(jī)械工業(yè)出版社,1998.5.
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉