'labview組態編程的五大經驗總結,助你開發過程事半功倍'

"

雖然NI LabVIEW軟件長期以來一直幫助工程師和科學家們快速開發功能測量和控制應用,但不是所有的新用戶都會遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨特,因為只需看一眼用戶的應用程序,就馬上可以發現用戶是否遵循編碼的最佳方法。有些用戶會犯這些錯誤是因為他們沒有真正理解LabVIEW框圖數據流背後的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質量。

小編辛苦總結了經驗欠缺的LabVIEW程序員最經常犯的一些編程錯誤,同時也提供了採用正確LabVIEW編程方法的建議。

"

雖然NI LabVIEW軟件長期以來一直幫助工程師和科學家們快速開發功能測量和控制應用,但不是所有的新用戶都會遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨特,因為只需看一眼用戶的應用程序,就馬上可以發現用戶是否遵循編碼的最佳方法。有些用戶會犯這些錯誤是因為他們沒有真正理解LabVIEW框圖數據流背後的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質量。

小編辛苦總結了經驗欠缺的LabVIEW程序員最經常犯的一些編程錯誤,同時也提供了採用正確LabVIEW編程方法的建議。

labview組態編程的五大經驗總結,助你開發過程事半功倍


  LabVIEW新手典型“傑作”


01

過度使用平鋪式順序結構

許多LabVIEW新手並不完全瞭解“數據流”執行背後的概念,而這些概念卻是LabVIEW編程的基礎。其中一個現象是用戶往往在程序框圖中過度使用平鋪式順序結構。用戶經常依賴平鋪式順序結構來實現程序框圖的代碼串行執行,而不是使用數據流和節點之間的連線。


"

雖然NI LabVIEW軟件長期以來一直幫助工程師和科學家們快速開發功能測量和控制應用,但不是所有的新用戶都會遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨特,因為只需看一眼用戶的應用程序,就馬上可以發現用戶是否遵循編碼的最佳方法。有些用戶會犯這些錯誤是因為他們沒有真正理解LabVIEW框圖數據流背後的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質量。

小編辛苦總結了經驗欠缺的LabVIEW程序員最經常犯的一些編程錯誤,同時也提供了採用正確LabVIEW編程方法的建議。

labview組態編程的五大經驗總結,助你開發過程事半功倍


  LabVIEW新手典型“傑作”


01

過度使用平鋪式順序結構

許多LabVIEW新手並不完全瞭解“數據流”執行背後的概念,而這些概念卻是LabVIEW編程的基礎。其中一個現象是用戶往往在程序框圖中過度使用平鋪式順序結構。用戶經常依賴平鋪式順序結構來實現程序框圖的代碼串行執行,而不是使用數據流和節點之間的連線。


labview組態編程的五大經驗總結,助你開發過程事半功倍


 用戶往往過度依賴平鋪式順序結構,而沒有充分理解數據流編程概念。

數據流編程是指只有在所需的數據輸入全部到達時,框圖上的節點(子VI、本原、結構等)才開始執行。這對於使用LabVIEW的程序員來說非常有用,因為獨立的進程本身就可以實現並行運行,而命令式語言卻需要額外的設置才能實行並行執行。

隨著計算機CPU的不斷增多,LabVIEW可自動分解並行流程,提高代碼性能,而無需用戶編寫任何額外代碼。而強行使用平鋪式順序結構來執行程序框圖不僅會限制並行運行,還會喪失這一優勢。限制程序框圖中不必要的結構有助於提高整體可讀性和保持更簡潔的框圖。

錯誤連線可以有效地實現程序框圖上的數據流,而不需要依靠平鋪式順序結構,此外錯誤連線還有助於實現錯誤處理策略。

"

雖然NI LabVIEW軟件長期以來一直幫助工程師和科學家們快速開發功能測量和控制應用,但不是所有的新用戶都會遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨特,因為只需看一眼用戶的應用程序,就馬上可以發現用戶是否遵循編碼的最佳方法。有些用戶會犯這些錯誤是因為他們沒有真正理解LabVIEW框圖數據流背後的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質量。

小編辛苦總結了經驗欠缺的LabVIEW程序員最經常犯的一些編程錯誤,同時也提供了採用正確LabVIEW編程方法的建議。

labview組態編程的五大經驗總結,助你開發過程事半功倍


  LabVIEW新手典型“傑作”


01

過度使用平鋪式順序結構

許多LabVIEW新手並不完全瞭解“數據流”執行背後的概念,而這些概念卻是LabVIEW編程的基礎。其中一個現象是用戶往往在程序框圖中過度使用平鋪式順序結構。用戶經常依賴平鋪式順序結構來實現程序框圖的代碼串行執行,而不是使用數據流和節點之間的連線。


labview組態編程的五大經驗總結,助你開發過程事半功倍


 用戶往往過度依賴平鋪式順序結構,而沒有充分理解數據流編程概念。

數據流編程是指只有在所需的數據輸入全部到達時,框圖上的節點(子VI、本原、結構等)才開始執行。這對於使用LabVIEW的程序員來說非常有用,因為獨立的進程本身就可以實現並行運行,而命令式語言卻需要額外的設置才能實行並行執行。

