官术网_书友最值得收藏!

1.1 單片機應用系統的設計方法

單片機應用系統的設計既是一個理論問題,又是一個實際工程問題。它包括自動控制理論、計算技術、計算方法,還包括自動檢測技術與數字電路,是一個多學科的綜合運用。

單片機系統設計要具備以下幾方面的知識和能力。

首先,必須具有一定的硬件基礎知識。這些硬件不僅包括各種單片機、存儲器及I/O接口,而且還包括對儀器或裝置進行信息設定的鍵盤及開關、檢測各種輸入量的傳感器、控制用的執行裝置,以及單片機與各種儀器進行通信的接口、打印和顯示設備等。

其次,需要具有一定的軟件設計能力。能夠根據系統的要求,靈活地設計出所需要的程序,主要有數據采集程序、A/D轉換程序、D/A轉換程序、數碼轉換程序、數字濾波程序,以及各種控制算法及非線性補償程序等。

再次,需要具有綜合運用知識的能力。必須善于將一臺智能化儀器或裝置的復雜設計任務劃分成許多便于實現的組成部分。特別是對軟件、硬件的折中問題能夠恰當地運用。設計單片機應用系統的一般原理是先選擇和組織硬件,構成最小系統。當硬件、軟件之間需要折中協調時,通常解決的辦法是盡量減少硬件(以便使儀器的價格減到最低)。接著應滿足設計中各方對軟件的要求。通常情況下,硬件實時性強,但將會增加儀器成本,且結構復雜;軟件可避免上述缺點,但實時性比較差。為保證系統能可靠工作,在軟、硬件的設計過程中還應包括系統的抗干擾設計。

最后,還必須掌握生產過程的工藝性能及被測參數的測量方法,以及被控對象的動態、靜態特性,有時甚至要建立被控對象的數字模型。

單片機應用系統設計的一般過程如圖1-1所示。

圖1-1 單片機應用系統設計的一般過程

單片機應用系統設計主要包括下面幾方面內容。

(1)應用系統總體方案設計,包括系統的要求,應用方案的選擇,以及工藝參數的測量范圍等;

(2)選擇各參數檢測元件及變送器;

(3)建立數學模型及確定控制算法;

(4)選擇單片機,并決定是自行設計還是購買成套設備;

(5)系統硬件設計,包括接口電路、邏輯電路及操作面板;

(6)系統軟件設計,包括管理、監控程序以及應用程序的設計;

(7)系統的調試與實驗。

本節將就單片機應用系統設計的幾個主要方面進行闡述。

1.1.1 系統總體方案的確定

確定單片機應用系統總體方案,是進行系統設計最重要、最關鍵的一步,總體方案的好壞,直接影響整個應用系統的投資、調節品質及實施細則。總體方案的設計主要是根據被控對象的工藝要求而確定的。由于被控對象多種多樣,要求單片機完成的任務也千差萬別,所以確定應用系統的總體方案必須根據工藝的要求,結合具體被控對象而定。盡管如此,在總體設計方案中具有一定的共性。

1.可行性調研

在選擇項目時,必須首先進行可行性分析和經濟技術論證,基本原則如下:

(1)技術效果好和經濟效益(或社會效益)高;

(2)技術先進,造價較低;

(3)可靠性高,維修方便;

(4)研制周期短;

(5)操作簡便,容易掌握。

可行性調研的目的,是分析完成這個項目的可能性。進行這方面的工作,可參考國內外有關資料,看是否有人進行過類似的工作。若有,則可分析他人是如何進行這方面工作的,有什么優點和缺點,有什么是值得借鑒的;若沒有,則需要進一步調研,此時的重點應放在能否實現這個環節,首先從理論上進行分析,探討實現的可能性,所要求的客觀條件是否具備(如環境、測試手段、儀器設備、資金等),然后結合實際情況,確定能否立項的問題。

2.系統總體方案設計

