面向?qū)ο蟮那度胧较到y(tǒng)設(shè)計方法
關(guān)鍵詞:嵌入式系統(tǒng) 面向對象分析設(shè)計 UML 有限狀態(tài)機
1 概述
隨著我國裝備制造業(yè)的發(fā)展,嵌入式系統(tǒng)已經(jīng)成為制造業(yè)的核心技術(shù)。它被廣泛地應(yīng)用到工業(yè)控制、仿真系統(tǒng)、醫(yī)療儀器、信息家電、通信設(shè)備等眾多領(lǐng)域。目前,圍繞嵌入式系統(tǒng)展開研究和開發(fā),已經(jīng)成為計算機軟硬件技術(shù)發(fā)展最活躍的方向之一。
嵌入式系統(tǒng)不同于通常純粹的軟件系統(tǒng)或硬件系統(tǒng),而是軟件與硬件通過在一起的,有些功能既可以用軟件實現(xiàn),也可以通過硬件實現(xiàn)。另外,嵌入式系統(tǒng)設(shè)計所面臨的挑戰(zhàn)不僅涉及到計算機軟件和硬件,也會涉及到許多非計算機工程中的問題,諸如機械尺寸問題、功耗問題和制造成本問題等。即使是計算機工程方面的問題,大部分系統(tǒng)在實時性、可靠性和多速率等問題方面也都有特別要求。
目前,實現(xiàn)嵌入式系統(tǒng)的硬件方法主要有:定制邏輯(ASIC)、現(xiàn)場可編程門陣列(FPGA)和嵌入式微處理器三種。在實際系統(tǒng)實施中,絕大多數(shù)系統(tǒng)是采用嵌入式微處理器方式,如單片機、單板機或嵌入式微處理器芯片等。這是因為用微處理器實現(xiàn)嵌入式系統(tǒng)是一種十分有效的方法,它使得在不同價位上設(shè)計不同特性的產(chǎn)品系列成為可能,并且能夠擴充新特性以滿足飛速發(fā)展變化的市場需求。
2 嵌入式系統(tǒng)設(shè)計面臨的問題和解決辦法
過去嵌入式系統(tǒng)分析和設(shè)計方面的主要問題為:①分析設(shè)計沒有一個統(tǒng)一的標準;②分析設(shè)計方法不統(tǒng)一;③從分析設(shè)計到制作和編程沒有一個始終一貫的工程化方法,使得產(chǎn)品形成的每一個過程人為因素影響十分嚴重;④分析設(shè)計的成果不能被開發(fā)類似項目或產(chǎn)品的重用。以上4個方面的問題成為多年來制約嵌入式系統(tǒng)發(fā)展的主要瓶頸,使得大部分從事嵌入式系統(tǒng)應(yīng)用開發(fā)的組織和團體,基本上是采用小組甚至是作坊式的動作模式。這使得開發(fā)較復(fù)雜或大型系統(tǒng)的工作變得十分困難甚至無法進行,或因為系統(tǒng)需求的不斷變化或小組成員的流動導(dǎo)致項目失敗。我們知道,人類之間要想達成對任何事件的交流,前提是實現(xiàn)對該事物形態(tài)(或表現(xiàn)形式)和行為的標準化,之后才可能實現(xiàn)對該事物形態(tài)(或表現(xiàn)形式)和行為的標準化,之后才可能實現(xiàn)對其的存儲、處理和交流。嵌入式系統(tǒng)制作過程產(chǎn)品以上4方面問題的主要原因是沒有一個對嵌入式系統(tǒng)需求、分析、設(shè)計、制作、測試和維護過程的結(jié)構(gòu)特征和行業(yè)特征統(tǒng)一的工程化描述方法。目前,面向對象技術(shù)正是建立在對真實世界抽象思維的基礎(chǔ)上,統(tǒng)一建模語言(UML)為這種思維提供了可視化工具,解決了以上難題。使用UML對嵌入式系統(tǒng)建模,不僅可以使系統(tǒng)分析設(shè)計實現(xiàn)標準化,而且完全可以實現(xiàn)系統(tǒng)分析、設(shè)計和制作、測試分別由不同的項目成員在統(tǒng)一、一貫的方式下完成,也使得系統(tǒng)分析和設(shè)計模型在相似系統(tǒng)中重用成為可能。
3 系統(tǒng)建模
面向對象的嵌入式系統(tǒng)建模同任何軟件密集型系統(tǒng)建模一樣,從系統(tǒng)中的類建模開始。為了解類的結(jié)構(gòu),首先對系統(tǒng)工作過程作一個總體陳述。無論是采用問題空間詞匯抽象方法還是采用用例(use case)驅(qū)動建模方法,目標都是找到系統(tǒng)以類或?qū)ο笞鳛闃?gòu)造塊的類圖。如果采用用例驅(qū)動的系統(tǒng)分析方法,該內(nèi)容也可以用用例視圖加以模型規(guī)格說明,然后使其作為系統(tǒng)白盒測試依據(jù)。由于使用用例視圖做的規(guī)格說明篇幅比較大,本文僅用文字描述說明這部分內(nèi)容。
本文所例舉的系統(tǒng)為一小型變頻調(diào)速器系統(tǒng)。對任何一個三相交流電機,在輸入單相交流電源的情況下,實現(xiàn)6Hz到[9Hz,50Hz]區(qū)間內(nèi)任一頻率的穩(wěn)步啟動運轉(zhuǎn)。系統(tǒng)用戶界面包括2位數(shù)碼顯示器、一個運行/停止指示器、電源開/關(guān)指示器、6個按鈕鍵盤和電源開關(guān)。2位顯示器用于顯示電機當前正在運轉(zhuǎn)的頻率,6個按鍵分別代表啟動、停機、正點動、反點動、頻率加和頻率減。啟動命令使電機從6Hz以每步0.2Hz的步長穩(wěn)步提升到當前設(shè)置頻率上后在該頻率上穩(wěn)定運轉(zhuǎn);正點動命令使電機穩(wěn)定在6Hz上正向運轉(zhuǎn);反點動命令時,電機轉(zhuǎn)動頻率與正點動上同,但旋轉(zhuǎn)方向相反;頻率加命令在電機運轉(zhuǎn)時使電機以1Hz/s的速率增加運轉(zhuǎn)頻率和當前預(yù)置頻率,在電機停止時僅改變預(yù)置頻率;頻率減命令與頻率加命令相反;停機命令則無論電機運行在什么狀態(tài)下,都使電機停止運轉(zhuǎn)。
圖2為系統(tǒng)實施圖。微處理器節(jié)點是系統(tǒng)的主控節(jié)點,采用Atmel 89C52。其內(nèi)部8KB Flash ROM和128B RAM資源已能滿足系統(tǒng)需要,因此不再增加外部存儲器。與其它節(jié)點的連接完全通過其本身的串并接口就可完成。按鈕節(jié)點代表所有按鈕,在系統(tǒng)變化時也可以用鍵盤取代,本例為6個單獨機械按鈕。顯示節(jié)點代表系統(tǒng)顯示部分,本例為2個數(shù)碼管和1個表示電同運行狀態(tài)的發(fā)光二極管。運行監(jiān)控節(jié)點具有兩部分功能,其一是通過WatchDog技術(shù)監(jiān)視微處理器的運行狀況,另一個是監(jiān)視變換器輸出的脈沖寬度。變換器邛樹熊設(shè)計為專用電路,通過微處理器并行口接受三相正弦脈沖,根據(jù)電機功率轉(zhuǎn)換成本相電機線圈所需要的脈沖電壓。三相電機節(jié)點不屬于嵌入式系統(tǒng)本身,但為了說明本嵌入式系統(tǒng)與控制對象關(guān)系而布置在同一實施圖中。
圖3為系統(tǒng)有限狀態(tài)機行為模型。系統(tǒng)開機上電后,經(jīng)過初始化處理自動進入到等待狀態(tài),在等待狀態(tài),Microcontrollor對象根據(jù)用戶鍵盤按鈕命令,調(diào)度相應(yīng)的操作對象。當用戶發(fā)出正或反點動命令時,系統(tǒng)進入點動運行態(tài),此時Convertor對象輸出6Hz正或反相序三相脈沖。當用戶松開正或反點動按鈕時,系統(tǒng)返回等待狀態(tài)。在系統(tǒng)預(yù)置頻率設(shè)定正確的情況下,用戶按啟動按鈕時,系統(tǒng)先進入到啟動運行態(tài)。在此狀態(tài)時系統(tǒng)從6Hz開始按每步0.2Hz的步長穩(wěn)步增加電機運轉(zhuǎn)頻率,直到達到預(yù)置頻率時進入到穩(wěn)定運行態(tài)。在穩(wěn)定運行態(tài)用戶可以改變預(yù)置頻率,步長為1Hz。每次預(yù)置頻率的改變事件,都會產(chǎn)生從穩(wěn)定運行態(tài)到啟動運行態(tài)的交替變動。當系統(tǒng)運行出現(xiàn)故障時,進入到故障處理狀態(tài)處理,完成后自動返回到等待狀態(tài)。
4 系統(tǒng)實現(xiàn)
4.1 數(shù)據(jù)處理
由于本文例舉的系統(tǒng)為一小型變頻調(diào)速嵌入式系統(tǒng),所有三相正弦波形的PWM脈沖都由Atmel 89C52的P1.0~P1.5端口輸出。當把任何頻率正弦波形分解成N等分時(N為6的整數(shù)倍),則要用N個等幅而不等寬的矩形脈沖來等效,每個脈沖區(qū)間如圖4。每個頻率正弦波劃分為6個相序,每個相序為60。每個相序分為N/6個區(qū)間,每區(qū)間分為7個小區(qū)間。每個區(qū)間采用中心對稱脈沖波形,因此在每個小脈沖邊沿只有一相功率驅(qū)動開關(guān)換相而使驅(qū)動電源電流平衡變化。在任何一相換相時,由軟件自動加死區(qū)保護(死區(qū)時間一相上下臂開關(guān)同時關(guān)閉,如圖4中豎雙線間部分),以免功率驅(qū)動開關(guān)在換相瞬間上下臂同時導(dǎo)通而損壞元件。
雖然對于不同頻率每個相序內(nèi)脈沖區(qū)間數(shù)和占空比有所不同,但輸出的波形卻是相同的。又因為每個區(qū)間的7個小區(qū)間波形是中心對稱的,因此在輸出最后3個小波形時,只要把前3個小波形的占空時間和輸出波形數(shù)據(jù)倒讀并輸出就可以完成。另外,每個脈沖區(qū)間僅需要4個占空定時T區(qū)間,t2,t3,t4(見下節(jié)說明),并且每個相序僅需要4個脈沖波形數(shù)據(jù)就可以了。三相正弦波區(qū)間數(shù)據(jù)關(guān)系如表1.
表1 三相正弦波區(qū)間數(shù)據(jù)關(guān)系
相序 | I | II | III | IV | V | VI |
電壓關(guān)系 | Ua>Ub>Uc | Ub>Ua>Uc | Ub>Uc>Ua | Uc>Ub>Ua | Uc>Ua>Ub | Ua>Uc>Ub |
波形數(shù)據(jù) | 2AH,29H,19H,15 | 2AH,26H,25H,15 | 2AH,26H,16H,15 | 2AH,1AH,16H,15H | 2AH,1AH,19H,15H | 2AH,29H,19H,15 |
區(qū)間數(shù) | N/6 | N/6 | N/6 | N/6 | N/6 | N/6 |
小區(qū)間定時 | t4,t3,t2,t1,t2,t3,t4 |
4.2 系統(tǒng)資源配置
當系統(tǒng)的分析與設(shè)計采用面向?qū)ο蠓椒〞r,并不意味著所使用的編程語言也一定是面向?qū)ο蟮摹J聦嵣?,這種分析設(shè)計方法的具體實現(xiàn)可以使用任何編程語言(如匯編語言或C語言);但是,在程序設(shè)計上要盡可能地使用面向?qū)ο蟮乃枷?,如體現(xiàn)程序結(jié)構(gòu)方面的封裝性、消息傳遞等。這種才會使程序結(jié)構(gòu)清晰,便于應(yīng)付隨著需求變化而產(chǎn)生的不斷更新和系統(tǒng)維護。
在實現(xiàn)本系統(tǒng)時,系統(tǒng)最重要的資源是程序存儲器和定時器。由于采用了上小節(jié)所討論的數(shù)據(jù)處理技術(shù),大大壓縮了數(shù)據(jù)空間。在實現(xiàn)時,把6Hz~50Hz頻率空間劃分成7個大的區(qū)段,使每個區(qū)間的脈沖周期在900μs左右,區(qū)間周期定時使用單片機內(nèi)部的T2定時器的常數(shù)自動重裝入方式。由于區(qū)間周期與輸出頻率關(guān)系是確定的(T區(qū)間=1/Nf頻率),片內(nèi)T0定時器用于區(qū)間內(nèi)小區(qū)間t2、t3、t4定時,而t1定時由t1=T區(qū)間-2t2-2t3-t4計算得到。T1定時器用于監(jiān)視系統(tǒng)輸出的脈沖寬度,當P1口任何一端輸出脈沖寬度超過1000μs時,系統(tǒng)通過中斷進入故障處理狀態(tài)。另外,系統(tǒng)還設(shè)一WatchDog電路X5045,監(jiān)視系統(tǒng)程序運行情況。當程序運行異常時,系統(tǒng)通過復(fù)位進入到故障處理狀態(tài)。系統(tǒng)的顯示接口通過單片機串行接口實現(xiàn)。
5 討論
由于嵌入式系統(tǒng)的實現(xiàn)工具基本上都是非面向?qū)ο蟮?,因此如何使面向?qū)ο蟮姆治鲈O(shè)計與非面向?qū)ο蟮膶崿F(xiàn)工具之間的銜接就成為了一個值得探討的問題。另外,嵌入式系統(tǒng)一般都具有不同于大型軟件系統(tǒng)的具體要求,如實時性、可靠性、機械尺寸、能耗(如電池供電)要求等,因此在實現(xiàn)系統(tǒng)時還應(yīng)根據(jù)開發(fā)者的經(jīng)驗進行特別處理。但是,采用面向?qū)ο蠼:笤賹崿F(xiàn)系統(tǒng)實現(xiàn)的方法,為系統(tǒng)建立了可視化的組織結(jié)構(gòu)和行業(yè)結(jié)構(gòu),實現(xiàn)了用戶需求的可視化表示,縮短了系統(tǒng)的開發(fā)周期,很好地適應(yīng)了用戶需求的變化。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論