隨著計算機CPU的不斷增多,LabVIEW可自動分解並行流程,提高代碼性能,而無需用戶編寫任何額外代碼。而強行使用平鋪式順序結構來執行程序框圖不僅會限制並行運行,還會喪失這一優勢。限制程序框圖中不必要的結構有助於提高整體可讀性和保持更簡潔的框圖。

錯誤連線可以有效地實現程序框圖上的數據流,而不需要依靠平鋪式順序結構,此外錯誤連線還有助於實現錯誤處理策略。

labview組態編程的五大經驗總結,助你開發過程事半功倍

何時應該使用平鋪式順序結構?

平鋪式順序結構的數據流不同於其他結構的數據流。 所有連線至幀的數據都可用時,平鋪式順序結構的幀按照從左至右的順序執行。 每幀執行完畢後,將數據傳遞至下一幀。 即一個幀的輸入可能取決於另一個幀的輸出。

"

雖然NI LabVIEW軟件長期以來一直幫助工程師和科學家們快速開發功能測量和控制應用,但不是所有的新用戶都會遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨特,因為只需看一眼用戶的應用程序,就馬上可以發現用戶是否遵循編碼的最佳方法。有些用戶會犯這些錯誤是因為他們沒有真正理解LabVIEW框圖數據流背後的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質量。

小編辛苦總結了經驗欠缺的LabVIEW程序員最經常犯的一些編程錯誤,同時也提供了採用正確LabVIEW編程方法的建議。

labview組態編程的五大經驗總結,助你開發過程事半功倍


  LabVIEW新手典型“傑作”


01

過度使用平鋪式順序結構

許多LabVIEW新手並不完全瞭解“數據流”執行背後的概念,而這些概念卻是LabVIEW編程的基礎。其中一個現象是用戶往往在程序框圖中過度使用平鋪式順序結構。用戶經常依賴平鋪式順序結構來實現程序框圖的代碼串行執行,而不是使用數據流和節點之間的連線。


labview組態編程的五大經驗總結,助你開發過程事半功倍


 用戶往往過度依賴平鋪式順序結構,而沒有充分理解數據流編程概念。

數據流編程是指只有在所需的數據輸入全部到達時,框圖上的節點(子VI、本原、結構等)才開始執行。這對於使用LabVIEW的程序員來說非常有用,因為獨立的進程本身就可以實現並行運行,而命令式語言卻需要額外的設置才能實行並行執行。

隨著計算機CPU的不斷增多,LabVIEW可自動分解並行流程,提高代碼性能,而無需用戶編寫任何額外代碼。而強行使用平鋪式順序結構來執行程序框圖不僅會限制並行運行,還會喪失這一優勢。限制程序框圖中不必要的結構有助於提高整體可讀性和保持更簡潔的框圖。

錯誤連線可以有效地實現程序框圖上的數據流,而不需要依靠平鋪式順序結構,此外錯誤連線還有助於實現錯誤處理策略。

labview組態編程的五大經驗總結,助你開發過程事半功倍

何時應該使用平鋪式順序結構?

平鋪式順序結構的數據流不同於其他結構的數據流。 所有連線至幀的數據都可用時,平鋪式順序結構的幀按照從左至右的順序執行。 每幀執行完畢後,將數據傳遞至下一幀。 即一個幀的輸入可能取決於另一個幀的輸出。

labview組態編程的五大經驗總結,助你開發過程事半功倍


與層疊式順序結構不同,平鋪式順序結構中不必使用順序局部變量在幀與幀之間傳遞數據。 平鋪式順序結構在程序框圖上顯示每個幀,故無需使用順序局部變量即可完成幀與幀之間的連線,同時也不會隱藏代碼。

在平鋪式順序結構中添加或刪除幀時,結構會自動調整尺寸大小。

不可在平鋪式順序結構的各個幀之間拖曳隧道。

應確立數據依賴或使用流經參數可控VI的數據流,避免過度使用平鋪式順序結構。

(Real-Time, Windows)右鍵單擊平鋪式順序結構,在快捷菜單中選擇替換為定時順序,可將平鋪式順序結構替換為定時順序結構。

通過平鋪式順序結構來執行程序框圖有助於代碼性能的基準測試。通過使用框架內具有時間計數器的順序結構,您可以決定兩個時間計數器之間代碼執行所花費的時間。這是一般數據流執行所無法實現的。

"

雖然NI LabVIEW軟件長期以來一直幫助工程師和科學家們快速開發功能測量和控制應用,但不是所有的新用戶都會遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨特,因為只需看一眼用戶的應用程序,就馬上可以發現用戶是否遵循編碼的最佳方法。有些用戶會犯這些錯誤是因為他們沒有真正理解LabVIEW框圖數據流背後的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質量。

小編辛苦總結了經驗欠缺的LabVIEW程序員最經常犯的一些編程錯誤,同時也提供了採用正確LabVIEW編程方法的建議。

labview組態編程的五大經驗總結,助你開發過程事半功倍


  LabVIEW新手典型“傑作”


01

過度使用平鋪式順序結構

許多LabVIEW新手並不完全瞭解“數據流”執行背後的概念,而這些概念卻是LabVIEW編程的基礎。其中一個現象是用戶往往在程序框圖中過度使用平鋪式順序結構。用戶經常依賴平鋪式順序結構來實現程序框圖的代碼串行執行,而不是使用數據流和節點之間的連線。