在進行可行性調研后,如果可以立項,下一步工作就是系統總體方案的設計。首先確定是采用開環系統還是閉環系統,或是數據處理系統。如果是閉環控制系統,則還要確定整個系統是采用直接數字控制(DDC),還是選用計算機監督控制(SCC),或者選用分布式控制(DCS)等。工作的重點應放在該項目的技術難度上,此時可參考這一方面更詳細、更具體的資料,根據系統的不同部分和要實現的功能,參考國內外同類產品的性能,提出合理而可行的技術指標,編寫出設計任務書,從而完成系統總體方案設計。

3.設計方案細化

一旦總體方案確定下來,下一步的工作就是將該項目細化,即需明確哪些部分用硬件來完成,哪些部分用軟件來完成。由于硬件結構與軟件方案會相互影響,因此,從簡化電路結構、降低成本、減少故障率、提高系統的靈活性與通用性方面考慮,提倡軟件能實現的功能盡可能由軟件來完成。但也應考慮以軟件代硬件的實質是以降低系統實時性、增加處理時間為代價的,而且軟件設計費用、研制周期也將增加,因此系統的軟件、硬件功能分配應根據系統的要求及實際情況而合理安排,統一考慮。在確定軟件、硬件功能的基礎上,設計者的工作就開始涉及一系列的具體問題,如儀器的體積及與具體技術指標相對應的硬件實現方案,軟件的總體規劃等。在確定人員分工、安排工作進度、規定接口參數后,就必須考慮軟件、硬件的具體設計問題。系統軟件、硬件設計工作可分開進行,同時并進。

在討論具體設計問題之前,這里還要強調一下,對于一個具體應用系統的設計,上面這幾部分工作是必不可少的,否則,可能導致設計方案的整體更改,甚至可能導致方案無法實現,造成人力、物力的浪費。這一點,對于設計者來講,應加倍注意。

1.1.2 應用系統的硬件設計

一個單片機應用系統的硬件設計包括兩大部分內容:一是單片機系統的擴展部分設計,它包括存儲器擴展和接口擴展;二是各功能模塊的設計,如信號測量功能模塊、信號控制功能模塊、人機對話功能模塊、通信功能模塊等,根據系統功能要求配置相應的A/D、D/A、鍵盤、顯示器、打印機等外圍設備。

在進行應用系統的硬件設計時,首要問題是確定電路的總體方案,并需要進行詳細的技術論證。

所謂硬件電路的總體設計,即是為實現該項目全部功能所需要的所有硬件的電氣連線原理圖。初次接觸這方面工作的設計人員,往往急于求成,在設計總體方案上不愿花時間,過于倉促地開始制板和調試。這種方法不僅不妥當,而且常常得不償失。因為就硬件系統來講,電路的各部分都是緊密相關、互相協調的,任何一部分電路的考慮不充分,都會給其他部分帶來難以預料的影響,輕則使系統整體結構受破壞,重則導致硬件總體大返工,由此造成的后果是可想而知的。因此,希望設計者不要吝嗇在硬件總體方案上花的時間。從時間上看,硬件設計的絕大部分工作量往往是在最初方案的設計階段,一個好的設計方案常常會有事半功倍的效果。一旦硬件總體方案確定下來,下一步工作就能很順利進行,即使需要做部分修改,也只是在此基礎上進行一些完善工作,不會造成整體返工。

在進行硬件總體方案設計時,所涉及的具體電路可借鑒他人在這方面進行的工作。因為經過別人調試和實驗過的電路往往具有一定的合理性(盡管這些電路常與書籍或手冊上提供的電路不完全一致,但這也可能正是經驗所在)。在此基礎上,結合自己的設計目的進行一些修改,是一種簡便、快捷的做法。當然,有些電路還需自己設計,完全照搬是不太可能的。

在參考別人的電路時,需對其工作原理有較透徹的分析和理解,根據其工作機理了解其適用范圍,從而確定其移植的可能性和需要修改的地方。對于有些關鍵和尚不完全理解的電路,需要仔細分析,在設計之前先進行試驗,以確定這部分電路的正確性,并在可靠性和精度等方面進行試驗,尤其是模擬電路部分,更需要進行這方面的工作。

