日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

1 引言

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

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

2 捕捉跑飛程序的方法

2.1 指令冗余

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

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

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

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

2.3 看門狗(WATCHDOGTIMER)

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

3 無擾動重恢復

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

3.1 利用軟件選擇啟動方式的方法

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

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

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

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

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

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

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

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

3.4 鎖定輸出口的方法

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

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

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

4 結(jié)束語

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

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

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

有關(guān)開發(fā)人員如何通過在RAM中執(zhí)行時間敏感功能而不是從Flash中執(zhí)行時間敏感功能來加快其應(yīng)用程序代碼的文章。您可能想知道是否要進行這樣的調(diào)整,表現(xiàn)會發(fā)生什么變化?答案會根據(jù)微控制器的制造技術(shù)而有所不同,但是開發(fā)人員可以...

關(guān)鍵字: RAM 績效改進

現(xiàn)在的FPGA不僅包含以前的LE,RAM也更大更快更靈活,管教IOB也更加的復雜,支持的IO類型也更多,而且內(nèi)部還集成了一些特殊功能單元。

關(guān)鍵字: FPGA RAM

在現(xiàn)代嵌入式系統(tǒng)開發(fā)中,STM32系列微控制器因其高性能、低功耗和豐富的外設(shè)資源而廣受歡迎。然而,隨著應(yīng)用需求的不斷增長,內(nèi)部RAM的容量往往成為限制系統(tǒng)性能的一個瓶頸。為了解決這個問題,開發(fā)者通常會將堆(Heap)配置...

關(guān)鍵字: STM32 RAM

RAM和ROM等存儲單元的物理地址映射是由做硬件的數(shù)字工程師確定,他們在劃分時主要會考慮電路的延遲,將這些儲存單元按照一定的方式掛在同一條AHB總線上。而嵌入式平臺軟件工程師可以通過修改鏈接腳本來設(shè)置哪些數(shù)據(jù)、代碼在程序...

關(guān)鍵字: RAM ROM

在嵌入式系統(tǒng)領(lǐng)域,程序代碼的運行位置是一個至關(guān)重要的問題。傳統(tǒng)的觀念認為,程序代碼必須從FLASH存儲器搬到RAM中運行,以提高執(zhí)行速度和效率。然而,隨著技術(shù)的不斷發(fā)展,這一觀念正在受到挑戰(zhàn)。本文將深入探討嵌入式系統(tǒng)中程...

關(guān)鍵字: 嵌入式系統(tǒng) Flash RAM

ROM和RAM是人盡皆知的概念。即:RAM(random access memory)隨機存儲內(nèi)存 ,這種bai存儲器在斷電時du將丟失其存儲內(nèi)容,故主要用于存儲短時間使用的程序。ROM(Read-Only Memory...

關(guān)鍵字: RAM ROM 嵌入式

德國柏林2024年10月12日 /美通社/ -- 2024年德國柏林軌道交通技術(shù)展覽會(InnoTrans 2024)期間,華為面向全球發(fā)布智能鐵路FRMCS-T(未來鐵路移動通信系統(tǒng))白皮書,從行業(yè)趨勢、標準解讀、頻譜...

關(guān)鍵字: MCS 華為 智能化 軌道

在C51編程環(huán)境中,變量的存儲是理解程序運行機制和優(yōu)化性能的關(guān)鍵。C51是專為8051系列單片機設(shè)計的一種C語言擴展,它不僅繼承了標準C語言的強大功能,還針對單片機的硬件特性進行了優(yōu)化。本文將深入探討C51語言中變量的存...

關(guān)鍵字: C51語言 單片機 RAM

沙特阿拉伯利雅得2024年9月12日 /美通社/ -- 沙特數(shù)據(jù)與人工智能管理局(SDAIA)今日發(fā)起了一項開創(chuàng)性倡議,旨在推動符合倫理的人工智能研究與應(yīng)用。 這一重大聲明是在第三屆全球人工智能峰會期間發(fā)布的,峰會目前正...

關(guān)鍵字: 人工智能 SD AI RAM

我們經(jīng)??梢钥吹匠鯇W者在單片機論壇中詢問他們是否可以在他們微不足道的小的8位微機中運行Linux。這些問題的結(jié)果通常是帶來笑聲。

關(guān)鍵字: RAM MCU
關(guān)閉