RM新时代网站-首页

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

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

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

盤點(diǎn)LabVIEW新手5大容易犯的錯誤

lPCU_elecfans ? 來源:fqj ? 2019-05-17 17:43 ? 次閱讀

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

本文介紹了經(jīng)驗(yàn)欠缺的LabVIEW程序員最經(jīng)常犯的一些編程錯誤,同時也提供了采用正確LabVIEW編程方法的建議。

盤點(diǎn)LabVIEW新手5大容易犯的錯誤

圖 1. LabVIEW新手典型“杰作”

錯誤一:過度使用平鋪式順序結(jié)構(gòu)

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

(1)數(shù)據(jù)流編程是指只有在所需的數(shù)據(jù)輸入全部到達(dá)時,框圖上的節(jié)點(diǎn)(子VI、本原、結(jié)構(gòu)等)才開始執(zhí)行。 這對于使用LabVIEW的程序員來說非常有用,因?yàn)楠?dú)立的進(jìn)程本身就可以實(shí)現(xiàn)并行運(yùn)行,而命令式語言卻需要額外的設(shè)置才能實(shí)行并行執(zhí)行。隨著計(jì)算機(jī)CPU的不斷增多,LabVIEW可自動分解并行流程,提高代碼性能,而無需用戶編寫任何額外代碼。而強(qiáng)行使用平鋪式順序結(jié)構(gòu)來執(zhí)行程序框圖不僅會限制并行運(yùn)行,還會喪失這一優(yōu)勢。限制程序框圖中不必要的結(jié)構(gòu)有助于提高整體可讀性和保持更簡潔的框圖。

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

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

錯誤二:錯誤使用局部變量

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

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

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

錯誤三:忽略代碼模塊化

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

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

盤點(diǎn)LabVIEW新手5大容易犯的錯誤

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

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

錯誤四:創(chuàng)建龐大繁瑣的程序框圖

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

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

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

盤點(diǎn)LabVIEW新手5大容易犯的錯誤

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

錯誤5:不重視文檔記錄

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

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

盤點(diǎn)LabVIEW新手5大容易犯的錯誤

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

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

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

    關(guān)注

    1970

    文章

    3654

    瀏覽量

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

    關(guān)注

    30

    文章

    4779

    瀏覽量

    68519

原文標(biāo)題:LabVIEW新手5大錯誤,你中了幾條?

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