為使硬件設計盡可能合理,根據經驗,系統的電路設計應注意以下幾個方面。

(1)盡可能選擇標準化、模塊化的典型電路,提高設計的成功率和結構的靈活性。

(2)在條件允許的情況下,盡可能選用功能強、集成度高的電路或芯片。因為采用這種器件可能代替某一部分電路,不僅元件數量、接插件和相互連線減少,體積減小,使系統可靠性增加,而且成本往往比用多個元件實現的電路要低。

(3)注意選擇通用性強、市場貨源充足的器件,尤其對需大批量生產的場合,更應注意這方面的問題。其優點是:一旦某種元器件無法獲得,也能用其他元器件直接替換或對電路稍作改動后用其他器件代替。

(4)在對硬件系統總體結構考慮時,同樣要注意通用性的問題。對于一個較復雜的系統,設計者常常希望將其模塊化,即對中央控制單元,輸入接口、輸出接口、人機接口等分塊進行設計,然后采用一定的連接方式將其組合成一個完整的系統。在這種情況下,連接方式就顯得非常重要,有時可選用通用接口方式,因為對于這些總線結構的連接目前應用比較廣泛,不少廠家已開發出適合于這些總線結構的接口板,如輸入板、輸出板、A/D板等。在必要的情況下,選用現成的模板作為系統的一部分,盡管成本有些偏高,但會大大縮短研制周期,提高工作效率。當然,在有些特殊情況和小系統的場合,用戶必須自行設計接口,定義連線方式。此時要注意接口協議,一旦接口方式確定下來,各個模塊的設計都應遵守該接口方式。

(5)系統的擴展及各功能模塊的設計在滿足應用系統功能要求的基礎上,應適當留有余地,以備將來修改、擴展之需。實際上,電路設計一次成功而不做任何修改的情況是很少的,如果在設計之初未留有任何余地,后期很可能因為一點小小的改動或擴展而被迫進行全面返工。舉例來說,在進行ROM擴展時,盡量選用2764以上的芯片,這樣不僅將來升級方便,成本也會降低;在進行RAM擴展時,為使系統升級或增加內存方便,系統的RAM空間應留足位置,哪怕多設計一個RAM插座,不插芯片也好;在進行I/O接口擴展時,也應給出一定的余量,這樣對臨時增加一些測量通道或被控對象就極為方便了。另外在電路板設計時,可適當安排一些機動布線區,在此區域中安排若干集成芯片插座和金屬化孔,但不布線,這樣在樣機研制過程中,若發現硬件電路有不足之處,需增加元器件時,可在機動布線區臨時連線完成,從而避免整個系統返工。在進行模擬信號處理電路設計時,尤其要注意這一點。因為在調試這類電路時,經常會增加一些電容、電阻等元器件。當然,一旦試驗完成,制作電路板時,可以去掉機動布線區。

(6)設計時應盡可能多做些調研,采用最新的技術。因為電子技術發展迅速,器件更新換代很快,市場上不斷推出性能更優、功能更強的芯片,只有時刻注意這方面的發展動態,采用新技術、新工藝,才能使產品具有最先進的性能,不落后于時代發展的潮流。

(7)在電路設計時,要充分考慮應用系統各部分的驅動能力。一些經驗欠缺者往往忽視電路的驅動能力及時序問題,認為原理上可行就行了,其實不然。因為不同的電路有不同的驅動能力,對后級系統的輸入阻抗要求也不一樣。如果阻抗匹配不當,系統驅動能力不夠,將導致系統工作不可靠甚至無法工作。值得注意的是,這種不可靠很難通過一般的測試手段確定,而排除這種故障往往需要對系統做較大的調整。因此,在電路設計時,要注意增加系統驅動能力或減少系統的功耗。

(8)工藝設計,包括機箱、面板、配線和接插件等,這也是實際進行系統設計人員容易疏忽但又十分重要的一個問題。在設計時要充分考慮到安裝、調試和維修的方便。

