亚洲精华国产精华精华液网站,你懂的,娇生惯养4ph归寻(矜以),丰年经继拇中文3与其他教材比较

技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 實(shí)時(shí)高速數(shù)據(jù)采集與存儲(chǔ)系統(tǒng)的一種實(shí)現(xiàn)方法

實(shí)時(shí)高速數(shù)據(jù)采集與存儲(chǔ)系統(tǒng)的一種實(shí)現(xiàn)方法

時(shí)間:2007-06-05 14:59:00來(lái)源:lijing

導(dǎo)語(yǔ):?隨著信息科學(xué)的飛速發(fā)展,數(shù)據(jù)采集和存儲(chǔ)技術(shù)已經(jīng)是數(shù)字信號(hào)處理中非常重要的環(huán)節(jié)
隨著信息科學(xué)的飛速發(fā)展,數(shù)據(jù)采集和存儲(chǔ)技術(shù)已經(jīng)是數(shù)字信號(hào)處理中非常重要的環(huán)節(jié),將決定整個(gè)系統(tǒng)的性能。它廣泛應(yīng)用于雷達(dá),通信,遙測(cè)遙感等領(lǐng)域。它己經(jīng)成為人們獲得外界信息的重要手段。基于總線的數(shù)據(jù)采集與存儲(chǔ)系統(tǒng),由于可靠且易于實(shí)現(xiàn)、經(jīng)濟(jì)等優(yōu)點(diǎn),得到了廣泛的應(yīng)用。但當(dāng)數(shù)據(jù)傳輸率很高時(shí),保持高速數(shù)據(jù)存儲(chǔ)過(guò)程的可靠性、實(shí)時(shí)性將會(huì)成為一個(gè)比較棘手的問(wèn)題。 1、引言 為此一些廠商提供了雙總線技術(shù)、64位/66MHzPCI總線系統(tǒng)來(lái)解決這問(wèn)題。但這些技術(shù)較為昂貴,且忽略了現(xiàn)有的硬件設(shè)備。經(jīng)過(guò)實(shí)驗(yàn)與探索,我們選用ADLINK公司的PCI-7300A_RevB超高速數(shù)字I/O卡,利用現(xiàn)有的單(32位/33MHz)PCI總線的計(jì)算機(jī)系統(tǒng)構(gòu)成低成本的硬件平臺(tái),并利用自己開(kāi)發(fā)的軟件系統(tǒng),最終實(shí)現(xiàn)了高速(45Mbytes/sec)持續(xù)的數(shù)據(jù)采集于存儲(chǔ)。 2、硬件組成及注意事項(xiàng) 為了利用現(xiàn)有的硬件設(shè)備,降低成本;我們采用ADLINK公司出品的PCI-7300A_RevB超高速數(shù)字I/O卡作為數(shù)據(jù)采集部分。該卡的主要特性如下: ·32位數(shù)字I/O通道 ·32位PCI總線 ·通過(guò)觸發(fā)信號(hào)控制數(shù)據(jù)采集操作的開(kāi)始。 ·100針SCSI型連接器 ·分散/聚攏方式的DMA ·最高傳輸速率80Mbytes/sec 要實(shí)現(xiàn)實(shí)時(shí)高速的數(shù)據(jù)存儲(chǔ),使用的一般的硬盤(pán)是不行的。所以我們選用希捷公司出品的型號(hào)為ST3146707LC的SCSI硬盤(pán),該硬盤(pán)的容量是146GB,能滿足記錄大量數(shù)據(jù)的需要,其轉(zhuǎn)速為10Krpm。相應(yīng)的SCSI硬盤(pán)控制器,選用Adaptec公司出品的型號(hào)為Adaptec19160的Ultra160-SCSI硬盤(pán)控制器。 在搭建硬件平臺(tái)的過(guò)程中有些問(wèn)題是必須注意的,否則系統(tǒng)不能正常工作。首先,PCI-7300A_RevB卡雖然采用分散/聚攏方式的DMA,但它對(duì)CPU資源的占用率是非常高的。經(jīng)過(guò)實(shí)驗(yàn)證明,要保證整個(gè)數(shù)據(jù)采集與存儲(chǔ)系統(tǒng)正常工作,只能使用奔四1.7G以上的計(jì)算機(jī)系統(tǒng)。其次,Windows系統(tǒng)允許多個(gè)設(shè)備共享一個(gè)中斷請(qǐng)求號(hào)(IRQ)。為了保證存儲(chǔ)過(guò)程的實(shí)時(shí)性,必須確保SCSI硬盤(pán)控制器和PCI-7300A_RevB卡使用不同的IRQ??梢栽谥靼錌IOS里把Pnp(即插即用) /PCI設(shè)備的IRQ進(jìn)行手動(dòng)配置。最后Windows 2000 Service Pack 2 (SP2) 及早期版本不支持大于137GB容量的硬盤(pán)。須要先安裝Service Pack 3,再在注冊(cè)表(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Atapi\Parameters)里添加一個(gè)REG_DWORD類型的參數(shù)EnableBigLba,并把值設(shè)成0x1。這樣146GB的硬盤(pán)才能工作正常。 3、軟件設(shè)計(jì) 軟件設(shè)計(jì)直接決定硬件是否能正常工作,以及能否充分發(fā)揮硬件的性能。 3.1 PCIS-DASK及雙緩沖區(qū)模式的工作原理 PCIS-DASK是ADLINK公司為自己的產(chǎn)品提供的驅(qū)動(dòng)程序包,提供了專門用于實(shí)現(xiàn)高速數(shù)據(jù)采集的連續(xù)多緩沖區(qū)操作的一組API函數(shù)。通過(guò)這組API函數(shù),我們可以按照雙緩沖區(qū)的原理,非常方便地實(shí)現(xiàn)對(duì)數(shù)據(jù)的實(shí)時(shí)、高速、連續(xù)的采集與存儲(chǔ)。 雙緩沖區(qū)模式,在工程上稱為“乒乓” 緩沖區(qū)模式。跟常用的單緩沖區(qū)模式相比雙緩沖區(qū)模式的優(yōu)點(diǎn)是,它可以使用較小容量的內(nèi)存,不間斷地緩沖幾乎無(wú)限量的數(shù)據(jù)(輸入與輸出端需協(xié)同工作)。這種緩沖區(qū)模式的工作原理是:在內(nèi)存里開(kāi)辟兩塊容量相等的緩沖區(qū)(以下將分別它們稱為第一緩沖區(qū)和第二緩沖區(qū))作為連續(xù)數(shù)據(jù)輸入的緩沖區(qū)。工作開(kāi)始時(shí),數(shù)據(jù)采集卡首先將數(shù)據(jù)寫(xiě)入第一緩沖區(qū)中,在數(shù)據(jù)采集卡開(kāi)始把數(shù)據(jù)寫(xiě)入第二緩沖區(qū)的同時(shí),用戶程序可以根據(jù)自身需要取出第一緩沖區(qū)中的數(shù)據(jù)做特定的處理。當(dāng)?shù)诙彌_區(qū)被寫(xiě)滿后,數(shù)據(jù)采集卡回到第一緩沖區(qū)的起始處,以覆蓋舊數(shù)據(jù)的方式,把新數(shù)據(jù)寫(xiě)入第一緩沖區(qū)中;與此同時(shí)用戶程序取出第二緩沖區(qū)中的數(shù)據(jù)。整個(gè)數(shù)據(jù)采集處理過(guò)程可以如此不斷地循環(huán)進(jìn)行下去。 3.2 板卡驅(qū)動(dòng)設(shè)置及注意的問(wèn)題 對(duì)板卡驅(qū)動(dòng)的深刻理解是編寫(xiě)好數(shù)據(jù)采集于存儲(chǔ)程序的前提。在連續(xù)數(shù)據(jù)輸入模式下,板卡驅(qū)動(dòng)程序需要在系統(tǒng)內(nèi)存里開(kāi)辟一塊緩沖區(qū)做為二級(jí)緩存,用戶可以設(shè)置該緩沖區(qū)的大小 。方法是:從菜單開(kāi)始/程序/PCI- DASK/NuDAQ PCI configuration Utility 打開(kāi)DASK2000 Device Driver Configuration對(duì)話框,從Card Type組合框中選擇Pci7300A_RevB項(xiàng),在DI欄輸入你想要開(kāi)辟的緩沖區(qū)容量,點(diǎn)擊OK按鈕完成設(shè)置。需要注意的是板卡驅(qū)動(dòng)設(shè)置的緩沖區(qū)(簡(jiǎn)稱驅(qū)動(dòng)緩沖區(qū))容量與用戶程序開(kāi)辟的緩沖區(qū)(用戶緩沖區(qū))容量存在著一定關(guān)系。經(jīng)過(guò)我們多次實(shí)驗(yàn),得出驅(qū)動(dòng)緩沖區(qū)容量大約是用戶緩沖區(qū)的3倍;因此,當(dāng)驅(qū)動(dòng)緩沖區(qū)過(guò)小,而用戶緩沖區(qū)較大時(shí),會(huì)出現(xiàn)錯(cuò)誤。 3.3 VisualC++開(kāi)發(fā)環(huán)境的設(shè)置 為了使用PCIS-DASK提供的實(shí)現(xiàn)連續(xù)多緩沖區(qū)操作的API函數(shù),以及初始化板卡、設(shè)置板卡工作方式的API函數(shù);需要VisualC++連接PCI-DASK提供的動(dòng)態(tài)連接庫(kù)(Pci-dask.lib).具體方法是:打開(kāi)工程,從菜單Project/Setting…打開(kāi)Project Setting對(duì)話框,切換到Link選項(xiàng)卡,在Object/library modules攔中添加Pci-dask.lib,點(diǎn)擊OK按鈕完成設(shè)置。最后在工程中加入頭文件Dask.h.。 3.4 多線程的實(shí)時(shí)數(shù)據(jù)存儲(chǔ)軟件設(shè)計(jì) 在要求高速、實(shí)時(shí)和連續(xù)采集和存儲(chǔ)的情況下,一方面要求系統(tǒng)不間斷地進(jìn)行數(shù)據(jù)采集,同時(shí)還要進(jìn)行數(shù)據(jù)實(shí)時(shí)地存儲(chǔ),否則將會(huì)丟失數(shù)據(jù),造成數(shù)據(jù)不完整。為了解決這個(gè)問(wèn)題,我們?cè)谲浖?shí)現(xiàn)中,引入了Windows的多任務(wù)處理技術(shù)(multitasking)。在程序里創(chuàng)建兩個(gè)工作線程分別完成數(shù)據(jù)采集和數(shù)據(jù)存儲(chǔ)工作。緩沖方式采用上面所說(shuō)雙緩沖區(qū)模式,當(dāng)數(shù)據(jù)采集線程(SampleThreadProc)把采集到的數(shù)據(jù)寫(xiě)入第一緩沖區(qū)時(shí),數(shù)據(jù)存儲(chǔ)線程(StorageThreadProc)把第二緩沖區(qū)的數(shù)據(jù)存入SCSI硬盤(pán);當(dāng)數(shù)據(jù)采集線程把數(shù)據(jù)寫(xiě)入第二緩沖區(qū)時(shí),數(shù)據(jù)存儲(chǔ)線程把第一緩沖區(qū)的數(shù)據(jù)存入SCSI硬盤(pán);如此循環(huán)。另外通過(guò)實(shí)際實(shí)驗(yàn)測(cè)試Adaptec19160 Ultra160-SCSI硬盤(pán)控制器,配合希捷公司出品的ST3146707LC SCSI硬盤(pán),持續(xù)寫(xiě)入速率能達(dá)到80Mbytes/sec。遠(yuǎn)大于45 Mbytes/sec的采集速率。所以當(dāng)數(shù)據(jù)采集線程寫(xiě)滿其中一個(gè)緩沖區(qū)之前,數(shù)據(jù)存儲(chǔ)線程已經(jīng)把 另一個(gè)緩沖區(qū)里的數(shù)據(jù)存儲(chǔ)入SCSI硬盤(pán)。所以這種方法能保證數(shù)據(jù)的實(shí)時(shí)性、完整性和連續(xù)性。 3.5 軟件實(shí)現(xiàn) 由于篇幅所限,下面僅給出程序中核心的代碼。 BOOLEAN BufferID=0;//緩沖區(qū)的ID;1第一緩沖區(qū),0:第二緩沖區(qū)。 BOOLEAN Stop=0;//停止數(shù)據(jù)采集與存儲(chǔ),1:停止,0:繼續(xù)。 U32 Buffer1 [data_size], Buffer2 [data_size]; //開(kāi)辟塊緩沖區(qū)。 FILE *fp;//存儲(chǔ)數(shù)據(jù)的目錄。 UINT SampleThreadProc (LPVOID pParam) {BOOLEAN HalfReady=0;//緩沖被寫(xiě)滿標(biāo)志 do {HalfReady=0; do(DI_AsyncMultiBufferNextReady (card,&HalfReady,&viewidx))://等待驅(qū)動(dòng)程序報(bào)告緩 //有沖區(qū)被寫(xiě)滿。 }while(!HalfReady);//如果HalfReady!=0, //明有緩沖區(qū)被寫(xiě)滿。 BufferID = ! BufferID; AfxBeginThread(StorageThreadProc,NULL); //啟動(dòng)數(shù)據(jù)存儲(chǔ)線程

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:交流伺服驅(qū)動(dòng)器集成設(shè)計(jì)平臺(tái)

下一篇:微能WIN-V63矢量控制變頻器在...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.siyutn.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

相關(guān)資訊

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書(shū) | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)

主站蜘蛛池模板: 社会| 嘉禾县| 绵竹市| 石城县| 三穗县| 安达市| 长治市| 宜章县| 习水县| 鹤峰县| 海城市| 叙永县| 慈利县| 柏乡县| 韶关市| 南岸区| 太原市| 修水县| 荃湾区| 闻喜县| 石泉县| 鞍山市| 分宜县| 永康市| 平武县| 兰溪市| 通辽市| 德昌县| 潼南县| 新野县| 永平县| 吴桥县| 嘉义市| 池州市| 格尔木市| 沂源县| 小金县| 洞头县| 周至县| 石城县| 普洱|