前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇數據采集論文范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。
基于表層化方式的DeepWeb數據采集方法將DeepWeb數據采集問題建模為一個優化問題:已知一個DeepWeb數據庫DB,對DB的采集可以表示為尋找一個查詢集合Q={q1,q2,...,qn},在給定的約束條件C滿足的條件下,查詢集合Q從DB獲取的DeepWeb數據最多,即查詢集合Q對DeepWeb數據庫資源的覆蓋率達到最大。其中,C表示許向Web數據庫提交查詢請求的次數。基于表層化方式的DeepWeb數據采集問題的目標就是針對一個給定的DeepWeb數據庫,尋找一組查詢集合,使用該查詢集合能夠對DeepWeb數據庫資源的覆蓋率達到最大。基于表層化的方法的主要思想是通過向DeepWeb數據的查詢接口提交查詢把數據從Web數據庫中挖掘出來。這方法能夠充分利用搜索引擎爬蟲,將DeepWeb數據的采集轉換為SurfaceWeb數據采集的方式,不需要做很大的改變就可以無縫的將DeepWeb數據集成到現有的搜索引擎中?;诒韺踊绞降腄eepWeb數據采集方法的關鍵是為查詢接口生成合適的查詢,其目標是為DeepWeb數據的查詢接口生成有效的查詢實例,構造表單查詢,以便將Web數據庫中的內容發現出來。一個查詢接口可能包含多個輸入項,如果每個輸入項有100個有效的取值,那么對于一個有3個輸入項的查詢接口,組合生成的查詢數量是1,000,000。因此,在迚行DeepWeb數據采集時,為每個查詢接口生成所有可能的查詢是不實際的。而且,對于查詢接口中的一些文本輸入項,其對應的有效的取值進不止100個,如圖書查詢接口的書名,作者等?;诒韺踊椒ǖ腄eepWeb數據采集的目標是以最小的查詢數量達到最大的DeepWeb數據覆蓋率。因此,如何為查詢接口生成有效的查詢是實現DeepWeb數據覆蓋率最大化的重要環節。目前,針對這一問題的研究主要有基于詞頻的方法[11],基于集合覆蓋的方法[12,13],基于強化學習(ReinforcementLearning,RL)的方法[14-16],面向領域的方法(HiWE[17]、DeepBot[18,19]),基于屬性值圖的方法[20],基于查詢模板的方法[21],基于本體的方法[22-24]等。通過對查詢接口的分析發現,查詢接口根據輸入項素的個數可分為:簡單查詢接口(SimpleQueryInterface)和復雜查詢接口(ComplexQueryInterface)。簡單查詢接口包含一個輸入項,即為簡單的關鍵字查詢接口,使用方式與搜索引擎接口一樣;復雜查詢接口則包含兩個或多個輸入項。因此,本文根據查詢構造方法支持的接口類型將已有工作分為兩類:簡單查詢接口查詢構造方法,復雜查詢接口查詢構造方法。
1.1簡單查詢接口查詢構造方法簡單查詢接口只有一個輸入項,因此,對簡單查詢接口迚行查詢構造時并不需要考慮表單輸入項乊間的關系,只需要為該輸入項生成候選查詢關鍵字集合?;谠~頻的方法[11],基于集合覆蓋的方法[12,13],基于強化學習(ReinforcementLearning,RL)的方法[14-16]屬于此類的研究?;谠~頻的方法[11]基于一個假設:在實際數據庫或文檔集合中的高頻詞比隨機選擇的詞具有更高的資源覆蓋能力,而且高頻詞作為查詢能夠獲取更多的查詢結果。因此,該方法對簡單搜索接口所在頁面和查詢返回的結果迚行抽樣,然后在每一輪查詢結果中選擇高頻詞構造查詢迚行資源采集。但是該方法有個明顯的不足:在每次查詢時,高頻詞無法確保獲取更多的新頁面。為此,Wang等人[12,13]將DeepWeb數據庫采集問題建模為集合覆蓋問題,利用目標數據庫采樣方法迚行DeepWeb數據爬取:首先從目標數據庫中獲取部分樣本,引入文檔權重和查詢權重,基于文檔權重和查詢權重利用貪心選擇策略選擇能夠覆蓋樣本數據庫的文檔重復率低的查詢詞集合,使用該查詢詞集合采集目標數據庫。該方法將原始數據庫的查詢選擇轉換為對樣本數據庫的查詢選擇問題。但是該方法無法保證樣本數據與目標數據庫是同分布的,因此覆蓋樣本數據庫的查詢詞集合可能不適用于整個目標數據庫。為此,Jiang和Wu等人提出了基于強化學習(RL)的DeepWeb數據采集框架[14-16],該方法與以往方法的有很大的不同:乊前的方法大多是基于統計信息選擇查詢,如詞頻,文檔頻率,詞頻-逆文檔頻率:而該方法不僅利用統計信息,還利用語言特征(詞性、詞的長度、語)以及HTML本身的特征(關鍵詞的標簽、屬性信息、位置信息等)[14]。RL方法許爬蟲根據從已執行的查詢中獲取經驗,自動學習查詢選擇策略,從而為每一輪查詢選擇收益最大的查詢關鍵詞迚行資源采集。該方法充分利用查詢關鍵詞的不同特征和爬蟲的爬取經驗,自動的確定當前最優的查詢選擇,減少了爬蟲的采集負載和大量空結果集的出現。但是該方法學習過程相對復雜,并且僅能應用于GET提交方法的表單,無法應用于POST類型的提交表單。
1.2復雜查詢接口查詢構造方法不同于簡單查詢接口,復雜查詢接口包含兩個或多個輸入項,對于表單中的選擇輸入項(如select,radio,checkbox)其輸入值是確定的,但是文本輸入項(如text)的值則是無法確定的,文本輸入項可能只接受數值類型的輸入值(如商品價栺)也可能只接受區間類型的輸入值(如日期),而且表單不同的輸入項乊間可能存在關聯關系。值得注意的是,復雜查詢接口并不一定為所有的輸入項都準備輸入值才能獲得查詢結果,因此,對復雜查詢接口迚行查詢構造時,首先需要確定輸入項的值域或約束,然后選擇迚行查詢構造的輸入項并為其準備輸入值,生成表單查詢實例。HiWE[17],DeepBot[18,19],基于屬性值圖的方法[20],基于查詢模板的方法[21],基于本體的方法[22-24]等則屬于此類工作。HiWE[17]是一面向特定領域(仸務)的采集方法,該方法需要人工提供領域屬性及屬性取值集合,并且通過查詢接口屬性集合與領域屬性集合的相似性刞斷,自動選擇領域相關的查詢接口;接著利用人工提供的屬性取值填充表單,生成表單查詢;然后迚行DeepWeb數據的采集,并根據采集經驗利用表單選擇輸入項素的取值更新屬性取值。但是該方法沒有考慮自動為文本輸入項產生新的查詢詞,只能依賴人工提供的知識。不同于HiWE,Wu[20]提出一基于屬性值圖的查詢構造方法。該方法將基于查詢的DeepWeb數據采集建模為圖的遍歷問題:定義基于屬性值的圖模型,將一個結構化的Web數據庫看作是一個單一關系的數據表,每個屬性值為圖中的一個結點,邊為兩個不同的屬性取值在一個數據實例中的共現關系。該工作得出結論認為結構化的數據庫屬性值圖中結點的度分布與冪律分布(powerlaw)相似,并以此為依據采用貪心選擇策略選擇度大的結點生成表單查詢。但是該方法需要將每一次的查詢結果更新到已有的屬性值圖中,然后選擇下一個新的待提交的查詢詞,這方法更新屬性值圖的代價較高。DeepBot[18,19]是一個基于瀏覽器內核開發的DeepWeb數據采集的框架,它與HiWE類似,都采用面向特定領域的方式。DeepBot接受一組領域定義集合作為輸入,自動識別與該集合相關的表單;然后利用領域定義集合為匹配的表單素賦值,生成表單查詢。其中,領域定義集合用于定義采集仸務。該方法通過領域定義與表單乊間的相似度計算自動選擇匹配的表單,許表單素和領域定義乊間存在不完全匹配的情況。DeepBot采用瀏覽器內核解決網頁客戶端瀏覽器腳本解析問題,但是該方法完全依賴人工提供的領域定義集合,不能自動產生新的查詢詞。為此,Madhavan[21]提出了一基于查詢模板的DeepWeb數據自動采集方法,該方法自動刞斷查詢接口中輸入素接受的數據類型,選擇查詢接口中的輸入項的一個子集作為約束項構造查詢模板。在約束項乊間利用笛卡爾積的形式產生不同的查詢請求。約束項的取值有兩方式確定:對于選擇輸入項,則利用查詢接口提供的取值集合;對于文本輸入項,首先利用表單所在頁面的信息構造刜始候選詞,然后從查詢結果文檔中提取額外的關鍵詞更新候選詞列表,重復該步驟直到不能提取新的關鍵詞為止或是達到停止條件,最后將這些查詢詞作為該文本輸入項的取值集合。該方法通過表單查詢返回結果驗證查詢模板的有效性,并且采用自底向上的有效模板的增量式算法構造查詢模板。雖然該方法能夠自動實現DeepWeb數據查詢請求的生成,但是對于包含多個輸入項的查詢接口來說,其對應文本輸入項取值集合的確定,查詢模板有效性的驗證過程復雜,導致DeepWeb數據采集的效率較低。基于本體的查詢構造方法[22-24]與上述方法不同,該方法通過本體直接定義查詢接口中每個素的類型和取值以及素乊間的依賴關系,將本體作為輸入直接生成表單查詢。[22]是一針對語義網環境的DeepWeb數據查詢方法。[23]是一基于本體的屬性自動抽取和查詢轉換方法,該方法將WordNet作為本體,利用本體在DeepWeb數據中加入語義層實現表單查詢的生成。[24]是一基于面向實體DeepWeb數據查詢的方法,該方法將Freebase作為本體知識,利用本體和查詢日志(querylogs)產生實體查詢,用于DeepWeb數據的采集。但是基于本體的方法與HiWE和DeepBot類似都依賴外部的人工指定的輸入信息,自適應性差。
2DeepWeb數據采集查詢構造方法分析
仸何一查詢構造方法的一個非常重要的特征是其自動化程度,這是指在查詢構造過程中需要用戶完成的工作量。除此乊外,由于DeepWeb數據面向的領域廣泛,類型多樣,因此,查詢構造方法最需要具備擴展性,如:在DeepWeb數據源的類型或領域發生變化時,該方法仍然能夠正常工作。本節從支持的查詢接口提交方法,查詢詞提供方式,自動化程度,擴展性角度對比分析目前已有的查詢構造方法。表1是目前已有的查詢構造方法定性比較的結果,在自動化程度一列,“AUTO”表示完全自動、“SEMI”表示半自動、“NO”表示人工完成。在擴展性方面,劃分為三個層次,分別用“好”、“中”、“差”表示使用相關方法或工具的可擴展程度。基于表層化方法的DeepWeb數據采集的目標是以最小的查詢數量達到最大的DeepWeb數據覆蓋率,因此,構造的表單查詢的好壞直接影響目標的實現。雖然已有的查詢構造方法能夠表明確實可以使大量的DeepWeb數據內容對用戶可見,但它也存在一些局限性,如表2所示。從表1可以看出,這些查詢構造方法只能處理提交方法是GET類型的DeepWeb數據庫,不能應用于使用POST方法的DeepWeb數據庫。除此乊外,從表2可以看出,已有的查詢構造方法都存在不同程度的局限性。通過對相關工作的分析可以看出,目前,缺少一能夠同時處理GET和POST提交方法,具備自動,可擴展應用到不同領域的表單查詢構造方法。因此,DeepWeb數據采集的查詢構造方法仍然需要做迚一步的研究。表層化的方法通過向DeepWeb數據的查詢接口提交查詢把數據從DeepWeb數據庫中挖掘出來,得到的DeepWeb數據可以用于構造以數據分析和挖掘為目的的各應用或是數據集成應用。利用該方法迚行DeepWeb數據采集有以下優點:(1)該方法能夠無縫的集成搜索引擎爬蟲,不需要對搜索引擎爬蟲做改動就可以實現DeepWeb數據的采集;(2)基于表層化方法的DeepWeb數據采集系統可以將對應的DeepWeb數據庫的數據保存到本地,這樣可以根據需求對得到的DeepWeb數據迚行預處理,如:連接來自不同DeepWeb數據庫的數據,初除重復內容等;可以為DeepWeb數據預先創建索引,以便快速響應用戶查詢請求;(4)該方法可以使從DeepWeb數據庫得到的內容和從SurfaceWeb得到的內容以相同方式采集。雖然基于表層化處理方式的DeepWeb數據采集方法確實可以使大量的DeepWeb數據內容對搜索引擎用戶可見,但它也存在嚴重的局限性。(1)有很大一部分DeepWeb數據庫的內容無法通過現有的DeepWeb數據采集技術爬取到,原因在于,目前的表層化處理方法只能處理查詢接口的提交方法是GET類型的DeepWeb數據庫,不能應用于使用POST方法的DeepWeb數據庫;(2)該方法對保持采集的DeepWeb數據庫的數據的時新性(datafreshness)非常困難,因為DeepWeb數據庫的內容是動態,多變的,搜索引擎爬蟲可能無法跟上快速變化的DeepWeb數據。表層化的方法面臨的最大的挑戰是如何為DeepWeb數據庫的查詢接口選擇合適的查詢,這涉及到兩個主要問題:第一,需要為查詢接口中的各表單輸入項找出合適的輸入值,對于表單中的選擇輸入項(如下拉、單選、多選等),它們的輸入值是已知的,可以直接利用查詢接口中提供的取值即可,但是對于表單中的文本輸入項,則需要為其預測合適的輸入值;第二,必須控制向查詢接口提交查詢請求的數量,以免對DeepWeb數據庫的提供商(DeepWeb數據所在站點)帶來不合理的負載。通過對表層化方式的DeepWeb數據采集方法分析,我們發現現有的表層化方法在解決DeepWeb數據采集的難題時,也存在不同程度的局限性,這導致現有的DeepWeb數據采集方法難滿足大數據的規模性,多樣性和高速性的特點,因此如何克服現有DeepWeb數據采集方法的局限性,在現有方法的基礎上做出迚一步改迚是未來需要研究的問題。
3研究展望
關鍵詞:USBLabVIEW數據采集
通用串行總線USB(UniversalSerialBus)作為一種新型的數據通信接口在越來越廣闊的領域得到應用。而基于USB接口的數據采集卡與傳統的PCI卡及ISA卡相比具有即插即用、熱插拔、傳輸速度快、通用性強、易擴展和性價比高等優點。
USB的應用程序一般用VisualC++編寫,較為復雜,花費的時間較長。由美國國家儀器(VI)公司開發的LabVIEW語言是一種基于圖形程序的編程語言,內含豐富的數據采集、數據信號分析分析以及控制等子程序,用戶利用創建和調用子程序的方法編寫程序,使創建的程序模塊化,易于調試、理解和維護,而且程序編程簡單、直觀。因此它特別適用于數據采集處理系統。利用它編制USB應用程序,把LabVIEW語言和USB總線緊密結合起來的數據采集系統將集成兩者的優點。USB總線可以實現對外部數據實時高速的采集,把采集的數據傳送到主機后再通過LabVIEW的功能模塊順利實現數據顯示、分析和存儲。
1USB及其在數據采集設備中的應用
USB自1995年在Comdex上亮相以來,已廣泛地為各PC廠家所支持。現在生產的PC幾乎都配置了USB接口,Microsoft的Windows98、NT以及MacOS、Linux等流行操作系統都增加對USB的支持。USB具有速度快、設備安裝和配置容易、易于擴展、能夠采用總線供電、使用靈活等主要優點,應用越來越廣泛。
一個實用的USB數據采集系統硬件一般包括微控制器、USB通信接口以及根據系統需要添加的A/D轉換器和EPROM、SRAM等。為了擴展其用途,還可以加上多路模擬開關和數字I/O端口。系統的A/D、數字I/O的設計可沿用傳統的設計方法,根據采集的精度、速率、通道數等諸元素選擇合適的芯片,設計時應充分注意抗干擾性,尤其對A/D采集更是如此。在微控制器和USB接口的選擇上有兩種方式:一種是采用普通單片機加上專用的USB通信芯片;另一種是采用具備USB通信功能的單片機。USB的另一大優點是可以總線供電,在數據采集設備中耗電量通道不大,因此可以設計成總線供電。
一個USB設備的軟件一般包括主機的驅動程序、應用程序和寫進ROM里面的Firmware。Windows98提供了多種USB設備的驅動程序,但還沒有一種專門針對數據采集系統,所以必須針對特定的設備編制驅動程序。盡管系統已經提供了很多標準接口函數,但編制驅動程序仍然是USB開發中最困難的一件事。通常采用WindowsDDK實現,但現在有許多第三方軟件廠商提供了各種各樣的生成工具,如Compuware的DriverWorks、BlueWaters的DriverWizard等軟件能夠輕易地生成高質量的USB驅動程序。單片機程序的編制也同樣困難,而且沒有任何一家廠商提供了自動生成的工具。編制一個穩定、完善的單片機程序直接關系到設備性能,必須給予充分的重視。以上兩個程序是開發者所關心的,而用戶卻不太關心。用戶關心的是如何高效地通過鼠標操作設備,如何處理和分析采集進來的大量數據。因此還必須有高質量的用戶軟件。用戶軟件必須有友好的界面、強大的數據分析和處理能力以及提供給用戶進行再開發的接口。
2LabVIEW及其外部動態鏈接庫的調用
LabVIEW是美國國家儀器(NI)公司開發的一種基于圖形程序的虛擬儀表編程語言,其在測試與測量、數據采集、儀器控制、數字信號分析、工廠自動化等領域獲得了廣泛的應用。LabVIEW程序稱為虛擬儀器程序(簡稱VI),主要包括兩部分:前面板(即人機界面)和方框圖程序。前面板用于模擬真實儀器的面板操作,可設置輸入數值、觀察輸出值以及實現圖表、文本等顯示??驁D程序應用圖形編程語言編寫,相當于傳統程序的源代碼。其用于傳送前面板輸入的命令參數到儀器以執行相應的操作。LabVIEW的強大功能在于層次化結構,用戶可以把創建的VI程序當作子程序調用,以創建更復雜的程序,而且,調用階數可以是任意的。LabVIEW這種創建和調用子程序的方法使創建的程序模塊化,易于調試、理解和維護。LabVIEW編程方法與傳統的程序設計方法不同,它擁有流程圖程序設計語言的特點,擺脫了傳統程序語言線形結構的束縛。LabVIEW的執行順序依方塊圖間數據的流向決定,而不像一般通用的編程語言逐行執行。在編寫方框圖程序時,只需從功能模塊中選用不同的函數圖標,然后再以線條相互連接,即可實現數據的傳輸。
LabVIEW雖有接口卡的驅動和管理程序,但主要是針對NI公司自己生產的卡。對于普通的I/O卡,還不能直接被LabVIEW所應用,必須采取其他方法。其中可以用LabVIEW的PortIn和PortOut功能,但此法應用簡單,無法實現較復雜的接口功能。而采用動態鏈接庫,可以根據具體需要編寫適當的程序,靈活利用LabVIEW的各項功能。用戶可以自己編寫DLLs實現LabVIEW與硬件的鏈接。用VC++6.0編制動態鏈接庫,首先生成DLL框架,AppWizard將自動生成項目文件,但不產生任何代碼,所有代碼均需用戶自己鍵入。DLL需要的文件有:①h函數聲明文件;②c源文件;③def定義文件。H文件的作用是聲明DLL要實現的函數原型,供DLL編譯使用,同時還提供應用程序編譯使用。C文件是實現具體文件的源文件,它有一個入口點函數,在DLL被初次調用的運行,做一些初始化工作。一般情況下,用戶無須做什么初始化工作,只需保留入口點函數框架即可。def文件是DLL項目中比較特殊的文件,它用來定義該DLL項目將輸出哪些函數,只有該文件列出的函數才能被應用函數調用。要輸出的函數名列在該文件EXPORTS關鍵字下面。
3基于AN2131Q的單光子采集系統
該采集系統由筆者自行開發并用于單光子計數種子活性快速檢測儀中。它主要由將光子信號轉為電信號的光電倍增管(PMT)及其輔助電路和基于AN2131Q的USB采集卡組成。PMT及其前置放大器、放大器、甄別器等輔助電路能將微弱的光子信號轉換為15ns的標準TTL脈沖信號,脈沖信號經過分頻處理后再被USB采集,USB將采集的結果實時地傳給主機處理。
3.1USB采集卡的硬件組成
該采集卡由微控制器、USB通信接口、主機以及數字I/O端口組成,如圖1所示。
筆者設計了一種同步傳輸方式的單片方案,應用了內置微處理器的USB設計——EZ-USBAN2131Q。它是Cypress公司的一種內嵌微控制器的80腳USB芯片,包含三個8位多功能口,8位數據端口,16位地址端口,二個USB數據端口,二個可定義16位的定時/計數器和其他輸入輸出端口。其采用一種基于內部RAM的解決方案,允許客戶隨時不斷地設置和升級,不受端口數、緩沖大小和傳輸速度及傳輸方式的限制。片內嵌有一個增強型8051微控制器,其4個時鐘的循環周期使它比標準8051的速度快3倍。采用同步傳輸方式將單片機的計數值實時傳送給主機,而主機對計數器的控制信號則采用塊傳輸方式傳送。EZ-USB是Cypress公司推出的USB開發系統,它為USB外設提供了一種很好的集成化解決方案。EZ-USB在其內核已做了大量繁瑣的、重復性的工作,這樣就簡化了開發代碼,進而縮短了開發周期。此外,開發商還提供了配套的開發軟件(包括編譯軟件uVision51、調試軟件dScope51、控制軟件EZUSBControllPanel)以及驅動程序GPD(GeneralPurposeDriver)接口,以便于用戶進行開發使用。
圖2開啟設備和獲取采集數據的流程圖
3.2USB采集卡的軟件構成
在USB的Firmware中,采取同步傳輸(IsochronousTransactions)和塊傳輸(BulkTransactions)兩種傳輸方式。同步方式用來實時傳送采集的數據,塊傳輸主要用來傳輸主機命令信號和USB的狀態信息。塊傳輸中利用端點(Endpoint)2。兩種傳輸方式的核心中斷程序如下:
voidISR_Sutok(void)interrupt0//塊傳輸方式
{
//initializethecoutersinthe8051
TMOD=0x05;
TCON=0x10;
TH0=0;
TL0=0;
Thb=0,
TH0=0;
TL0=0;
thb=0;
EZUSB_IRQ_CLEAR();
USBIRQ=bmSUTOK;//ClearSUTOKIRQ
}
voidISR_Sof(void)interrupt0//同步傳輸方式
{
if(TCON&0x21){//Dealwiththecounteroverflow
TH0=0;
Tl0=0;
THB++;
TCON&=0xdf;}
IN8DATA=TH0;//3Bytescounterresult
IN8DATA=TL0;
IN8DATA=THB;
EZUSB_IRQ_CLEAR();
USBIRQ=bmSOF;//ClearSOFIRQ
}
在LabVIEW應用程序中設計了一Usb.dll文件作為LabVIEW與USB的驅動程序。由于EZ-USB開發系統中已經提供了底層驅動程序(GPD)接口函數,用戶只需調用這些函數即可與USB設備連接。因此在DLL的編制中只需調用它提供的函數,大大節約了開發時間,提高了開發速度。創建的Usb.dll文件中包含了如下五個輸出函數,功能說明如表1所示。
表1Usb.dll包含函數的功能說明
Control主機對USB設備的控制
ReadResult獲取USB發送到主機的數據
StartIsoStream啟動設備的同步傳輸流
StartThread得到標準設備的設備描述符
StopThread關閉設備的同步傳輸流
其定義如下:
LPSTR_declspec(dllexport)_stdcallControl(intinput);
int_declspec(dllexport)_stdcallReadResult(void);
int_declspec(dllexport)_stdcallStartIsoStream(void);
int_declspec(dllexport)_stdcallStartThread(void);
int_declspec(dllexport)_stdcallStopThread(void);
開啟設備和獲取采集數據的過程如圖2所示。它的主要功能有:開啟或關閉USB設備、檢測USB設備、設置USB數據傳輸管道(pipe)和端點(endpoint)、實時從USB接口采集數據、顯示并分析數據。
基于通用信號處理開發板,利用FPGA技術控制AD9233芯片對目標模擬信號采樣,再將采樣量化后的數據寫入USB接口芯片CY7C68013的FIFO中,FIFO寫滿后采用自動觸發工作方式將數據傳輸到PC機。利用VC++6.0軟件編寫上位機實現友好的人機交互界面,將傳輸到PC機上的數據進行儲存和實時回放。本系統主要實現以下兩大功能:1)ADC模塊對目標模擬信號進行采樣,利用FPGA技術將采樣后的數據傳輸到USB接口芯片CY7C68013的FIFO中存儲。2)運用USB2.0總線數據傳輸技術,將雷達回波信號數據傳輸到PC機實時回放。分為應用層、內核層和物理層3部分。應用層和內核層主要由軟件實現。應用層采用VC++6.0開發用戶界面程序,為用戶提供可視化操作界面。內核層基于DriverWorks和DDK開發系統驅動程序,主要起應用軟件與硬件之間的橋梁作用,把客戶端的控制命令或數據流傳到硬件中,同時把硬件傳輸過來的數據進行緩存。物理層主要以FPGA為核心,對USB接口芯片CY7C68013進行控制,通過USB2.0總線實現對中頻信號采集。系統設計采用自底向上的方法,從硬件設計開始逐步到最終的應用軟件的設計。
2硬件設計
FPGA在觸發信號下,控制ADC采樣輸入信號,并存入FIFO中。當存滿時,將數據寫入USB接口芯片CY7C68013,同時切換另一塊FIFO接收ADC轉換的數據,實現乒乓存儲,以提高效率。FPGA模塊的一個重要作用是控制USB接口芯片CY7C68013。當ADC采樣后,數據進入FPGA模塊,FPGA控制數據流將其寫入CY7C68013的FIFO中,以便于USB向PC機傳輸。CY7C68013的數據傳輸模式采用異步slaveFIFO和同步slaveFIFO切換模式。通過實測,前者傳輸速度約為5~10Mbit/s,后者傳輸速度最高可達20Mbit/s,傳輸速度的提高可通過更改驅動程序的讀取方式實現。
3軟件設計
3.1USB驅動程序設計
USB2.0總線傳輸技術最高速率可達480Mbit/s。本系統采用批量傳輸的slaveFIFO模式。CY7C68013芯片內部提供了多個FIFO緩沖區,外部邏輯可對這些端點FIFO緩沖區直接進行讀寫操作。在該種傳輸模式下,USB數據在USB主機與外部邏輯通信時無需CPU的干預,可大大提高數據傳輸速度。Cypress公司為CY7C68013芯片提供了通用的驅動程序,用戶可根據需求開發相應的固件程序。
3.2FPGA模塊程序設計
系統中FPGA模塊的核心作用是控制AD9233芯片進行采樣。AD9233作為高速采樣芯片,其最高采樣速率達125Mbit/s,最大模擬帶寬為650MHz。通過改變采樣速率可使該系統采集不同速率需求的信號,擴展了該系統的應用范圍。描述FPGA控制USB數據寫入接口芯片FIFO的狀態機如圖6所示。狀態1表示指向INFIFO,觸發FIFOADR[1:0],轉向狀態2;狀態2表示若FIFO未滿則轉向狀態3,否則停留在狀態2;狀態3表示驅動數據到總線上,通過觸發SLWR寫數據到FIFO并增加FIFO的指針,然后轉向狀態4;狀態4表示若還有數據寫則轉向狀態2,否則轉向完成。
3.3上位機設計
為實現人機交互,利用VC++MFC在PC機上編寫了可視化操作界面,即上位機。上位機既用于數據采集的控制,同時也用于采集數據的實時回放。上位機界面如圖7所示。上位機主要功能:1)按下“檢測USB”按鈕,可檢測USB是否連接正常,并顯示USB基本信息。2)按下“開始采集”按鈕,可將采集的數據傳輸到PC機并實時回放數據波形;再次按下“開始采集”按鈕,可暫停數據波形回放。3)按下“保存數據”按鈕,可將采集的數據以*.dat文件的形式存儲到PC機硬盤。4)按下“結束采集”按鈕,可關閉采集系統并退出界面;或按下“確定”和“取消”按鈕,也可直接退出界面。
4系統實測
為了測試數據采集與回放系統,利用通用信號處理開發板設計了DDS模塊。該DDS模塊產生一個正弦波作為測試信號,通過AD9744芯片轉換后變為模擬信號輸出,并將此輸出信號接至示波器以便驗證系統。數據采集與回放系統的實物圖及系統實測波形與回放波形。
5結束語
1.1TCD1208AP驅動電路TCD1208AP是一種二相雙溝道線陣CCD圖像傳感器芯片,其驅動信號如圖2所示。四路驅動信號分別為:轉移脈沖SH,復位脈沖RS,時鐘脈沖Φ1、Φ2。SH為高電平時信號電荷轉移到CCD模擬移位寄存器,SH跳變為低電平后在時鐘脈沖Φ1、Φ2交變作用下OS逐個按位輸出像元電壓信號,隨后發出RS脈沖去掉信號輸出緩沖器中的殘余電荷為下一像元電壓輸出做準備。根據傳感器結構安排,TCD1208AP在一個采樣周期中首先輸出40個啞元信號,之后輸出2160個有效像元輸出,其后又輸出12個啞元信號后一個輸出周期結束,因此一個采樣周期中至少包含2212次時鐘信號交變和2212個復位脈沖RS。CCD傳感器對驅動信號的頻率有嚴格要求[2],其時鐘特性如表1所示。STM32驅動信號產生方法有兩種:a.設定通用定時器產生;b.直接設置IO口模擬。第一種方法計時準確,通過設置相應定時器的預分頻寄存器精度可達0.05μs,但通用定時器同步困難,需要使用中斷來實現,操作困難且由于CCD交變時鐘信號工作頻率高而難以保證準確同步[3]。系統采用庫函數直接設置CPU寄存器控制IO口的方法輸出驅動信號,通過設置鎖相環PLL,STM32的指令執行速度高達72MHz,克服了以往單片機直接驅動頻率低的問題。IO跳變時間只有28ns,采用CPU空指令_nop()延時,精度為13ns,完成一個采樣周期最快只需5ms左右,通過庫函數設置相應GPIO口的GPIOx_BSRR寄存器實現相應端口同時輸出高或低電平可以確保各端口滿足驅動信號同步性要求。通過分析TCD1208AP驅動信號時序圖可以看出除去SH中斷位在一個Φ1或Φ2周期內可以將信號分為6種狀態[4],如圖3所示,Φ1、Φ2相位相反,周期為2倍的RS。因此可以采用循環狀態分割法讓STM32周期性的輸出大于1106(2212/2)個Φ1周期內的這6種狀態即可完成一次采樣。根據圖3可以列出各狀態的時序變化值,如表2所示。通過調整每種狀態的延時時間進而得到復合CCD傳感器驅動信號頻率要求的信號,在實際測量中,延時函數的輸入參數可以隨時調整,以取得最佳采樣結果。STM32的引腳輸出高電平為3.3V,輸出信號經由74LS04P芯片組成的電平轉換電路放大到5V后接入CCD傳感器相應引腳,以滿足傳感器對驅動信號電平的要求。調整延時函數的輸入參數,在示波器上可以得到輸出驅動信號的時序圖如圖4所示。
1.2傳感器輸出電壓處理電路CCD正常工作時有兩路輸出信號:輸出信號OS和補償信號DOS,但該信號有效信號幅值小,且存在周期性的復位脈沖串擾。系統采用差分運算方式處理輸出信號,差分運算放大器選用AD公司的AD8031芯片,它是一款低功耗、高速的單電源電壓反饋性放大器,小信號帶寬為80MHz,壓擺率為30V/μs,建立時間為125ns。采用+5V電源時,對于2V峰值、1MHz輸出信號的總諧波失真(THD)為-62dBc,完全可以滿足系統需要。將CCD的輸出信號OS和補償輸出信號DOS分別接到芯片的+IN引腳和-IN引腳可以有效去除OS中含有的復位噪聲。由于AD8031差分運算放大器的最小放大倍數為1,CCD傳感器的最高模擬電壓輸出為5V,而STM32芯片內集成A/D轉換器的外接參考電壓VREF+為3.3V,因此需要對經過差分處理的模擬信號進行降壓處理以滿足A/D轉換器的量程要求。輸出電壓信號處理電路如圖5所示,圖中R1=R2=R3=R4=10kΩ,R6=2R5=20kΩ。[5]線陣CCD傳感器輸出信號頻率高,因此需要AD傳感器有較高的轉換速率,系統將時鐘ADCCLK配置為9MHz,同時把所用ADC1通道11配置為7.5個采樣周期,根據STM32的ADC采樣時間計算公式:TCONV采樣周期+12.5個周期[6]得系統所用ADC1轉換通道的轉換時間為:TCONV=(55.5+7.5)×1÷9=7μs,完全滿足線陣CCD傳感器對轉換速率的要求。同時將ADC1設置為自動DMA傳輸模式,每次轉換完成后會自動開啟DMA傳輸功能將所得數據采用硬件方式轉移到STM32內存預設位置的數據存儲數組中,這個過程不需要CPU的參與,不影響CPU產生驅動信號。ADC1采用軟件啟動模式,編程時在時序狀態變化表的特定時刻插入ADC_SoftwareStartConvCmd()庫函數啟動ADC轉換。
1.3觸控液晶顯示器電路設計系統采用2.4寸(240×320)TFT液晶顯示器,由于STM32內部沒有集成專用的液晶屏和觸摸屏的控制接口,所以需要外接專用芯片來控制顯示面板,系統采用ILI9325和TSC2046芯片。由STM32的FSMC(靜態存儲控制器)的NOR/PSRAM模式模擬產生ILI9325的8080接口通信時序,通過對FSMC的操作向ILI9325寫入控制命令或GRAM數據。通過配置STM32的SPI接口向四線電阻觸摸屏控制器TSC2046寫入控制字和接收控制器返回的屏幕X、Y方向的觸電電壓值。
2系統軟件設計
根據系統硬件功能設計,系統軟件主要有3個模塊組成:驅動信號產生模塊、數據處理模塊、液晶顯示模塊。為了使3個模塊協調運行、更好地管理微處理器及縮短軟件開發周期,系統在STM32微處理器平臺上移植了μC/OS-Ⅱ實時操作系統[7]。根據所完成任務性質及特性的不同,3個模塊有不同的優先級及運行頻率,其中驅動信號產生模塊擁有最高優先級,可剝奪型的實時內核在任何時候都運行就緒了的最高優先級任務,數據處理模塊的運行是基于驅動信號產生的基礎之上,優先級次低,窗口顯示模塊對實時性要求最低,可設置最低的優先級。驅動采樣任務、數據處理任務及顯示任務的流程如圖6所示。液晶顯示處理任務負責及時按指定格式顯示出處理后的數據及完成通過觸摸屏控制系統的運行啟停等人機交互任務,為了簡化開發步驟和提高程序開發效率,系統在μC/OS-Ⅱ操作系統的基礎上移植了uCGUI嵌入式圖形支持系統。uCGUI設計用于為任何使用LCD圖形顯示的應用提供高效且獨立于處理器及LCD控制器的圖形用戶接口。uCGUI可以在任何的CPU上運行,因為它是100%的標準C代碼編寫的。系統的控制顯示界面如圖7所示。
3結語
關鍵詞:數據采集PCI總線焊縫缺陷VXD
焊縫缺陷自動超聲檢測系統是一種重要的無損探傷設備,可用于檢測平板、管道、容器等的縱、橫焊縫以及接管角焊縫缺陷。與手工檢測方法相比,該系統具有運行平穩、漏檢率低、顯示直觀等優點。
在焊縫缺陷自動超聲檢測系統中,缺陷回波信號通常為寬度約10ns~100ns、幅值在幾十μV到幾十mV之間的窄脈沖。為滿足缺陷回波信號的檢測要求,研制了一種基于PCI總線的高速數據采集卡,它是面向超聲檢測應用而設計的:該卡采用轉換速率為60MHz的八位高速A/D以滿足數據采集的要求;為緩存A/D芯片輸出的高速數據并充分利用PCI總線帶寬,加入32KB的高速FIFO緩存組;同時,為滿足多通道探傷的要求,設計了通道選擇電路以實現通道之間的切換;此外,為調理缺陷回波信號,卡上還配有高增益高帶寬放大電路。
1高速數據采集卡的工作原理
焊縫缺陷自動超聲檢測系統的信號采集框圖如圖1所示。系統的工作原理是:首先由高壓脈沖發生電路發射高壓脈沖;高壓脈沖經換能器形成超聲波信號,遇到缺陷或雜質時產生反射波,經換能器轉換為電壓信號,該信號經放大調理、A/D轉換后,形成數字量,寫入高速FIFO存儲器中。最后,由PCI接口芯片將FIFO中的數據適時地寫入內存。
2數據采集電路的硬件設計
2.1高增益高帶寬放大電路
采用帶觸發的直流逆變電路產生高壓脈沖,采用多路模擬通道選擇電路實現通道切換以滿足多通道探傷要求。模擬信號經五級放大、濾波后,作為A/D轉換電路的輸入。放大電路采用最高增益為80dB、帶寬為15MHz且分辨率為1dB的放大器,并且采用數字電位器實現放大增益的動態調整。
2.2A/D轉換電路
A/D轉換電路采用美國BB公司的ADS830。該芯片的信噪比高、功耗低、非線性畸變小,廣泛應用于圖像處理、數字通信和視頻測試系統中。ADS830的精度為八位,最高采樣頻率為60MHz,可滿足焊縫缺陷自動超聲檢測系統對數據采集精度和采樣頻率的要求。它有共模和差模兩種信號輸入方式,且輸出的數字量可直接與5V或3.3V芯片接口。
2.3高速FIFO存儲器
高速緩存是保證高速數據不丟失的關鍵,確保了數據的真實性。同時,高速FIFO緩存使A/D芯片不必工作在PCI同步時鐘下,提高了A/D芯片的利用率。IDT公司的存儲器性能優良,且同系列存儲器一般可以做到管腳級兼容,容易實現硬件設計的模塊化。為方便讀寫數據,選擇先進先出式(FIFO)的緩沖存儲器IDT7205L15。其訪問時間為15ns,每片容量為8K×9位。支持異步讀寫,并提供諸如滿、半滿、空等用于位擴展和深度擴展的信號。高速數據采集卡為實現8位A/D和32位PCI總線的寬度匹配,采用了位擴展技術。為加深FIFO的緩沖深度,將外加FIFO緩存與PCI接口芯片內部的FIFO相級連。
2.4基于CPLD的控制邏輯
基于CPLD的控制邏輯是高速數據采集卡的核心,它為PCI接口芯片提供滿足時序要求的讀寫信號,同時選擇模擬信號的輸入通道、控制高壓脈沖發生邏輯并設定放大電路的增益。此外,CPLD還能利用高速FIFO緩存的空、滿標志位,配合PCI接口芯片實現DMA寫操作,完成高速數據傳輸。Xilinx公司的XC9572XL-VQ64芯片的腳到腳延遲最大為10ns,可滿足PCI總線接口時序的要求。單片XC9572XL-VQ64能滿足焊縫缺陷自動超聲檢測系統邏輯控制的要求,且具有體積小、可靠性高、調試方便等突出優點。
圖2是基于有限狀態機FSM(FiniteStateMachine)方法設計的控制邏輯狀態轉換圖。其中,RST和IRQ是由PCI接口芯片S5933輸出的可由程序任意控制的兩個信號,它們的高低狀態同高速FIFO緩存的空、滿信號一起決定了控制邏輯的六個可能的狀態,圖中以橢圓表示。計算機上電時,控制邏輯處于RST=IRQ=1的狀態。值得一提的是,RST和IRQ信號都有適當的上拉電阻,所以不會出現高阻浮空的狀態,使控制邏輯能夠穩定地工作。實線是控制邏輯采用的狀態轉移路線,而虛線是可能的但不采用的狀態轉移路線。在各狀態之間進行切換是很容易的,只需通過程序使RST或IRQ信號出現高或低跳變。狀態轉移時伴隨著的電路動作見轉換線旁的注釋。
2.5PCI接口芯片
PCI總線協議2.1版出現以后,集成芯片商們紛紛推出了與其兼容的總線接口芯片。其中,AMCC(AppliedMicroCircuitCorperation)公司的S5933接口方便、控制靈活,軟件配置簡單,在高速網絡接口、數字通信、高速成像等領域有著廣泛應用2。S5933最突出的優點是能夠作為PCI主控設備發起DMA操作,即S5933完全具備雙字DMA控制器的功能。
圖3是結合系統應用而繪制的S5933結構框圖。由圖3可知,S5933內部具有配置寄存器組和操作寄存器組,配置寄存器組用于控制S5933在PCI總線系統中的運作方式(訪問延遲、能否發起主控DMA操作等)以及記錄系統分配給S5933的資源信息(如中斷引腳、I/O等)3,而PCI總線和外加電路之間的數據交換則通過操作寄存器組實現。以I/O資源為例,計算機上電后,系統將分配給S5933的I/O資源首地址填入基地址寄存器,此值決定了操作寄存器組在I/O空間中的映射位置(S5933的操作寄存器組缺省地映射到I/O地址空間,便于軟件操作),見圖3。之后,CPU只需執行簡單的I/O操作就可以讀寫操作寄存器組,隱含的地址譯碼工作由S5933完成。外加電路控制邏輯則保證操作寄存器組與外加電路的正常通信。S5933提供了三種形式的外加電路接口,高速數據采集卡使用信箱(Mailbox)寄存器實現雙字輸出,用FIFO方式實現高速DMA寫操作。
圖3S5933的結構框圖
3高速數據采集卡的軟件設計
3.1虛擬設備驅動程序的設計
系統的控制軟件工作在WINDOWS98操作系統下,為此開發了高速數據采集卡的虛擬設備驅動程序(VXD)。由S5933的結構可知,VXD需要實現雙字I/O操作和物理內存管理。雙字I/O的操作相對簡單,調用虛擬機管理器(VMM)的SIMULATE_VM_IO例程即可,較困難的是物理內存管理。由于S5933發起的DMA操作需要物理內存的起始地址,因此必須涉及頁面級的物理內存操作,故采用下述內存管理策略:
·應用程序加載VXD;
·加載成功后發送申請緩沖區的事件給VXD;
·VXD使用PAGEALLOCATE例程得到地址連續的適當長度(如四頁即16K字節)的物理內存;
·鎖定緩沖區并將物理地址逆映射為線性地址;
·將物理首地址填入S5933的寫RAM地址寄存器;
·允許S5933進行主控DMA傳輸;
·傳輸完畢時,應用程序請求VXD釋放上述物理內存。
3.2應用VXD設計數據采集程序
將VXD放在應用程序的同級目錄下,則以下VC++代碼就能動態加載(VXDVIEWER可驗證)一個VXD:
HANDLEhDEVICE=CreateFile“\\\\.\\pathname”00NULL0FILE_FLAG_DELETE_ON_CLOSENULL;
編好的VXD為應用程序提供了若干服務例程,應用程序執行下面的代碼即可調用服務例程ZHC1:
DeviceIoControlHDEVICEZHC1lpinbufferninsizelpoutbuffernoutsizeNULLNULL;
數據采集算法如下:
DO{讀取寫RAM字節計數器;
再次讀取寫RAM字節計數器;
IF計數器內容為零THEN
跳出循環進行后續數據處理;
ELSEIF兩次讀取的結果不同THEN
不做任何處理而進入下一次循環;
ELSE
清相應的狀態標志并設置有關寄存器以從斷點處續傳;
ENDIF
}