(9)系統的抗干擾設計。這個問題在硬件設計中也是十分重要的,有關這方面的內容,將在1.1.4節專門討論。

除了上述幾點之外,在應用系統的硬件設計過程中,還需注意以下幾方面。

(1)選擇好被測參數的測量元件,它是影響控制系統精度的重要因素之一。測量各種參數的傳感器,如溫度、流量、壓力、液位、位移、重量、速度等,種類繁多、規格各異,因此,要正確地選擇測量元件。

(2)執行機構是單片機控制系統的重要組成部件之一。執行機構的選擇一方面要與控制算法匹配,另一方面要根據被控對象的實際情況決定,常用的執行機構有4 種:電動執行機構具有響應速度快、與單片機接口容易等優點,成為單片機應用系統的主要執行機構;氣動調節閥具有結構簡單、操作方便、使用可靠、維護容易、防火防爆等優點,廣泛用于石油、冶金和電力系統中;步進電動機可以直接接收數字量,而且具有動作速度快、精度高等優點,所以用步進電動機作為執行機構的控制系統越來越多;液壓執行機構(如油缸和油馬達)將油液的壓力能轉換成機械能,驅動負載直線或回轉運動,能方便地進行無級調速,且高速范圍大,控制和調節簡單、方便、省力、易于實現自動控制和過載保護。

(3)過程通道的選擇應考慮以下一些問題:被控對象參數的數量,各輸入/輸出通道是串行操作還是并行操作,各通道數據的傳遞速率,各通道數據的字長及選擇位數,過程通道的結構形式等。

根據系統的復雜程度,MCS-51應用系統有3種典型結構。

(1)最小應用系統。

(2)小規模擴展系統:只擴展少量的RAM和I/O接口,地址在00H~0FFH之間。

(3)大規模擴展系統:需要擴展較大量的ROM、RAM和I/O接口,連接多片擴展芯片。

硬件設計的具體步驟如下。

(1)確定各輸入/輸出數據的傳送方式是中斷方式、查詢方式還是無條件方式等。

(2)根據系統需要確定使用何種結構,確定系統中主要電路是最小系統,還是擴展系統。除單片機外,系統中還需要哪些擴展芯片、模擬電路等。

(3)資源分配:各輸入/輸出信號分別使用哪個并行口、串行口、中斷、定時器/計數器等。

(4)電路連接:根據以上各步完成完整的線路連接圖。

1.1.3 應用系統的軟件設計

在進行應用系統的總體設計時,軟件設計和硬件設計應統一考慮,相結合進行。當系統的電路設計定型后,軟件的任務也就明確了。

系統中的應用軟件是根據系統功能要求設計的。一般來說,單片機中的軟件功能可分為兩大類:一類是執行軟件,能完成各種實質性的功能,如測量、計算、顯示、打印、輸出控制等;另一類是監控軟件,專門用來協調各執行模塊和操作者的關系,充當組織調度角色,也稱為Debug程序,是最基本的調試工具。開發監控程序是為了調試應用程序。監控程序功能不足會給應用程序的開發帶來麻煩,反之,用大量精力研究監控程序會貽誤開發應用程序。因此,把監控程序控制在適當的規模是明智的。由于應用系統種類繁多,程序編制者風格不一,因此應用軟件因系統而異、因人而異。盡管如此,作為優秀的應用軟件還是有其共同特點及其規律的。設計人員在進行程序設計時應從以下幾個方面加以考慮。

(1)根據軟件功能要求,將系統軟件分成若干個相對獨立的部分。根據它們之間的聯系和時間上的關系,設計出合理的軟件總體結構,使其清晰、簡潔、流程合理。

(2)培養結構化程序設計風格,各功能程序實行模塊化、子程序化。既便于調試、鏈接,又便于移植、修改。

(3)建立正確的數學模型。即根據功能要求,描述出各個輸入和輸出變量之間的數學關系,它是關系到系統性能好壞的重要因素。