labview組態編程的五大經驗總結,助你開發過程事半功倍


 用戶往往過度依賴平鋪式順序結構,而沒有充分理解數據流編程概念。

數據流編程是指只有在所需的數據輸入全部到達時,框圖上的節點(子VI、本原、結構等)才開始執行。這對於使用LabVIEW的程序員來說非常有用,因為獨立的進程本身就可以實現並行運行,而命令式語言卻需要額外的設置才能實行並行執行。

隨著計算機CPU的不斷增多,LabVIEW可自動分解並行流程,提高代碼性能,而無需用戶編寫任何額外代碼。而強行使用平鋪式順序結構來執行程序框圖不僅會限制並行運行,還會喪失這一優勢。限制程序框圖中不必要的結構有助於提高整體可讀性和保持更簡潔的框圖。

錯誤連線可以有效地實現程序框圖上的數據流,而不需要依靠平鋪式順序結構,此外錯誤連線還有助於實現錯誤處理策略。

labview組態編程的五大經驗總結,助你開發過程事半功倍

何時應該使用平鋪式順序結構?

平鋪式順序結構的數據流不同於其他結構的數據流。 所有連線至幀的數據都可用時,平鋪式順序結構的幀按照從左至右的順序執行。 每幀執行完畢後,將數據傳遞至下一幀。 即一個幀的輸入可能取決於另一個幀的輸出。

labview組態編程的五大經驗總結,助你開發過程事半功倍


與層疊式順序結構不同,平鋪式順序結構中不必使用順序局部變量在幀與幀之間傳遞數據。 平鋪式順序結構在程序框圖上顯示每個幀,故無需使用順序局部變量即可完成幀與幀之間的連線,同時也不會隱藏代碼。

在平鋪式順序結構中添加或刪除幀時,結構會自動調整尺寸大小。

不可在平鋪式順序結構的各個幀之間拖曳隧道。

應確立數據依賴或使用流經參數可控VI的數據流,避免過度使用平鋪式順序結構。

(Real-Time, Windows)右鍵單擊平鋪式順序結構,在快捷菜單中選擇替換為定時順序,可將平鋪式順序結構替換為定時順序結構。

通過平鋪式順序結構來執行程序框圖有助於代碼性能的基準測試。通過使用框架內具有時間計數器的順序結構,您可以決定兩個時間計數器之間代碼執行所花費的時間。這是一般數據流執行所無法實現的。

labview組態編程的五大經驗總結,助你開發過程事半功倍


平鋪式順序結構和時間計數器VI有助於代碼的基準測試


02

過度使用局部變量

LabVIEW編程中另一個常見的錯誤是過度使用局部變量。局部變量是共享內存中的一個區域,用於在計算機程序不同部分之間傳遞數據。局域變量通常用於文本編程語言,具有非常強大的功能,但如果出現競爭條件,就會產生問題。

對於其他編程語言來說,通過變量傳遞數據是必需的,而LabVIEW則提供了一種數據流方法,可將數據從程序的一個部分移動到另一個部分。LabVIEW固有的並行性機制決定著用戶不能過度使用變量,因為同一時間內通常會有多個不同的位置的程序訪問共享內存。如果過度使用變量,則會出現某個讀/寫操作贏了“競爭”,而其他操作則輸了“競爭”,丟失數據的操作會被忽視,因此在LabVIEW中過度使用變量可能會最終導致數據丟失。

您可以通過多種方法安全地將數據從LabVIEW程序的一個部分傳遞到另一個部分,包括連線、隊列、事件、通知、功能全局變量等等。每個機制都是針對特定情況設計的,但都具有消除競爭條件的功能。

03

忽略代碼模塊化

通常情況下,新LabVIEW用戶創建的是“即寫即忘”應用程序去完成簡單的任務,而沒有考慮到以後是否會用到這些代碼。隨著編程工作越來越多,他們會發現自己一遍又一遍地重寫同一段代碼。而如果在編程同時創建一個可複用於其他應用的模塊化子VI,就可以節省大量的開發時間。

如果您知道代碼的特定部分將會重用於同一應用程序,或感覺該部分代碼可能會用於未來的應用程序,那麼您應該花一點時間將該部分代碼變成一個子VI。如果要使某部分代碼成為一個子VI,您需要做的主要是添加一個文檔、使用“接線端”、禁用某些VI屬性。創建子VI的最簡單方法之一是高亮標記程序框圖中的某部分代碼,然後從菜單欄中選擇“編輯>>創建子VI”。這樣這部分代碼就會放到一個單獨的VI,然後使用“接線端”。您仍然需要為圖標添加說明,並將文檔記述添加到程序框圖和VI屬性中,然後取消某些VI設置,但“編輯>>創建子VI”可幫助您很好地瞭解代碼的模塊化功能。

"

雖然NI LabVIEW軟件長期以來一直幫助工程師和科學家們快速開發功能測量和控制應用,但不是所有的新用戶都會遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨特,因為只需看一眼用戶的應用程序,就馬上可以發現用戶是否遵循編碼的最佳方法。有些用戶會犯這些錯誤是因為他們沒有真正理解LabVIEW框圖數據流背後的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質量。

