<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 實(shí)時(shí)高速數據采集與存儲系統的一種實(shí)現方法

實(shí)時(shí)高速數據采集與存儲系統的一種實(shí)現方法

作者: 時(shí)間:2007-03-26 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:PCI-7300A_RevB超高速數字I/O卡的應用,介紹一種大容量、高速、實(shí)時(shí)數據。并根據自己的開(kāi)發(fā)經(jīng)驗,指出實(shí)現過(guò)程中應該注意的一些問(wèn)題。
關(guān)鍵詞:高速、實(shí)時(shí)、數據與存儲、PCI-7300A_RevB

1、引言

隨著(zhù)信息科學(xué)的飛速發(fā)展,數據和存儲技術(shù)已經(jīng)是數字信號處理中非常重要的環(huán)節,將決定整個(gè)系統的性能。它廣泛應用于雷達,通信,遙測遙感等領(lǐng)域。它己經(jīng)成為人們獲得外界信息的重要手段?;诳偩€(xiàn)的數據采集與,由于可靠且易于實(shí)現、經(jīng)濟等優(yōu)點(diǎn),得到了廣泛的應用。但當數據傳輸率很高時(shí),保持存儲過(guò)程的可靠性、實(shí)時(shí)性將會(huì )成為一個(gè)比較棘手的問(wèn)題。為此一些廠(chǎng)商提供了雙總線(xiàn)技術(shù)、64位/66MHzPCI總線(xiàn)系統來(lái)解決這問(wèn)題。但這些技術(shù)較為昂貴,且忽略了現有的硬件設備。經(jīng)過(guò)實(shí)驗與探索,我們選用ADLINK公司的PCI-7300A_RevB超高速數字I/O卡,利用現有的單(32位/33MHz)PCI總線(xiàn)的計算機

系統構成低成本的硬件平臺,并利用自己開(kāi)發(fā)的軟件系統,最終實(shí)現了高速(45Mbytes/sec)持續的數據采集于存儲。

2、硬件組成及注意事項

為了利用現有的硬件設備,降低成本;我們采用ADLINK公司出品的PCI-7300A_RevB超高速數字I/O卡作為數據采集部分。該卡的主要特性如下:

32位數字I/O通道

32位PCI總線(xiàn)

通過(guò)觸發(fā)信號控制數據采集操作的開(kāi)始。

100針SCSI型連接器

分散/聚攏方式的DMA

最高傳輸速率80Mbytes/sec

要實(shí)現實(shí)時(shí)高速的數據存儲,使用的一般的硬盤(pán)是不行的。所以我們選用希捷公司出品的型號為ST3146707LC的SCSI硬盤(pán),該硬盤(pán)的容量是146GB,能滿(mǎn)足記錄大量數據的需要,其轉速為10Krpm。相應的SCSI硬盤(pán)控制器,選用Adaptec公司出品的型號為Adaptec19160的Ultra160-SCSI硬盤(pán)控制器.

在搭建硬件平臺的過(guò)程中有些問(wèn)題是必須注意的,否則系統不能正常工作。首先,PCI-7300A_RevB卡雖然采用分散/聚攏方式的DMA,但它對CPU資源的占用率是非常高的。經(jīng)過(guò)實(shí)驗證明,要保證整個(gè)數據采集與正常工作,只能使用奔四1.7G以上的計算機系統。其次,Windows系統允許多個(gè)設備共享一個(gè)中斷請求號(IRQ)。為了保證存儲過(guò)程的實(shí)時(shí)性,必須確保SCSI硬盤(pán)控制器和PCI-7300A_RevB卡使用不同的IRQ??梢栽谥靼錌IOS里把Pnp(即插即用) /PCI設備的IRQ進(jìn)行手動(dòng)配置。最后Windows 2000 Service Pack 2 (SP2) 及早期版本不支持大于137GB容量的硬盤(pán)。須要先安裝Service Pack 3,再在注冊表(HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesAtapiParameters)里添加一個(gè)REG_DWORD類(lèi)型的參數EnableBigLba,并把值設成0x1。這樣146GB的硬盤(pán)才能工作正常。

3、軟件設計

軟件設計直接決定硬件是否能正常工作,以及能否充分發(fā)揮硬件的性能。

3.1PCIS-DASK及雙緩沖區模式的工作原理

PCIS-DASK是ADLINK公司為自己的產(chǎn)品提供的驅動(dòng)程序包,提供了專(zhuān)門(mén)用于實(shí)現采集的連續多緩沖區操作的一組API函數。通過(guò)這組API函數,我們可以按照雙緩沖區的原理,非常方便地實(shí)現對數據的實(shí)時(shí)、高速、連續的采集與存儲。

雙緩沖區模式,在工程上稱(chēng)為“乒乓” 緩沖區模式。跟常用的單緩沖區模式相比雙緩沖區模式的優(yōu)點(diǎn)是,它可以使用較小容量的內存,不間斷地緩沖幾乎無(wú)限量的數據(輸入與輸出端需協(xié)同工作)。這種緩沖區模式的工作原理是:在內存里開(kāi)辟兩塊容量相等的緩沖區(以下將分別它們稱(chēng)為第一緩沖區和第二緩沖區)作為連續數據輸入的緩沖區。工作開(kāi)始時(shí),數據采集卡首先將數據寫(xiě)入第一緩沖區中,在數據采集卡開(kāi)始把數據寫(xiě)入第二緩沖區的同時(shí),用戶(hù)程序可以根據自身需要取出第一緩沖區中的數據做特定的處理。當第二緩沖區被寫(xiě)滿(mǎn)后,數據采集卡回到第一緩沖區的起始處,以覆蓋舊數據的方式,把新數據寫(xiě)入第一緩沖區中;與此同時(shí)用戶(hù)程序取出第二緩沖區中的數據。整個(gè)數據采集處理過(guò)程可以如此不斷地循環(huán)進(jìn)行下去。

