0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LabVIEW編程還可以這么簡(jiǎn)單?五大總結(jié)助你事半功倍!

lPCU_elecfans ? 來(lái)源:lq ? 2019-05-05 14:02 ? 次閱讀

雖然NI LabVIEW軟件長(zhǎng)期以來(lái)一直幫助工程師和科學(xué)家們快速開(kāi)發(fā)功能測(cè)量和控制應(yīng)用,但不是所有的新用戶(hù)都會(huì)遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨(dú)特,因?yàn)橹恍杩匆谎塾脩?hù)的應(yīng)用程序,就馬上可以發(fā)現(xiàn)用戶(hù)是否遵循編碼的最佳方法。有些用戶(hù)會(huì)犯這些錯(cuò)誤是因?yàn)樗麄儧](méi)有真正理解LabVIEW框圖數(shù)據(jù)流背后的原理,而有些用戶(hù)則是不知道哪些特性可提高LabVIEW編程質(zhì)量。

小編辛苦總結(jié)了經(jīng)驗(yàn)欠缺的LabVIEW程序員最經(jīng)常犯的一些編程錯(cuò)誤,同時(shí)也提供了采用正確LabVIEW編程方法的建議。

LabVIEW新手典型“杰作”

01過(guò)度使用平鋪式順序結(jié)構(gòu)

許多LabVIEW新手并不完全了解“數(shù)據(jù)流”執(zhí)行背后的概念,而這些概念卻是LabVIEW編程的基礎(chǔ)。其中一個(gè)現(xiàn)象是用戶(hù)往往在程序框圖中過(guò)度使用平鋪式順序結(jié)構(gòu)。用戶(hù)經(jīng)常依賴(lài)平鋪式順序結(jié)構(gòu)來(lái)實(shí)現(xiàn)程序框圖的代碼串行執(zhí)行,而不是使用數(shù)據(jù)流和節(jié)點(diǎn)之間的連線。

用戶(hù)往往過(guò)度依賴(lài)平鋪式順序結(jié)構(gòu),而沒(méi)有充分理解數(shù)據(jù)流編程概念。

數(shù)據(jù)流編程是指只有在所需的數(shù)據(jù)輸入全部到達(dá)時(shí),框圖上的節(jié)點(diǎn)(子VI、本原、結(jié)構(gòu)等)才開(kāi)始執(zhí)行。這對(duì)于使用LabVIEW的程序員來(lái)說(shuō)非常有用,因?yàn)楠?dú)立的進(jìn)程本身就可以實(shí)現(xiàn)并行運(yùn)行,而命令式語(yǔ)言卻需要額外的設(shè)置才能實(shí)行并行執(zhí)行。

隨著計(jì)算機(jī)CPU的不斷增多,LabVIEW可自動(dòng)分解并行流程,提高代碼性能,而無(wú)需用戶(hù)編寫(xiě)任何額外代碼。而強(qiáng)行使用平鋪式順序結(jié)構(gòu)來(lái)執(zhí)行程序框圖不僅會(huì)限制并行運(yùn)行,還會(huì)喪失這一優(yōu)勢(shì)。限制程序框圖中不必要的結(jié)構(gòu)有助于提高整體可讀性和保持更簡(jiǎn)潔的框圖。

錯(cuò)誤連線可以有效地實(shí)現(xiàn)程序框圖上的數(shù)據(jù)流,而不需要依靠平鋪式順序結(jié)構(gòu),此外錯(cuò)誤連線還有助于實(shí)現(xiàn)錯(cuò)誤處理策略。

何時(shí)應(yīng)該使用平鋪式順序結(jié)構(gòu)?

平鋪式順序結(jié)構(gòu)的數(shù)據(jù)流不同于其他結(jié)構(gòu)的數(shù)據(jù)流。 所有連線至幀的數(shù)據(jù)都可用時(shí),平鋪式順序結(jié)構(gòu)的幀按照從左至右的順序執(zhí)行。 每幀執(zhí)行完畢后,將數(shù)據(jù)傳遞至下一幀。 即一個(gè)幀的輸入可能取決于另一個(gè)幀的輸出。