小編辛苦總結了經驗欠缺的LabVIEW程序員最經常犯的一些編程錯誤,同時也提供了採用正確LabVIEW編程方法的建議。

labview組態編程的五大經驗總結,助你開發過程事半功倍


  LabVIEW新手典型“傑作”


01

過度使用平鋪式順序結構

許多LabVIEW新手並不完全瞭解“數據流”執行背後的概念,而這些概念卻是LabVIEW編程的基礎。其中一個現象是用戶往往在程序框圖中過度使用平鋪式順序結構。用戶經常依賴平鋪式順序結構來實現程序框圖的代碼串行執行,而不是使用數據流和節點之間的連線。


labview組態編程的五大經驗總結,助你開發過程事半功倍


 用戶往往過度依賴平鋪式順序結構,而沒有充分理解數據流編程概念。

數據流編程是指只有在所需的數據輸入全部到達時,框圖上的節點(子VI、本原、結構等)才開始執行。這對於使用LabVIEW的程序員來說非常有用,因為獨立的進程本身就可以實現並行運行,而命令式語言卻需要額外的設置才能實行並行執行。

隨著計算機CPU的不斷增多,LabVIEW可自動分解並行流程,提高代碼性能,而無需用戶編寫任何額外代碼。而強行使用平鋪式順序結構來執行程序框圖不僅會限制並行運行,還會喪失這一優勢。限制程序框圖中不必要的結構有助於提高整體可讀性和保持更簡潔的框圖。

錯誤連線可以有效地實現程序框圖上的數據流,而不需要依靠平鋪式順序結構,此外錯誤連線還有助於實現錯誤處理策略。

labview組態編程的五大經驗總結,助你開發過程事半功倍

何時應該使用平鋪式順序結構?

平鋪式順序結構的數據流不同於其他結構的數據流。 所有連線至幀的數據都可用時,平鋪式順序結構的幀按照從左至右的順序執行。 每幀執行完畢後,將數據傳遞至下一幀。 即一個幀的輸入可能取決於另一個幀的輸出。

labview組態編程的五大經驗總結,助你開發過程事半功倍


與層疊式順序結構不同,平鋪式順序結構中不必使用順序局部變量在幀與幀之間傳遞數據。 平鋪式順序結構在程序框圖上顯示每個幀,故無需使用順序局部變量即可完成幀與幀之間的連線,同時也不會隱藏代碼。

在平鋪式順序結構中添加或刪除幀時,結構會自動調整尺寸大小。

不可在平鋪式順序結構的各個幀之間拖曳隧道。

應確立數據依賴或使用流經參數可控VI的數據流,避免過度使用平鋪式順序結構。

(Real-Time, Windows)右鍵單擊平鋪式順序結構,在快捷菜單中選擇替換為定時順序,可將平鋪式順序結構替換為定時順序結構。

通過平鋪式順序結構來執行程序框圖有助於代碼性能的基準測試。通過使用框架內具有時間計數器的順序結構,您可以決定兩個時間計數器之間代碼執行所花費的時間。這是一般數據流執行所無法實現的。

labview組態編程的五大經驗總結,助你開發過程事半功倍


平鋪式順序結構和時間計數器VI有助於代碼的基準測試


02

過度使用局部變量

LabVIEW編程中另一個常見的錯誤是過度使用局部變量。局部變量是共享內存中的一個區域,用於在計算機程序不同部分之間傳遞數據。局域變量通常用於文本編程語言,具有非常強大的功能,但如果出現競爭條件,就會產生問題。

對於其他編程語言來說,通過變量傳遞數據是必需的,而LabVIEW則提供了一種數據流方法,可將數據從程序的一個部分移動到另一個部分。LabVIEW固有的並行性機制決定著用戶不能過度使用變量,因為同一時間內通常會有多個不同的位置的程序訪問共享內存。如果過度使用變量,則會出現某個讀/寫操作贏了“競爭”,而其他操作則輸了“競爭”,丟失數據的操作會被忽視,因此在LabVIEW中過度使用變量可能會最終導致數據丟失。

您可以通過多種方法安全地將數據從LabVIEW程序的一個部分傳遞到另一個部分,包括連線、隊列、事件、通知、功能全局變量等等。每個機制都是針對特定情況設計的,但都具有消除競爭條件的功能。

03

忽略代碼模塊化

通常情況下,新LabVIEW用戶創建的是“即寫即忘”應用程序去完成簡單的任務,而沒有考慮到以後是否會用到這些代碼。隨著編程工作越來越多,他們會發現自己一遍又一遍地重寫同一段代碼。而如果在編程同時創建一個可複用於其他應用的模塊化子VI,就可以節省大量的開發時間。

如果您知道代碼的特定部分將會重用於同一應用程序,或感覺該部分代碼可能會用於未來的應用程序,那麼您應該花一點時間將該部分代碼變成一個子VI。如果要使某部分代碼成為一個子VI,您需要做的主要是添加一個文檔、使用“接線端”、禁用某些VI屬性。創建子VI的最簡單方法之一是高亮標記程序框圖中的某部分代碼,然後從菜單欄中選擇“編輯>>創建子VI”。這樣這部分代碼就會放到一個單獨的VI,然後使用“接線端”。您仍然需要為圖標添加說明,並將文檔記述添加到程序框圖和VI屬性中,然後取消某些VI設置,但“編輯>>創建子VI”可幫助您很好地瞭解代碼的模塊化功能。