(4)為提高軟件設計的總體效率,以簡明、直觀的方法對任務進行描述,在編寫應用軟件之前,應繪制出程序流程圖。這不僅是程序設計的一個重要組成部分,而且是決定成敗的關鍵部分。從某種意義上講,多花一份時間來設計程序流程圖,就可以節約幾倍源程序編輯調試時間。

(5)要合理分配系統資源,包括ROM、RAM、定時器/計數器、中斷源等。其中最關鍵的是片內RAM分配。例如對8051來講,片內RAM指00H~7FH單元,這128個字節的功能不完全相同,分配時應充分發揮其特長,做到物盡其用,在工作寄存器的8 個單元中,R0和R1具有指針功能,是編程的重要角色,避免作為它用;20H~2FH這16個字節具有位尋址功能,可用來存放各種標志位、邏輯變量、狀態變量等;設置堆棧區時應事先估算出子程序和中斷嵌套的級數及程序中棧操作指令使用情況,其大小應留有余量。若系統中擴展了RAM存儲器,應把使用頻率最高的數據緩沖器安排在片內RAM中,以提高處理速度。當RAM資源規劃好后,應列出一張RAM資源詳細分配表,以備編程查用方便。

(6)注意在程序的有關位置處寫上功能注釋,提高程序的可讀性。

(7)加強軟件抗干擾設計,它是提高單片機應用系統可靠性的有力措施。

實時測控程序一般包括以下幾方面。

(1)初始化部分,包括設置工作模式、中斷方式、堆棧指針和工作單元初始化等。

(2)參數設定部分,包括設定采樣周期、控制參數和給定量等。

(3)中斷請求管理,如有時需定時中斷請求,CPU轉去執行相應的數據采集服務程序,運行測控算法等。

(4)測控算法,根據系統的要求及被控對象的具體情況,選用不同的控制策略與算法。

(5)終端管理模塊,包括修改參數、重新初始化和中止程序等工作。

軟件開發大體包括以下幾個方面。

(1)劃分功能模塊及安排程序結構。例如,根據系統的任務,將程序大致劃分成數據采集模塊、數據處理模塊、非線性補償模塊、報警處理模塊、標度變換模塊、數據控制、計算模塊、控制器輸出模塊和故障診斷模塊等,并規定每個模塊的任務及其相互間的關系。

(2)畫出各程序模塊詳細流程圖。

(3)選擇合適的語言(如高級語言或匯編語言)編寫程序。編寫時盡量采用現有模塊子程序,以提高程序設計速度。

(4)將各個模塊連接成一個完整的程序。

通過編輯軟件編輯出的源程序,必須用編譯程序匯編生成目標代碼。如果源程序有語法錯誤則返回編輯過程,修改源文件后再繼續編譯,直到無語法錯誤為止。之后就是利用目標碼進行程序調試了,在運行中發現設計上的錯誤再重新修改源程序,如此反復直到成功。

1.1.4 應用系統的抗干擾設計

用于現場的單片機應用系統,易受各種干擾侵襲,直接影響系統的可靠性。因此,單片機應用系統的抗干擾設計已經成為設計人員關注的重要課題。

由于各應用系統所處環境不同,面臨的干擾源也不同,相應采取的抗干擾措施也不盡相同。在單片機應用系統中,主要考慮以下幾個方面的問題。

(1)電壓檢測及掉電保護技術。若單片機系統的供電電源瞬間斷電或電壓突然下降,將使單片機系統陷入混亂狀態,此時,即使單片機恢復正常,系統也很難恢復正常狀態,掉電保護可解決此類問題。掉電保護是指通過硬件電路檢測到系統供電電源的瞬間斷電和電壓突然下降,然后將檢測信號加到單片機的外部中斷輸入端,使系統及時地對掉電做出反應。掉電引起的中斷應作為高級中斷。

(2)切斷來自傳感器、各功能模塊部分的干擾。采取的措施有:模擬電路通過隔離放大器進行隔離,數字電路通過光電耦合器進行隔離,模擬地和數字地分開,或采用提高電路共模抑制比等手段。

