• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于VC++的PCI?6220應用編程設計

      2015-04-13 19:26:22林立杰胡志英
      現(xiàn)代電子技術 2015年1期
      關鍵詞:單端板卡計時

      林立杰 胡志英

      摘 要: 對于NI公司的低成本多用途數(shù)據(jù)采集板卡PCI?6220,給出了一些VC++應用程序設計。首先介紹了該板卡的功能特性,其次對該板卡的測試和應用方法進行了研究,結(jié)合該板卡的功能特性,調(diào)用API庫函數(shù)進行編程設計,使其適合于該板卡的應用場合。

      關鍵字: 板卡功能; 數(shù)據(jù)采集; 采樣率; 軟件編程

      中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2015)01?0147?03

      Abstract: Design of some VC++ application programs is given for the low?cost and multi?purpose data acquisition card PCI?6220. The card′s function features are introduced. The card′s test and application methods are researched. In combination with the card′s function features, the functions called from the API Library are used for programming design, make them suitable for application occasions of the card.

      Keywords: card function; data acquisition; sample rate; soft programming

      0 引 言

      NI?DAQmx是NI公司數(shù)據(jù)采集驅(qū)動軟件的簡稱,是用于NI數(shù)據(jù)采集(DAQ)設備通信、能夠為設備配置虛擬通道和測量任務的圖形化工具,可基于虛擬通道和任務生成NI?DAQmx代碼,提供速度快的單點模擬I/O和多線程設計; 無需連接實際的硬件,方便應用程序的測試和修改等。

      NI PCI?6220屬于M系列板卡,該系列的板卡都使用NI公司數(shù)據(jù)采集驅(qū)動軟件NI?DAQmx。每個驅(qū)動都有自己的API函數(shù),包括相應的硬件配置和軟件配置。M系列板卡有多達16種編程功能接口信號。M系列設備板卡使用板上振蕩器生成一個40 MHz的頻率時鐘,為板卡提供時鐘源。

      1 功能特性

      1.1 模擬數(shù)據(jù)采集功能

      板卡具有16路分辨率為16位的模擬輸入端口,模擬輸入接線方式可以按照8路差分方式(AI0~AI7:AI8~AI15),也可以按照16路單端接地方式,設計者可以根據(jù)信號抗干擾性要求進行選擇。

      板卡最大采樣率為250 KS/s單通道采樣或者按照所有通道總和采樣率為250 KS/s進行。實際采樣率可以由設計者在相應API函數(shù)中按照實際需要進行設置,并不需要設置為最大值。模擬電壓輸入最大電壓能夠承受±10 V。

      1.2 數(shù)字I/O功能

      板卡具有24條數(shù)字I/O線,8路高速可達1 MHz時鐘線,可以通過編程實現(xiàn)數(shù)字信號讀和數(shù)字信號輸出功能。

      1.3 觸發(fā)計時功能

      板卡具有2個32位80 MHz計時器,可以通過計時觸發(fā)控制輸出0.5 ms級脈沖波形。

      2 板卡測試及應用研究

      在板卡應用前需要明確以下概念:

      (1) 物理通道和虛擬通道

      物理通道表示直接在上面測量、產(chǎn)生電壓或數(shù)字信號的物理管腳或終端。例如物理通道標示為Dev0/ai1,表示設備標識符為Dev0,通道標識符為ai1,為模擬輸入通道1。而虛擬通道則與每次測量任務相結(jié)合,對應于各物理通道及其設置,包括在端口連接、測量或生成的信號類型、縮放信息。在NI?DAQmx 中,各項測量都不能缺少虛擬通道。通過配置虛擬通道作為任務的一部分或獨立于一個任務。

      (2) 任務

      任務是具有定時、觸發(fā)或其他特性的一個或多個虛擬通道。理論上,任務就是要執(zhí)行的測量任務或生成信號任務??梢栽谌蝿罩性O置或者保存所有的配置信息,并且可以將任務用于應用程序。

      (3) 采樣率

      數(shù)據(jù)采集需要考慮采樣類型,PCI?6220板卡采樣類型有DAQmx_Val_ContSamps連續(xù)采樣和DAQmx_Val_FiniteSamps 有限采樣兩種。連續(xù)采樣表示在一段時間內(nèi)不間斷對端口讀數(shù)據(jù),而有限采樣表示點擊一次即采集一次數(shù)據(jù)。采樣率通常又被稱為掃描率(the Scan Rate),采樣率越高,采集的信號精度就越高。

      2.1 板卡應用前測試

      在機器PCI插槽插入NI PCI?6220板卡后,安裝驅(qū)動程序,需檢測板卡功能是否正常。 運行NI公司提供的Measurement &Automation Explorer軟件,點擊“設備和接口”項目下出現(xiàn)的“NI PCI?6220(68?pin):“Dev1”選項,如圖1所示。點擊右邊欄“自檢”,檢驗設備是否安裝自檢正常。

      2.2 模擬輸入采集

      模擬輸入通常采用單端輸入和差分輸入方式。單端輸入表示信號一端接輸入端口,另一端接公共參考地,單端輸入連接如圖2所示。差分輸入表示信號兩端分別輸入給兩個模擬輸入端,信號大小為兩個模擬輸入端電壓差,差分輸入連接如圖3所示。通常建議采用差分輸入方式,這種方法抗干擾能力強,能較好抑制共模電壓輸入影響。

      2.3 測量流程圖

      圖4舉例描述創(chuàng)建測量電壓的模擬輸入測量流程,與數(shù)字I/O的測量流程類似,只需替換其中的測量函數(shù)。

      3 應用編程設計[1?2]

      為使用NI DAQmx API函數(shù),需要在VC++ 6.0的“project?>Settings?>Link”下鏈接庫文件NIDAQmx.lib,同時在程序中引用頭文件NIDAQmx.h。

      3.1 模擬輸入編程[3?4]

      如果需要讀取通道第0~5和第15通道的單端連續(xù)電壓,其測量范圍為0~10 V。如2.3節(jié)所示,測量前需要創(chuàng)建通道,生成測量任務DAQmxCreateTask("",&*phTaskHandle);申明DAQmxCreateAIVoltageChan(*phTaskHandle,"Dev1/ai0:5,Dev1/ai15","",DAQmx_Val_RSE,0,10.0,DAQmx_Val_Volts,NULL);然后開啟任務DAQmxStartTask(*phTaskHandle);最后調(diào)用函數(shù)DAQmxReadAnalogF64(hTaskHandle,?1,1,DAQmx_Val_GroupByChannel ,fReadData,7,&nReadVal,NULL);將7個數(shù)據(jù)不間斷地讀取到fReadData中。在WindowsXP操作系統(tǒng)下,為了提高實時性,可以調(diào)用硬件定時精度函數(shù)QueryPerformanceCounter進行計時,可精確到1 ms。

      3.2 數(shù)字I/O輸入編程[5]

      如果需要讀取PORT1的數(shù)字I/O通道數(shù)據(jù),測量前也需要創(chuàng)建通道,生成測量任務DAQmxCreateTask("",&*phTaskHandle);然后調(diào)用申明虛擬通道的函數(shù)DAQmxCreateDIChan(*phTaskHandle,"Dev1/port1/line0:7","",DAQmx_Val_ChanForAllLines));開啟任務DAQmxStartTask(*phTaskHandle);再調(diào)用讀所有通道數(shù)據(jù)的函數(shù)DAQmxReadDigitalLines(hTaskHandle,1,10.0,DAQmx_Val_GroupByChannel,nReadData,8,&nReadNum,&nBytesPerSamp,NULL),讀取8個數(shù)據(jù)。

      3.3 數(shù)字I/O輸出波形編程[6]

      通過數(shù)字I/O通道輸出數(shù)字波形相對于前面兩種編程模式要復雜,需要用到計時觸發(fā)功能。特別是如果要輸出兩路有關聯(lián)性的脈沖波形,需要算出兩路脈沖波形之間的最小計時波形精度。這里給出通過計時器CTRO計時、PORT0的0和1端口輸出關聯(lián)脈沖精度的編程方法。首先創(chuàng)建計時任務DAQmxCreateTask("",&*phTaskHandle),其中phTaskHandle為計時任務句柄指針;調(diào)用DAQmxCreateCOPulseChanFreq(*phTaskHandle,"Dev1/ctr0","",DAQmx_Val_Hz,DAQmx_Val_Low,0.0,UpdateRate,0.50)函數(shù)生成0.5 ms精度的計時脈沖頻率,其中UpdateRate約束為1/0.5 ms;調(diào)用函數(shù)DAQmxCreateTask("",wdTaskHandle)創(chuàng)建輸出脈沖波形任務,其中wdTaskHandle表示脈沖輸出任務指針;接著調(diào)用DAQmxCreateDOChan(*wdTaskHandle,"Dev1/port0/line0:1","",DAQmx_Val_ChanPerLine )函數(shù)申明虛擬任務通道;再調(diào)用DAQmxCfgSampClkTiming(*wdTaskHandle,"/Dev1/Ctr0InternalOutput",UpdateRate,DAQmx_Val_Falling,DAQmx_Val_FiniteSamps,nBufLength)函數(shù)表示CTR0內(nèi)部輸出計時屬性為下降沿、有限采樣;接著調(diào)用函數(shù)DAQmxWriteDigitalLines (*wdTaskHandle, nBufLength, 0, 10.0, DAQmx_Val_GroupByChannel, uDataBuf, NULL, NULL)申明寫數(shù)據(jù)線方式輸出uDataBuf內(nèi)包含的數(shù)據(jù),連續(xù)啟動計時任務和波形輸出任務后開始執(zhí)行波形輸出任務。

      4 結(jié) 論

      在PCI?6220板卡模擬輸入試驗中,要充分注意到差分方式和單端方式采集電壓的不同,信號接地方式將會影響到電壓采集的真實性,如果通道數(shù)目足夠,盡量采樣差分方式采集模擬信號。

      波形輸出編程需要精確考慮計時觸發(fā)的時間精度,尤其對于輸出關聯(lián)脈沖波形來說,需要計算在計時精度條件下波形編碼方式,即0、1信號的數(shù)量,以此確定輸出數(shù)據(jù)緩沖區(qū)的大小和長度。

      上述編程方式經(jīng)過一定實驗驗證,表明該采集板卡對慢變信號、高速信號等模擬輸入信號以及數(shù)字I/O信號都能夠很好地完成數(shù)據(jù)采集任務。脈沖波形輸出的編程流程更復雜化,需要考慮的方面更多,本文在這里提供參考。

      參考文獻

      [1] LRINRVKRT R C. Visual C++ Bible[M].北京:電子工業(yè)出版,1999.

      [2] 徐曉剛,高兆法,王秀娟.Visual c 6.0入門與提高[M].北京:清華大學出版社,1999.

      [3] 崔常府.基于NI的計算機控制程序開發(fā)[D].青島:中國石油大學(華東),2009.

      [4] 李凈,楊俊武,錢旭.用多媒體定時器精確控制采樣頻率[J].計算機應用,2000(12):67?68.

      [5] 陳銀輝,張銀鴻.LabView 8.20程序設計從入門到精通[M].北京:清華大學出版社,2007.

      [6] 黃松嶺.虛擬儀器設計基礎教程[M].北京:清華大學出版社,2008.

      猜你喜歡
      單端板卡計時
      暢游計時天地
      車迷(2022年1期)2022-03-29 00:50:24
      腕表計時2.0
      中國化妝品(2020年9期)2020-10-09 08:56:56
      12時計時法與24時計時法的互化
      基于PCI9054的多總線通信板卡的研制
      測控技術(2018年3期)2018-11-25 09:45:46
      基于FPGA的多通道模擬量采集/輸出PCI板卡的研制
      測控技術(2018年12期)2018-11-25 09:37:42
      24時計時法
      多路輸出單端反激開關變換器設計
      基于DSP的單端反激式開關電源的建模與分析
      一種基于光纖數(shù)據(jù)傳輸?shù)亩喟蹇ㄜ浖绦驘龑懠夹g
      單端反激開關電源反饋網(wǎng)絡的研究
      電源技術(2015年11期)2015-08-22 08:50:50
      太和县| 尤溪县| 山丹县| 江孜县| 华蓥市| 静海县| 都匀市| 大宁县| 祁门县| 来凤县| 大港区| 绍兴县| 阳新县| 道孚县| 吉木乃县| 包头市| 淮安市| 南陵县| 天柱县| 珲春市| 金秀| 车致| 娱乐| 隆子县| 乐业县| 谷城县| 偏关县| 集贤县| 西乡县| 聂荣县| 西充县| 湘潭县| 砀山县| 宁明县| 桃江县| 鄂托克前旗| 西乌珠穆沁旗| 新晃| 昌乐县| 河东区| 偃师市|