LabVIEW設(shè)計模型——順序模型之順序結(jié)構(gòu)
順序模型從程序開始到初始化,到模塊1、模塊2……一直到程序的結(jié)束,都是嚴格按照編程者事先指定的順序依次執(zhí)行的。這種模型簡單、易懂,是編寫小程序的理想模型,如下圖。
在LabVIEW中,一提到順序模型就會很自然的想到順序結(jié)構(gòu)。沒錯,使用順序結(jié)構(gòu)是實現(xiàn)順序模型的一種方法。
在LabVIEW中,順序結(jié)構(gòu)就像是電影膠片,不論是外觀和應(yīng)用形式都很像(如下圖所示)。它是嚴格按照從左到右的順序?qū)⒏鱾€幀中的模塊依次執(zhí)行的。前面的幀執(zhí)行完畢之前,后面幀中的內(nèi)容是無法開始的。順序結(jié)構(gòu)看上去很清晰,容易理解。
然而,順序結(jié)構(gòu)有兩個致命的缺陷,以至于我們在實際應(yīng)用中應(yīng)該盡量避免使用它:
1. 順序結(jié)構(gòu)破壞了數(shù)據(jù)流系統(tǒng)規(guī)則。在LabVIEW中一個節(jié)點開始執(zhí)行的充要條件是節(jié)點獲得了所有必要數(shù)據(jù),這就是數(shù)據(jù)流系統(tǒng)規(guī)則。而順序結(jié)構(gòu)的使用,強行規(guī)定了各個節(jié)點的執(zhí)行順序,破壞了這一規(guī)則。也阻止了并行處理的進行,降低了程序的效率。
2.順序結(jié)構(gòu)降低了程序的可控性。順序結(jié)構(gòu)一旦開始執(zhí)行就無法中止,它一定要等到最后一幀執(zhí)行完畢后才會停止。這也是順序結(jié)構(gòu)最大的缺陷,導(dǎo)致了程序在它執(zhí)行的過程中無法控制。
由于以上的原因,我們在工程應(yīng)用中對于順序結(jié)構(gòu)的使用一定要慎之又慎。
順便說一下,還有一種層疊式的順序結(jié)構(gòu)。樣子如下:
這種結(jié)構(gòu)貌似節(jié)省空間,但是它不但擁有平鋪式順序結(jié)構(gòu)所有的缺陷,而且我們無法一眼看出各個幀的情況,使得程序不夠清晰。更嚴重的是,在各幀之間傳遞數(shù)據(jù)的端子,使得數(shù)據(jù)的流向混亂,難以讀懂,不易維護。所以應(yīng)該絕對避免使用層疊式的順序結(jié)構(gòu)。
評論