labview組態編程的五大經驗總結,助你開發過程事半功倍


採用正確的LabVIEW代碼模塊化操作可以幫助您節省大量開發時間

代碼模塊化時必須取消的一項設置是“允許調試”。您可在“VI屬性(文件》》VI屬性)”下的“執行”目錄中找到此選項。代碼完全正常運行無需再使用高亮執行等調試功能時,在執行設置中取消“允許調試”,然後再次運行VI。這樣做的好處是由於在編譯過程中進行了優化,應用程序的運行速度可能加快,而且由於啟動調試的代碼被關閉,VI所佔的磁盤物理空間也相應減少了。

04

創建龐大繁瑣的程序框圖

許多新LabVIEW用戶都會把程序框圖編寫得非常繁瑣龐大。對於一些複雜的應用程序,我們難免需要編寫較大的程序框圖,但龐大的程序框圖從一定程度上也可以表明該程序缺乏編程架構。如果沒有一個基本的架構,要長期維護該程序是非常困難的,而且如果以後要添加新功能也會非常困難。正如只有一個好的框架才能建造一棟結構合理的房子,一個好的編程架構可以為您構建應用程序提供了一個安全可靠的框架

幾乎所有的程序員都會發現常見的框架中,軟件架構是非常有用的。實際上LabVIEW中的許多架構,如生產者/消費者和狀態機,與其他編程語言非常相似。

瞭解LabVIEW的架構可以縮短開發時間和提高應用程序的可擴展性。LabVIEW 2012包含了模板和項目範例,使理解架構變得更加容易。模板解釋了不同的架構及應用。項目範例則是基於模板的更大型應用程序,演示瞭如何使用模板來應對實際的挑戰。您可以將硬件加入到範例項目中,或者需要時可將項目範例作為一個整體應用程序,同時項目範例具有開放性且文檔記述也很完整,所以您可針對具體應用進行自定義。

"

雖然NI LabVIEW軟件長期以來一直幫助工程師和科學家們快速開發功能測量和控制應用,但不是所有的新用戶都會遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨特,因為只需看一眼用戶的應用程序,就馬上可以發現用戶是否遵循編碼的最佳方法。有些用戶會犯這些錯誤是因為他們沒有真正理解LabVIEW框圖數據流背後的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質量。

小編辛苦總結了經驗欠缺的LabVIEW程序員最經常犯的一些編程錯誤,同時也提供了採用正確LabVIEW編程方法的建議。

labview組態編程的五大經驗總結,助你開發過程事半功倍


  LabVIEW新手典型“傑作”


01

過度使用平鋪式順序結構

許多LabVIEW新手並不完全瞭解“數據流”執行背後的概念,而這些概念卻是LabVIEW編程的基礎。其中一個現象是用戶往往在程序框圖中過度使用平鋪式順序結構。用戶經常依賴平鋪式順序結構來實現程序框圖的代碼串行執行,而不是使用數據流和節點之間的連線。


labview組態編程的五大經驗總結,助你開發過程事半功倍


 用戶往往過度依賴平鋪式順序結構,而沒有充分理解數據流編程概念。

數據流編程是指只有在所需的數據輸入全部到達時,框圖上的節點(子VI、本原、結構等)才開始執行。這對於使用LabVIEW的程序員來說非常有用,因為獨立的進程本身就可以實現並行運行,而命令式語言卻需要額外的設置才能實行並行執行。

隨著計算機CPU的不斷增多,LabVIEW可自動分解並行流程,提高代碼性能,而無需用戶編寫任何額外代碼。而強行使用平鋪式順序結構來執行程序框圖不僅會限制並行運行,還會喪失這一優勢。限制程序框圖中不必要的結構有助於提高整體可讀性和保持更簡潔的框圖。

錯誤連線可以有效地實現程序框圖上的數據流,而不需要依靠平鋪式順序結構,此外錯誤連線還有助於實現錯誤處理策略。

labview組態編程的五大經驗總結,助你開發過程事半功倍

何時應該使用平鋪式順序結構?

平鋪式順序結構的數據流不同於其他結構的數據流。 所有連線至幀的數據都可用時,平鋪式順序結構的幀按照從左至右的順序執行。 每幀執行完畢後,將數據傳遞至下一幀。 即一個幀的輸入可能取決於另一個幀的輸出。

labview組態編程的五大經驗總結,助你開發過程事半功倍


與層疊式順序結構不同,平鋪式順序結構中不必使用順序局部變量在幀與幀之間傳遞數據。 平鋪式順序結構在程序框圖上顯示每個幀,故無需使用順序局部變量即可完成幀與幀之間的連線,同時也不會隱藏代碼。

在平鋪式順序結構中添加或刪除幀時,結構會自動調整尺寸大小。

不可在平鋪式順序結構的各個幀之間拖曳隧道。

應確立數據依賴或使用流經參數可控VI的數據流,避免過度使用平鋪式順序結構。

