




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1章 Labview綜述注意事項(xiàng):1. 數(shù)據(jù)流驅(qū)動(dòng):從左至右2. 數(shù)據(jù)連線顏色代表:1. while循環(huán)執(zhí)行后外界數(shù)據(jù)接不能傳入循環(huán)內(nèi),封閉性的。2. 注意簇的元素的排列順序。3. 局部變量,全局變量,共享變量,值屬性節(jié)點(diǎn)會(huì)破壞Labview的數(shù)據(jù)流。4. 枚舉常量?jī)H在程序框圖可見(jiàn),在前面板不可見(jiàn)。5. 使用局部變量控制布爾開(kāi)關(guān)時(shí),按鈕只能使用機(jī)械動(dòng)作中的轉(zhuǎn)換模式6. Labview多線程:將沒(méi)有直接數(shù)據(jù)連接的程序塊單獨(dú)創(chuàng)建一個(gè)線程,將各個(gè)模塊放到循環(huán)結(jié)構(gòu)中并行執(zhí)行而實(shí)現(xiàn)多線程。7. 子VI前面板進(jìn)入內(nèi)存的原因是:前面板打開(kāi)、VI修改后尚未保存、前面板數(shù)據(jù)打印、程序框圖中有數(shù)性節(jié)點(diǎn)。8. W
2、hile+條件結(jié)構(gòu),while+事件結(jié)構(gòu)9. 自動(dòng)索引功能在for循環(huán)中默認(rèn)打開(kāi),whil循環(huán)默認(rèn)關(guān)閉10. While循環(huán)里面一定記得要加延時(shí),特別是多任務(wù)時(shí),不然會(huì)十分占用CPU11. 局部變量和值屬性節(jié)點(diǎn)那個(gè)好?同一vi最好數(shù)據(jù)流,其次局部變量,絕對(duì)不要使用值屬性,子vi目前可用引用+屬性節(jié)點(diǎn)或全局變量。多使用移位寄存器,少使用屬性節(jié)點(diǎn)值,盡量不使用局部變量功能全局可以完全代替全局變量!一般建議盡量少用局部變量,但就局部變量與“值”屬性節(jié)點(diǎn)來(lái)說(shuō),局部變量的寫(xiě)入效率要比“值”屬性節(jié)點(diǎn)快得多,值屬性只建議使用在程序啟動(dòng)的時(shí)候?qū)τ诳丶蝻@示器的初始化上。當(dāng)且僅當(dāng)需要產(chǎn)生一個(gè)事件,以相應(yīng)“值改變
3、”事件時(shí),才推薦使用值(信號(hào))屬性。用屬性結(jié)點(diǎn)會(huì)觸發(fā)界面線程,使得程序界面被強(qiáng)制更新。如果一個(gè)大型程序的某個(gè)子程序中用了屬性結(jié)點(diǎn),本來(lái)子vi的界面的前面板是不需要用戶看見(jiàn)的,但由于使用了屬性結(jié)點(diǎn)而在后臺(tái)進(jìn)行強(qiáng)制更新,這樣很顯然會(huì)影響程序執(zhí)行的效率。你寫(xiě)一個(gè)簡(jiǎn)單的程序驗(yàn)證一下就看出來(lái)了。 局部變量也不是越多越好,它使labview無(wú)法重用緩存,不得不開(kāi)辟新的緩存區(qū),可以盡量用移位寄存器等結(jié)構(gòu)來(lái)強(qiáng)制內(nèi)存重用。同vi間用局部變量,不同vi間用引用+屬性節(jié)點(diǎn)。12. “局部變量”執(zhí)行效率高,但占用內(nèi)存多,“屬性節(jié)點(diǎn):值”帶錯(cuò)誤處理,可以更好的引導(dǎo)數(shù)據(jù)流,但執(zhí)行效率較低。局部變
4、量和值屬性節(jié)點(diǎn)兩個(gè)都不推薦使用,兩種都需要memory allocation, 導(dǎo)致執(zhí)行效率過(guò)低, 尤其是property node - value, 因?yàn)樗€引入了UI thread.極力推薦功能全局變量或隊(duì)列13.14. 避免在循環(huán)外使用事件結(jié)構(gòu):下面這樣是錯(cuò)誤的!15. 因?yàn)橹苯淤x值只能改變變量的值,而不能引起次變量的事件觸發(fā)。如下圖為錯(cuò)誤編程:解決辦法就是:要軟件觸發(fā)事件,必須對(duì)變量右鍵->創(chuàng)建->屬性節(jié)點(diǎn)->值(信號(hào))進(jìn)行賦值,這樣才能觸發(fā)事件結(jié)構(gòu)。Labview調(diào)試方法:1. 高亮燈泡顯示:2. 斷點(diǎn)+探針+單步執(zhí)行(用查看工具選板來(lái)設(shè)置 )Labview性能分析
5、:工具-性能分析1. 性能和內(nèi)存分析窗口2. 顯示緩存區(qū)分配:小黑點(diǎn)代表此處有一個(gè)數(shù)組的拷貝,盡量消除黑點(diǎn)。Labview程序優(yōu)化:1. 避免強(qiáng)制類(lèi)型轉(zhuǎn)換:前后數(shù)據(jù)類(lèi)型一致,避免對(duì)大塊數(shù)據(jù)如數(shù)組進(jìn)行類(lèi)型轉(zhuǎn)換。2. 防止內(nèi)存泄漏:一定要記得關(guān)閉文件引用和其他引用(VI server)3.合理分貝數(shù)組內(nèi)存:采用自動(dòng)索引或預(yù)先定義數(shù)組大小,然后替換成員,好的辦法:4. 合理使用全局變量:大數(shù)據(jù)如圖像,信號(hào)避免使用全局變量5. 其他技巧:1. 緩沖區(qū)的重復(fù)使用:使用一條數(shù)據(jù)線連接2. 元素同址操作結(jié)構(gòu):可用于信息的更新:如把數(shù)組中的第三個(gè)放大10倍6. 優(yōu)化程序的原則:1. 把VI劃分成多個(gè)子VI進(jìn)行
6、調(diào)用。2. 可以使用連線就絕不要使用局部變量,更不能過(guò)度使用帶有數(shù)組或字符串的局部變量或全局變量,因?yàn)樽x寫(xiě)局部變量是會(huì)產(chǎn)生一個(gè)數(shù)據(jù)的副本。3. 盡可能不在前面板顯示大的數(shù)組或字符串,因?yàn)轱@示件會(huì)為它顯示的數(shù)據(jù)保存一個(gè)副本。4. 盡量不在循環(huán)中使用創(chuàng)建數(shù)組函數(shù)來(lái)產(chǎn)生數(shù)組,字符串也是字符數(shù)組。1Labview常用快捷鍵刪除斷線Ctrl+B整理程序框圖Ctrl+U啟用程序網(wǎng)格對(duì)其Ctrl+#查找和替換Ctrl+F錯(cuò)誤列表Ctrl+L運(yùn)行 Ctrl+R停止Ctrl+.切換至編輯模式Ctrl+M前后面板切換Ctrl+E左右兩欄顯示Ctrl+T最大化窗口Ctrl+/顯示即時(shí)幫助Ctrl+H幫助Ctrl+?
7、顯示工具選板Shif+鼠標(biāo)右鍵2. 常用控件說(shuō)明按鈕的6種機(jī)械動(dòng)作:(默認(rèn)按下后為1)1. 單擊時(shí)轉(zhuǎn)換:點(diǎn)擊后0變成1,松開(kāi)后按鈕不會(huì)彈起(開(kāi)關(guān))2. 釋放時(shí)轉(zhuǎn)換:相反3. 保持轉(zhuǎn)換直到釋放:按下期間一直為1,持續(xù)性的(門(mén)鈴開(kāi)關(guān))4. 單擊時(shí)觸發(fā):?jiǎn)螕魰r(shí)0變成1,馬上又自動(dòng)還原0.(斷路器)5. 釋放時(shí)觸發(fā):6. 保持觸發(fā)直到釋放:?jiǎn)螕魰r(shí)0變成1,在讀取一次或者釋放之前保持1,轉(zhuǎn)換的能持續(xù)輸出,觸發(fā)的只能為單次輸出3.數(shù)據(jù)類(lèi)型數(shù)值:數(shù)值常量,枚舉常量,下拉列表常量,隨機(jī)數(shù)布爾量:T或F(0或1)字符/字符串函數(shù):搜索拆分字符串:能一分為二,輸入兩個(gè)字符串格式化值;將數(shù)字轉(zhuǎn)化為字符串掃描值:能自
8、動(dòng)識(shí)別和轉(zhuǎn)化為數(shù)值格式化寫(xiě)入字符串:將不同類(lèi)型的字符或數(shù)字合并成一個(gè)字符串=sprintf函數(shù)掃描字符串函數(shù):與格式化相反。格式化日期函數(shù):數(shù)組簇:1. 將多個(gè)不同類(lèi)型的數(shù)據(jù)打包成一個(gè),減少連線2. 必須同時(shí)都是輸入或顯示3. 簇里面的控件有邏輯順序,與位置無(wú)關(guān),由放入時(shí)間決定4.變量:局部變量:1.用于程序中連線較麻煩時(shí)2. 用于一個(gè)變量同時(shí)控制并行的多個(gè)循環(huán)時(shí)3. 用于一個(gè)空間既做顯示,又做輸入。全局變量:用于多個(gè)獨(dú)立VI共享變量:和全局變量類(lèi)似,但它可以在多個(gè)本地VI和網(wǎng)絡(luò)應(yīng)用程序中傳遞數(shù)值,還有數(shù)據(jù)緩沖功能。功能性全局變量:僅運(yùn)行一次的WHILE循環(huán)+未初始化的移位寄存器,使用移位寄存
9、器保存變量的值,避免競(jìng)爭(zhēng)冒險(xiǎn),用來(lái)替代全局變量由于每次讀和寫(xiě)變量時(shí),都是取自于while循環(huán)中的移位寄存器,因此能夠避免了數(shù)據(jù)拷貝的問(wèn)題(當(dāng)然,全局性功能變量VI不能夠設(shè)置為Reentrant可重載的)。由于功能性全局變量VI中加入了“錯(cuò)誤簇”端子,因此使用ErrorIn和ErrorOut能夠很好地避免“競(jìng)爭(zhēng)冒險(xiǎn)”問(wèn)題。從理論上說(shuō),功能性全局變量能夠完全取代傳統(tǒng)的全局變量。由于加入了“錯(cuò)誤簇”和移位寄存器,避免了數(shù)據(jù)的重復(fù)拷貝。同時(shí),使用枚舉型控件(可以設(shè)置為T(mén)ype Def.控件)能夠使得整個(gè)程序結(jié)構(gòu)更加清晰、明了,實(shí)現(xiàn)模塊化程序設(shè)計(jì)的目的。更多參見(jiàn):引用:相當(dāng)于指針程序結(jié)構(gòu)1. 循環(huán)結(jié)構(gòu):
10、1、可以同時(shí)運(yùn)行多個(gè)WHILE循環(huán)結(jié)構(gòu)。同時(shí)運(yùn)行多個(gè)WHILE循環(huán)結(jié)構(gòu)在C語(yǔ)言中是比較麻煩的,必須開(kāi)辟多個(gè)線程,而LABVIEW是自動(dòng)多線程的。LABVIEW不僅可以同時(shí)并行運(yùn)行多個(gè)WHILE結(jié)構(gòu),甚至在每個(gè)while循環(huán)中可以同時(shí)運(yùn)行多個(gè)數(shù)據(jù)流程。多了同時(shí)運(yùn)行的WHILE循環(huán)可以分成兩類(lèi):一類(lèi)是一個(gè)VI中多個(gè)同時(shí)運(yùn)行的WHILE循環(huán)。多個(gè)WHILE循環(huán)在同一程序框圖中。另一類(lèi)是每個(gè)子VI擁有各自的WHILE循環(huán),此時(shí)多個(gè)WHILE循環(huán)同時(shí)工作相當(dāng)于WINDOWS的多窗口運(yùn)行。2、每個(gè)循環(huán)中必須增加延時(shí)函數(shù),釋放系統(tǒng)控制權(quán)。如果在循環(huán)中沒(méi)有延時(shí)類(lèi)函數(shù),將導(dǎo)致WHILE循環(huán)獨(dú)占CPU,CPU占用
11、率很快達(dá)到100%。3、僅運(yùn)行一次的WHILE循環(huán)+未初始化的移位寄存器。這就是著名的LV2(功能)全局變量。移位寄存器:左邊的為初值,運(yùn)行一次后值賦給右邊,下一次循環(huán)是,右值賦給左邊,當(dāng)循環(huán)結(jié)束后,右邊輸出最后結(jié)果值??梢圆毁x初值,可以輸出每次結(jié)果值。反饋節(jié)點(diǎn):與移位寄存器相同可以直接互換。當(dāng)移位寄存器連線太長(zhǎng)太亂時(shí),可以替換成反饋節(jié)點(diǎn)。2. 條件結(jié)構(gòu):連接端:布爾 = if else數(shù)值/字符/枚舉 = Switch case連接為數(shù)值時(shí)只能為整數(shù),非整可以放大后在判斷,如0.1放大10倍變成1.【W(wǎng)hile+條件結(jié)構(gòu)】:多任務(wù)并行,查詢模式,程序效率低下!,條件結(jié)構(gòu)里面的經(jīng)常為子VI!多
12、按鈕編程技巧:按鈕必須是觸發(fā)類(lèi)型提高while效率的辦法:【等待前面板活動(dòng)函數(shù)】可以明顯降低while循環(huán)次數(shù)。標(biāo)準(zhǔn)狀態(tài)機(jī):可以選擇從那一個(gè)狀態(tài)開(kāi)始進(jìn)行執(zhí)行,條件內(nèi)容都指向了下一下,所以是連貫性的運(yùn)行。3. 順序結(jié)構(gòu):破壞并行運(yùn)行機(jī)制和從左到右的數(shù)據(jù)流,不提倡使用!1. 平鋪式2. 層疊式:借助局部變量進(jìn)行幀之間的數(shù)據(jù)傳遞通過(guò)人為控制數(shù)據(jù)依從來(lái)替代之:中間那根線是用來(lái)觸發(fā)第二個(gè)循環(huán)的,并不傳遞值,只有當(dāng)循環(huán)1停止時(shí),信號(hào)才能傳出去,觸發(fā)循環(huán)2.4. 事件結(jié)構(gòu):代替while+條件結(jié)構(gòu)的查詢模式,【while+事件結(jié)構(gòu)】高效率執(zhí)行程序。支持兩種事件:GUI事件+用戶注冊(cè)事件GUI事件:觸發(fā)前面板
13、控件控件值改變按下一個(gè)鍵光標(biāo)進(jìn)入VI窗口超時(shí)事件:在等待時(shí)間內(nèi)沒(méi)有觸發(fā)事件則執(zhí)行超時(shí)事件。建議:1.避免在循環(huán)外使用事件結(jié)構(gòu)。2. 在值改變事件中讀取布爾控件接線端。3. 條件結(jié)構(gòu)用于處理觸發(fā)布爾空間的撤銷(xiāo)操作?4. 不要使用不同的事件數(shù)據(jù)將一個(gè)分支配置為處理多個(gè)過(guò)濾事件5. 如果含有事件結(jié)構(gòu)的while循環(huán)基于布爾控件的值而停止,則記得在事件結(jié)構(gòu)中處理該布爾控件。6. 避免在同一個(gè)事件分支中同時(shí)使用對(duì)話框和“鼠標(biāo)按下?”過(guò)濾事件7. 避免在一個(gè)循環(huán)中放兩個(gè)事件結(jié)構(gòu)8. 使用動(dòng)態(tài)注冊(cè)時(shí),每個(gè)事件結(jié)構(gòu)都有一個(gè)“注冊(cè)事件”函數(shù)9. 如需在處理當(dāng)前事件的同時(shí)生成或處理其他事件,應(yīng)考慮使用時(shí)間回調(diào)注冊(cè)
14、函數(shù)10. 不要將前面板關(guān)閉通知事件用于重要的關(guān)閉代碼中,除非事先確保前面板關(guān)閉是VI不終止。幾種事件通知事件:常見(jiàn)的過(guò)濾事件:要設(shè)置過(guò)濾節(jié)點(diǎn)動(dòng)態(tài)事件:用戶事件:5. 定時(shí)結(jié)構(gòu):降低CPU使用文件操作:創(chuàng)建一個(gè)文件:打開(kāi)一個(gè)文件:波形圖表和波形圖:波形圖表:數(shù)據(jù)源為單個(gè)數(shù)值,隨時(shí)間變化,能及時(shí)顯示,如顯示隨機(jī)數(shù)波形圖:數(shù)據(jù)源為數(shù)組,運(yùn)行完后的數(shù)據(jù)回放功能XY圖:數(shù)據(jù)源為XY坐標(biāo)強(qiáng)度圖:數(shù)據(jù)源為通知器,隊(duì)列,信號(hào)量,集合點(diǎn)通知器:主要用于消息更新,前面的信號(hào)會(huì)被后來(lái)的覆蓋:隊(duì)列:可以緩沖數(shù)據(jù),可以傳遞一組數(shù)據(jù),在數(shù)據(jù)傳遞方面具有強(qiáng)大作用!通知器和隊(duì)列的區(qū)別:1. 通知器內(nèi)容會(huì)被新的消息覆蓋,而隊(duì)列不會(huì)。2. 通知是1對(duì)多(像廣播),隊(duì)列是多對(duì)一,只能有一個(gè)接收者,可以將所有隊(duì)列數(shù)據(jù)壓出堆棧。信號(hào)量:獨(dú)占性集合點(diǎn):在執(zhí)行的某個(gè)特定點(diǎn)同步兩個(gè)或多個(gè)獨(dú)立并行的任務(wù)。先到達(dá)的任務(wù)會(huì)等待后面的任務(wù),到齊后才繼續(xù)運(yùn)行。事件發(fā)生:建議用“通知器”替代“事件發(fā)生”,只有在為了內(nèi)存和性能優(yōu)化的情況下使用并發(fā)事件。并發(fā)事件沒(méi)有銷(xiāo)毀函數(shù)!首次調(diào)用函數(shù):,這函數(shù)很有用!總結(jié):1. 高效率模式:多while并行+事件結(jié)構(gòu)+多線
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動(dòng)合同與勞務(wù)合同范本
- 二年級(jí)口算題目練習(xí)冊(cè)100道
- 北京家具租賃合同范本
- 二年級(jí)口算題練習(xí)匯編100道
- 二年級(jí)口算題目大全集100道
- 中餐店后廚合同范本
- 賣(mài)車(chē)合同銷(xiāo)售合同范本
- 衛(wèi)星導(dǎo)航論文合同范例
- 2025甘肅省建筑安全員-C證考試(專(zhuān)職安全員)題庫(kù)及答案
- 全肥料銷(xiāo)售合同范本
- 鍋爐節(jié)能管理制度
- 2023年道路交通安全法實(shí)施條例
- 市政工程標(biāo)準(zhǔn)施工組織設(shè)計(jì)方案
- 馬爾文粒度儀MS2000原理及應(yīng)用
- 護(hù)理不良事件管理、上報(bào)制度及流程
- GB 9706.224-2021醫(yī)用電氣設(shè)備第2-24部分:輸液泵和輸液控制器的基本安全和基本性能專(zhuān)用要求
- 鋼棧橋施工與方案
- 《藝術(shù)學(xué)概論》課件-第一章
- 子宮內(nèi)膜異位癥診療指南完整課件
- 動(dòng)物寄生蟲(chóng)病學(xué)課件
- 人教版小學(xué)三年級(jí)下冊(cè)數(shù)學(xué)應(yīng)用題專(zhuān)項(xiàng)練習(xí)題40614
評(píng)論
0/150
提交評(píng)論