電子發燒友網 > 醫療電子 > 正文

干貨!LabVIEW編程中,一定要記住這些實用技巧,打怪升級就靠它了!

2019年06月27日 11:43 ? 次閱讀

以下是一位工程師朋友分享的在使用LabVIEW進行編程的過程中,遇到的一些問題以及從中得到的心得體會,在這里分享給大家,希望對大家學習LabVIEW有所幫助。

常見錯誤及解決方法

Q1:一開始拿到題目,一無所知,對于系統的每一個部分,我們都不了解,不知如何下手。

這是我們組面對的最首要問題,往往這個問題是大多數人在學習一項新知識時必有的困惑,而解決問題的方法卻是我們必要掌握的,要經歷鍛煉的。通常我會瀏覽官方論壇,查看NI工程師及其他人的技術文檔,最后發現LabVIEW中有很多經典的范例,非常適合在有課題需要的時候學習掌握,最后在此基礎上進行修改。

一方面,范例中都一定是可以運行的正確的程序,還會在關鍵部分有注釋;另一方面,官方往往提供的都是基礎的范例,比較適合初學者掌握學習,進行深度挖掘和改造。在我做地圖調用的時候,我在官方的網站上down到了一個外國人調用google地圖的example,受益匪淺。做工程的人,很多時候并不需要從最原始的東西開始研究,要懂得站在巨人的肩膀上眺望地平面。

Q2:字符串轉換數值時,無法轉換浮點小數。

需要用“分數/指數至字符串轉換” 函數,該控件可從偏移量位置開始,使字符串中的下列字符:0-9、加號、減號、e、E、小數點(通常是句點)解析為工程、科學或分數格式的浮點數,通過數字返回。

Q3:串口傳輸數據并用波形圖顯示時,波形圖無法實時顯示連續的波形,每個數據都會掉到0再上升。

需要用到反饋節點,連接“數組插入”的n維數組腳和輸出數組腳。

Q4:我們在做大作業的時候,因為控件較多,功能較復雜,當一個vi文件中出現多個while循環時,會出現有的部分程序始終不運行的情況。

只有當其中一個while循環中止后才會進入另一個while循環巡行。如果子vi中的循環不能退出,子vi節點就一直在運行。對于LabVIEW的數據流編程機制來講,一個節點沒有執行完,它的所有輸出端口就不會有有效數據輸出。解決方法:一是把子vi中的循環提出到主vi里來。二是使用全局變量,并在主vi中使用并行循環來控制子vi的結束。

Labview編程的主要特點是數據流形式,這便于VI大量的按照并行方式運行,優化了程序的計算性能。即使是這樣,當出現循環結構時,也會出現部分程序不運行的情況。因為運行條件是輸入是循環結構中的某部分局部變量。

Q5:當while循環函數內部含有for循環函數時,無法操作停止控件時while循環停止

如果停止控件放在for循環函數外while函數內,當for循環沒有結束時,點擊停止是無法使事件停止運行的。因為此時for循環沒有結束,即使改變了停止控件的當前狀態,它仍然不起作用。只用將停止控件放入for循環中,從for循環引出來連接到停止while循環的循環條件,才能有效停止。

Q6:使用串口時發生如下錯誤Unable to open session to “ASRL1::INSTR”

其他軟件占用了串口,需要關閉其他應用程序。

Q7:每次使用時CPU占用過高,電腦卡著不能動。

循環里沒有加延時。

Q8:調試GPS部分,創建數組為輸入控件時,需要將數組賦特定的初值,發現每次關閉再打開vi文件時,數組中的內容會清空。

數組為輸入控件時,每次打開vi文件都會初始化各個控件,在初始狀態下,輸入控件的值都會賦0,只有將要賦的定值設置為默認值,才會保留輸入控件中想保留的數據,防止關閉軟件造成的賦定值消失,不方便調試。

通過文件或注冊表方式先把控件當前值存下來,再下次打開時再從文件或注冊表把值讀回來。使用VI Server技術在保存控件當前值為默認值,但這種方法只能處于編輯狀態使用,在生成exe文件后不能使用。

Q9:當程序框圖中程序很多,有的部分可以并行運行,有的部分可以順序運行,如果將這些都放在一個while循環會出現無關的延遲。

建議使用順序結構,按順序結構來規定某些程序的執行順序,這樣不存在競爭。而把初始部分程序放在while循環外,特別是當初始程序中要調用比較復雜的引用時,比如3D模型的調用和初始化。

學習心得

隧道、移位寄存器、循環隧道、自動索引隧道的關系

隧道——局部變量,隧道相當于每次進來循環體之后把循環體外的值賦予循環體內的局部變量,所以不管循環體內執行幾次,其結果也等同于只執行了一次。

移位寄存器——靜態局部變量,每一次在循環體內執行,都會把右邊移位寄存器出口的值用作左邊入口的值,所以移位寄存器的值能一直保留。移位寄存器的特殊之處在于在循環結構兩端的接線端是強制使用同一內存的。

因此,上一次迭代執行產生的某一值,傳給移位寄存器右側的接線端,如果下一次迭代運行需要用到這個數據,從移位寄存器左側的接線端引出就可以了。

循環隧道——while默認下的隧道,數據傳入傳出的值不發生變化,是循環后的最后一直數

