LabVIEW設(shè)計(jì)模型——順序模型之?dāng)?shù)據(jù)流
掃描二維碼
隨時(shí)隨地手機(jī)看文章
順序結(jié)構(gòu)有這樣那樣的缺陷,那么如何實(shí)現(xiàn)順序模型呢?答案就是使用數(shù)據(jù)流的思想進(jìn)行編程。一個(gè)節(jié)點(diǎn)開(kāi)始執(zhí)行,那么就需要該節(jié)點(diǎn)獲得所有必要數(shù)據(jù)。在LabVIEW中,數(shù)據(jù)由前面的節(jié)點(diǎn)流向后面的節(jié)點(diǎn),程序隨著數(shù)據(jù)的流動(dòng)而執(zhí)行。這就形成了一個(gè)自然的順序結(jié)構(gòu)。上圖就是一個(gè)典型的由數(shù)據(jù)流控制的順序模型。Simulate Signal節(jié)點(diǎn)產(chǎn)生一個(gè)波形數(shù)據(jù),然后數(shù)據(jù)沿連線流動(dòng)到Spectral Measurements節(jié)點(diǎn)做頻譜分析,分析得到的頻譜數(shù)據(jù)沿連線流動(dòng)到Write To Measurement File節(jié)點(diǎn),將節(jié)點(diǎn)存儲(chǔ)到數(shù)據(jù)文件。整個(gè)程序,隨著數(shù)據(jù)的流動(dòng)一步一步的執(zhí)行,形成了一個(gè)完美的順序模型。如果兩個(gè)節(jié)點(diǎn)之間沒(méi)有數(shù)據(jù)聯(lián)系,我們也想要他們順序執(zhí)行怎么辦呢?那就要利用錯(cuò)誤簇和條件結(jié)構(gòu)。錯(cuò)誤簇,是LabVIEW設(shè)置的特殊的數(shù)據(jù)結(jié)構(gòu),由status(錯(cuò)誤狀態(tài))、code(錯(cuò)誤代碼)、source(錯(cuò)誤信息)三部分組成。它是用來(lái)在節(jié)點(diǎn)之間傳輸錯(cuò)誤信息的。(如下圖所示)其實(shí),錯(cuò)誤簇除了可以傳遞錯(cuò)誤信息以外,還有一個(gè)重要的功能就是通過(guò)錯(cuò)誤簇中數(shù)據(jù)的流動(dòng)來(lái)確定程序的執(zhí)行順序。當(dāng)節(jié)點(diǎn)含有錯(cuò)誤簇端子時(shí),我們就要把前一個(gè)節(jié)點(diǎn)的error out端子和后一個(gè)節(jié)點(diǎn)的error in端子連接起來(lái),已確定執(zhí)行的順序,以及保證錯(cuò)誤信息的傳遞。上圖所示的VI由3個(gè)用戶輸入節(jié)點(diǎn)構(gòu)成。三個(gè)節(jié)點(diǎn)之間本沒(méi)有數(shù)據(jù)聯(lián)系,也就是說(shuō)執(zhí)行順序不確定。但是,通過(guò)錯(cuò)誤簇的連接使它們形成了數(shù)據(jù)依賴,從而能夠順序執(zhí)行。如果在節(jié)點(diǎn)中沒(méi)有錯(cuò)誤簇,有該如何用數(shù)據(jù)流來(lái)確定執(zhí)行順序呢?看看下面的例子:程序由兩個(gè)用戶輸入節(jié)點(diǎn)和兩個(gè)對(duì)話框節(jié)點(diǎn)構(gòu)成。我們需要第一個(gè)用戶輸入節(jié)點(diǎn)執(zhí)行完畢后,由第一個(gè)對(duì)話框節(jié)點(diǎn)來(lái)提示輸入成功,第二組輸入節(jié)點(diǎn)和對(duì)話框同理。由于對(duì)話框節(jié)點(diǎn)并沒(méi)有錯(cuò)誤簇端子,于是就使用了兩個(gè)條件結(jié)構(gòu)來(lái)放置兩個(gè)對(duì)話框節(jié)點(diǎn)。錯(cuò)誤數(shù)據(jù)從兩個(gè)條件結(jié)構(gòu)中穿過(guò),來(lái)保證程序的順序執(zhí)行。值得一提的是,條件結(jié)構(gòu)的所有分支都需要連接錯(cuò)誤信息,否則LabVIEW會(huì)報(bào)錯(cuò)。P.S. 由于錯(cuò)誤簇有以上種種的用途,所以在我們寫(xiě)一定要在所有的子VI中加入錯(cuò)誤簇,即使子VI中沒(méi)有錯(cuò)誤要處理,也要加上error in和error out兩個(gè)端子。好了,利用數(shù)據(jù)流來(lái)確定執(zhí)行的順序的方法就寫(xiě)這么多吧。