收藏 人收藏

    評論

    相關(guān)推薦

    LabVIEW新手容易5錯誤

    雖然NILabVIEW軟件長期以來一直幫助工程師和科學(xué)家們快速開發(fā)功能測量和控制應(yīng)用,但不是所有的新用戶都會
    的頭像 發(fā)表于 06-06 17:13 ?8801次閱讀
    <b class='flag-5'>LabVIEW</b><b class='flag-5'>新手</b><b class='flag-5'>容易</b><b class='flag-5'>犯</b>的<b class='flag-5'>5</b>大<b class='flag-5'>錯誤</b>

    不得不看的LabVIEW新手5錯誤

    的應(yīng)用程序,就馬上可以發(fā)現(xiàn)用戶是否遵循編碼的最佳方法。有些用戶會這些錯誤是因?yàn)樗麄儧]有真正理解LabVIEW框圖數(shù)據(jù)流背后的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程
    發(fā)表于 09-06 17:41 ?1.6w次閱讀
    不得不看的<b class='flag-5'>LabVIEW</b><b class='flag-5'>新手</b><b class='flag-5'>5</b>大<b class='flag-5'>錯誤</b>

    LabVIEW新手5錯誤

    ,就馬上可以發(fā)現(xiàn)用戶是否遵循編碼的最佳方法。有些用戶會這些錯誤是因?yàn)樗麄儧]有真正理解LabVIEW框圖數(shù)據(jù)流背后的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質(zhì)量。本文
    發(fā)表于 01-17 09:37

    快來避雷!盤點(diǎn)那些新手容易LabVIEW編程錯誤

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

    使用Labview時易的五大錯誤

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

    PICC使用中初學(xué)者容易得兩個錯誤匯總

    PICC使用中初學(xué)者容易得兩個錯誤我是初次使用PIC單片機(jī),對PICC的編程規(guī)范不了解,在編譯程序時老是出問題?,F(xiàn)在介紹兩個最常見的問題給大家,看看有沒有和我遇到一樣問題的。錯誤1:
    發(fā)表于 11-24 07:50

    參展商較容易錯誤

    參展商較容易錯誤 展覽前    1、 參展目的不明確,參展目的是整個展覽會中心。明確您在展覽會的最終目
    發(fā)表于 11-18 15:38 ?676次閱讀

    晶振布線易錯誤預(yù)防

    晶振布線易錯誤預(yù)防 問題是這樣的,板子上面RF信號解碼的時候出錯了,始終無法正確響應(yīng)RF信號線。
    發(fā)表于 11-21 13:59 ?1686次閱讀

    Labview新手容易的編程錯誤

    新手機(jī)后另一個疑問。紫米亦看準(zhǔn)這個機(jī)會在2018年1月時于京東眾籌推出了紫米第一款無線充電器“ZMI無線充電器套裝版——WTX10”,用戶呼聲熱烈,眾籌達(dá)成率高達(dá)610%眾籌金額達(dá)到60萬之多,順利完成眾籌出貨,小編已經(jīng)拿到這款產(chǎn)品,接下來會進(jìn)行開箱拆解,看看里面用的是什么方案做工怎樣。
    發(fā)表于 04-11 15:38 ?7389次閱讀
    <b class='flag-5'>Labview</b><b class='flag-5'>新手</b>最<b class='flag-5'>容易</b><b class='flag-5'>犯</b>的編程<b class='flag-5'>錯誤</b>

    PLC編程時最易的低級錯誤總結(jié)

    在編制PLC程序時,不管是新手還是老手,都會犯下這種低級錯誤。
    的頭像 發(fā)表于 11-06 15:39 ?4232次閱讀
    PLC編程時最易<b class='flag-5'>犯</b>的低級<b class='flag-5'>錯誤</b>總結(jié)

    PLC編程時最容易的低級錯誤匯總

    在編制PLC程序時,不管是新手還是老手,都會犯下這種低級錯誤。因?yàn)檫@種錯誤是非語法上的,所以用編程軟件也不能檢查出錯誤之處。
    的頭像 發(fā)表于 11-09 15:13 ?5559次閱讀

    幾種PCB設(shè)計(jì)中容易錯誤

    關(guān)于AD軟件,我已經(jīng)從工程師和朋友那里學(xué)到了一種人們喜愛和討厭的軟件。一些工程師并不是特別富有PCB設(shè)計(jì),他們不了解軟件的某些參數(shù)和選項(xiàng),或者對PCB處理過程不是很清楚。存在各種問題,或者PCB板工廠根據(jù)傳統(tǒng)方法處理數(shù)據(jù)。無法理解設(shè)計(jì)意圖。讓我們來看看一些容易
    的頭像 發(fā)表于 07-31 16:11 ?1926次閱讀

    iOS使用containsObject容易錯誤

    基于以上的需求,很容易想到使用NSArray的containsObject方法。
    的頭像 發(fā)表于 11-11 16:30 ?2168次閱讀

    哪些錯誤PLC新手容易?

    PLC新手在使用和編程PLC時容易以下一些常見錯誤: (1)電氣接線錯誤:PLC的輸入和輸出需要正確地與外部設(shè)備進(jìn)行連接。
    的頭像 發(fā)表于 10-11 17:10 ?929次閱讀

    C++新手容易的十個編程錯誤

    簡單的總結(jié)一下?C++ 新手容易的一些編程錯誤,給新人們提供一個參考。 1 有些關(guān)鍵字在 cpp 文件中多寫了 對于 C++ 類,一些關(guān)鍵字只要寫在 .h 中就好,cpp 中就不用再
    的頭像 發(fā)表于 11-15 12:42 ?309次閱讀
    RM新时代网站-首页