以下是一位工程師朋友分享的在使用LabVIEW進行編程的過程中,遇到的一些問題以及從中得到的心得體會,在這里分享給大家,希望對大家學習LabVIEW有所幫助。
常見錯誤及解決方法
Q1:一開始拿到題目,一無所知,對于系統(tǒng)的每一個部分,我們都不了解,不知如何下手。
這是我們組面對的最首要問題,往往這個問題是大多數(shù)人在學習一項新知識時必有的困惑,而解決問題的方法卻是我們必要掌握的,要經(jīng)歷鍛煉的。通常我會瀏覽官方論壇,查看NI工程師及其他人的技術(shù)文檔,最后發(fā)現(xiàn)LabVIEW中有很多經(jīng)典的范例,非常適合在有課題需要的時候?qū)W習掌握,最后在此基礎(chǔ)上進行修改。
一方面,范例中都一定是可以運行的正確的程序,還會在關(guān)鍵部分有注釋;另一方面,官方往往提供的都是基礎(chǔ)的范例,比較適合初學者掌握學習,進行深度挖掘和改造。在我做地圖調(diào)用的時候,我在官方的網(wǎng)站上down到了一個外國人調(diào)用google地圖的example,受益匪淺。做工程的人,很多時候并不需要從最原始的東西開始研究,要懂得站在巨人的肩膀上眺望地平面。
Q2:字符串轉(zhuǎn)換數(shù)值時,無法轉(zhuǎn)換浮點小數(shù)。
需要用“分數(shù)/指數(shù)至字符串轉(zhuǎn)換” 函數(shù),該控件可從偏移量位置開始,使字符串中的下列字符:0-9、加號、減號、e、E、小數(shù)點(通常是句點)解析為工程、科學或分數(shù)格式的浮點數(shù),通過數(shù)字返回。
Q3:串口傳輸數(shù)據(jù)并用波形圖顯示時,波形圖無法實時顯示連續(xù)的波形,每個數(shù)據(jù)都會掉到0再上升。
需要用到反饋節(jié)點,連接“數(shù)組插入”的n維數(shù)組腳和輸出數(shù)組腳。
Q4:我們在做大作業(yè)的時候,因為控件較多,功能較復雜,當一個vi文件中出現(xiàn)多個while循環(huán)時,會出現(xiàn)有的部分程序始終不運行的情況。
只有當其中一個while循環(huán)中止后才會進入另一個while循環(huán)巡行。如果子vi中的循環(huán)不能退出,子vi節(jié)點就一直在運行。對于LabVIEW的數(shù)據(jù)流編程機制來講,一個節(jié)點沒有執(zhí)行完,它的所有輸出端口就不會有有效數(shù)據(jù)輸出。解決方法:一是把子vi中的循環(huán)提出到主vi里來。二是使用全局變量,并在主vi中使用并行循環(huán)來控制子vi的結(jié)束。
Labview編程的主要特點是數(shù)據(jù)流形式,這便于VI大量的按照并行方式運行,優(yōu)化了程序的計算性能。即使是這樣,當出現(xiàn)循環(huán)結(jié)構(gòu)時,也會出現(xiàn)部分程序不運行的情況。因為運行條件是輸入是循環(huán)結(jié)構(gòu)中的某部分局部變量。
Q5:當while循環(huán)函數(shù)內(nèi)部含有for循環(huán)函數(shù)時,無法操作停止控件時while循環(huán)停止
如果停止控件放在for循環(huán)函數(shù)外while函數(shù)內(nèi),當for循環(huán)沒有結(jié)束時,點擊停止是無法使事件停止運行的。因為此時for循環(huán)沒有結(jié)束,即使改變了停止控件的當前狀態(tài),它仍然不起作用。只用將停止控件放入for循環(huán)中,從for循環(huán)引出來連接到停止while循環(huán)的循環(huán)條件,才能有效停止。
Q6:使用串口時發(fā)生如下錯誤Unable to open session to “ASRL1::INSTR”
其他軟件占用了串口,需要關(guān)閉其他應(yīng)用程序。
Q7:每次使用時CPU占用過高,電腦卡著不能動。
循環(huán)里沒有加延時。
Q8:調(diào)試GPS部分,創(chuàng)建數(shù)組為輸入控件時,需要將數(shù)組賦特定的初值,發(fā)現(xiàn)每次關(guān)閉再打開vi文件時,數(shù)組中的內(nèi)容會清空。
數(shù)組為輸入控件時,每次打開vi文件都會初始化各個控件,在初始狀態(tài)下,輸入控件的值都會賦0,只有將要賦的定值設(shè)置為默認值,才會保留輸入控件中想保留的數(shù)據(jù),防止關(guān)閉軟件造成的賦定值消失,不方便調(diào)試。
通過文件或注冊表方式先把控件當前值存下來,再下次打開時再從文件或注冊表把值讀回來。使用VI Server技術(shù)在保存控件當前值為默認值,但這種方法只能處于編輯狀態(tài)使用,在生成exe文件后不能使用。
Q9:當程序框圖中程序很多,有的部分可以并行運行,有的部分可以順序運行,如果將這些都放在一個while循環(huán)會出現(xiàn)無關(guān)的延遲。
建議使用順序結(jié)構(gòu),按順序結(jié)構(gòu)來規(guī)定某些程序的執(zhí)行順序,這樣不存在競爭。而把初始部分程序放在while循環(huán)外,特別是當初始程序中要調(diào)用比較復雜的引用時,比如3D模型的調(diào)用和初始化。
學習心得
隧道、移位寄存器、循環(huán)隧道、自動索引隧道的關(guān)系
隧道——局部變量,隧道相當于每次進來循環(huán)體之后把循環(huán)體外的值賦予循環(huán)體內(nèi)的局部變量,所以不管循環(huán)體內(nèi)執(zhí)行幾次,其結(jié)果也等同于只執(zhí)行了一次。
移位寄存器——靜態(tài)局部變量,每一次在循環(huán)體內(nèi)執(zhí)行,都會把右邊移位寄存器出口的值用作左邊入口的值,所以移位寄存器的值能一直保留。移位寄存器的特殊之處在于在循環(huán)結(jié)構(gòu)兩端的接線端是強制使用同一內(nèi)存的。
因此,上一次迭代執(zhí)行產(chǎn)生的某一值,傳給移位寄存器右側(cè)的接線端,如果下一次迭代運行需要用到這個數(shù)據(jù),從移位寄存器左側(cè)的接線端引出就可以了。
循環(huán)隧道——while默認下的隧道,數(shù)據(jù)傳入傳出的值不發(fā)生變化,是循環(huán)后的最后一直數(shù)
自動索引隧道——for循環(huán)默認下的隧道,隧道在循環(huán)內(nèi)一側(cè)會自動取出數(shù)組的元素,依順序每次循環(huán)取出一個元素。用索引隧道傳出數(shù)據(jù),可以自動把循環(huán)內(nèi)的數(shù)據(jù)組織成數(shù)組,最后輸出的是一個數(shù)組的形式。
有的控件的參數(shù)可以為多個,比如0、1、2,且代表不同的意思。如何使用常量定義,使得它們有名字。
鼠標移動到相應(yīng)引腳,點擊創(chuàng)建常量,即可使用該方法下所有的類型,更加方便快捷。
還可以通過制作自定義類型的方法。
在使用簇時,總是出現(xiàn)數(shù)據(jù)連接類型錯誤。
這是因為簇中順序可能與連接后端的順序不一致,導致數(shù)據(jù)連接錯誤。
為了避免簇中用可能出現(xiàn)的錯誤,以及讓簇應(yīng)用起來更方便,使用簇最好遵循以下原則:
凡是用到簇的地方,就為它造一個類型自定義,在程序所有要用到這個簇的地方,都使用類型定義的實例。這樣一是可以保證所有的簇都完全一致,避免圖4 這種錯誤;二是一旦需要變動簇中的元素,只需在類型定義中更新就可以了,不必挨個 VI 修改。
凡是在需要解綁或捆綁的地方統(tǒng)統(tǒng)使用按名字解綁和按名字捆綁來實現(xiàn)。使用帶名字的解綁和捆綁,可以直觀的顯示出捆綁中元素的名字,這樣不會因為順序的不同而導致錯誤的連線。
為了降低LabVIEW機器視覺的學習門檻,讓更多人以較低的時間、經(jīng)濟成本學好LabVIEW機器視覺,發(fā)燒友學院聯(lián)合金牌講師汪成龍,推出了一個“老師+助教全程服務(wù)式教學”的線上訓練營課程,每天僅需花30-60分鐘跟班學習,課程導師+班級助教+班主任跟班教學,8周帶你徹底學會LabVIEW機器視覺設(shè)計。
《八周LabVIEW視覺項目編程實戰(zhàn)特訓營》課程5月20號上線以來,第一期的30個名額已經(jīng)全部報滿,但是目前還是有很多學員在咨詢。基于這種情況,我們決定追加5個名額,截至發(fā)稿前,名額僅剩4個,有興趣的小伙伴,可以直接掃描下面二維碼報名哦~
接下來給大家介紹一下訓練營的基本情況~
1、這是個什么樣的課程?
本訓練營課程是目前全網(wǎng)唯一全面系統(tǒng)講解LabVIEW視覺外測的案例視頻教程。每個教程都是經(jīng)過大量調(diào)查,完全從工程師就業(yè)角度量身定制,特訓班為30人小班制,每天僅需花30-60分鐘跟班學習,課程導師+班級助教+班主任跟班教學,8周帶你徹底學會LabVIEW機器視覺設(shè)計。
2、特訓班課程包含了哪些知識點?
1、?掌握視覺LabVIEW助手的主要功能算子、仿真圖像算法、進行圖像算法設(shè)計;
2、?根據(jù)項目需求快速確定算法流程、掌握攝像頭采圖、IO卡觸發(fā)采集、串口、網(wǎng)口協(xié)議;
3、?掌握LabVIEW編寫視覺軟件框架、視覺檢測中的定位、編寫實際程序流程;?
4、?掌握LabVIEW視覺實現(xiàn)模板匹配建立坐標系、進行ROI放射變換、檢測有無算子、IO的相關(guān)知識點;
5、?鞏固LabVIEW視覺助手函數(shù)使用方法、檢測缺陷的方法、尺寸檢測算法、外觀檢測的編程方法;
3、參與訓練營有哪些服務(wù)?
● 特訓營是一種有效的在線學習形式:
● 小班制、定制化學習計劃、班主任+導師親自帶班。
● 每日學習交流、每日在線答疑、每周作業(yè)批改。
● 每周2-3次晚間語音直播(30-60min/場)。
● 8場在線直播(60-90min/場)。
● 8場以上遠程教學(30-60min/場)。
● 1對1就業(yè)指導服務(wù)、結(jié)業(yè)效果考核、頒發(fā)結(jié)業(yè)證書。
4、學生或新手能不能學會?
老師團隊從事LabVIEW視覺軟件開發(fā)和在線教育十多年,每個新的教程都是經(jīng)過大量調(diào)查完全根據(jù)初學者的心聲量身定制,始終站在初學者的角度去考慮去打磨視頻教程與開發(fā)課程,絕對通俗易懂,只要你肯下功夫?qū)W,加上專業(yè)的技術(shù)指導,跟著龍哥視覺培訓團隊的思維你一定能夠掌握LabVIEW視覺軟件設(shè)計思路,設(shè)計出完全屬于你自己的自動化軟件。
5、老手有沒有必要加入訓練營?
龍哥是資深的LabVIEW視覺工程師,可謂是多年的技術(shù)員經(jīng)驗疊加在多年的教育經(jīng)驗之上,在視頻教程中注入了作者多年的研發(fā)與教學經(jīng)驗,總結(jié)了很多LabVIEW視覺方面的套路和架構(gòu),一定也能讓老手耳目一新,讓你在一定程度上繞開軟件開發(fā)中的各種坑,掃除你的技術(shù)盲點。
想了解的詳細的學習計劃可以加班主任木木:18123773580的微信(備注:訓練營)或者進LabVIEW群咨詢哦~
(班主任微信:18123773580)????
? ? (LabVIEW群)??
更多訓練營詳情點擊閱讀原文了解