新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > LabVIEW設計模型——順序模型之數(shù)據(jù)流

        LabVIEW設計模型——順序模型之數(shù)據(jù)流

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


        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 多伦县| 葵青区| 中阳县| 苍梧县| 南京市| 宣武区| 巴中市| 四平市| 红原县| 温宿县| 晋州市| 宁德市| 桐梓县| 台江县| 措美县| 普格县| 仲巴县| 巴楚县| 和硕县| 清远市| 潍坊市| 内丘县| 虹口区| 澎湖县| 宾阳县| 建瓯市| 伊通| 灵川县| 临泉县| 视频| 昭觉县| 乌兰浩特市| SHOW| 靖西县| 石河子市| 利川市| 松潘县| 黄陵县| 高碑店市| 胶南市| 怀集县|