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