



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 基于LABVIEW平臺的數(shù)據(jù)采集卡軟件設計 基于LABVIEW平臺的數(shù)據(jù)采集卡軟件設計 類別:無線通信 引言 作為專業(yè)測控領域的軟件開發(fā)平臺,LABVIEW內含豐富的數(shù)據(jù)采集、數(shù)據(jù)信號分析以及功能強大的DAQ助手,搭建數(shù)據(jù)采集系統(tǒng)更為輕松,便于硬件設計人員直接對硬件的操控展開設計。此外,它可通過DLL、CIN節(jié)點、ActiveX、.NET或MATLAB腳本節(jié)點等技術,實現(xiàn)與其它編程語言混
2、合編程,通過調用外部驅動代碼使它與設備的連接變得非常容易。由于采用數(shù)據(jù)流模型,LABVIEW可以自動規(guī)劃多線程任務,可充分利用PC系統(tǒng)處理器的處理能力,從而提高模塊的采集效率。本文基于LABVIEW開發(fā)環(huán)境,以庫函數(shù)節(jié)點的調用方式及結構,實現(xiàn)了一種中頻數(shù)據(jù)采集與處理卡軟件的設計。 數(shù)據(jù)采集卡軟件結構 采集卡軟件是基于PC的數(shù)據(jù)采集系統(tǒng)重要組成部分,它與硬件形成一個完整的數(shù)據(jù)采集、分析和顯示系統(tǒng),軟件分為上層應用程序和驅動程序。上層應用程序用以完成數(shù)據(jù)的分析、存儲和顯示等。驅動程序則可直接對數(shù)據(jù)采集硬件的寄存器編程,管理數(shù)據(jù)采集硬件的操作并把它和處理器中斷、DMA和內存這些計算機資源結合在一起。
3、 驅動程序隱藏了復雜的硬件底層編程細節(jié),為用戶提供容易理解的接口。NI公司為基于NI數(shù)據(jù)采集設備的數(shù)據(jù)采集系統(tǒng)提供了相應的接口驅動及VI函數(shù) (VI,Virtual Instrument)。對于一些不常見的硬件設備或用戶研發(fā)的硬件設備,NI沒有提供合適的驅動。但是,如前所述,LABVIEW還提供了很多其它的通信接口,包括調用庫函數(shù)節(jié)點(Call Library Function TCP/IP、Data Socket、OPC、共享變量、DDE和.NET等。通過這些通信接口,LABVIEW能夠實現(xiàn)與任何設備的通信。值得留意的是LABVIEW具有調用庫函數(shù)節(jié)點和代碼接口節(jié)點兩種方法,可以結合C語言的
4、編程靈活性和LABVIEW G語言的直觀便捷特點,大幅提高LABVIEW對用戶數(shù)據(jù)采集卡的軟件設計支持。可進一步利用LABVIEW豐富的數(shù)據(jù)分析資源,節(jié)約系統(tǒng)開發(fā)成本。 LABVIEW提供的數(shù)據(jù)采集卡的常用驅動方式有兩種,調用C語言源代碼方式(CIN方式),以及調用動態(tài)鏈接庫方式(CLF方式)。 CIN方式是實現(xiàn)LABVIEW與C語言混合編程的一種媒介,CIN通過輸入、輸出端口實現(xiàn)兩種語言之間的數(shù)據(jù)傳遞。輸入、輸出端口的個數(shù)可由設計者根據(jù)實際需要確定,當LABVIEW的程序運行到CIN節(jié)點時,數(shù)據(jù)由CIN的輸入端口傳遞給C源代碼圖標,程序轉去執(zhí)行C源代碼,代碼執(zhí)行完后,執(zhí)行的數(shù)據(jù)結果由CIN輸
5、出端口返回至LABVIEW。 CLF是一種動態(tài)鏈接庫(DLL)的調用方式。DLL是一種應用程序在運行時與庫文件連接起來的技術,在WINDOWS的管理下,應用程序與對應DLL之間建立鏈接關系,根據(jù)鏈接產生的重定位信息,轉去執(zhí)行DLL中相應的代碼。LABVIEW中,可通過CLF(調用路徑為Function>>Advanced>>Call Library Function)功能模塊實現(xiàn)調用。 調用CIN節(jié)點需要有C語言編程的支持,它能夠將代碼集成在VI中作為單獨的一個VI發(fā)布,CIN 支持的參數(shù)類型比DLL 函數(shù)多,可使用LABVIEW 定義的任何參數(shù)類型,但制作CIN的過程
6、復雜得多。使用這種方法的缺點是在數(shù)據(jù)采集過程中不能實時地進行數(shù)據(jù)的顯示,只能在數(shù)據(jù)全部采集結束后再一起顯示所采集的全部數(shù)據(jù),這樣在需要較高執(zhí)行效率的場合就不適用。其次由于CIN節(jié)點在制作數(shù)據(jù)采集卡的驅動時,需要提供采集卡的硬件參數(shù),需編制對硬件設備進行底層操作的庫函數(shù),對于不清楚函數(shù)內核的程序員不適用。相比CIN方式,CLF方式更加簡單易學,開發(fā)者只需要熟悉DLL中的各個函數(shù)功能以及函數(shù)的參數(shù)及類型,在本文設計中,擬采用CLF方式實現(xiàn)驅動程序的調用。 基于CLF方式的采集卡軟件設計 本文所涉及的軟件控制對象是一款中頻數(shù)據(jù)采集與處理卡,具有14位A/D精度,最高采樣頻率為105MHz,4路模擬量
7、輸入,提供高精度中頻信號數(shù)字化、多通道、多模式數(shù)字下變頻(DDC)等數(shù)字處理,軟件結構詳見圖1。 圖1 采集卡的軟件結構 圖2 VI的層級結構 LABVIEW應用程序分為用戶界面和圖標代碼,通過搭建和調用子VI編寫主體程序,各VI利用LABVIEW的CLF技術調用動態(tài)鏈接庫中的驅動函數(shù),實現(xiàn)與硬件設備的數(shù)據(jù)交換。子VI將基本的驅動函數(shù)進行功能封裝。一個完整的LABVIEW應用程序通常由若干個子VI及其外部編程連線構成,VI的層級結構設計是設計虛擬儀器驅動程序的核心,各VI分別為組成驅動程序的模塊化子程序。設計中,動態(tài)鏈接庫由VC編寫,調用底層的驅動函數(shù)與設備通信。軟件包括兩類子VI函數(shù)集合,一
8、類是低層組件VI集合,分為若干個獨立的軟件功能模塊,每個模塊負責控制儀器的某項特殊功能,這類VI是儀器驅動程序的基礎;另一類為高層應用VI集合,應用VI通過調用合適的組件VI以實現(xiàn)最通常的儀器設置和測量任務。顯然,就驅動程序開發(fā)而言,能否根據(jù)硬件特性成功構建組件VI集合是關鍵所在。VI層次結構如圖2所示。 如圖所示,按功能有兩個高層應用子VI集合:Config.vi,Config DDC.vi,這兩個子VI又分別調用低層組件子VI來完成特定的設置、配置任務。Config.vi完成采集卡的常規(guī)配置,例如對采集卡單次采集數(shù)量、FIFO滿深度、寄存器(硬件通道、時鐘、觸發(fā)、采集方式、采集模式等的控制
9、)設置、采集卡的狀態(tài)查詢等;Config DDC.vi完成DDC的所有配置工作,包括對DDC的模式、抽取率、輸出格式、本振頻率、本振相位、增益、CFIR濾波參數(shù)、PFIR濾波參數(shù)等的設置,從而實現(xiàn)DDC的數(shù)字IQ分離、抽取、數(shù)字濾波、重采樣、多級增益調節(jié)、多種調制方式的解調等功能。其余低層組件VI實現(xiàn)設備的打開關閉、數(shù)據(jù)從數(shù)據(jù)采集卡到主機內存的傳送、數(shù)據(jù)保存等。無論應用子VI或組件子VI均為獨立可執(zhí)行程序,實現(xiàn)特定功能,各VI函數(shù)作為提供給用戶進行系統(tǒng)應用開發(fā)所需的各類操作。采用該結構,能夠使用戶在運行時修改虛擬儀器系統(tǒng)的運行邏輯與人機界面,可立即執(zhí)行,因此在用戶需要改變需求的情況下能迅速適配
10、,數(shù)據(jù)采集卡具有可重構的特點,用戶也不必去關心硬件的實現(xiàn)細節(jié)。 DLL的調用 在LABVIEW 中調用DLL時,把編寫好的DLL放在當前目錄或特定目錄下,然后根據(jù)應用程序的需要,確定參數(shù)個數(shù)和參數(shù)類型及調用規(guī)則,在LABVIEW中正確地配置DLL 。首先從函數(shù)模板Function 中調用CLF 節(jié)點,雙擊彈出設置對話框,如圖2所示。對話框中,第一個參數(shù)Library Name Path 填入需要調用的動態(tài)鏈接庫文件的名字和路徑。第二個參數(shù)Function 接口線路中調用,DLL 的執(zhí)行期將等到用戶接口線程(即LABVIEW環(huán)境下的VI 應用程序) 執(zhí)行DLL 的導出函數(shù)調用時才開始;Run i
11、n any Thread 表示允許多個線程同時調用這個DLL。在編制DLL 過程中,充分考慮了線程保護的同步機制,如使用臨界區(qū)、互斥、信號量等,線程安全較為確定,那么可以選用Run in any Thread方式,這將有助于提高DLL調用的性能;反之,可選Run in UI Thread。第四個參數(shù)是對DLL的調用規(guī)則,可選擇C或stdcall,在此選擇stdcall。LABVIEW調用庫函數(shù)設置界面如圖3所示,其中Parameters項是對參數(shù)選項的設置,根據(jù)調用的函數(shù),添加和設置相應的參數(shù),參數(shù)名稱、類型和數(shù)據(jù)類型,且要與被調用函數(shù)中的參數(shù)名相同。需要注意的是,當調用多個函數(shù)時要分別填寫參
12、數(shù)的個數(shù)和對應的類型,而且在調用過程中應保持數(shù)據(jù)位的一致。由于LABVIEW中的數(shù)據(jù)類型和不同編程語言對應的數(shù)據(jù)類型在形式上有些不一致,因此需要知道它們是如何對應的。如:LABVIEW中I16表示有符號16位整型,對應C語言中的short型。 設置后,LABVIEW將自動生成各參數(shù)的入口及出口狀態(tài),完成調用庫函數(shù)節(jié)點的配置。對于外部的編程和連線,如Trigger.vi,如圖4所示。 圖3 LABVIEW調用庫函數(shù)設置界面 圖4 Trigger子VI程序框圖 DLL調用中的參數(shù)類型匹配 在LABVIEW中調用動態(tài)鏈接庫,難點在于參數(shù)類型匹配。最常用的三種數(shù)據(jù)類型是:數(shù)值類型、字符串、數(shù)值型數(shù)組。
13、設計中,將采集數(shù)據(jù)傳送到內存塊過程涉及到帶數(shù)組參數(shù)的函數(shù)調用,值得注意的是,LABVIEW 只支持 C 數(shù)據(jù)類型中的數(shù)值型數(shù)組,調用含有數(shù)組參數(shù)函數(shù)時,傳遞數(shù)組類型“Array Format”要選擇“Array Data Pointer”。這個設置中還有其他兩個選項(Array Handle,Array Handle Pointer),這種帶有“Handle”的參數(shù)類型都是表示LABVIEW定義的特殊類型的,在第三方的DLL中不會使用到。按前述步驟設置好CLF節(jié)點,連接外部輸入(采集數(shù)量size)和輸出(存放采集數(shù)據(jù)的數(shù)組)后,輸出沒有反應,檢查分析得知,數(shù)組參數(shù)作為輸出值時,要為輸出的數(shù)組數(shù)
14、據(jù)開辟空間,將輸入數(shù)據(jù)的指針復制給輸出數(shù)組數(shù)據(jù)指針并傳給驅動函數(shù)。在LABVIEW中開辟數(shù)據(jù)空間的方法有兩種: 1.創(chuàng)建一個長度滿足要求的數(shù)組,作為初始值傳遞給輸入?yún)?shù),輸出數(shù)據(jù)就會被放置在輸入數(shù)組所在的內存空間內。 2.直接在參數(shù)配置面板上進行設置。在 Minimum size 中寫入一個固定的數(shù)值或選擇函數(shù)的其它數(shù)據(jù)參數(shù),LABVIEW 就會按此大小為輸出數(shù)組開辟空間。 詳細設置如表1所示。字符串的使用與數(shù)組非常類似,實際上在C語言中字符串就是一個I8數(shù)組。 表1 調用含有數(shù)組參數(shù)函數(shù)舉例 圖5 采集波形顯示圖此外,布爾類型在DLL函數(shù)和LABVIEW VI之間傳遞沒有專有的數(shù)據(jù)類型,需利
15、用數(shù)值類型來傳遞。輸入時先把布爾值轉變?yōu)閿?shù)值,傳遞給DLL函數(shù);輸出時把數(shù)值轉為布爾值。對于所調用的DLL 庫函數(shù)的參數(shù)類型,如果在配置框中找不到匹配的類型,可以在Type 框中選Adapt to Type,表示編程時指定的LABVIEW數(shù)據(jù)類型與DLL中參數(shù)類型進行自動匹配。LABVIEW也定義了一些特有的數(shù)據(jù)類型,例如復數(shù)類型、LV布爾類型。為了在動態(tài)鏈接庫中能對這些類型的數(shù)據(jù)進行操作,在LABVIEW目錄中的extcode.h文件對LABVIEW的各種數(shù)據(jù)類型進行了定義。在編寫動態(tài)鏈接庫時,通過引用該文件就可以在C代碼中對LABVIEW的這些獨有數(shù)據(jù)類型進行操作。 實驗與結論 程序設計采用循環(huán)順序執(zhí)行結構,主要設置三個調用動態(tài)鏈接庫節(jié)點。循環(huán)順序執(zhí)行結構中包括三幀,第一幀調用Config函數(shù)進行數(shù)據(jù)采集卡的初始化;第二幀循環(huán)調用datatrans函數(shù)采集數(shù)據(jù)至內存,并用波形圖顯示出來;第三幀調用deviceshut函數(shù)釋放采集卡所占資源,程序結束。圖5是設計完成的采集卡軟件工作界面,圖中顯示了對系統(tǒng)采集參數(shù)、處理參數(shù)配置以及采集波形的顯示等,波形顯示了對正弦信號采集4096個有效
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機輸入輸出2025年考試試題及答案
- 2025年軟考備考的高效秘笈試題及答案
- 生活習慣養(yǎng)成小班教育計劃要點
- 現(xiàn)代化開發(fā)流程的優(yōu)化策略試題及答案
- 2025年軟考服務導向架構試題及答案
- 倉庫應對市場變化的靈活策略計劃
- 云計算平臺的服務模型解析試題及答案
- 河北省石家莊市八校聯(lián)考2025年七下數(shù)學期末經(jīng)典模擬試題含解析
- 保密資質認定管理辦法
- 2025屆合肥蜀山區(qū)五校聯(lián)考八年級數(shù)學第二學期期末考試模擬試題含解析
- 項目驗收ppt目錄課件
- 兩器車間產能分析
- 機電廠房金屬壁板隔墻工程施工方案(71頁)
- ASME第八卷第一冊2015培訓資料
- 《石鐘山記》教案3
- 報聯(lián)商——有效溝通PPT課件
- 二年級口算題大全(可直接打印)
- 全國城市文明程度指數(shù)測評體系版圖文
- 低壓電工模擬考試題-急救
- 高速公路企業(yè)如何實現(xiàn)有效的精細化管理藝術
- 晉商成功之道PPT課件
評論
0/150
提交評論