(Real-Time, Windows)右鍵單擊平鋪式順序結構,在快捷菜單中選擇替換為定時順序,可將平鋪式順序結構替換為定時順序結構。

通過平鋪式順序結構來執行程序框圖有助於代碼性能的基準測試。通過使用框架內具有時間計數器的順序結構,您可以決定兩個時間計數器之間代碼執行所花費的時間。這是一般數據流執行所無法實現的。

labview組態編程的五大經驗總結,助你開發過程事半功倍


平鋪式順序結構和時間計數器VI有助於代碼的基準測試


02

過度使用局部變量

LabVIEW編程中另一個常見的錯誤是過度使用局部變量。局部變量是共享內存中的一個區域,用於在計算機程序不同部分之間傳遞數據。局域變量通常用於文本編程語言,具有非常強大的功能,但如果出現競爭條件,就會產生問題。

對於其他編程語言來說,通過變量傳遞數據是必需的,而LabVIEW則提供了一種數據流方法,可將數據從程序的一個部分移動到另一個部分。LabVIEW固有的並行性機制決定著用戶不能過度使用變量,因為同一時間內通常會有多個不同的位置的程序訪問共享內存。如果過度使用變量,則會出現某個讀/寫操作贏了“競爭”,而其他操作則輸了“競爭”,丟失數據的操作會被忽視,因此在LabVIEW中過度使用變量可能會最終導致數據丟失。

您可以通過多種方法安全地將數據從LabVIEW程序的一個部分傳遞到另一個部分,包括連線、隊列、事件、通知、功能全局變量等等。每個機制都是針對特定情況設計的,但都具有消除競爭條件的功能。

03

忽略代碼模塊化

通常情況下,新LabVIEW用戶創建的是“即寫即忘”應用程序去完成簡單的任務,而沒有考慮到以後是否會用到這些代碼。隨著編程工作越來越多,他們會發現自己一遍又一遍地重寫同一段代碼。而如果在編程同時創建一個可複用於其他應用的模塊化子VI,就可以節省大量的開發時間。

如果您知道代碼的特定部分將會重用於同一應用程序,或感覺該部分代碼可能會用於未來的應用程序,那麼您應該花一點時間將該部分代碼變成一個子VI。如果要使某部分代碼成為一個子VI,您需要做的主要是添加一個文檔、使用“接線端”、禁用某些VI屬性。創建子VI的最簡單方法之一是高亮標記程序框圖中的某部分代碼,然後從菜單欄中選擇“編輯>>創建子VI”。這樣這部分代碼就會放到一個單獨的VI,然後使用“接線端”。您仍然需要為圖標添加說明,並將文檔記述添加到程序框圖和VI屬性中,然後取消某些VI設置,但“編輯>>創建子VI”可幫助您很好地瞭解代碼的模塊化功能。

labview組態編程的五大經驗總結,助你開發過程事半功倍


採用正確的LabVIEW代碼模塊化操作可以幫助您節省大量開發時間

代碼模塊化時必須取消的一項設置是“允許調試”。您可在“VI屬性(文件》》VI屬性)”下的“執行”目錄中找到此選項。代碼完全正常運行無需再使用高亮執行等調試功能時,在執行設置中取消“允許調試”,然後再次運行VI。這樣做的好處是由於在編譯過程中進行了優化,應用程序的運行速度可能加快,而且由於啟動調試的代碼被關閉,VI所佔的磁盤物理空間也相應減少了。

04

創建龐大繁瑣的程序框圖

許多新LabVIEW用戶都會把程序框圖編寫得非常繁瑣龐大。對於一些複雜的應用程序,我們難免需要編寫較大的程序框圖,但龐大的程序框圖從一定程度上也可以表明該程序缺乏編程架構。如果沒有一個基本的架構,要長期維護該程序是非常困難的,而且如果以後要添加新功能也會非常困難。正如只有一個好的框架才能建造一棟結構合理的房子,一個好的編程架構可以為您構建應用程序提供了一個安全可靠的框架

幾乎所有的程序員都會發現常見的框架中,軟件架構是非常有用的。實際上LabVIEW中的許多架構,如生產者/消費者和狀態機,與其他編程語言非常相似。

瞭解LabVIEW的架構可以縮短開發時間和提高應用程序的可擴展性。LabVIEW 2012包含了模板和項目範例,使理解架構變得更加容易。模板解釋了不同的架構及應用。項目範例則是基於模板的更大型應用程序,演示瞭如何使用模板來應對實際的挑戰。您可以將硬件加入到範例項目中,或者需要時可將項目範例作為一個整體應用程序,同時項目範例具有開放性且文檔記述也很完整,所以您可針對具體應用進行自定義。

labview組態編程的五大經驗總結,助你開發過程事半功倍


LabVIEW 2012中的模板和項目範例使得理解軟件架構變得非常輕鬆。


05

不重視文檔記錄

優秀的代碼文檔可以有效地幫助他人理解自己寫的程序。遺憾的是,許多程序員通常在開發週期末期功能開發結束之後才開始進行文檔撰寫。這使得用於對代碼進行文檔記錄的時間變得非常少。正確的做法應該是在開發過程中就需抽出時間來開始進行文檔記錄。文檔對於編程人員自身也非常有用,尤其是當他們過段時間回來看代碼卻不記得當初他們為什麼選擇某些代碼時。程序員經常會一邊喝著咖啡,一邊熬夜編程,這往往會出現“短暫失憶”。而文檔則可以幫助程序員進行回憶。

