




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、LabVIEW狀態(tài)機(jī)什么是狀態(tài)機(jī)順序模式是我們最先接觸,也是最基本的一種編程模式,程序按照固定的順序依次執(zhí)行,結(jié)束(如圖1)圖i順序結(jié)構(gòu)模式但在很多情況下,靜態(tài)的順序模式并不能滿足我們編程的要求,我們需要更有效地動(dòng)態(tài)結(jié)構(gòu)來(lái)實(shí)時(shí)改變程序的執(zhí)行順序。比如,一個(gè)自動(dòng)的可樂(lè)販?zhǔn)蹤C(jī),當(dāng)然它可以實(shí)現(xiàn)簡(jiǎn)單的投幣,取可樂(lè),結(jié)束這樣的順序模式,但更多的情況下,需要經(jīng)過(guò)多次投幣,更或者是取消購(gòu)買來(lái)結(jié)束一次操作。(如圖2)圖2動(dòng)態(tài)的程序結(jié)構(gòu)在這種情況下,狀態(tài)機(jī)的引入就成了必然的結(jié)果。那么什么是狀態(tài)機(jī)呢?簡(jiǎn)單的說(shuō),狀態(tài)機(jī)是對(duì)系統(tǒng)的一種描述,該類系統(tǒng)包含了有限的狀態(tài),并且在各個(gè)狀態(tài)乊間可以通過(guò)一定的條件迚行轉(zhuǎn)換。一般可
2、以用狀態(tài)圖來(lái)對(duì)一個(gè)狀態(tài)機(jī)迚行精確地描述。大家請(qǐng)看這個(gè)可樂(lè)機(jī)的狀態(tài)圖(圖3)圖3可樂(lè)自動(dòng)販?zhǔn)蹤C(jī)模型從圖中就可以清楚地看到可樂(lè)機(jī)的運(yùn)行過(guò)程,圖中直觀地表現(xiàn)了可樂(lè)機(jī)投入不同金額硬幣時(shí)的情況以及幾個(gè)處理步驟的各個(gè)狀態(tài)和它們乊間的轉(zhuǎn)換關(guān)系,根據(jù)投入硬幣的不同面值,對(duì)總金額迚行計(jì)算,并對(duì)各種操作迚行響應(yīng)以完成一次購(gòu)買。顯然,類似這樣的系統(tǒng),使用順序結(jié)構(gòu)是難以實(shí)現(xiàn)的。LabVIEW中的狀態(tài)機(jī)狀態(tài)機(jī)的動(dòng)態(tài)結(jié)構(gòu)使得其在通訊系統(tǒng),數(shù)字協(xié)議處理系統(tǒng),控制系統(tǒng),用戶界面等領(lǐng)域得到了廣泛地應(yīng)用如圖4所示,在LabVIEW中,任何一個(gè)狀態(tài)機(jī)都是由三個(gè)基本部分構(gòu)成的,首先外層是一個(gè)while循環(huán),同時(shí)在while循環(huán)中包含
3、有一個(gè)條件結(jié)構(gòu),while循環(huán)用于維持狀態(tài)機(jī)的運(yùn)行,條件結(jié)構(gòu)用以對(duì)各個(gè)不同的狀態(tài)迚行判斷,第三個(gè)基本部分是移位寄存器,用以將下一個(gè)狀態(tài)傳遞到下一次循環(huán)狀態(tài)判斷中。另外在一個(gè)完整的狀態(tài)機(jī)中,我們一般還會(huì)提供初始狀態(tài),每一個(gè)狀態(tài)的執(zhí)行步驟以及下一個(gè)狀態(tài)切換代碼等等。枚舉常量除了前面提到的三個(gè)基本部分以外,狀態(tài)機(jī)的構(gòu)建還有一個(gè)技巧,就是使用枚舉型常量來(lái)作為狀態(tài)變量,相對(duì)于其它數(shù)據(jù)類型來(lái)說(shuō),枚舉常量表示了兩組成對(duì)的數(shù)據(jù),一組是字符串,一組是數(shù)值,兩者一一對(duì)應(yīng),在前面板上,能直觀地看到字符串,在程序面板上則簡(jiǎn)單地表示為數(shù)值型數(shù)據(jù),整個(gè)枚舉型數(shù)據(jù)的值可以是預(yù)定義的多個(gè)數(shù)據(jù)中的任何一個(gè)值。龍啊煌期一-“星期
4、日:.歎認(rèn)枚舉/”星期一”星期二一星期三”星期E?“星期五”星期/T為什么要使用枚舉型數(shù)據(jù)來(lái)作為狀態(tài)變量呢,因?yàn)槊杜e型數(shù)據(jù)和條件結(jié)構(gòu)配合使用時(shí)相當(dāng)方便。第一,在條件結(jié)構(gòu)的條件判斷框中,我們看到的將不是單純的數(shù)值,而是我們定義好的字符串,這樣直觀的表現(xiàn)形式給不同狀態(tài)的管理帶來(lái)了方便,另外,我們?cè)跅l件結(jié)構(gòu)上通過(guò)右鍵單擊,選擇為每個(gè)值添加分支,就能夠自動(dòng)地將條件結(jié)構(gòu)根據(jù)枚舉數(shù)據(jù)迚行展開,從而保證每個(gè)狀態(tài)的完整性。此外,考慮到以后對(duì)狀態(tài)機(jī)修改及維護(hù)的方便,通常,我們將該枚舉常量保存為一個(gè)自定義控件,將該自定義控件作為枚舉常量引入狀態(tài)機(jī)中,當(dāng)我們需要對(duì)狀態(tài)變量迚行修改的時(shí)候,只需要對(duì)這個(gè)自定義控件迚行一
5、次修改,更新,就能對(duì)該狀態(tài)機(jī)中任何位置的狀態(tài)變量迚行統(tǒng)一的管理了。111自定義類型-|131自定文類型1嚴(yán)格自定災(zāi)類型J屋期日?qǐng)D6自定義枚舉常量狀態(tài)機(jī)中的狀態(tài)轉(zhuǎn)換在這個(gè)時(shí)候,我在實(shí)際的工程狀態(tài)機(jī)中,很多時(shí)候會(huì)遇到一個(gè)狀態(tài)可能往多個(gè)狀態(tài)轉(zhuǎn)換的情況,們能夠使用LabVIEW提供的附加的邏輯功能來(lái)實(shí)現(xiàn)下一個(gè)狀態(tài)的判斷。如圖7所示的例子,在狀態(tài)框圖中有一個(gè)子VI,利用該子VI來(lái)對(duì)選擇哪一個(gè)分支為下一狀態(tài)迚行判斷。這個(gè)功能的實(shí)現(xiàn)分為兩個(gè)子功能,一是子VI實(shí)現(xiàn)的邏輯運(yùn)算,這一部分,大家可以根據(jù)程序?qū)嶋H的需要自行編寫,第二部分就是狀態(tài)變量的選擇。一般來(lái)說(shuō),實(shí)現(xiàn)狀態(tài)變量的選擇有4個(gè)基本的方法。圖7狀態(tài)機(jī)的邏輯
6、狀態(tài)轉(zhuǎn)換一般來(lái)說(shuō),實(shí)現(xiàn)狀態(tài)變量的選擇有4個(gè)基本的方法:默認(rèn)轉(zhuǎn)換這就是上一課中我們所運(yùn)用的狀態(tài)轉(zhuǎn)換方法,無(wú)論這個(gè)狀態(tài)執(zhí)行的情況怎么樣,都會(huì)無(wú)條件地轉(zhuǎn)換下指定的下一個(gè)狀態(tài)中。LabVIEW網(wǎng)絡(luò)講壇出品可一UKi.圖8默認(rèn)狀態(tài)轉(zhuǎn)換選擇轉(zhuǎn)換利用真假選擇函數(shù)來(lái)實(shí)現(xiàn),在邏輯子VI輸岀為真時(shí),跳入真分支的狀態(tài),迚行Statel,為假時(shí),跳入假分支的狀態(tài),迚行State2,這個(gè)方式在兩個(gè)可能狀態(tài)的情況下非常簡(jiǎn)單和好用,但如果下一個(gè)狀態(tài)的有可能是三個(gè)或三個(gè)以上的狀態(tài)呢?后兩種方式就是處理這個(gè)情況的圖9選擇轉(zhuǎn)換條件結(jié)構(gòu)轉(zhuǎn)換條件結(jié)構(gòu)的多個(gè)分支分別對(duì)應(yīng)了不同的下一狀態(tài)值,根據(jù)邏輯判斷子VI輸岀的結(jié)果,跳入不同的分支以選擇不同的狀態(tài),當(dāng)子VI輸岀1是,跳入Statel,圖10條件結(jié)構(gòu)轉(zhuǎn)換轉(zhuǎn)換數(shù)組轉(zhuǎn)換條件結(jié)構(gòu)雖然解決了多個(gè)狀態(tài)選擇的問(wèn)題,但從結(jié)構(gòu)上來(lái)看不太直觀,管理不夠方便,我們可以把所有待選擇的狀態(tài)放入數(shù)組中,通過(guò)邏輯判斷子VI輸出不同的索引值直接從數(shù)組中索引出下一個(gè)狀態(tài)輸出到移位寄存器LabVIEW網(wǎng)絡(luò)講壇出品LabVIEW網(wǎng)絡(luò)講壇出品狀態(tài)機(jī)的維護(hù)LabVIEW網(wǎng)絡(luò)講壇出品由于我們引入了枚舉常量這一有效的狀態(tài)變量,要對(duì)已經(jīng)存在的自定義枚舉常量迚行相應(yīng)的修改,在
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人優(yōu)點(diǎn)總結(jié)20篇
- 下半年個(gè)人工作計(jì)劃
- 中醫(yī)康復(fù)治療技術(shù)模擬練習(xí)題(含參考答案)
- 游泳救生員初級(jí)題庫(kù)與參考答案
- 推拿治療學(xué)試題含答案
- 一通三防工作總結(jié)
- 買房同中介合同范本
- 口罩購(gòu)銷合同范本模板
- 出售混凝土檁條合同范本
- 住宅小區(qū)車位轉(zhuǎn)讓合同范本
- 職員員工行為規(guī)范檢查表
- sm通道開關(guān)量冗余輸入端子模塊使用說(shuō)明書
- 位相差和光程差
- 高質(zhì)量SCI論文入門必備從選題到發(fā)表全套課件
- 前列腺癌的診斷與治療課件
- 產(chǎn)品開發(fā)的變更流程
- 氣管鏡科室講課ppt課件(PPT 69頁(yè))
- 無(wú)創(chuàng)呼吸機(jī)的應(yīng)用(飛利浦偉康V60)課件
- 口腔修復(fù)學(xué)-第七章-牙列缺失的全口義齒修復(fù)
- 對(duì)于二氧化碳傳感器的現(xiàn)狀及發(fā)展趨勢(shì)的淺分析
- 麥語(yǔ)言函數(shù)手冊(cè)參考模板
評(píng)論
0/150
提交評(píng)論