(3)對空間干擾(來自于系統內部和外部的電磁場在線路、導線、殼體上的輻射、吸收與調制)的抗干擾設計主要考慮地線設計、系統的屏蔽與布局設計。

(4)地線設計是一個很重要的問題。在單片機應用系統中,地線結構大致有系統地、機殼地(屏蔽地)、數字地、模擬地等。在設計時,數字地和模擬地要分開,分別與電源端地線相連;當系統工作頻率小于1MHz時,屏蔽線應采用單點接地;當系統工作頻率在1MHz~10MHz時,屏蔽線應采用多點接地。

(5)在印刷電路板設計中,要將強、弱電路嚴格分開,盡量不要把它們設計在一塊印刷電路板上,電源線的走向應盡量與數據傳遞方向一致,接地線應適當加粗,在印刷電路板的各個關鍵部位應配置去耦電容。

(6)對系統中用到的元器件要進行篩選,選擇標準化以及互換性好的器件或電路。對硬件電路存在的故障可通過常規的電平檢測、信號檢測或編制自診斷程序來加以診斷。

(7)電路設計時要注意電平匹配。如TTL的1電平是2.4~5V,0電平是0~0.4V;而CMOS輸入1電平是4.99~5V,0電平是0~0.01V。因此,當CMOS器件接收TTL輸出時,其輸入端就要加電平轉換器或上拉電阻,否則,CMOS器件就會處于不確定狀態。

(8)單片機進行擴展時,不應超過其驅動能力,否則將會使整個系統工作不正常。如果要超負載驅動,則應加上總線驅動器,如74LS244、74LS245等。

(9)CMOS電路不使用的輸入端不允許浮空,否則會引起邏輯電平不正常,易接受外界干擾產生誤動作。在設計時可根據實際情況,將多余的輸入端與正電源或地相連接。

(10)軟件的抗干擾設計是應用系統抗干擾設計的一個重要組成部分。在許多情況下,應用系統的抗干擾不可能完全依靠硬件來解決。而通過軟件采取抗干擾設計,往往成本低、見效快,起到事半功倍的成效。在實際情況中,針對不同的干擾后果,采取不同的軟件對策。例如,在實時數據采集系統中,為了消除傳感器通道中的干擾信號,可采用軟件數字濾波,如算術平均值法、比較舍取法、中值法和一階遞推數字濾波法等;在開關量控制系統中,為防止干擾進入系統,造成各種控制條件、輸出控制失誤,可采取軟件冗余、設置當前輸出狀態寄存單元和自檢程序等措施;為防止PC失控,造成程序“跑飛”而盲目運行,可設置軟件WDT來監視程序運行狀態,也可在非程序區設置軟件陷阱,強行使程序回到復位狀態。用硬件設置WDT電路強制系統返回也是一種常用的方法。

另外,為提高系統的可靠性,防止他人盜取技術信息,還應采取加密保護技術,包括硬件加密和軟件加密。硬件加密主要有:數據線、地址線中的某些位換位,數據線、地址線中的某些位求反,使用內部程序存儲器可加密的單片機。軟件加密主要有:程序模塊之間加一些加密字節,用返回指令取代條件指令,使程序中的某些字節為兩個程序模塊共同使用。需要說明的是,加密和解密是同時發展的,因此加密只是相對而言。

主站蜘蛛池模板: 都兰县| 泗水县| 潼关县| 沙坪坝区| 怀仁县| 广德县| 洮南市| 梨树县| 全南县| 闽侯县| 正镶白旗| 通河县| 佛学| 额敏县| 三原县| 云安县| 三门峡市| 浮梁县| 玉田县| 称多县| 石城县| 宁海县| 鄂托克旗| 麻阳| 惠来县| 乌兰察布市| 东港市| 富宁县| 扎兰屯市| 临桂县| 雅安市| 内丘县| 巴林左旗| 东源县| 工布江达县| 邹平县| 玉环县| 余姚市| 黄平县| 屏东市| 北辰区|