一般情況下,相對於基於文本的程序,LabVIEW的圖形化特性使得程序閱讀更為容易,但是有效的文檔記錄可以減少“解碼”程序所需的時間。添加文檔註釋到程序框圖的最簡單方式是使用自由標籤。您可以在框圖的空白位置雙擊左鍵,並輸入文字,添加註釋。然後,使用箭頭標記來指向自由標籤引用的特定代碼。如果需要添加圖片,則可將它們複製到剪貼板,然後粘貼到程序框圖中。物理系統圖片和數學公式均有助於清晰說明程序框圖內的代碼上下文。

"

雖然NI LabVIEW軟件長期以來一直幫助工程師和科學家們快速開發功能測量和控制應用,但不是所有的新用戶都會遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨特,因為只需看一眼用戶的應用程序,就馬上可以發現用戶是否遵循編碼的最佳方法。有些用戶會犯這些錯誤是因為他們沒有真正理解LabVIEW框圖數據流背後的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質量。

小編辛苦總結了經驗欠缺的LabVIEW程序員最經常犯的一些編程錯誤,同時也提供了採用正確LabVIEW編程方法的建議。

labview組態編程的五大經驗總結,助你開發過程事半功倍


  LabVIEW新手典型“傑作”


01

過度使用平鋪式順序結構

許多LabVIEW新手並不完全瞭解“數據流”執行背後的概念,而這些概念卻是LabVIEW編程的基礎。其中一個現象是用戶往往在程序框圖中過度使用平鋪式順序結構。用戶經常依賴平鋪式順序結構來實現程序框圖的代碼串行執行,而不是使用數據流和節點之間的連線。


labview組態編程的五大經驗總結,助你開發過程事半功倍


 用戶往往過度依賴平鋪式順序結構,而沒有充分理解數據流編程概念。

數據流編程是指只有在所需的數據輸入全部到達時,框圖上的節點(子VI、本原、結構等)才開始執行。這對於使用LabVIEW的程序員來說非常有用,因為獨立的進程本身就可以實現並行運行,而命令式語言卻需要額外的設置才能實行並行執行。

隨著計算機CPU的不斷增多,LabVIEW可自動分解並行流程,提高代碼性能,而無需用戶編寫任何額外代碼。而強行使用平鋪式順序結構來執行程序框圖不僅會限制並行運行,還會喪失這一優勢。限制程序框圖中不必要的結構有助於提高整體可讀性和保持更簡潔的框圖。

錯誤連線可以有效地實現程序框圖上的數據流,而不需要依靠平鋪式順序結構,此外錯誤連線還有助於實現錯誤處理策略。

labview組態編程的五大經驗總結,助你開發過程事半功倍

何時應該使用平鋪式順序結構?

平鋪式順序結構的數據流不同於其他結構的數據流。 所有連線至幀的數據都可用時,平鋪式順序結構的幀按照從左至右的順序執行。 每幀執行完畢後,將數據傳遞至下一幀。 即一個幀的輸入可能取決於另一個幀的輸出。

labview組態編程的五大經驗總結,助你開發過程事半功倍


與層疊式順序結構不同,平鋪式順序結構中不必使用順序局部變量在幀與幀之間傳遞數據。 平鋪式順序結構在程序框圖上顯示每個幀,故無需使用順序局部變量即可完成幀與幀之間的連線,同時也不會隱藏代碼。

在平鋪式順序結構中添加或刪除幀時,結構會自動調整尺寸大小。

不可在平鋪式順序結構的各個幀之間拖曳隧道。

應確立數據依賴或使用流經參數可控VI的數據流,避免過度使用平鋪式順序結構。

(Real-Time, Windows)右鍵單擊平鋪式順序結構,在快捷菜單中選擇替換為定時順序,可將平鋪式順序結構替換為定時順序結構。

通過平鋪式順序結構來執行程序框圖有助於代碼性能的基準測試。通過使用框架內具有時間計數器的順序結構,您可以決定兩個時間計數器之間代碼執行所花費的時間。這是一般數據流執行所無法實現的。

labview組態編程的五大經驗總結,助你開發過程事半功倍


平鋪式順序結構和時間計數器VI有助於代碼的基準測試


02

過度使用局部變量

LabVIEW編程中另一個常見的錯誤是過度使用局部變量。局部變量是共享內存中的一個區域,用於在計算機程序不同部分之間傳遞數據。局域變量通常用於文本編程語言,具有非常強大的功能,但如果出現競爭條件,就會產生問題。

對於其他編程語言來說,通過變量傳遞數據是必需的,而LabVIEW則提供了一種數據流方法,可將數據從程序的一個部分移動到另一個部分。LabVIEW固有的並行性機制決定著用戶不能過度使用變量,因為同一時間內通常會有多個不同的位置的程序訪問共享內存。如果過度使用變量,則會出現某個讀/寫操作贏了“競爭”,而其他操作則輸了“競爭”,丟失數據的操作會被忽視,因此在LabVIEW中過度使用變量可能會最終導致數據丟失。