與層疊式順序結(jié)構(gòu)不同,平鋪式順序結(jié)構(gòu)中不必使用順序局部變量在幀與幀之間傳遞數(shù)據(jù)。 平鋪式順序結(jié)構(gòu)在程序框圖上顯示每個(gè)幀,故無(wú)需使用順序局部變量即可完成幀與幀之間的連線,同時(shí)也不會(huì)隱藏代碼。

在平鋪式順序結(jié)構(gòu)中添加或刪除幀時(shí),結(jié)構(gòu)會(huì)自動(dòng)調(diào)整尺寸大小。

不可在平鋪式順序結(jié)構(gòu)的各個(gè)幀之間拖曳隧道。

應(yīng)確立數(shù)據(jù)依賴(lài)或使用流經(jīng)參數(shù)可控VI的數(shù)據(jù)流,避免過(guò)度使用平鋪式順序結(jié)構(gòu)。

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

通過(guò)平鋪式順序結(jié)構(gòu)來(lái)執(zhí)行程序框圖有助于代碼性能的基準(zhǔn)測(cè)試。通過(guò)使用框架內(nèi)具有時(shí)間計(jì)數(shù)器的順序結(jié)構(gòu),您可以決定兩個(gè)時(shí)間計(jì)數(shù)器之間代碼執(zhí)行所花費(fèi)的時(shí)間。這是一般數(shù)據(jù)流執(zhí)行所無(wú)法實(shí)現(xiàn)的。

平鋪式順序結(jié)構(gòu)和時(shí)間計(jì)數(shù)器VI有助于代碼的基準(zhǔn)測(cè)試

02過(guò)度使用局部變量

LabVIEW編程中另一個(gè)常見(jiàn)的錯(cuò)誤是過(guò)度使用局部變量。局部變量是共享內(nèi)存中的一個(gè)區(qū)域,用于在計(jì)算機(jī)程序不同部分之間傳遞數(shù)據(jù)。局域變量通常用于文本編程語(yǔ)言,具有非常強(qiáng)大的功能,但如果出現(xiàn)競(jìng)爭(zhēng)條件,就會(huì)產(chǎn)生問(wèn)題。

對(duì)于其他編程語(yǔ)言來(lái)說(shuō),通過(guò)變量傳遞數(shù)據(jù)是必需的,而LabVIEW則提供了一種數(shù)據(jù)流方法,可將數(shù)據(jù)從程序的一個(gè)部分移動(dòng)到另一個(gè)部分。LabVIEW固有的并行性機(jī)制決定著用戶(hù)不能過(guò)度使用變量,因?yàn)橥粫r(shí)間內(nèi)通常會(huì)有多個(gè)不同的位置的程序訪問(wèn)共享內(nèi)存。如果過(guò)度使用變量,則會(huì)出現(xiàn)某個(gè)讀/寫(xiě)操作贏了“競(jìng)爭(zhēng)”,而其他操作則輸了“競(jìng)爭(zhēng)”,丟失數(shù)據(jù)的操作會(huì)被忽視,因此在LabVIEW中過(guò)度使用變量可能會(huì)最終導(dǎo)致數(shù)據(jù)丟失。

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

03忽略代碼模塊化

通常情況下,新LabVIEW用戶(hù)創(chuàng)建的是“即寫(xiě)即忘”應(yīng)用程序去完成簡(jiǎn)單的任務(wù),而沒(méi)有考慮到以后是否會(huì)用到這些代碼。隨著編程工作越來(lái)越多,他們會(huì)發(fā)現(xiàn)自己一遍又一遍地重寫(xiě)同一段代碼。而如果在編程同時(shí)創(chuàng)建一個(gè)可復(fù)用于其他應(yīng)用的模塊化子VI,就可以節(jié)省大量的開(kāi)發(fā)時(shí)間。

