版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、《狀態(tài)機工具包狀態(tài)機工具包》的使用方法的使用方法NIDeveloperSuite(開發(fā)者套件)中包含一個很實用的工具包——狀態(tài)機工具包(StateMachineToolkit)。當(dāng)然,如果你還沒有的話,也可單獨購買。狀態(tài)機工具包提供了在LabVIEW開發(fā)環(huán)境下,根據(jù)程序的需求設(shè)計狀態(tài)圖,并將設(shè)計好的狀態(tài)圖轉(zhuǎn)換成LabVIEW狀態(tài)機架構(gòu)?!盃顟B(tài)機”的概念大約出現(xiàn)在上個世紀3040年代,在學(xué)習(xí)數(shù)字電路設(shè)計時也涉及到了狀態(tài)機,在數(shù)字邏輯設(shè)計中
2、,“狀態(tài)機”是一個系統(tǒng)設(shè)計的規(guī)范方法。在程序設(shè)計中引入狀態(tài)機的概念,可使復(fù)雜的程序看起來更清晰,程序修改起來更容易。由此可見,狀態(tài)機是降低軟件復(fù)雜度的最佳方法。狀態(tài)機的定義:狀態(tài)機是一種具有指定數(shù)目的狀態(tài)的概念機,它在某個指定的時刻僅處于一個狀態(tài)。狀態(tài)的改變是由輸入事件引起的狀態(tài)變化。作為對輸入事件的響應(yīng),系統(tǒng)可能轉(zhuǎn)變到相同或不同的狀態(tài),而輸出事件可能是任意產(chǎn)生的?!訟softwareengineeringApproachtoLa
3、bVIEW的中文譯本“狀態(tài)圖”是用圖示的方法來描述狀態(tài)及狀態(tài)之間的聯(lián)系,有點類似于通常程序設(shè)計中的流程圖?!癓abVIEW狀態(tài)機架構(gòu)”是指LabVIEW開發(fā)環(huán)境下的狀態(tài)機機制的LabVIEW程序代碼。本文主要討論LabVIEW中“狀態(tài)機”的概念、原理和架構(gòu)以及如何使用狀態(tài)機工具包實現(xiàn)程序設(shè)計?!盃顟B(tài)機”在LabVIEW那個版本中開始出現(xiàn)我無從考證,從檢索到的資料看好像應(yīng)該包含在LabVIEW5中?,F(xiàn)在發(fā)布的狀態(tài)機工具包適用于LabVIE
4、W7以后的版本。在我的“虛擬儀器設(shè)計方法之一”中提到的“輪詢(polling)”的方式就是指“狀態(tài)機”在GUI設(shè)計中的應(yīng)用。當(dāng)然,在較大的開發(fā)項目中,如果使用狀態(tài)機工具包會進行設(shè)計,將會提供方便、簡潔、靈活的應(yīng)用程序架構(gòu)。由于狀態(tài)機工具包是一個附加的工具包,只有NIDeveloperSuite中包含了這個工具包,所以絕大部分介紹LabVIEW的中文書籍中都沒有包含這部分內(nèi)容??紤]到它的實用性,覺得還是有必要將它簡要的介紹給大家,正是基于
5、這樣的原因,這部分可能講解得要相對細一些。另外,LabVIEWStateDiagramToolkitUserGuide中會有更精確的描述,鑒于我的英文水平不高,所以沒辦法將其內(nèi)容完整的表述給大家。本文的內(nèi)容僅僅是我在使用中的體會,并且對它的應(yīng)用也僅僅體現(xiàn)在程序架構(gòu)設(shè)計中。其實在儀器控制(GPIB)等方面它應(yīng)該更具有使用價值。一、一、“程序程序”與“狀態(tài)機狀態(tài)機”間的關(guān)系間的關(guān)系“程序”是指揮計算機并通過計算機來表達或?qū)崿F(xiàn)我們意念(想法、
6、要求)的一堆代碼;“狀態(tài)機”是用來抽象地表示這堆代碼的一種機制(方法)。二、二、LabVIEWLabVIEW狀態(tài)機程序代碼狀態(tài)機程序代碼圖2表示的就是LabVIEW狀態(tài)機的代碼。從圖2可知LabVIEW中的狀態(tài)機是由while循環(huán)與移位寄存器case結(jié)構(gòu)及case選擇器組成。圖2LabVIEW狀態(tài)機代碼圖2中的帶有左右箭頭和下拉箭頭含有字符的小藍色框我們稱為“枚舉常數(shù)”。這里還要先介紹一下“枚舉”的概念。枚舉類型(Enums)枚舉類型是
7、從C語言中借用的概念,在枚舉類型中可將每個連續(xù)的整數(shù)值從零開始按順序分配給每一個名稱(或字符串)。例如:紅、黃、藍、綠就分別對應(yīng)于0、1、2、3。顯然,使用文字或字符串要比使用數(shù)字更直觀、方便、概念性更強。假如你有20個朋友,你是喜歡直接用019個數(shù)字來代表他們,還是用名字表示他們,那個更好呢?枚舉最佳的使用方式就是作為case結(jié)構(gòu)中的選擇開關(guān)。因為它更直觀的顯示出目前的狀態(tài)和下個迭代的目標。這里引入枚舉的目的就是想通過簡單的文字來表示
8、現(xiàn)在所處的狀態(tài),以及下一個將要進入的狀態(tài)。補充說一點,在我的“虛擬儀器設(shè)計方法之一”一文中的信號發(fā)生器的頻率調(diào)節(jié)就是利用Ring控件來實現(xiàn)的,而Ring控件的工作方式就是“枚舉”的方式?,F(xiàn)在我們還是要回到狀態(tài)機的討論上,與事件結(jié)構(gòu)相同是每個狀態(tài)都有一個case結(jié)構(gòu),在這里可進行該狀態(tài)的處理程序。不同的是狀態(tài)機要不停的查詢是否有事件發(fā)生。還有狀態(tài)機的程序要比事件結(jié)構(gòu)的程序顯得復(fù)雜的多,很不容易看懂。的確,即便引入的枚舉,狀態(tài)機的代碼還是不
9、好讀懂,到現(xiàn)在我也不想去讀懂它,因為LabVIEW狀態(tài)機工具包可以代替我們做這方面的工作,我們只需能夠?qū)⒊绦虺橄鬄闋顟B(tài)圖就可以了。LabVIEW狀態(tài)機工具包可以通過狀態(tài)圖自動生成LabVIEW狀態(tài)機程序構(gòu)架。正是基于這樣的原因,本單元講得就相對簡單些。下一小節(jié)我們將介紹LabVIEW狀態(tài)機工具包的使用方法,并通過一個應(yīng)用例子了解如何應(yīng)用及應(yīng)用中要注意的地方。三、三、LabVIEWLabVIEW狀態(tài)機工具包及使用方法狀態(tài)機工具包及使用方法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論