您可以通過多種方法安全地將數據從LabVIEW程序的一個部分傳遞到另一個部分,包括連線、隊列、事件、通知、功能全局變量等等。每個機制都是針對特定情況設計的,但都具有消除競爭條件的功能。

03

忽略代碼模塊化

通常情況下,新LabVIEW用戶創建的是“即寫即忘”應用程序去完成簡單的任務,而沒有考慮到以後是否會用到這些代碼。隨著編程工作越來越多,他們會發現自己一遍又一遍地重寫同一段代碼。而如果在編程同時創建一個可複用於其他應用的模塊化子VI,就可以節省大量的開發時間。

如果您知道代碼的特定部分將會重用於同一應用程序,或感覺該部分代碼可能會用於未來的應用程序,那麼您應該花一點時間將該部分代碼變成一個子VI。如果要使某部分代碼成為一個子VI,您需要做的主要是添加一個文檔、使用“接線端”、禁用某些VI屬性。創建子VI的最簡單方法之一是高亮標記程序框圖中的某部分代碼,然後從菜單欄中選擇“編輯>>創建子VI”。這樣這部分代碼就會放到一個單獨的VI,然後使用“接線端”。您仍然需要為圖標添加說明,並將文檔記述添加到程序框圖和VI屬性中,然後取消某些VI設置,但“編輯>>創建子VI”可幫助您很好地瞭解代碼的模塊化功能。

labview組態編程的五大經驗總結,助你開發過程事半功倍


採用正確的LabVIEW代碼模塊化操作可以幫助您節省大量開發時間

代碼模塊化時必須取消的一項設置是“允許調試”。您可在“VI屬性(文件》》VI屬性)”下的“執行”目錄中找到此選項。代碼完全正常運行無需再使用高亮執行等調試功能時,在執行設置中取消“允許調試”,然後再次運行VI。這樣做的好處是由於在編譯過程中進行了優化,應用程序的運行速度可能加快,而且由於啟動調試的代碼被關閉,VI所佔的磁盤物理空間也相應減少了。

04

創建龐大繁瑣的程序框圖

許多新LabVIEW用戶都會把程序框圖編寫得非常繁瑣龐大。對於一些複雜的應用程序,我們難免需要編寫較大的程序框圖,但龐大的程序框圖從一定程度上也可以表明該程序缺乏編程架構。如果沒有一個基本的架構,要長期維護該程序是非常困難的,而且如果以後要添加新功能也會非常困難。正如只有一個好的框架才能建造一棟結構合理的房子,一個好的編程架構可以為您構建應用程序提供了一個安全可靠的框架

幾乎所有的程序員都會發現常見的框架中,軟件架構是非常有用的。實際上LabVIEW中的許多架構,如生產者/消費者和狀態機,與其他編程語言非常相似。

瞭解LabVIEW的架構可以縮短開發時間和提高應用程序的可擴展性。LabVIEW 2012包含了模板和項目範例,使理解架構變得更加容易。模板解釋了不同的架構及應用。項目範例則是基於模板的更大型應用程序,演示瞭如何使用模板來應對實際的挑戰。您可以將硬件加入到範例項目中,或者需要時可將項目範例作為一個整體應用程序,同時項目範例具有開放性且文檔記述也很完整,所以您可針對具體應用進行自定義。

labview組態編程的五大經驗總結,助你開發過程事半功倍


LabVIEW 2012中的模板和項目範例使得理解軟件架構變得非常輕鬆。


05

不重視文檔記錄

優秀的代碼文檔可以有效地幫助他人理解自己寫的程序。遺憾的是,許多程序員通常在開發週期末期功能開發結束之後才開始進行文檔撰寫。這使得用於對代碼進行文檔記錄的時間變得非常少。正確的做法應該是在開發過程中就需抽出時間來開始進行文檔記錄。文檔對於編程人員自身也非常有用,尤其是當他們過段時間回來看代碼卻不記得當初他們為什麼選擇某些代碼時。程序員經常會一邊喝著咖啡,一邊熬夜編程,這往往會出現“短暫失憶”。而文檔則可以幫助程序員進行回憶。

一般情況下,相對於基於文本的程序,LabVIEW的圖形化特性使得程序閱讀更為容易,但是有效的文檔記錄可以減少“解碼”程序所需的時間。添加文檔註釋到程序框圖的最簡單方式是使用自由標籤。您可以在框圖的空白位置雙擊左鍵,並輸入文字,添加註釋。然後,使用箭頭標記來指向自由標籤引用的特定代碼。如果需要添加圖片,則可將它們複製到剪貼板,然後粘貼到程序框圖中。物理系統圖片和數學公式均有助於清晰說明程序框圖內的代碼上下文。

labview組態編程的五大經驗總結,助你開發過程事半功倍


架構正確且文檔記錄充分的代碼不僅可幫助其他人理解您的代碼,也可幫助您更好地理解自己的代碼。

對代碼進行文檔記錄不僅只是針對複用程序庫,而應該是針對每一個程序。當一個人需要為其他人講解時,他對該主題將會有更深刻的理解。文檔記錄從本質上看就是在迫使程序員進行講解,以幫助他們更好地瞭解自己的代碼。

"

相關推薦

推薦中...