如果您知道代碼的特定部分將會(huì)重用于同一應(yīng)用程序,或感覺(jué)該部分代碼可能會(huì)用于未來(lái)的應(yīng)用程序,那么您應(yīng)該花一點(diǎn)時(shí)間將該部分代碼變成一個(gè)子VI。如果要使某部分代碼成為一個(gè)子VI,您需要做的主要是添加一個(gè)文檔、使用“接線端”、禁用某些VI屬性。創(chuàng)建子VI的最簡(jiǎn)單方法之一是高亮標(biāo)記程序框圖中的某部分代碼,然后從菜單欄中選擇“編輯>>創(chuàng)建子VI”。這樣這部分代碼就會(huì)放到一個(gè)單獨(dú)的VI,然后使用“接線端”。您仍然需要為圖標(biāo)添加說(shuō)明,并將文檔記述添加到程序框圖和VI屬性中,然后取消某些VI設(shè)置,但“編輯>>創(chuàng)建子VI”可幫助您很好地了解代碼的模塊化功能。

采用正確的LabVIEW代碼模塊化操作可以幫助您節(jié)省大量開(kāi)發(fā)時(shí)間

代碼模塊化時(shí)必須取消的一項(xiàng)設(shè)置是“允許調(diào)試”。您可在“VI屬性(文件》》VI屬性)”下的“執(zhí)行”目錄中找到此選項(xiàng)。代碼完全正常運(yùn)行無(wú)需再使用高亮執(zhí)行等調(diào)試功能時(shí),在執(zhí)行設(shè)置中取消“允許調(diào)試”,然后再次運(yùn)行VI。這樣做的好處是由于在編譯過(guò)程中進(jìn)行了優(yōu)化,應(yīng)用程序的運(yùn)行速度可能加快,而且由于啟動(dòng)調(diào)試的代碼被關(guān)閉,VI所占的磁盤(pán)物理空間也相應(yīng)減少了。

04創(chuàng)建龐大繁瑣的程序框圖

許多新LabVIEW用戶(hù)都會(huì)把程序框圖編寫(xiě)得非常繁瑣龐大。對(duì)于一些復(fù)雜的應(yīng)用程序,我們難免需要編寫(xiě)較大的程序框圖,但龐大的程序框圖從一定程度上也可以表明該程序缺乏編程架構(gòu)。如果沒(méi)有一個(gè)基本的架構(gòu),要長(zhǎng)期維護(hù)該程序是非常困難的,而且如果以后要添加新功能也會(huì)非常困難。正如只有一個(gè)好的框架才能建造一棟結(jié)構(gòu)合理的房子,一個(gè)好的編程架構(gòu)可以為您構(gòu)建應(yīng)用程序提供了一個(gè)安全可靠的框架。

幾乎所有的程序員都會(huì)發(fā)現(xiàn)常見(jiàn)的框架中,軟件架構(gòu)是非常有用的。實(shí)際上LabVIEW中的許多架構(gòu),如生產(chǎn)者/消費(fèi)者和狀態(tài)機(jī),與其他編程語(yǔ)言非常相似。

了解LabVIEW的架構(gòu)可以縮短開(kāi)發(fā)時(shí)間和提高應(yīng)用程序的可擴(kuò)展性。LabVIEW 2012包含了模板和項(xiàng)目范例,使理解架構(gòu)變得更加容易。模板解釋了不同的架構(gòu)及應(yīng)用。項(xiàng)目范例則是基于模板的更大型應(yīng)用程序,演示了如何使用模板來(lái)應(yīng)對(duì)實(shí)際的挑戰(zhàn)。您可以將硬件加入到范例項(xiàng)目中,或者需要時(shí)可將項(xiàng)目范例作為一個(gè)整體應(yīng)用程序,同時(shí)項(xiàng)目范例具有開(kāi)放性且文檔記述也很完整,所以您可針對(duì)具體應(yīng)用進(jìn)行自定義。

LabVIEW 2012中的模板和項(xiàng)目范例使得理解軟件架構(gòu)變得非常輕松。

05不重視文檔記錄