自動索引隧道——for循環默認下的隧道,隧道在循環內一側會自動取出數組的元素,依順序每次循環取出一個元素。用索引隧道傳出數據,可以自動把循環內的數據組織成數組,最后輸出的是一個數組的形式。

有的控件的參數可以為多個,比如0、1、2,且代表不同的意思。如何使用常量定義,使得它們有名字。

鼠標移動到相應引腳,點擊創建常量,即可使用該方法下所有的類型,更加方便快捷。

還可以通過制作自定義類型的方法。

在使用簇時,總是出現數據連接類型錯誤。

這是因為簇中順序可能與連接后端的順序不一致,導致數據連接錯誤。

為了避免簇中用可能出現的錯誤,以及讓簇應用起來更方便,使用簇最好遵循以下原則:

凡是用到簇的地方,就為它造一個類型自定義,在程序所有要用到這個簇的地方,都使用類型定義的實例。這樣一是可以保證所有的簇都完全一致,避免圖4 這種錯誤;二是一旦需要變動簇中的元素,只需在類型定義中更新就可以了,不必挨個 VI 修改。

凡是在需要解綁或捆綁的地方統統使用按名字解綁和按名字捆綁來實現。使用帶名字的解綁和捆綁,可以直觀的顯示出捆綁中元素的名字,這樣不會因為順序的不同而導致錯誤的連線。

為了降低LabVIEW機器視覺的學習門檻,讓更多人以較低的時間、經濟成本學好LabVIEW機器視覺,發燒友學院聯合金牌講師汪成龍,推出了一個“老師+助教全程服務式教學”的線上訓練營課程,每天僅需花30-60分鐘跟班學習,課程導師+班級助教+班主任跟班教學,8周帶你徹底學會LabVIEW機器視覺設計。

《八周LabVIEW視覺項目編程實戰特訓營》課程5月20號上線以來,第一期的30個名額已經全部報滿,但是目前還是有很多學員在咨詢。基于這種情況,我們決定追加5個名額,截至發稿前,名額僅剩4個,有興趣的小伙伴,可以直接掃描下面二維碼報名哦~

接下來給大家介紹一下訓練營的基本情況~

1、這是個什么樣的課程?

本訓練營課程是目前全網唯一全面系統講解LabVIEW視覺外測的案例視頻教程。每個教程都是經過大量調查,完全從工程師就業角度量身定制,特訓班為30人小班制,每天僅需花30-60分鐘跟班學習,課程導師+班級助教+班主任跟班教學,8周帶你徹底學會LabVIEW機器視覺設計。

2、特訓班課程包含了哪些知識點?

1、?掌握視覺LabVIEW助手的主要功能算子、仿真圖像算法、進行圖像算法設計;

2、?根據項目需求快速確定算法流程、掌握攝像頭采圖、IO卡觸發采集、串口、網口協議;

3、?掌握LabVIEW編寫視覺軟件框架、視覺檢測中的定位、編寫實際程序流程;?

4、?掌握LabVIEW視覺實現模板匹配建立坐標系、進行ROI放射變換、檢測有無算子、IO的相關知識點;

5、?鞏固LabVIEW視覺助手函數使用方法、檢測缺陷的方法、尺寸檢測算法、外觀檢測的編程方法;

3、參與訓練營有哪些服務?

● 特訓營是一種有效的在線學習形式:

● 小班制、定制化學習計劃、班主任+導師親自帶班。

● 每日學習交流、每日在線答疑、每周作業批改。

● 每周2-3次晚間語音直播(30-60min/場)。

● 8場在線直播(60-90min/場)。

● 8場以上遠程教學(30-60min/場)。

● 1對1就業指導服務、結業效果考核、頒發結業證書。

4、學生或新手能不能學會?

老師團隊從事LabVIEW視覺軟件開發和在線教育十多年,每個新的教程都是經過大量調查完全根據初學者的心聲量身定制,始終站在初學者的角度去考慮去打磨視頻教程與開發課程,絕對通俗易懂,只要你肯下功夫學,加上專業的技術指導,跟著龍哥視覺培訓團隊的思維你一定能夠掌握LabVIEW視覺軟件設計思路,設計出完全屬于你自己的自動化軟件。

5、老手有沒有必要加入訓練營?

龍哥是資深的LabVIEW視覺工程師,可謂是多年的技術員經驗疊加在多年的教育經驗之上,在視頻教程中注入了作者多年的研發與教學經驗,總結了很多LabVIEW視覺方面的套路和架構,一定也能讓老手耳目一新,讓你在一定程度上繞開軟件開發中的各種坑,掃除你的技術盲點。

想了解的詳細的學習計劃可以加班主任木木:18123773580的微信(備注:訓練營)或者進LabVIEW群咨詢哦~

(班主任微信:18123773580)????

? ? (LabVIEW群)??

更多訓練營詳情點擊閱讀原文了解


下載發燒友APP

打造屬于您的人脈電子圈

關注電子發燒友微信

有趣有料的資訊及技術干貨

關注發燒友課堂

鎖定最新課程活動及技術直播

電子發燒友觀察

一線報道 · 深度觀察 · 最新資訊
收藏 人收藏
分享:

評論

相關推薦

五子棋游戏在线玩