摘 要: 介紹了一種新型便攜式數(shù)據采集檢測系統(tǒng),該系統(tǒng)的數(shù)據采集設備采用USB接口傳輸數(shù)據,基于Lab Windows CVI的簡易虛擬示波器能顯示數(shù)據和控制數(shù)據采集設備。重點闡述了系統(tǒng)軟件實現(xiàn)的技術細節(jié)。測試結果表明,該系統(tǒng)結構簡單、可靠性高、應用靈活、易于擴展,具有廣泛的應用前景。
關鍵詞: 通用串行總線;虛擬示波器;Lab Windows CVI;MAX1247;PDIUSBD12
數(shù)據采集檢測系統(tǒng)早已廣泛應用于工業(yè)生產及信息監(jiān)測等領域。目前市面上的產品都存在這樣或那樣的不足,如體積龐大不利于攜帶,價格昂貴難以推廣,采用RS-232接口傳輸速率低,安裝在計算機內部受計算機插槽數(shù)量、地址、中斷資源的限制,不利于操作。本數(shù)據采集檢測系統(tǒng)采用USB接口傳輸數(shù)據,具有較高的傳輸速率,且可靠性高,數(shù)據不易丟失,抗干擾性強;采用基于PC的虛擬示波器檢測采樣對象,進行數(shù)據顯示、分析處理,很好地解決了上述問題。
1 系統(tǒng)總體設計方案
數(shù)據采集檢測系統(tǒng)的總體結構如圖1所示。
USB設備芯片PDIUSBD12是NXP公司在USB1.1協(xié)議設備端使用最多、技術最成熟的芯片之一,片內集成了高性能的串行接口引擎和3個端點的FIFO緩沖區(qū),其中端點2具有64 B的雙緩沖區(qū),適合數(shù)據傳輸量較大的場合應用。PDIUSBD12與NXP公司的8位MCU P89C58x2FN實現(xiàn)數(shù)據交換簡單可靠。MAXIM公司的12位4通道A/D轉換器MAX1247,有較快的轉換速率(7.5 μs),在軟件控制下能實現(xiàn)對正負電壓信號量的讀取。
本系統(tǒng)主要由基于PC(USB Host)的虛擬示波器和數(shù)據采集設備(USB Device)兩部分組成。A/D轉換器MAX1247可最多連接4路模擬電壓信號量,轉換為數(shù)字量后通過其片上SPI接口傳輸給主控制器P89C59x2FN。主控制器將采集的數(shù)據包傳輸給USB接口芯片PDIUSBD12,數(shù)據將按照USB協(xié)議被傳輸給USB主機(PC),通過USB設備驅動,動態(tài)鏈接庫,數(shù)據最后在虛擬示波器中顯示并進行相關的處理。數(shù)據采集設備通過USB電纜線連接到PC后即上電,它將以初始采樣頻率采集數(shù)據,并傳輸?shù)教摂M示波器中。
2 系統(tǒng)軟件的設計
2.1 虛擬示波器軟件設計
虛擬示波器使用Lab Windows CVI 8.0開發(fā),運行界面如圖2所示。
虛擬示波器的主要功能是顯示數(shù)據,進行數(shù)據處理,發(fā)出命令,設置數(shù)據采集設備的工作狀態(tài)。數(shù)據的讀取由封裝在動態(tài)鏈接庫中的讀端點2函數(shù)(unsigned long_stdcall ReadPort2(unsigned char*pData,unsigned long iLen))實現(xiàn),讀取的數(shù)據被存放到顯示數(shù)組(static double measureData[BUFFER_SIZE])中。為了保持顯示數(shù)據的波形是連續(xù)的、緩和的,顯示數(shù)組的容量(512 B)8倍于讀端點2數(shù)據包的容量(64 B),在每次將讀取的數(shù)據存放到顯示數(shù)組的首部前,要將顯示數(shù)組的數(shù)據向尾部移動64 B,其過程如圖3所示。數(shù)據經坐標化處理后,通過Lab Windows CVI控件函數(shù)即可顯示。顯示原則是先接收到的數(shù)據先顯示。
從虛擬示波器發(fā)出的控制指令通過寫端點2函數(shù)(unsigned long_stdcall WritePort2(unsigned char*pData, unsigned long iLen))傳輸給數(shù)據采集設備。修改數(shù)據采集設備的采樣頻率時,實際傳輸給數(shù)據采集設備的是定時器T1的中斷計數(shù)初值,該初值是在虛擬示波器中由采樣頻率值計算得出。這種處理可以節(jié)省單片機處理時間。
A/D芯片MAX1247的精度為12位,數(shù)據采集設備以單字節(jié)方式將數(shù)據傳輸?shù)教摂M示波器中,數(shù)據包中相鄰兩字節(jié)為一個有效的樣點。而數(shù)據在虛擬示波器中以有效樣點為處理單元。在軟件上使用聯(lián)合體變量實現(xiàn)兩個單字節(jié)數(shù)據到雙字節(jié)數(shù)據的轉換。定義的聯(lián)合體adata包括兩個成員,其中char類型的成員PortBuf[64]接收數(shù)據包,與其同首地址的short int類型成員PortBuf2[32]用于虛擬示波器中對采樣數(shù)據的處理,這樣處理效率高。
2.2 USB設備驅動和動態(tài)連接庫
USB設備驅動程序D12TEST.SYS是用Win DDK 開發(fā)的,EasyD12.dll動態(tài)連接庫是用VC++開發(fā)的,D12TEST.SYS和EasyD12.dll是連接虛擬示波器和USB數(shù)據采集設備的橋梁。D12TEST.SYS把虛擬示波器發(fā)出的讀/寫命令變成規(guī)范的USB請求包傳給USB數(shù)據采集設備。EasyD12.dll中封裝了PDIUSBD12的端點2的讀/寫函數(shù),通過這兩個函數(shù)實現(xiàn)從虛擬示波器到數(shù)據采集設備的端到端數(shù)據交換。
2.3 數(shù)據采集設備軟件設計
數(shù)據采集設備軟件使用Keil C51開發(fā),軟件結構采用前后臺系統(tǒng),后臺程序流程如圖4所示,它是一個無限循環(huán),循環(huán)中不斷檢測USB的連接狀態(tài)。如果連接正常,就檢測數(shù)據發(fā)送允許位是否有效,如有效,將數(shù)據傳送到PDIUSBD12的端點2的FIFO緩沖區(qū)中。
前臺程序由中斷服務程序組成,主要包括兩個部分:(1)基于PDIUSBD12的USB協(xié)議相關的中斷服務程序,中斷源是P89C58x2FN的外部中斷INT0。由PIDUSBD12主動發(fā)起的任何與P89C58x2FN的信息交換都是通過外部中斷INT0來實現(xiàn)。單片機讀取PDIUSBD12的中斷寄存器后,執(zhí)行相應的中斷服務子程序。(2)數(shù)據采集的中斷服務程序。數(shù)據采集中斷服務程序流程如圖5所示,數(shù)據采集使用定時器T1實現(xiàn)定時中斷采樣,每中斷一次采集一次樣點。進入中斷服務程序就對定時器T1的計數(shù)初值進行處理,這樣由采樣頻值計算計數(shù)初值時,就不用加入修正值。否則,單片機執(zhí)行中斷服務程序的耗時在計算計數(shù)初值時是不能忽略的。在主程序中A/D初始化時完成了寫A/D控制字,在中斷服務程序中,先讀取A/D轉換結果,然后再寫A/D控制字,啟動A/D轉換,這樣處理使A/D在輸出結果前有充足的時間來完成模擬量到數(shù)字量的轉換。
2.4 A/D采樣轉換程序設計
A/D采用具有片上SPI接口的MAX1247芯片, P89C58x2FN片上沒有SPI接口,在A/D采樣轉換程序設計中,采用軟件模擬SPI主機模式。MAX1247的外部時鐘模式轉換時序如圖6所示。A/D轉換控制原理是,在每個外部時鐘脈沖的上升沿,將控制字的一位寫入MAX1247,寫入控制字(一個字節(jié))后轉換啟動,在每個外部時鐘脈沖的下降沿,將一位的轉換結果從MAX1247中讀出。這樣寫入一個控制字需要8個外部時鐘脈沖,讀出一個轉換結果需要16個時鐘脈沖,其中前12個時鐘脈沖讀出有效的轉換結果。
對A/D的控制頻繁地使用了位操作,采用匯編語言編程具有明顯的效率優(yōu)勢。寫控制字和讀采樣轉換結果程序流程如圖7所示,數(shù)據采集設備的主程序采用C語言編寫,在C語言中調用匯編語言子程序實現(xiàn)主控制器對A/D的控制。
寫控制字和讀采樣轉換結果分屬兩個不同的匯編子程序模塊,C語言程序調用匯編子程序模塊,需要在匯編模塊前做PUBLIC聲明,使用偽指令使CODE選項有效,并聲明為可再定位段類型,再選擇為當前段,函數(shù)名大。然后在C主程序中對函數(shù)進行外部聲明,就可以像調用普通的extern函數(shù)一樣調用匯編語言子程序模塊。
3 數(shù)據采集檢測系統(tǒng)的測試
香農采樣定理規(guī)定采樣頻率必須是信號頻率的2倍以上,才能完整保留原始信號的信息。對于復雜的規(guī)律性強的信號,只有采樣頻率遠高于信號頻率時,信號才能在虛擬示波器中連續(xù)、穩(wěn)定地顯示,并得到有效、可靠的檢測結果。如圖8所示是采樣頻率為1 000 Hz、正弦波信號頻率為10 Hz的顯示效果。
在本數(shù)據采集檢測系統(tǒng)中,嵌入各種算法軟件模塊,可以很方便地對該數(shù)據進行相關的測試與分析。
將位置式PID算法和增量式PID算法的軟件代碼嵌入到虛擬示波器中,測試結果如圖9和圖10所示。為了達到良好的測試視覺效果,這兩種算法的相關參數(shù)設置不同。
通過理論計算,數(shù)據采集設備的最高采樣頻率約為13 kHz。經過測試,數(shù)據采集設備采集電壓信號量的頻率在500 Hz以下,規(guī)律性、復雜性強的電壓信號量的數(shù)據波形能夠在虛擬示波器中連續(xù)地、穩(wěn)定地顯示出來,數(shù)據經計算處理后能達到很好的檢測效果。電壓信號量頻率過高,則虛擬示波器檢測的數(shù)據波形穩(wěn)定性差,檢測效果難以保證。
本數(shù)據采集檢測系統(tǒng)可以方便、簡單地應用于被控對象頻率不高的采集檢測領域,并且采樣實時性好、顯示穩(wěn)定、容易嵌入各種數(shù)據分析算法。與其他數(shù)據采集檢測系統(tǒng)相比,有體積小、使用方便、即插即拔、采用USB總線供電等優(yōu)點。本數(shù)據采集檢測系統(tǒng)在信號測試和系統(tǒng)監(jiān)測等瞬態(tài)信號的實時采集檢測場合有廣泛的應用前景。
參考文獻
[1] 周立功.PDIUSBD12 USB固件編程與驅動開發(fā)[M].北京:北京航空航天大學出版社,2003.
[2] 馬偉.計算機USB系統(tǒng)原理及其主/從機設計[M].北京:北京航空航天大學出版社,2004.
[3] 高美珍,洪家平.基于USB接口和嵌入式芯片總線的數(shù)據采集系統(tǒng)[J].儀表技術與傳感器,2005(8):51-53.
[4] 邢微,劉開華.數(shù)據采集系統(tǒng)USB2.0接口設計[J].電子測量技術,2006,29(1):12-13.
[5] 熊健民,胡長暉,宋庭新.USB數(shù)據采集卡的研制[J].湖北工業(yè)大學學報,2007,22(3):6-9.
[6] 姜偉,鄭青,季行健,等.嵌入式USB數(shù)據采集系統(tǒng)[J].儀表技術與傳感器,2008(2):45-46.