優(yōu)秀的代碼文檔可以有效地幫助他人理解自己寫(xiě)的程序。遺憾的是,許多程序員通常在開(kāi)發(fā)周期末期功能開(kāi)發(fā)結(jié)束之后才開(kāi)始進(jìn)行文檔撰寫(xiě)。這使得用于對(duì)代碼進(jìn)行文檔記錄的時(shí)間變得非常少。正確的做法應(yīng)該是在開(kāi)發(fā)過(guò)程中就需抽出時(shí)間來(lái)開(kāi)始進(jìn)行文檔記錄。文檔對(duì)于編程人員自身也非常有用,尤其是當(dāng)他們過(guò)段時(shí)間回來(lái)看代碼卻不記得當(dāng)初他們?yōu)槭裁催x擇某些代碼時(shí)。程序員經(jīng)常會(huì)一邊喝著咖啡,一邊熬夜編程,這往往會(huì)出現(xiàn)“短暫失憶”。而文檔則可以幫助程序員進(jìn)行回憶。

一般情況下,相對(duì)于基于文本的程序,LabVIEW的圖形化特性使得程序閱讀更為容易,但是有效的文檔記錄可以減少“解碼”程序所需的時(shí)間。添加文檔注釋到程序框圖的最簡(jiǎn)單方式是使用自由標(biāo)簽。您可以在框圖的空白位置雙擊左鍵,并輸入文字,添加注釋。然后,使用箭頭標(biāo)記來(lái)指向自由標(biāo)簽引用的特定代碼。如果需要添加圖片,則可將它們復(fù)制到剪貼板,然后粘貼到程序框圖中。物理系統(tǒng)圖片和數(shù)學(xué)公式均有助于清晰說(shuō)明程序框圖內(nèi)的代碼上下文。

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

對(duì)代碼進(jìn)行文檔記錄不僅只是針對(duì)復(fù)用程序庫(kù),而應(yīng)該是針對(duì)每一個(gè)程序。當(dāng)一個(gè)人需要為其他人講解時(shí),他對(duì)該主題將會(huì)有更深刻的理解。文檔記錄從本質(zhì)上看就是在迫使程序員進(jìn)行講解,以幫助他們更好地了解自己的代碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • LabVIEW
    +關(guān)注

    關(guān)注

    1971

    文章

    3654

    瀏覽量

    323883
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2256

    瀏覽量

    94613
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4790

    瀏覽量

    68654

原文標(biāo)題:LabVIEW編程還可以這么簡(jiǎn)單?五大總結(jié)助你事半功倍!

