![LabVIEW+高級編程技巧_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/11/97996845-ede3-4c20-a9a7-03461d832532/97996845-ede3-4c20-a9a7-03461d8325321.gif)
![LabVIEW+高級編程技巧_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/11/97996845-ede3-4c20-a9a7-03461d832532/97996845-ede3-4c20-a9a7-03461d8325322.gif)
![LabVIEW+高級編程技巧_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/11/97996845-ede3-4c20-a9a7-03461d832532/97996845-ede3-4c20-a9a7-03461d8325323.gif)
![LabVIEW+高級編程技巧_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/11/97996845-ede3-4c20-a9a7-03461d832532/97996845-ede3-4c20-a9a7-03461d8325324.gif)
![LabVIEW+高級編程技巧_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/11/97996845-ede3-4c20-a9a7-03461d832532/97996845-ede3-4c20-a9a7-03461d8325325.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、LabVIEW 高級編程技巧高級編程技巧內(nèi)容概要內(nèi)容概要 National Instruments 公司簡介 LabVIEW 高級編程技巧 用戶定義的調(diào)試指示器 定時循環(huán) 基于事件觸發(fā)的編程 改善VI的性能1. 調(diào)用動態(tài)鏈接庫National Instruments: 虛擬儀器倡導(dǎo)者虛擬儀器倡導(dǎo)者 建立于1976年 超過1,000種測試測量產(chǎn)品 在40個國家設(shè)有直屬分支機(jī)構(gòu),600家系統(tǒng)聯(lián)盟商 中國: 研發(fā), 區(qū)域咨詢, 技術(shù)支持, 市場NI HQNI 客戶的分布客戶的分布超過超過25,000個客戶分布在多達(dá)個客戶分布在多達(dá)80個國家個國家 財富財富500強(qiáng)中強(qiáng)中95的制造型企業(yè)的制造型企業(yè)1
2、. 調(diào)試指示器調(diào)試指示器 靈活的調(diào)試工具,可詳細(xì)顯示數(shù)據(jù)線上通過的數(shù)據(jù) 指示器的操作可以體現(xiàn) VI 的靈活性和強(qiáng)大功能 傳統(tǒng)的調(diào)試指示器存在一些缺點,如只能顯示數(shù)組中的一個元素用戶定義的調(diào)試指示器用戶定義的調(diào)試指示器 能顯示各種數(shù)據(jù)類型 可定制指示器外觀 可定制指示器處理功能 設(shè)置條件斷點定制你的需求定制你的需求指示器不僅僅可以顯示數(shù)據(jù) 將數(shù)據(jù)錄入文件 對兩個指示器之間的執(zhí)行進(jìn)行定時 計算總的調(diào)用次數(shù)或是每秒的調(diào)用次數(shù)內(nèi)建的定制指示器內(nèi)建的定制指示器 在數(shù)據(jù)連線上點擊鼠標(biāo)右鍵 菜單顯示所有相關(guān)的指示器 指示器存放在目錄 vi.lib_probesdefault下Keep graphics be
3、low the text and to the right客戶指示器的結(jié)構(gòu)客戶指示器的結(jié)構(gòu)包含一個控件控件的數(shù)據(jù)類型就是所指示的數(shù)據(jù)線包含一個指示器Boolean, 類似條件斷點 True = 暫停執(zhí)行 False = 繼續(xù)執(zhí)行Keep graphics below the text and to the right2. 定時循環(huán)定時循環(huán) 精確的定時 while 循環(huán) 多個時鐘頻率的定時 反饋, 動態(tài)定時特性 多達(dá)128個循環(huán)優(yōu)先級 examplesgeneraltimedloop.llb定時循環(huán)的配置定時循環(huán)的配置定時循環(huán)定時循環(huán)3. 基于事件的編程基于事件的編程 管理用戶界面,通常采用的方
4、法有中斷響應(yīng)和事件驅(qū)動 中斷響應(yīng)采用輪詢機(jī)制處理,非常占用CPU資源,還可能會丟失用戶界面的響應(yīng) 事件驅(qū)動無需輪詢即可捕捉到相關(guān)事件,順序處理捕捉到的所有事件,不會丟失也不會顛倒順序事件舉例事件舉例事件結(jié)構(gòu)不需要輪詢就可以捕捉到自定義菜單上的用戶選擇ItemTag 返回菜單條目MenuRef 返回菜單的 refnumVirtual Instrument事件類型事件類型 Application 事件舉例: 退出應(yīng)用程序 超時Control事件舉例: 關(guān)閉前面板 VI 上的鼠標(biāo)移動事件舉例: 改變控件數(shù)值 特定控件上的鼠標(biāo)移動通知事件和可濾除事件通知事件和可濾除事件通知事件通知 LabVIEW 發(fā)
5、生了一個用戶行為; 只能在 Event Data Node中使用可濾除事件在用戶界面處理之前驗證或改變事件數(shù)據(jù),避免影響 VI; 可在 Event Filter Node 和 Event Data Node 中使用LabVIEW 7 新事件新事件更多的用戶界面事件動態(tài)注冊的事件用戶定義的事件ActiveX 事件事件結(jié)構(gòu)的組成部分事件結(jié)構(gòu)的組成部分 Event Selector Label 確定觀察的事件 Timeout 等待事件的毫秒數(shù); 缺省值 1 (無限期) Defaulted Tunnels 新型tunnel, 允許未連線的事件案例提供缺省值 Dynamic Event Terminal
6、s 用于動態(tài)事件的注冊事件結(jié)構(gòu)的組成部分事件結(jié)構(gòu)的組成部分 Event Data Node 確定事件發(fā)生時 LV 提供的數(shù)據(jù),與 Unbundle By Name 函數(shù)類似 Event Filter Node 確定Event Data Node 中可提供的數(shù)據(jù)子集,可供事件案例修改事件結(jié)構(gòu)的基本使用事件結(jié)構(gòu)的基本使用 通常在 While 循環(huán)中使用 每次循環(huán)只處理一次事件,其它時間休眠 在事件結(jié)構(gòu)的左側(cè)邊框端口上可獲得事件數(shù)據(jù)事件結(jié)構(gòu)的配置事件結(jié)構(gòu)的配置通過對話框來配置事件,右擊事件結(jié)構(gòu)的邊框 ,選擇 “Edit Events Handled by This Case”事件注冊和面板鎖定事件注
7、冊和面板鎖定 包含事件結(jié)構(gòu)的 VI 被預(yù)留以后,事件就成為已注冊的 已注冊事件發(fā)生后, 會進(jìn)入隊列等待直到相應(yīng)的事件結(jié)構(gòu)開始執(zhí)行,事件不會丟失也不會出現(xiàn)順序混亂 默認(rèn)情況下, 前面板被鎖定直到事件被處理完可以關(guān)閉鎖定,但只針對過濾事件 VI 變成空閑后,事件被注銷3.1 動態(tài)事件動態(tài)事件下列情況時,需要動態(tài)注冊事件:下列情況時,需要動態(tài)注冊事件:事件注冊只能發(fā)生在應(yīng)用程序的某些部分在程序運(yùn)行過程中需要改變哪些 VIs 或控件可以發(fā)生事件在 subVI 中處理事件,而不是僅在注冊事件的 VI 中動態(tài)事件動態(tài)事件Register For EventsEvent StructureUnregiste
8、r For EventsCreate User EventGenerate User EventDestroy User Event編程模型編程模型注冊注冊事件事件連接到連接到事件結(jié)構(gòu)事件結(jié)構(gòu)選擇選擇動態(tài)事件動態(tài)事件注銷注銷事件事件3.2 程序產(chǎn)生的程序產(chǎn)生的 (用戶用戶) 事件事件Register For EventsEvent StructureUnregister For EventsCreate User EventGenerate User EventDestroy User Event用戶事件編程模型用戶事件編程模型創(chuàng)建并注冊創(chuàng)建并注冊用戶事件用戶事件產(chǎn)生產(chǎn)生用戶事件用戶事件注銷注
9、銷用戶事件用戶事件消滅消滅用戶事件用戶事件用戶事件舉例用戶事件舉例3.3 ActiveX 事件事件Register Event CallbackActiveX 編程模型編程模型注冊注冊ActiveX 事件事件選擇事件選擇事件創(chuàng)建和編輯創(chuàng)建和編輯Callback VI總結(jié):事件處理結(jié)構(gòu)總結(jié):事件處理結(jié)構(gòu) 允許在subvi中處理事件代碼 提供統(tǒng)一的,簡化的事件處理機(jī)制用戶界面接口控制外部代碼硬件觸發(fā)用戶定義事件注冊和非注冊事件4. 改善改善VI 的性能的性能 改進(jìn)內(nèi)存使用 使用高效數(shù)組函數(shù) 謹(jǐn)慎處理字符串和數(shù)組 避免不必要的復(fù)雜數(shù)據(jù)結(jié)構(gòu) 減少 I/O 開銷 減少 I/O 調(diào)用的次數(shù) 減少開啟和關(guān)閉
10、資源的次數(shù) 減少屏幕更新4.1 改進(jìn)內(nèi)存使用改進(jìn)內(nèi)存使用 LabVIEW 處理了大部分內(nèi)存管理的細(xì)節(jié) 資源分配, 復(fù)制, 釋放, 溢出 減少程序框圖的大小 提高可讀性和穩(wěn)定性 內(nèi)存管理自動進(jìn)行,你不需要過多的干預(yù) 理解 LabVIEW 是何時并如何為你“代勞”內(nèi)存管理的可以大大提高 對內(nèi)存使用的效率VI 在內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中的數(shù)據(jù)結(jié)構(gòu) Front Panel Block Diagram Code 框圖編譯成機(jī)器碼 Data Space Control/indicator 數(shù)值 Block diagram 常量 動態(tài)定義的數(shù)據(jù)FrontPanelBlockDiagramCodeDataSp
11、aceVI 何時加載到內(nèi)存中何時加載到內(nèi)存中 始終載入 data 平臺符合時載入Code (Mac OS, Windows, Sun, Linux) Panel 和 Diagram 在必要時載入 (recompiling)Main VISubVIAlways in memoryResident sometimesFrontPanelBlockDiagramCodeDataSpaceFrontPanelBlockDiagramCodeDataSpace內(nèi)存使用情況內(nèi)存使用情況 Tools Advanced Profile VIs 勾選 “Profile Memory Usage” & “Memo
12、ry Usage” 在執(zhí)行應(yīng)用程序之前點擊“Start” 狀態(tài)只在程序執(zhí)行完成后更新 程序執(zhí)行過程中內(nèi)存使用情況不能被查看監(jiān)測內(nèi)存使用監(jiān)測內(nèi)存使用顯示內(nèi)存分配顯示內(nèi)存分配 File Tools Advanced Show Buffer Allocations內(nèi)存優(yōu)化內(nèi)存優(yōu)化LabVIEW 盡量減少內(nèi)存再分配需要重新分配內(nèi)存的函數(shù) Build Array Concatenate StringsHigh Memory Reallocation Low Memory Reallocation最佳內(nèi)存使用最佳內(nèi)存使用 盡量使用 subVIs 不要濫用全局和局部變量 只在必要時打開 subVI 前面板
13、高效地創(chuàng)建和處理數(shù)組 不使用大的、復(fù)雜的數(shù)據(jù)類型coercion dots構(gòu)建和處理數(shù)組構(gòu)建和處理數(shù)組使用具有 inplaceness 特點的數(shù)組函數(shù) Inplaceness 是指函數(shù) in place 操作數(shù)據(jù),而不會另外建立一個數(shù)據(jù)備份。Reuses BuffersMay Allocate New BuffersAllocates New Buffers子數(shù)組子數(shù)組 LabVIEW 盡可能的重用內(nèi)存緩沖 子數(shù)組不存儲實際的數(shù)據(jù) 子數(shù)組在必要時會生成真實的數(shù)組 由于子數(shù)組不要對數(shù)據(jù)進(jìn)行拷貝,因此提高了程序的執(zhí)行速度子數(shù)組子數(shù)組子數(shù)組函數(shù)返回一個 7499x2 的子數(shù)組這個例子程序需要執(zhí)行2秒
14、鐘2 GHz Pentium 4子數(shù)組子數(shù)組在函數(shù) Array Subset之前引線執(zhí)行只需5毫秒子數(shù)組到真實數(shù)組的生成發(fā)生在循環(huán)之前4.2 減少減少 I/O 開銷開銷 I/O VIs 比計算操作多花很多時間 把 I/O 調(diào)用降低到最少 每次調(diào)用傳遞盡可能多的數(shù)據(jù) 使用多點 DAQ VIs 而不是單點 VIsSlow Method(many I/O calls)Fast Method(One I/O call)減少開啟和關(guān)閉資源減少開啟和關(guān)閉資源Slow MethodFast Method 使用底層 VIs 來減少開啟和關(guān)閉資源的次數(shù) Slow Method中,文件被打開和關(guān)閉100次Fast
15、 Method中,文件只打開和關(guān)閉1次保持資源的打開狀態(tài)保持資源的打開狀態(tài) 使用底層的文件打開和關(guān)閉函數(shù) 連接文件讀寫函數(shù)open,read / write的引用 提高讀速度提高讀速度 操作系統(tǒng)不需檢查權(quán)限、分配新的文件描述符等 提高寫文件的速度提高寫文件的速度 允許操作系統(tǒng)緩沖寫操作標(biāo)準(zhǔn)化標(biāo)準(zhǔn)化 LabVIEW 以“大字端”形式讀寫數(shù)據(jù) X86 機(jī)器采用“小字端”形式存儲數(shù)據(jù) 選擇不需要轉(zhuǎn)換的數(shù)據(jù)類型如:U8, I8, String (data), SGL, DBL 可以編程轉(zhuǎn)換- Flatten to string- Type cast- Manual code4.3 減少屏幕顯示的更新減
16、少屏幕顯示的更新 使用高效的 controls 和 indicators Graphs 和 charts 在接收新數(shù)據(jù)的時候會重新畫圖,從而影響執(zhí)行速度 設(shè)計subVI 的前面板在執(zhí)行中保持關(guān)閉來減少顯示開銷 使用多點更新的畫圖方法 最小化 chart 更新的次數(shù) 獲得最高的數(shù)據(jù)顯示速率屏幕顯示實例屏幕顯示實例Slow Method(每次更新一點)Fast Method(每次更新100點)減少循環(huán)中不必要的計算減少循環(huán)中不必要的計算 避免將產(chǎn)生相同結(jié)果的運(yùn)算放在循環(huán)內(nèi) 避免在循環(huán)中不必要的訪問全局變量減少減少 SubVI 開銷開銷 每個subVI 都會有一些開銷 (大概幾十微秒); 雖然看起來
17、不大,但如果是在一個循環(huán)結(jié)構(gòu)中,就會累加出一個很大結(jié)果。 在高速運(yùn)行的循環(huán)結(jié)構(gòu)中,不要顯示 subVI 的前面板 如果可能,將循環(huán)結(jié)構(gòu)移到 subVI 中完成。全局和局部變量全局和局部變量 每一次變量的讀操作都會給數(shù)據(jù)生成一個新的緩沖區(qū) 在使用大數(shù)組、字符串或復(fù)雜數(shù)據(jù)結(jié)構(gòu)時會帶來很大影響 從內(nèi)存使用和執(zhí)行速度來看,使用數(shù)據(jù)線永遠(yuǎn)是更有效的方法屬性節(jié)點屬性節(jié)點 使用屬性節(jié)點會引起線程間的交換,從而降低效率 如果只是為了更新控件的值,不要使用屬性節(jié)點 如果同時改變其它屬性,更新數(shù)值不會造成更大損失,因為線程交換已經(jīng)發(fā)生了更新前面板控件更新前面板控件GoodBetterBest創(chuàng)建高效的平行框圖創(chuàng)建
18、高效的平行框圖 LabVIEW 周期性地在平行循環(huán)間切換 使用 Wait (ms) function 確保不太重要的循環(huán)占用較少的處理器時間5. 共享庫函數(shù)共享庫函數(shù)What?Windows 中的 .dll, UNIX/Linux 中的 .so, 等等Why?降低磁盤空間和內(nèi)存占用How? 應(yīng)用程序只在需要的時候調(diào)用庫函數(shù) 程序開始執(zhí)行以后,由運(yùn)行鏈接編輯器來處理所有調(diào)用 動態(tài)鏈接庫動態(tài)鏈接庫 (DLL)Microsoft Windows 中的一種軟件模塊包含可執(zhí)行代碼和可被Windows應(yīng)用程序或其它 DLL 調(diào)用的數(shù)據(jù) 函數(shù)和數(shù)據(jù)只有在運(yùn)行狀態(tài)下,被Windows 應(yīng)用程序或其它DLL調(diào)用
19、時才被加載和鏈接一個 DLL 包括:-一個特殊函數(shù) (DllMain) -幾個編程者自定義來完成常用任務(wù)的函數(shù)DLL 特性特性 不能單獨運(yùn)行的可執(zhí)行文件 應(yīng)用程序要求時,由操作系統(tǒng)加載 應(yīng)用程序把 DLL 代碼作為自己二進(jìn)制文件的一部分來使用 應(yīng)用程序不需要知道原始DLL是由什么語言編寫的,也不需要清楚這些功能是如何實現(xiàn)的。 DLL就像一個有輸出函數(shù)的黑盒子LabVIEW 中調(diào)用中調(diào)用 Shared Library/DLLAdvanced Call Library Function Node右擊 Call Library Function Node,選擇 Configure 來調(diào)用DLL中的特
20、定函數(shù)Call Library Function 的配置的配置指定需調(diào)用的 DLL 函數(shù)和函數(shù)參數(shù) 選擇 dll 的調(diào)用規(guī)則; 對于 Win32 dll 來說,可以是缺省 (stdcall) 或 C.Call Library Function 和和 Win32 DLLs函數(shù)參數(shù)可以是以下類型:Void數(shù)字型 有符號/無符號 8-bit, 16-bit 和 32-bit 整數(shù) 4-byte, 單精度數(shù) 8-byte, 雙精度數(shù)數(shù)組 數(shù)組數(shù)據(jù)指針 數(shù)組句柄字符串 C Pascal G (LabVIEW)Adapt to TypeDLL 實例實例: MessageBoxA 函數(shù)函數(shù)回傳類型回傳類型函
21、數(shù)名函數(shù)名int MessageBoxA (hWnd, lpText, lpCaption, uType)參數(shù)參數(shù)參數(shù)參數(shù):HWNDhWnd 32-bit 無符號整數(shù). 確定 parent window. 此時為 NULL.LPCSTRlpText C-style stringLPCSTRlpCaption C-style stringUINTuType unsigned 32-bit integer value.回傳類型回傳類型:int 32-bit signed integer調(diào)試調(diào)試 Call Library Function如果 VI不執(zhí)行或者導(dǎo)致死機(jī), 檢查下列可能: DLL的路徑名是否正確 如果錯誤信息是 function not found in library, 檢查函數(shù)名的拼寫、語法和大小寫 傳遞給 DLL函數(shù)的所有參數(shù)都有數(shù)據(jù)線連接到 Call Library Function 圖標(biāo)的輸入端口上. 檢查數(shù)據(jù)類型和參數(shù)順序 使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國際專利申請代理合同模板
- 2025年度工業(yè)產(chǎn)品售后服務(wù)合同規(guī)范
- 2025年度酒店后廚員工培訓(xùn)與管理綜合服務(wù)合同
- 2025年度石材展會組織與服務(wù)合同模板
- 赤峰2025年內(nèi)蒙古喀喇沁旗錦山中學(xué)引進(jìn)教師9人筆試歷年參考題庫附帶答案詳解
- 茂名2025年廣東茂名市公安局招聘警務(wù)輔助人員50人筆試歷年參考題庫附帶答案詳解
- 苯噻草胺項目融資計劃書
- 潮州2024年廣東潮州市科學(xué)技術(shù)局屬下事業(yè)單位招聘10人(第二輪)筆試歷年參考題庫附帶答案詳解
- 普洱2025年云南普洱市商務(wù)局招聘城鎮(zhèn)公益性崗位工作人員筆試歷年參考題庫附帶答案詳解
- 文山云南文山硯山縣住房和城鄉(xiāng)建設(shè)局招聘公益性崗位人員筆試歷年參考題庫附帶答案詳解
- 中國人口研究專題報告-中國2025-2100年人口預(yù)測與政策建議-西南財經(jīng)大學(xué)x清華大學(xué)-202501
- 建筑工程安全與管理
- 幼兒園開學(xué)教師安全知識培訓(xùn)
- 2024年山東水利職業(yè)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 遼寧省名校聯(lián)盟2025年高三1月份聯(lián)合考試 語文試卷(含答案詳解)
- 25版六年級寒假特色作業(yè)
- 浙江省杭州市9+1高中聯(lián)盟2025屆高三一診考試英語試卷含解析
- 2025教科版一年級科學(xué)下冊教學(xué)計劃
- 2024年醫(yī)療器械經(jīng)營質(zhì)量管理規(guī)范培訓(xùn)課件
- 中華人民共和國學(xué)前教育法-知識培訓(xùn)
- GB/T 19228.1-2024不銹鋼卡壓式管件組件第1部分:卡壓式管件
評論
0/150
提交評論