- 相關推薦
Windows 95下智能數(shù)據(jù)采集系統(tǒng)
摘要:提出一種智能數(shù)據(jù)采集系統(tǒng)。用編程簡單、定時分辨率高、工作可靠的單片機定時取代編程繁復、定時分辨率低、工作不可靠的Windows95下的定時。解決了Windows 95環(huán)境下短時間定時不準確的難題,又簡化了用戶的應用程序。整個系統(tǒng)結構簡單、高效可靠,實現(xiàn)了對信號的高性能采集。關鍵詞:定時器 時鐘 并口 數(shù)據(jù)采集
引言
數(shù)據(jù)采集系統(tǒng)在各行各業(yè)都有廣泛的應用。目前,已有各種各樣高速、高精度、多通道的數(shù)據(jù)采集卡問世。計算機通過卡上的模數(shù)轉(zhuǎn)換器采入數(shù)據(jù),然后進行數(shù)據(jù)存儲、數(shù)據(jù)處理和圖形顯示等工作。隨著微電子技術和計算機技術的發(fā)展,(范文先生網(wǎng)adivasplayground.com收集整理)Windows 95/98平臺下的應用程序已經(jīng)成為數(shù)據(jù)采集與處理軟件開發(fā)的主流。
用于數(shù)據(jù)采集的常規(guī)Windows定時順又存在著嚴重的不足。首先,常規(guī)Windows定時器的定時分辨率低。定時器每隔55ms中斷1次,相當于最高采樣頻率僅為18.2Hz。對由于Windows 95/98下的應用程序無法直接與硬件打交道,不能通過對定時中斷重新安裝的方法改變定時時間長度。如此低的采樣頻率對于絕大多數(shù)的信號采集與處理都是不適合的,必須尋找能以更高頻率采集的方法。
其次,Windows系統(tǒng)是一個多任務操作系統(tǒng),它是基于消息來驅(qū)動事件的。定時器消息WMTIMER在串行消息隊列中的優(yōu)先級別很低,往往得不到及時響應,甚至消息隊列中的幾個未及時處理的定時器消息會被合并為一個;而應用程序無法確定由于這種處理而丟失的消息數(shù),使實際的采樣間隔不均勻。
針對以上問題,人們想出了很多方法予以解決。目前常用的方法都是在PC機上編程,一般來講有以下3種方法:
(1)在Windows應用程序中,使用普通C語言中常用的函數(shù)delay()[2,3]。
delay()是C語言中常用的延延、定時函婁。使用delay(),最高采樣率可達1kHz,但delay()與多任務的Windows操作系統(tǒng)不兼容。在Windows應用程序中直接使用delay()會發(fā)生編譯警告和連接錯誤?梢酝ㄟ^程序中顯示說明函數(shù)delay()原型并在Windows庫中包含DELAY模塊的方法去除這一錯誤,從而可以在Windows應用程序中,像普通C程序一樣使用delay()。然而,這種用軟件等待的方法,對于主機的資源來講是一個極大的浪費。
(2)使用Windows多媒體定時器的回調(diào)函數(shù)[4,5]
Windows多媒體定時器可以通過函數(shù)timeBeginPeriod來設置定時器分辨率,其分辨率最小為1ms,最大為16ms。這一分辨率代表了60~1000Hz的采樣率,可以滿足一般信號對采樣率的要求。而且多媒體定時器采用中斷完成定時服務,在中斷時刻調(diào)用1個回調(diào)函數(shù),而不是向消息隊列發(fā)送WM_TIMER信息。在應用程序中,使用Windows多媒體定時器并不容易,必須遵循嚴格的步驟。在使用回調(diào)函數(shù)的趕集,在中斷服務程序和用戶主程序之間,要進行數(shù)據(jù)的共享,給編程和調(diào)試帶來不便。程序的穩(wěn)健性也會受到影響。在定時時間較短時,主機負荷過重。
(3)實時鐘定時[6]
實時鐘芯片在基準頻率作用下驅(qū)動內(nèi)部時鐘電路工作,同時可通過對內(nèi)部寄存器A(D3~D0)編程,選擇22分頻輸出信號頻率。實時鐘周期性地輸出方波和周期中斷請求信號(該中斷請求連到IRQ8),從而為程序中實現(xiàn)時間控制提供了另一條途徑。同時,在Windows機制中,使用優(yōu)先級高于一般的任務級,而等于系統(tǒng)級的VxD編制驅(qū)動程序,可以保證驅(qū)動程序在運行時享有最高優(yōu)先權,在進行硬件設備的管理、控制時不會被其他任務所中斷,充分保證了驅(qū)動程序返還給用戶的數(shù)據(jù)是完全真實的值。而且可以直接對硬件進行訪問,因而通過編寫VxD直接管理實時鐘中斷,定時分辨率更高。但VxD對調(diào)試者的編程水平要求較高,稍有不慎,很容易出現(xiàn)異常錯誤或死機。
不難看出,直接在PC機上編程解決定時問題要求調(diào)試者有較高的編程水平,程序調(diào)試困難,可靠性差。
為此,我們設計了一套智能數(shù)據(jù)采集系統(tǒng)。用單片機89C51作為中央處理單元,控制模/數(shù)據(jù)轉(zhuǎn)換、外部數(shù)據(jù)存儲器等外圍設備,進行數(shù)據(jù)的定時采集和預處理。通過絕大多數(shù)電腦都具備的并行口作為數(shù)據(jù)采集系統(tǒng)與計算機的接口,與PC機進行數(shù)據(jù)傳輸。由單片機管理定時采樣和進行部分信號預
處理工作,解決了Windows 95下定時采樣的問題,減徑了PC機方面編程的工作量,使應用程序可以精力進行數(shù)據(jù)采集后的處理工作。
智能數(shù)據(jù)采集系統(tǒng)
智能數(shù)據(jù)采集系統(tǒng)的框圖如圖1所示。信源信號經(jīng)放大濾波后進入A/D轉(zhuǎn)換器。單片機以一定的采集率在定時中斷內(nèi)讀取A/D轉(zhuǎn)換器的輸出,送入RAM中暫存,在定時斷外則將RAM中存儲的數(shù)據(jù)不斷經(jīng)并口送入PC機。PC機中的應用程序由并口接收單片機發(fā)送的數(shù)據(jù),并對其進行數(shù)據(jù)處理和顯示。
1.單片機與主機間的并口通信
隨著計算機技術的發(fā)展,微機的并行口發(fā)生了很大的變化,由原來的只能打印,即只能向外設傳輸數(shù)據(jù),發(fā)展成為可以在微機與外設之間進行雙向、快速交換數(shù)據(jù)的雙向并行接口。利用雙向并行口使得PC機能與數(shù)據(jù)采集系統(tǒng)的單片機之間以異步的、全互鎖的雙向并行方式通信。它能減少用戶交互地操作外部設備的次數(shù),以更高的傳輸速率完成數(shù)據(jù)傳送。
并口通信硬件部分原理如圖2所示,軟件部分流程圖如圖3所示。
并口通信利用了D觸發(fā)器74HC74的預置和清零功能提供傳輸數(shù)據(jù)所需的握手信號。用八D鎖存器74HC573完成單片機傳出數(shù)據(jù)的鎖存。在單片機向PC機送數(shù)時,單片機先將數(shù)據(jù)鎖存在74HC573中。74HC573的輸出端接到微機并行口的數(shù)據(jù)寄存器的輸入端。數(shù)據(jù)鎖存后,單片機將74HC74的清零端CD清零,使輸出端Q輸出低電平,Q端同時送至并行口的狀態(tài)寄存器,通知PC機可以取數(shù)。PC機檢測到這一信號后,經(jīng)控制口選通數(shù)據(jù)鎖存器,將鎖存的數(shù)據(jù)取出,并將觸發(fā)器置位端SD置1,使Q端輸出高電平,通知單片機數(shù)已取出,可以送下一個數(shù)據(jù)了。單片機檢測到觸發(fā)器Q端輸出變?yōu)楦唠娖胶,又?個新數(shù)據(jù)鎖存至74HC573中,同時使觸發(fā)器輸出電平翻轉(zhuǎn),通知PC機取數(shù)。如此往復,直到PC機不再需要讀數(shù)為止。值得注意的是:為了避免由于時序的不匹配造成的清零和置位端同時有效,在單片機(PC機)進行清零(置位)前,應對PC機(單片機)的置位(清零)端進行檢測;而為了避免數(shù)據(jù)的傳輸錯誤,每發(fā)16個數(shù)據(jù)即進行1次累加器和與異或和校驗。PC機如發(fā)現(xiàn)檢驗結果錯誤,即通知單片機重發(fā)剛才的16個數(shù)。
采用這種電路進行并口通道,電路設計簡單,只需1片74HC573和1片74HC74即可實現(xiàn)。74HC573和74HC74的使用都很簡單,使得程序編制也很容易,大大提高了傳輸速度。
2.單片機與RAM間的數(shù)據(jù)交換
在并口通信中引入RAM,是為了解決Windows下應用程序在數(shù)據(jù)采集時無法及時響應消息的問題。RAM在系統(tǒng)中起到了“蓄水池”的作用:數(shù)據(jù)采集卡上單片機89C51以200Hz的采樣率在定時中斷內(nèi)讀取模/數(shù)轉(zhuǎn)換器MAX126各通道轉(zhuǎn)換結果,送入外部RAM中暫存;而在主程序內(nèi),則將RAM中存儲的數(shù)據(jù)取出,通過并口通信傳給筆記本電腦。數(shù)據(jù)在RAM中以循環(huán)隊列方式存儲。這樣,在Windows響應其他消息,筆記本電腦速度較慢時,采入的數(shù)據(jù)在RAM中暫存;而在筆記本電腦速度快時,單片機將RAM中存儲的數(shù)據(jù)取出傳出。因為總體來講筆記本電腦的速度是足以在中斷時間內(nèi)傳完RAM中存儲的數(shù)據(jù)的。所以只要RAM的存儲量足夠大(幾倍于Windows響應其他消息可能花費的最大時間),就可以保證數(shù)據(jù)的連續(xù)傳輸。單片機與RAM數(shù)據(jù)交換流程如圖4所示。
3.最高采樣率的限制
對最高采樣率的討論可以分為兩種情況:實時傳輸和非實時傳輸。
在實時傳輸時,像前面提到的那樣,單片機采集到數(shù)據(jù),在定時中斷內(nèi)經(jīng)RAM暫存,在定時斷外則不斷經(jīng)并口向PC機發(fā)送。因而采集系統(tǒng)的最高采樣率由于受到單片機與RAM間數(shù)據(jù)交換以及與PC機并口通信指令執(zhí)行時間的限制,并假設在使用89C51,12MHz晶振時,采樣數(shù)據(jù)精度是單字節(jié)的,則單通道采樣率不應高于32kHz。
如果對數(shù)據(jù)處理的實時性要求不高,允許對信號進行事后處理,則可以選擇非實時傳輸方式。即在單片機采集到數(shù)據(jù)后,放入大容量RAM中存儲,而不向PC機送數(shù)。在全部數(shù)據(jù)采集完成后,才進行單片機與PC機的并口通信,將RAM中存儲的數(shù)據(jù)一次送入PC機。非實時傳輸方式的最高采樣率不受單片機與RAM間地址比較以及并口的數(shù)據(jù)通過率的限制,使采樣的定時分辨率可以小于(1/32)ms。
采用以上原理實現(xiàn)的一套生理電數(shù)據(jù)采集系統(tǒng),單片機使用12MHz晶振,可以以500Hz的采樣率,進行16通道生理電信號的實時采集和處理。如果采用更高的晶振頻率,或采用較少的通道數(shù),這一采樣率還可以進一步提高。
小結
本文提出了一種智能數(shù)據(jù)采集系統(tǒng)。用編程簡單、定時分辨率高、工作可靠的單片機定時取代了編程繁復、定時分辨率低、工作不可靠的Windows95下的定時。由單片機板上RAM的“蓄水池"的作用解決了Windows 95在定時采樣時響應消息的問題。不但解決了Windows 95環(huán)境下短消息的問題。不但解決了Windows 95環(huán)境下短時間定時不準確的難題,又簡化了用戶的應用程序。單片機還可以對采入的數(shù)據(jù)進行預處理,節(jié)省主機處理數(shù)據(jù)的時間。使PC機的應用程序可以不考慮定時問題,集中精力進行數(shù)據(jù)采入后的處理工作。
在數(shù)據(jù)采集系統(tǒng)與主機間采用間采用并行口通信,不但解決了Windows 95下的時采樣問題,提高了系統(tǒng)的數(shù)據(jù)通過率,還使整個系統(tǒng)結構簡單、高效、可靠。同時帶來了一系列的好處:
不須像目前常用的內(nèi)插式數(shù)據(jù)采集卡那樣占用PC機內(nèi)的一個擴展槽,而且可以和筆記本電腦相連接,攜帶方便,使用安全,對采集的信號造成的干擾小,從而實現(xiàn)了對信號的高性能采集。
【W(wǎng)indows 95下智能數(shù)據(jù)采集系統(tǒng)】相關文章:
基于USB接口的數(shù)據(jù)采集系統(tǒng)設計08-06
具有故障保護功能的數(shù)據(jù)采集系統(tǒng)08-06
基于USB總線的高速數(shù)據(jù)采集系統(tǒng)08-06
基于DSP的USB口數(shù)據(jù)采集分析系統(tǒng)08-06
基于Verilog HDL設計的自動數(shù)據(jù)采集系統(tǒng)04-12
采用USBN9602的數(shù)據(jù)采集系統(tǒng)設計08-06
基于DSP的 USB 口數(shù)據(jù)采集分析系統(tǒng)08-06