文章出處:【微信號(hào):elecfans,微信公眾號(hào):電子發(fā)燒友網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    2011年沙特吉達(dá)五大行業(yè)展|沙特建材展|吉達(dá)建材展|五大行業(yè)展|

    2011 沙特big 5 五大行業(yè)展(北京邁斯百特)展會(huì)時(shí)間:2011年02月27日—03月02日   展會(huì)地點(diǎn):沙特吉達(dá)國(guó)際會(huì)展中心 &
    發(fā)表于 07-05 17:09

    labview我來(lái)告訴你】labview編程可以簡(jiǎn)單

    ,并且功能齊全,他表示愿意打賭然后晚飯我吃上了香噴噴的刀削面——本來(lái)打賭的是一頓川菜是的,沒(méi)有復(fù)雜的引用,沒(méi)有方法節(jié)點(diǎn),沒(méi)有子VI,甚至沒(méi)有event結(jié)構(gòu),連case結(jié)構(gòu)都只使用最基本的功能……因?yàn)樵?b class='flag-5'>LabVIEW,編程其實(shí)可以
    發(fā)表于 11-11 14:17

    降低測(cè)量噪聲的五大技巧

    降低測(cè)量噪聲的五大技巧…………
    發(fā)表于 07-12 15:06

    五大經(jīng)典開(kāi)關(guān)電源結(jié)構(gòu)的優(yōu)點(diǎn)與缺點(diǎn)(資料下載)

    ://t.elecfans.com/topic/65.html?elecfans_trackid=t***cy 反激式、正激式、推挽式、半橋式、全橋式是開(kāi)關(guān)電源的五大經(jīng)典結(jié)構(gòu),是學(xué)習(xí)開(kāi)關(guān)電源必須了解的知識(shí),這里整理了這五大經(jīng)典結(jié)構(gòu)的優(yōu)點(diǎn)與缺點(diǎn),需要的朋友
    發(fā)表于 01-25 17:58

    使用Labview時(shí)易犯的五大錯(cuò)誤

    的應(yīng)用程序,就馬上可以發(fā)現(xiàn)用戶(hù)是否遵循編碼的最佳方法。有些用戶(hù)會(huì)犯這些錯(cuò)誤是因?yàn)樗麄儧](méi)有真正理解LabVIEW框圖數(shù)據(jù)流背后的原理,而有些用戶(hù)則是不知道哪些特性可提高LabVIEW編程
    發(fā)表于 07-02 09:00

    使用信號(hào)分析儀器進(jìn)行功率測(cè)量過(guò)程的五大注意事項(xiàng)總結(jié)

    的信號(hào)分析儀,依然常常導(dǎo)致測(cè)試結(jié)果產(chǎn)生較大的測(cè)量誤差甚至得到錯(cuò)誤的結(jié)果。本文針對(duì)使用信號(hào)分析儀器進(jìn)行功率測(cè)量過(guò)程中總結(jié)五大注意事項(xiàng)。
    發(fā)表于 07-17 07:25

    STM32五大時(shí)鐘源有何關(guān)系

    目錄STM32時(shí)鐘系統(tǒng)時(shí)鐘系統(tǒng)框圖時(shí)鐘系統(tǒng)總結(jié)PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之間的關(guān)系五大時(shí)鐘源簡(jiǎn)要概述系統(tǒng)時(shí)鐘源APB1&ABP2總線對(duì)應(yīng)的設(shè)備與時(shí)鐘
    發(fā)表于 08-02 07:37

    提高測(cè)量精度的五大技巧-labview視頻教程

    提高測(cè)量精度的五大技巧-labview視頻教程
    發(fā)表于 03-26 16:35 ?128次下載
    提高測(cè)量精度的<b class='flag-5'>五大</b>技巧-<b class='flag-5'>labview</b>視頻教程

    2012醫(yī)療設(shè)備五大趨勢(shì)

    Elly Earls調(diào)查了新出臺(tái)的法律、可持續(xù)性問(wèn)題、壓縮預(yù)算的創(chuàng)造性運(yùn)用,總結(jié)出醫(yī)療行業(yè)明年影響力最大的五大趨勢(shì)。
    發(fā)表于 12-14 09:24 ?1050次閱讀

    展望2013:DRAM產(chǎn)業(yè)五大重點(diǎn)趨勢(shì)預(yù)測(cè)

    總結(jié)2012年DRAM市場(chǎng)動(dòng)態(tài)并展望2013年,TrendForce提出新的一年DRAM市場(chǎng)值得持續(xù)關(guān)注的五大重點(diǎn)趨勢(shì)
    發(fā)表于 01-10 11:30 ?1233次閱讀

    Labview編程舉例

    簡(jiǎn)單易懂的labview編程實(shí)例 適合Labview的新手教程
    發(fā)表于 12-22 14:38 ?0次下載

    LabVIEW編程技巧

    LabVIEW編程技巧LabVIEW編程技巧LabVIEW編程技巧
    發(fā)表于 02-23 16:59 ?151次下載

    LabVIEW編程的實(shí)用技巧系列(5)

    LabVIEW編程的實(shí)用技巧系列第講視頻教程
    的頭像 發(fā)表于 06-25 12:11 ?2206次閱讀
    <b class='flag-5'>LabVIEW</b><b class='flag-5'>編程</b>的實(shí)用技巧系列(5)

    Labview數(shù)據(jù)流編程簡(jiǎn)單介紹

    Labview數(shù)據(jù)流編程基本概念視頻教學(xué)
    的頭像 發(fā)表于 08-05 06:05 ?4054次閱讀

    LabVIEW的ActiveX實(shí)驗(yàn)總結(jié)

    LabVIEW的ActiveX實(shí)驗(yàn)總結(jié)(電源技術(shù)期刊投稿寫(xiě)錯(cuò)作者)-該文檔為LabVIEW的ActiveX實(shí)驗(yàn)總結(jié)文檔,是一份很不錯(cuò)的參考資料,具有較高參考價(jià)值,感興趣的
    發(fā)表于 08-04 18:58 ?43次下載
    <b class='flag-5'>LabVIEW</b>的ActiveX實(shí)驗(yàn)<b class='flag-5'>總結(jié)</b>