32板卡驅動(dòng)設置及注意的問(wèn)題

對板卡驅動(dòng)的深刻理解是編寫(xiě)好數據采集于存儲程序的前提。在連續數據輸入模式下,板卡驅動(dòng)程序需要在系統內存里開(kāi)辟一塊緩沖區做為二級緩存,用戶(hù)可以設置該緩沖區的大小 。方法是:從菜單開(kāi)始/程序/PCI-DASK/NuDAQ PCI configuration Utility 打開(kāi)DASK2000 Device Driver Configuration對話(huà)框,從Card Type組合框中選擇Pci7300A_RevB項,在DI欄輸入你想要開(kāi)辟的緩沖區容量,點(diǎn)擊OK按鈕完成設置。需要注意的是板卡驅動(dòng)設置的緩沖區(簡(jiǎn)稱(chēng)驅動(dòng)緩沖區)容量與用戶(hù)程序開(kāi)辟的緩沖區(用戶(hù)緩沖區)容量存在著(zhù)一定關(guān)系。經(jīng)過(guò)我們多次實(shí)驗,得出驅動(dòng)緩沖區容量大約是用戶(hù)緩沖區的3倍;因此,當驅動(dòng)緩沖區過(guò)小,而用戶(hù)緩沖區較大時(shí),會(huì )出現錯誤。

33 VisualC++開(kāi)發(fā)環(huán)境的設置

為了使用PCIS-DASK提供的實(shí)現連續多緩沖區操作的API函數,以及初始化板卡、設置板卡工作方式的API函數;需要VisualC++連接PCI-DASK提供的動(dòng)態(tài)連接庫(Pci-dask.lib).具體方法是:打開(kāi)工程,從菜單Project/Setting…打開(kāi)Project Setting對話(huà)框,切換到Link選項卡,在Object/library modules攔中添加Pci-dask.lib,點(diǎn)擊OK按鈕完成設置。最后在工程中加入頭文件Dask.h.。

34多線(xiàn)程的實(shí)時(shí)數據存儲軟件設計

在要求高速、實(shí)時(shí)和連續采集和存儲的情況下,一方面要求系統不間斷地進(jìn)行數據采集,同時(shí)還要進(jìn)行數據實(shí)時(shí)地存儲,否則將會(huì )丟失數據,造成數據不完整。為了解決這個(gè)問(wèn)題,我們在軟件實(shí)現中,引入了Windows的多任務(wù)處理技術(shù)(multitasking)。在程序里創(chuàng )建兩個(gè)工作線(xiàn)程分別完成數據采集和數據存儲工作。緩沖方式采用上面所說(shuō)雙緩沖區模式,當數據采集線(xiàn)程(SampleThreadProc)把采集到的數據寫(xiě)入第一緩沖區時(shí),數據存儲線(xiàn)程(StorageThreadProc)把第二緩沖區的數據存入SCSI硬盤(pán);當數據采集線(xiàn)程把數據寫(xiě)入第二緩沖區時(shí),數據存儲線(xiàn)程把第一緩沖區的數據存入SCSI硬盤(pán);如此循環(huán)。另外通過(guò)實(shí)際實(shí)驗測試Adaptec19160 Ultra160-SCSI硬盤(pán)控制器,配合希捷公司出品的ST3146707LC SCSI硬盤(pán),持續寫(xiě)入速率能達到80Mbytes/sec。遠大于45 Mbytes/sec的采集速率。所以當數據采集線(xiàn)程寫(xiě)滿(mǎn)其中一個(gè)緩沖區之前,數據存儲線(xiàn)程已經(jīng)把另一個(gè)緩沖區里的數據存儲入SCSI硬盤(pán)。所以這種方法能保證數據的實(shí)時(shí)性、完整性和連續性。其程序流程圖如圖1。

35軟件實(shí)現

由于篇幅所限,下面僅給出程序中核心的代碼。

BOOLEAN BufferID=0;//緩沖區的ID;1第一緩沖區,0:第二緩沖區。

BOOLEAN Stop=0;//停止數據采集與存儲,1:停止,0:繼續。

U32 Buffer1 [data_size], Buffer2 [data_size];

//開(kāi)辟塊緩沖區。

FILE *fp;//存儲數據的目錄。

UINT SampleThreadProc (LPVOID pParam)

{BOOLEAN HalfReady=0;//緩沖被寫(xiě)滿(mǎn)標志

do {HalfReady=0;

do(DI_AsyncMultiBufferNextReady(card,HalfReady,viewidx))://等待驅動(dòng)程序報告緩
//有沖區被寫(xiě)滿(mǎn)。

}while(!HalfReady);//如果HalfReady!=0,

//明有緩沖區被寫(xiě)滿(mǎn)。

BufferID = ! BufferID;

AfxBeginThread(StorageThreadProc,NULL);

//啟動(dòng)數據存儲線(xiàn)程



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>