摘? 要: 介紹了應(yīng)用在焊縫缺陷自動(dòng)超聲檢測(cè)系統(tǒng)" title="檢測(cè)系統(tǒng)">檢測(cè)系統(tǒng)中的高速數(shù)據(jù)采集卡" title="高速數(shù)據(jù)采集卡">高速數(shù)據(jù)采集卡的性能,給出了其硬件實(shí)現(xiàn)方案和WINDOWS98下的虛擬設(shè)備驅(qū)動(dòng)程序(VXD)。該數(shù)據(jù)采集卡不僅具有較高的采樣頻率,而且充分利用PCI總線帶寬,實(shí)現(xiàn)了高速數(shù)據(jù)傳輸。測(cè)試表明,WINDOWS98應(yīng)用程序能夠穩(wěn)定地采集焊縫信號(hào),滿足系統(tǒng)對(duì)數(shù)據(jù)采集的要求。
關(guān)鍵詞: 數(shù)據(jù)采集? PCI總線? 焊縫缺陷? VXD
?
焊縫缺陷自動(dòng)超聲檢測(cè)系統(tǒng)是一種重要的無(wú)損探傷設(shè)備,可用于檢測(cè)平板、管道、容器等的縱、橫焊縫以及接管角焊縫缺陷。與手工檢測(cè)方法相比,該系統(tǒng)具有運(yùn)行平穩(wěn)、漏檢率低、顯示直觀等優(yōu)點(diǎn)[1]。
在焊縫缺陷自動(dòng)超聲檢測(cè)系統(tǒng)中,缺陷回波信號(hào)通常為寬度約10ns~100ns、幅值在幾十μV到幾十mV之間的窄脈沖。為滿足缺陷回波信號(hào)的檢測(cè)要求,研制了一種基于PCI總線的高速數(shù)據(jù)采集卡,它是面向超聲檢測(cè)應(yīng)用而設(shè)計(jì)的:該卡采用轉(zhuǎn)換速率為60MHz的八位高速A/D" title="A/D">A/D以滿足數(shù)據(jù)采集的要求;為緩存A/D芯片輸出的高速數(shù)據(jù)并充分利用PCI總線帶寬,加入32KB的高速FIFO緩存組;同時(shí),為滿足多通道探傷的要求,設(shè)計(jì)了通道選擇電路以實(shí)現(xiàn)通道之間的切換;此外,為調(diào)理缺陷回波信號(hào),卡上還配有高增益高帶寬放大電路。
1 高速數(shù)據(jù)采集卡的工作原理
焊縫缺陷自動(dòng)超聲檢測(cè)系統(tǒng)的信號(hào)采集框圖如圖1所示。系統(tǒng)的工作原理是:首先由高壓脈沖發(fā)生電路發(fā)射高壓脈沖;高壓脈沖經(jīng)換能器形成超聲波信號(hào),遇到缺陷或雜質(zhì)時(shí)產(chǎn)生反射波,經(jīng)換能器轉(zhuǎn)換為電壓信號(hào),該信號(hào)經(jīng)放大調(diào)理、A/D轉(zhuǎn)換后,形成數(shù)字量,寫(xiě)入高速FIFO存儲(chǔ)器中。最后,由PCI接口芯片將FIFO中的數(shù)據(jù)適時(shí)地寫(xiě)入內(nèi)存。
?
2 數(shù)據(jù)采集電路的硬件設(shè)計(jì)
2.1 高增益高帶寬放大電路
采用帶觸發(fā)的直流逆變電路產(chǎn)生高壓脈沖,采用多路模擬通道選擇電路實(shí)現(xiàn)通道切換以滿足多通道探傷要求。模擬信號(hào)經(jīng)五級(jí)放大、濾波后,作為A/D轉(zhuǎn)換電路的輸入。放大電路采用最高增益為80dB、帶寬為15MHz且分辨率為1dB的放大器,并且采用數(shù)字電位器實(shí)現(xiàn)放大增益的動(dòng)態(tài)調(diào)整。
2.2 A/D轉(zhuǎn)換電路
A/D轉(zhuǎn)換電路采用美國(guó)BB公司的ADS830。該芯片的信噪比高、功耗低、非線性畸變小,廣泛應(yīng)用于圖像處理、數(shù)字通信和視頻測(cè)試系統(tǒng)中。ADS830的精度為八位,最高采樣頻率為60MHz,可滿足焊縫缺陷自動(dòng)超聲檢測(cè)系統(tǒng)對(duì)數(shù)據(jù)采集精度和采樣頻率的要求。它有共模和差模兩種信號(hào)輸入方式,且輸出的數(shù)字量可直接與5V或3.3V芯片接口。
2.3 高速FIFO存儲(chǔ)器
高速緩存是保證高速數(shù)據(jù)不丟失的關(guān)鍵,確保了數(shù)據(jù)的真實(shí)性。同時(shí),高速FIFO緩存使A/D芯片不必工作在PCI同步時(shí)鐘下,提高了A/D芯片的利用率。IDT公司的存儲(chǔ)器性能優(yōu)良,且同系列存儲(chǔ)器一般可以做到管腳級(jí)兼容,容易實(shí)現(xiàn)硬件設(shè)計(jì)的模塊化。為方便讀寫(xiě)數(shù)據(jù),選擇先進(jìn)先出式(FIFO)的緩沖存儲(chǔ)器IDT7205L15。其訪問(wèn)時(shí)間為15ns,每片容量為8K×9位。支持異步讀寫(xiě),并提供諸如滿、半滿、空等用于位擴(kuò)展和深度擴(kuò)展的信號(hào)。高速數(shù)據(jù)采集卡為實(shí)現(xiàn)8位A/D和32位PCI總線的寬度匹配,采用了位擴(kuò)展技術(shù)。為加深FIFO的緩沖深度,將外加FIFO緩存與PCI接口芯片內(nèi)部的FIFO相級(jí)連。
2.4 基于CPLD的控制邏輯
基于CPLD的控制邏輯是高速數(shù)據(jù)采集卡的核心,它為PCI接口芯片提供滿足時(shí)序要求的讀寫(xiě)信號(hào),同時(shí)選擇模擬信號(hào)的輸入通道、控制高壓脈沖發(fā)生邏輯并設(shè)定放大電路的增益。此外,CPLD還能利用高速FIFO緩存的空、滿標(biāo)志位,配合PCI接口芯片實(shí)現(xiàn)DMA寫(xiě)操作,完成高速數(shù)據(jù)傳輸。Xilinx 公司的XC9572XL-VQ64芯片的腳到腳延遲最大為10ns,可滿足PCI總線接口時(shí)序的要求。單片XC9572XL-VQ64能滿足焊縫缺陷自動(dòng)超聲檢測(cè)系統(tǒng)邏輯控制的要求,且具有體積小、可靠性高、調(diào)試方便等突出優(yōu)點(diǎn)。
圖2是基于有限狀態(tài)機(jī)FSM(Finite State Machine)方法設(shè)計(jì)的控制邏輯狀態(tài)轉(zhuǎn)換圖。其中,RST和IRQ是由PCI接口芯片S5933輸出的可由程序任意控制的兩個(gè)信號(hào),它們的高低狀態(tài)同高速FIFO緩存的空、滿信號(hào)一起決定了控制邏輯的六個(gè)可能的狀態(tài),圖中以橢圓表示。計(jì)算機(jī)上電時(shí),控制邏輯處于RST=IRQ=1的狀態(tài)。值得一提的是,RST和IRQ信號(hào)都有適當(dāng)?shù)纳侠娮?所以不會(huì)出現(xiàn)高阻浮空的狀態(tài),使控制邏輯能夠穩(wěn)定地工作。實(shí)線是控制邏輯采用的狀態(tài)轉(zhuǎn)移路線,而虛線是可能的但不采用的狀態(tài)轉(zhuǎn)移路線。在各狀態(tài)之間進(jìn)行切換是很容易的,只需通過(guò)程序使RST或IRQ信號(hào)出現(xiàn)高或低跳變。狀態(tài)轉(zhuǎn)移時(shí)伴隨著的電路動(dòng)作見(jiàn)轉(zhuǎn)換線旁的注釋。
?
2.5 PCI接口芯片
PCI總線協(xié)議2.1版出現(xiàn)以后,集成芯片商們紛紛推出了與其兼容的總線接口芯片。其中,AMCC(Applied Micro Circuit Corperation)公司的S5933接口方便、控制靈活,軟件配置簡(jiǎn)單,在高速網(wǎng)絡(luò)接口、數(shù)字通信、高速成像等領(lǐng)域有著廣泛應(yīng)用[2]。S5933最突出的優(yōu)點(diǎn)是能夠作為PCI主控設(shè)備發(fā)起DMA操作,即S5933完全具備雙字DMA控制器的功能。
圖3是結(jié)合系統(tǒng)應(yīng)用而繪制的S5933結(jié)構(gòu)框圖。由圖3可知,S5933內(nèi)部具有配置寄存器組" title="寄存器組">寄存器組和操作寄存器組,配置寄存器組用于控制S5933在PCI總線系統(tǒng)中的運(yùn)作方式(訪問(wèn)延遲、能否發(fā)起主控DMA操作等)以及記錄系統(tǒng)分配給S5933的資源信息(如中斷引腳、I/O" title="I/O">I/O等)[3],而PCI總線和外加電路之間的數(shù)據(jù)交換則通過(guò)操作寄存器組實(shí)現(xiàn)。以I/O資源為例,計(jì)算機(jī)上電后,系統(tǒng)將分配給S5933的I/O資源首地址填入基地址寄存器,此值決定了操作寄存器組在I/O空間中的映射位置(S5933的操作寄存器組缺省地映射到I/O地址空間,便于軟件操作),見(jiàn)圖3。之后,CPU只需執(zhí)行簡(jiǎn)單的I/O操作就可以讀寫(xiě)操作寄存器組,隱含的地址譯碼工作由S5933完成。外加電路控制邏輯則保證操作寄存器組與外加電路的正常通信。S5933提供了三種形式的外加電路接口,高速數(shù)據(jù)采集卡使用信箱(Mailbox)寄存器實(shí)現(xiàn)雙字輸出,用FIFO方式實(shí)現(xiàn)高速DMA寫(xiě)操作。
?
3 高速數(shù)據(jù)采集卡的軟件設(shè)計(jì)
3.1 虛擬設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)
系統(tǒng)的控制軟件工作在WINDOWS98操作系統(tǒng)下,為此開(kāi)發(fā)了高速數(shù)據(jù)采集卡的虛擬設(shè)備驅(qū)動(dòng)程序(VXD)。由S5933的結(jié)構(gòu)可知,VXD需要實(shí)現(xiàn)雙字I/O操作和物理內(nèi)存管理。雙字I/O的操作相對(duì)簡(jiǎn)單,調(diào)用虛擬機(jī)管理器(VMM)的SIMULATE_VM_IO例程即可,較困難的是物理內(nèi)存管理。由于S5933發(fā)起的DMA操作需要物理內(nèi)存的起始地址,因此必須涉及頁(yè)面級(jí)的物理內(nèi)存操作,故采用下述內(nèi)存管理策略:
·應(yīng)用程序加載VXD;
·加載成功后發(fā)送申請(qǐng)緩沖區(qū)的事件給VXD;
·VXD使用PAGEALLOCATE例程得到地址連續(xù)的適當(dāng)長(zhǎng)度(如四頁(yè)即16K字節(jié))的物理內(nèi)存;
·鎖定緩沖區(qū)并將物理地址逆映射為線性地址;
·將物理首地址填入S5933的寫(xiě)RAM地址寄存器;
·允許S5933進(jìn)行主控DMA傳輸;
·傳輸完畢時(shí),應(yīng)用程序請(qǐng)求VXD釋放上述物理內(nèi)存。
3.2 應(yīng)用VXD設(shè)計(jì)數(shù)據(jù)采集程序
將VXD放在應(yīng)用程序的同級(jí)目錄下,則以下VC++代碼就能動(dòng)態(tài)加載(VXDVIEWER可驗(yàn)證)一個(gè)VXD:
HANDLE hDEVICE=CreateFile(“\.pathname”, 0,0,NULL,0,F(xiàn)ILE_FLAG_DELETE_ON_CLOSE, NULL);
編好的VXD為應(yīng)用程序提供了若干服務(wù)例程,應(yīng)用程序執(zhí)行下面的代碼即可調(diào)用服務(wù)例程ZHC1:
DeviceIoControl(HDEVICE, ZHC1, lpinbuffer, ninsize, lpoutbuffer, noutsize, NULL, NULL);
數(shù)據(jù)采集算法如下:
DO????{讀取寫(xiě)RAM字節(jié)計(jì)數(shù)器; 再次讀取寫(xiě)RAM字節(jié)計(jì)數(shù)器;
??? ??? IF? 計(jì)數(shù)器內(nèi)容為零? THEN
??????????? 跳出循環(huán)進(jìn)行后續(xù)數(shù)據(jù)處理;
??????? ELSEIF? 兩次讀取的結(jié)果不同? THEN
?????????? ?不做任何處理而進(jìn)入下一次循環(huán);
ELSE
???????? 清相應(yīng)的狀態(tài)標(biāo)志并設(shè)置有關(guān)寄存器以從斷點(diǎn)處續(xù)傳;
ENDIF????
}??
調(diào)試表明,應(yīng)用VXD的數(shù)據(jù)采集程序能夠穩(wěn)定、高速地采集外部數(shù)據(jù)。對(duì)焊縫缺陷自動(dòng)超聲檢測(cè)系統(tǒng)的實(shí)際測(cè)試表明,該高速數(shù)據(jù)采集卡能滿足缺陷回波的檢測(cè)要求。圖4(a)為實(shí)際測(cè)試時(shí)用示波器觀測(cè)到的模擬放大電路的輸出信號(hào),圖4(b)是A/D轉(zhuǎn)換后、截掉始波并經(jīng)半波整流后得到的信號(hào)。
?
高速數(shù)據(jù)采集卡具有體積小、可靠性高、控制邏輯更改方便、可擴(kuò)展性強(qiáng)等優(yōu)點(diǎn)。對(duì)于檢測(cè)厚度為10~100mm的鋼板,一次采集的數(shù)據(jù)最多為4KB,至多只需0.13ms就可將數(shù)據(jù)從卡上FIFO經(jīng)PCI總線傳入內(nèi)存。
?
參考文獻(xiàn)
1 李生田,劉志遠(yuǎn). 焊接結(jié)構(gòu)現(xiàn)代無(wú)損檢測(cè)技術(shù). 北京:機(jī)械工業(yè)出版社,2000(10)
2 S5930-S5933數(shù)據(jù)手冊(cè).AMCC.Janurary 19th, 1996
3 PCI Local Bus Specification.Revision 2.0.April 30th, 1993