版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p> 題 目 基于高速數(shù)據(jù)采集卡的虛擬示波器的設(shè)計(jì) </p><p> 系(院) 信息與控制工程系 </p><p> 基于高速數(shù)據(jù)采集卡的虛擬示波器的設(shè)計(jì)</p><p><b> 摘要</b></p>
2、<p> 隨著計(jì)算機(jī)技術(shù)的發(fā)展,儀器工業(yè)正在經(jīng)歷一場(chǎng)巨變。計(jì)算機(jī)強(qiáng)大的處理和顯示能力,使它可以在數(shù)據(jù)采集、分析和表達(dá)中的任意一個(gè)方面提升儀器的性能。以虛擬儀器為代表的新型儀器改變了傳統(tǒng)儀器的思想,它們充分利用了計(jì)算機(jī)強(qiáng)大的軟硬件資源,把計(jì)算機(jī)技術(shù)和測(cè)量技術(shù)緊密結(jié)合起來,是融合了電子測(cè)量、信號(hào)處理、計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的新型測(cè)量?jī)x器,由于成本低、使用方便等優(yōu)點(diǎn)得到了廣泛的應(yīng)用。本文基于GaGe公司的高速數(shù)據(jù)采集卡CS 82G和
3、通用PC平臺(tái),使用VC++ 6.0編程工具,完成了一種快速虛擬示波器的設(shè)計(jì)。</p><p> 首先,本文介紹了虛擬儀器的研究背景和意義以及國內(nèi)外的一些研究進(jìn)展。對(duì)虛擬儀器總體進(jìn)行了概述,討論了虛擬儀器的概念、構(gòu)成、特點(diǎn)、發(fā)展,建立了虛擬儀器的基本框架。然后對(duì)虛擬示波器的重要組成部分-數(shù)據(jù)采集系統(tǒng)進(jìn)行了探討,同時(shí)對(duì)CS 82G數(shù)據(jù)采集卡進(jìn)行了深入的研究,在此基礎(chǔ)上,進(jìn)行了虛擬示波器的系統(tǒng)設(shè)計(jì)。本文的重點(diǎn)是第五章
4、虛擬示波器的具體實(shí)現(xiàn),這部分完成了虛擬示波器各模塊的詳細(xì)設(shè)計(jì),包括數(shù)據(jù)采集模塊、用戶界面模塊、頻譜分析模塊、數(shù)字濾波模塊、波形顯示模塊和參數(shù)計(jì)算模塊的設(shè)計(jì),并給出了設(shè)計(jì)和實(shí)驗(yàn)結(jié)果,還討論和實(shí)現(xiàn)了軟件設(shè)計(jì)中的關(guān)鍵技術(shù),最后進(jìn)行了系統(tǒng)性能分析。文章的最后進(jìn)行了課題的總結(jié)和展望。本文對(duì)相關(guān)高速、大容量數(shù)據(jù)采集系統(tǒng)和虛擬儀器的設(shè)計(jì)有重要的參考價(jià)值。</p><p> 關(guān)鍵詞:虛擬儀器 虛擬示波器 數(shù)據(jù)采集 CS
5、82</p><p> Design of Virtual Oscillograph Based on High Speed Data-acquisition Card</p><p><b> Abstract</b></p><p> The instrumentation industry is undergoing a varie
6、ty of exciting changes as a result of the development of PCs, The PC revolution has equipped users with powerful processing and display capabilities of their own. The computer can enhance instrument functionality in any
7、of the three areas-data acquisition, analysis, and presentation. Virtual instrument (VI) changed the ideas of traditional instrument and made full use of the powerful resources of computer. It is a new-style instrument t
8、hat combin</p><p> The research background and significance of VI are introduced in this dissertation firstly including the research status of VI in China and foreign countries. Then, the general technologi
9、es of VI are summarized including the definition of VI, the component of VI, the characters of VI and the development of VI, which established the framework of VI. Afterwards, the data-acquisition system is discussed det
10、ailedly as well as the studying of the data-acquisition card CS82G. On the basis of those wor</p><p> Key words:virtual instrument;virtual oscillograph;data-acquisition;CS 82G</p><p><b>
11、 目錄</b></p><p><b> 第一章 緒 論1</b></p><p><b> 1.1引言1</b></p><p> 1.2 研究的背景和意義1</p><p> 1.3 本文內(nèi)容安排2</p><p> 第二章 虛擬儀器技術(shù)4
12、</p><p> 2.1虛擬儀器的基本概念4</p><p> 2.2虛擬儀器的特點(diǎn)5</p><p> 第三章 基于數(shù)據(jù)采集卡的虛擬示波器的研究6</p><p> 3.1基于PC的數(shù)據(jù)采集系統(tǒng)6</p><p> 3.2 超高速數(shù)據(jù)采集卡CS 82G6</p><p>
13、 3.3 基于數(shù)據(jù)采集卡的虛擬示波器的原理和結(jié)構(gòu)7</p><p> 3.3.1 虛擬示波器的工作原理7</p><p> 3.3.2 系統(tǒng)的結(jié)構(gòu)和特點(diǎn)8</p><p> 第四章 虛擬示波器的方案設(shè)計(jì)9</p><p> 4.1硬件和軟件的選擇9</p><p> 4.1.1硬件的選擇9<
14、;/p><p> 4.1.2軟件開發(fā)環(huán)境的選擇10</p><p> 4.2軟件總體方案11</p><p> 第五章 虛擬示波器系統(tǒng)的軟件具體實(shí)現(xiàn)13</p><p> 5.1虛擬示波器的系統(tǒng)軟件功能框圖13</p><p> 5.2 數(shù)據(jù)采集模塊的設(shè)計(jì)13</p><p>
15、 5.2.1 數(shù)據(jù)采集的編程過程13</p><p> 5.2.2采集模塊的流程圖15</p><p> 5.3 軟面板的設(shè)計(jì)15</p><p> 5.4 頻譜分析模塊的設(shè)計(jì)15</p><p> 5.4.1 設(shè)計(jì)結(jié)果18</p><p> 5.4.2 數(shù)字濾波模塊的設(shè)計(jì)21</p>
16、<p> 5.6 波形顯示模塊的設(shè)計(jì)23</p><p> 5.6.1 數(shù)據(jù)內(nèi)插技術(shù)23</p><p> 5.6.2 波形顯示技術(shù)23</p><p> 5.6.3設(shè)計(jì)結(jié)果26</p><p> 5.6.4數(shù)據(jù)采集和數(shù)據(jù)處理的多線程實(shí)現(xiàn)27</p><p><b> 5.
17、7小結(jié)29</b></p><p> 第六章 總結(jié)和展望31</p><p><b> 6.1總結(jié)31</b></p><p><b> 6.2 展望31</b></p><p><b> 參考文獻(xiàn)33</b></p><p&g
18、t;<b> 致謝34</b></p><p><b> 第一章 緒 論</b></p><p><b> 1.1引言</b></p><p> 虛擬儀器是隨著計(jì)算機(jī)技術(shù)、電子測(cè)量技術(shù)和通信技術(shù)而發(fā)展起來的一種新型儀器,虛擬儀器的出現(xiàn)是測(cè)量?jī)x器領(lǐng)域的一個(gè)突破, 從根本上更新了測(cè)量?jī)x器的概念。
19、它是在以通用計(jì)算機(jī)為核心的硬件平臺(tái)上,由用戶設(shè)計(jì)定義,具有虛擬面板,測(cè)試功能由測(cè)試軟件實(shí)現(xiàn)的一種計(jì)算機(jī)儀器系統(tǒng)。虛擬儀器技術(shù)充分利用計(jì)算機(jī)系統(tǒng)強(qiáng)大的數(shù)據(jù)處理。 能力,利用軟件完成數(shù)據(jù)的采集、控制、數(shù)據(jù)分析和處理以及測(cè)試結(jié)果的顯示等, 通過軟、硬件的配合實(shí)現(xiàn)傳統(tǒng)儀器的各種功能, 大大突破了傳統(tǒng)儀器在數(shù)據(jù)處理、顯示、傳送、存儲(chǔ)等方面的限制,使用戶可以方便地對(duì)儀器進(jìn)行維護(hù)、擴(kuò)展和升級(jí)。它的優(yōu)勢(shì)在于可由用定義自己的專用儀器系統(tǒng),且功能靈活,很容
20、易構(gòu)建,所以應(yīng)用面極為廣泛。尤其在科研、開發(fā)、測(cè)量、檢測(cè)、計(jì)量、測(cè)控等領(lǐng)域更是不可多得的好工具。虛擬儀器技術(shù)先進(jìn),十分符合國際上流行的“硬件軟件化”的發(fā)展趨勢(shì),因而常被稱作“軟件儀器”。隨著計(jì)算機(jī)技術(shù)的廣泛應(yīng)用,傳統(tǒng)的儀器設(shè)備缺乏相應(yīng)的計(jì)算機(jī)接口,因而配合數(shù)據(jù)采集及數(shù)據(jù)處理十分困難。</p><p> 而且,傳統(tǒng)儀器體積相對(duì)龐大,多種數(shù)據(jù)測(cè)量時(shí)常常感到捉襟見肘。我們常見到硬件工程師的工作臺(tái)上堆砌著紛亂的儀器,交
21、錯(cuò)的線纜和繁多待測(cè)器件。然而在集成的虛擬測(cè)量系統(tǒng)中,我們見到的是整潔的桌面,條理的操作,不但使測(cè)量人員從繁復(fù)的儀器堆中解放出來,而且還可實(shí)現(xiàn)自動(dòng)測(cè)量、自動(dòng)記錄、自動(dòng)數(shù)據(jù)處理。其方便之極固不必多言,而設(shè)備成本的大幅降低卻不可不提。一套完整的實(shí)驗(yàn)測(cè)量設(shè)備少則幾萬元,多則幾十萬元。在同等的性能條件下,相應(yīng)的虛擬儀器價(jià)格要低二分之一甚至更多。虛擬儀器強(qiáng)大的功能和價(jià)格優(yōu)勢(shì),使得它在儀器計(jì)量領(lǐng)域具有很強(qiáng)的生命力和十分廣闊的前景。</p>
22、<p> 1.2 研究的背景和意義</p><p> 所謂虛擬儀器就是微機(jī)化的智能電子測(cè)量?jī)x器。虛擬儀器通過硬件功能模塊和專用軟件構(gòu)成一種良好的人機(jī)交互界面,用戶可以自定義測(cè)試功能以及使測(cè)量對(duì)象多樣化。虛擬儀器的外部接口是通過數(shù)據(jù)采集卡將信號(hào)數(shù)據(jù)采集后送入計(jì)算機(jī),各種復(fù)雜測(cè)試功能、數(shù)據(jù)分析和結(jié)果顯示則完全由計(jì)算機(jī)軟件完成。一臺(tái)性能優(yōu)良的虛擬儀器不僅可以實(shí)現(xiàn)傳統(tǒng)測(cè)量?jī)x器的大部分測(cè)量功能,在許多方面
23、較傳統(tǒng)儀器有無法比擬的優(yōu)點(diǎn),如使用靈活方便、測(cè)試功能豐富、價(jià)格低廉、一機(jī)多用等,這些使得虛擬儀器成為未來電子測(cè)量?jī)x器發(fā)展的方向。</p><p> 一臺(tái)傳統(tǒng)儀器有3大功能:對(duì)被測(cè)信號(hào)的采集與控制,分析與處理,結(jié)果的表達(dá)與輸出。傳統(tǒng)儀器的這些功能都是以硬件(或固化的軟件)的形式存在的。虛擬儀器的特點(diǎn)就是將計(jì)算機(jī)技術(shù)和儀器技術(shù)有機(jī)結(jié)合,充分利用計(jì)算機(jī)技術(shù),用計(jì)算機(jī)的顯示器模擬各種儀器的控制面板,以多種形式表達(dá)輸出檢
24、測(cè)結(jié)果;以計(jì)算機(jī)軟件實(shí)現(xiàn)各種模擬信號(hào)分析,處理,完成多種多樣的測(cè)試。在電子測(cè)量測(cè)試儀器中,示波器的使用范圍非常廣泛。傳統(tǒng)示波器包括寬帶示波器,取樣示波器和記憶示波器等,它們頻帶較寬,價(jià)格便宜,但測(cè)量精度不高,功能比較單一。近年推出的數(shù)字存儲(chǔ)示波器,由于引入微處理器,極大地提高了測(cè)量準(zhǔn)確度,同時(shí)還具有較強(qiáng)的數(shù)字化處理功能,如FFT、信號(hào)平均和自動(dòng)測(cè)頻等。不過,這種示波器在應(yīng)用上存在一些限制因素,例如價(jià)格昂貴,儀器功能和模式固定,不具備用戶
25、對(duì)儀器進(jìn)行定義及編程的功能。本文采用基于計(jì)算機(jī)的虛擬技術(shù),設(shè)計(jì)出虛擬存儲(chǔ)示波器,模擬通用雙蹤示波器的面板操作和處理功能。使用個(gè)人計(jì)算機(jī)及其接口電路來采集現(xiàn)場(chǎng)和實(shí)驗(yàn)室信號(hào),并通過圖形用戶界面來模仿示波器的操作面板完成試驗(yàn)采集,調(diào)理,分析處理和顯示輸出,存儲(chǔ)記錄等功能。</p><p> 當(dāng)今,對(duì)低速的虛擬儀器的研究已經(jīng)比較多,而以GaGe公司的高速卡為數(shù)據(jù)采集設(shè)備的虛擬示波器的研究與設(shè)計(jì)還未見報(bào)道。本課題研究的虛
26、擬示波器是一種重要的虛擬儀器,主要用于超高頻信號(hào)的采集、波形顯示和頻譜分析,在雷達(dá)信號(hào)處理和激光信號(hào)處理等領(lǐng)域有著廣泛的應(yīng)用。</p><p> 1.3 本文內(nèi)容安排 </p><p> 本文主要基于GaGe公司PCI接口的CompuScope 82G高速數(shù)據(jù)采集卡和Visual C++ 6.0編程工具,完成了一種快速的虛擬示波器試驗(yàn)系統(tǒng)的設(shè)計(jì)。 </p><p&g
27、t; 第一章為緒論,介紹了虛擬儀器的研究背景和意義以及國內(nèi)外的一些研究進(jìn)展;第二章為虛擬儀器總體概述,討論了虛擬儀器的概念、構(gòu)成、特點(diǎn)、發(fā)展,建立了虛擬儀器的基本框架。第三章為基于數(shù)據(jù)采集卡虛擬示波器的研究,主要包括對(duì)數(shù)據(jù)采集系統(tǒng)各組成部分進(jìn)行了探討。在這基礎(chǔ)上,給出了基于數(shù)據(jù)采集卡的虛擬示波器的結(jié)構(gòu)。第四章為虛擬示波器的方案設(shè)計(jì),選擇了示波器的硬件和示波器的軟件開發(fā)環(huán)境,介紹了虛擬儀器軟件的設(shè)計(jì)方法,提出了系統(tǒng)軟件的總體設(shè)計(jì)方案。第
28、五章為虛擬示波器的具體實(shí)現(xiàn),是本文的重點(diǎn),完成了虛擬示波器各模塊的詳細(xì)設(shè)計(jì),包括數(shù)據(jù)采集模塊、用戶界面模塊、數(shù)字濾波模塊和波形顯示模塊的設(shè)計(jì),并給出了設(shè)計(jì)結(jié)果,最后討論了軟件設(shè)計(jì)中的關(guān)鍵技術(shù)的實(shí)現(xiàn)。第六章為總結(jié)和展望,主要對(duì)本文的已做工作做了總結(jié),并對(duì)虛擬儀器的發(fā)展前景作出了展望。</p><p> 第二章 虛擬儀器技術(shù)</p><p> 2.1虛擬儀器的基本概念</p>
29、<p> 虛擬儀器(Virtual Instruments, 縮寫為VI)是指以通用計(jì)算機(jī)作為系統(tǒng)控制器、由軟件來實(shí)現(xiàn)人機(jī)交互和大部分儀器功能的一種計(jì)算機(jī)儀器系統(tǒng)。用戶可以通過友好的圖形界面(通常叫做虛擬前面板)操作這臺(tái)計(jì)算機(jī),就象在操作自己定制的一臺(tái)傳統(tǒng)儀器一樣。虛擬儀器的概念是對(duì)傳統(tǒng)儀器概念的重大突破,它的出現(xiàn)使測(cè)量?jī)x器與個(gè)人計(jì)算機(jī)的界限模糊了。</p><p> 所有的測(cè)量、控制儀器的功能可
30、由數(shù)據(jù)采集、數(shù)據(jù)分析、結(jié)果輸出與顯示三大部分組成。在這三大功能中,數(shù)據(jù)分析、算法實(shí)現(xiàn)和結(jié)果顯示完全由基于計(jì)算機(jī)的軟件完成,只要另外提供一定的數(shù)據(jù)采集硬件、輸出端口和驅(qū)動(dòng)設(shè)備,就可構(gòu)成由計(jì)算機(jī)組成的測(cè)量、控制儀器。由此可以看到虛擬儀器與傳統(tǒng)儀器的基本區(qū)別;傳統(tǒng)儀器的這些功能都是以硬件或者固化的軟件的形式存在的,而虛擬儀器的功能則是通過軟件實(shí)現(xiàn)對(duì)數(shù)據(jù)的分析處理、表達(dá)以及圖形化用戶接口(如圖2-1 所示)。 </p><p
31、> 圖2-1 虛擬儀器的內(nèi)部功能劃分</p><p> 測(cè)試應(yīng)用程序?qū)⒖蛇x硬件(如GPIB、VXI、PXI、RS—232、DAQ 板)和可重復(fù)用原碼庫函數(shù)等軟件結(jié)合在一起,實(shí)現(xiàn)儀器模塊間的通訊、定時(shí)與觸發(fā)。原代碼庫函數(shù)為用戶構(gòu)建自己的VI關(guān)系系統(tǒng)提供了基本的軟件模塊。由于VI的模塊化、開放性和靈活性,以及軟件是關(guān)鍵的特點(diǎn),當(dāng)用戶的測(cè)試、控制要求變化時(shí),可以方便的向用戶自己來增減硬、軟件模塊,或重新配置現(xiàn)
32、有系統(tǒng)以滿足新的測(cè)試、控制要求。這樣,當(dāng)用戶從一個(gè)項(xiàng)目轉(zhuǎn)向另一個(gè)項(xiàng)目時(shí),就能簡(jiǎn)單地構(gòu)造出新的VI系統(tǒng)而不丟失已有的硬件和軟件資源。</p><p> 2.2虛擬儀器的特點(diǎn)</p><p> 虛擬儀器是以裝有測(cè)量應(yīng)用軟件的個(gè)人電腦為核心,具有虛擬的儀器操作面板,足夠的硬件支持,有一定通信能力的測(cè)量裝置。它和傳統(tǒng)儀器相比具有以下的特點(diǎn):(1)虛擬儀器的關(guān)鍵環(huán)節(jié)是軟件。</p>
33、<p> 虛擬儀器系統(tǒng)中除PC機(jī)外的硬件主要用于數(shù)據(jù)的采集、輸入,至于系統(tǒng)怎樣處理數(shù)據(jù),具有怎樣的面板和數(shù)據(jù)輸出的形式等都是由軟件決定的。虛擬儀器的好壞,很大程度上取決于軟件水平的高低。(2)開發(fā)與維護(hù)的費(fèi)用低,系統(tǒng)組建時(shí)間短。</p><p> 當(dāng)需要增加新的測(cè)量功能,只需要增加軟件模塊或通用的硬件模塊,縮短了系統(tǒng)的更新時(shí)間,而且有利于系統(tǒng)的擴(kuò)展。應(yīng)用軟件不像傳統(tǒng)儀器的硬件那樣存在元器件老化
34、的問題,大大節(jié)省了維護(hù)的費(fèi)用,延長(zhǎng)設(shè)備的使用壽命。(3)測(cè)量更準(zhǔn)確。</p><p> 傳統(tǒng)儀器測(cè)量個(gè)體之間差異大,而虛擬儀器的應(yīng)用軟件在不同的PC機(jī)上具有相同的運(yùn)行效果,在軟件運(yùn)行這方面不存在個(gè)體的差異。(4)測(cè)量更方便。</p><p> 因?yàn)閭鹘y(tǒng)儀器功能單一,所以對(duì)一個(gè)信號(hào)完成多個(gè)參數(shù)的測(cè)量需要多臺(tái)儀器,使測(cè)量受連接方式、電纜度等因素的影響。虛擬儀器只需對(duì)信號(hào)進(jìn)行一次采樣,多
35、個(gè)軟件模塊對(duì)同一組數(shù)據(jù)進(jìn)行不同的處理就能實(shí)現(xiàn)多個(gè)參數(shù)的同時(shí)測(cè)量。(5)具有強(qiáng)大的數(shù)據(jù)處理功能。</p><p> 計(jì)算機(jī)運(yùn)算速度的大大提高和數(shù)字信號(hào)處理理論的豐富和完善,使虛擬儀器能夠快速準(zhǔn)確的處理數(shù)據(jù)。</p><p> 第三章 基于數(shù)據(jù)采集卡的虛擬示波器的研究</p><p> 基于數(shù)據(jù)采集系統(tǒng)(采集卡)的虛擬示波器是虛擬儀器的一種重要的構(gòu)成方式,其中的
36、核心設(shè)備數(shù)據(jù)采集卡應(yīng)具有高速采樣、多種觸發(fā)、存儲(chǔ)數(shù)據(jù)以及與計(jì)算機(jī)之間交換數(shù)據(jù)的功能,有的數(shù)據(jù)采集卡還具有系統(tǒng)定時(shí)和系統(tǒng)同步等功能,它是外界電信號(hào)與計(jì)算機(jī)之間的橋梁,其性能直接決定著數(shù)據(jù)采集的精度和速度,影響著虛擬示波器的整體性能。</p><p> 3.1基于PC的數(shù)據(jù)采集系統(tǒng) </p><p> 基于PC機(jī)的數(shù)據(jù)采集系統(tǒng)(Data AcQuisition,DAQ)大致有兩種,一種是采
37、用插入PC控制槽中的插卡形式實(shí)現(xiàn)數(shù)據(jù)采集并將數(shù)據(jù)直接通過PC總線傳入計(jì)算機(jī)內(nèi)存中;另外一種采用遠(yuǎn)端數(shù)據(jù)采集硬件完成數(shù)據(jù)采集,然后通過串行、并行方式或者USB接口將數(shù)據(jù)傳回計(jì)算機(jī)。本課題采用的是第一種方式構(gòu)成的數(shù)據(jù)采集系統(tǒng),以便進(jìn)行高速、大容量的數(shù)據(jù)采集和傳輸。 </p><p> 基于計(jì)算機(jī)的數(shù)據(jù)采集系統(tǒng)的結(jié)構(gòu)如圖3-1 所示,該系統(tǒng)由傳感器、信號(hào)調(diào)理、數(shù)據(jù)采集(DAQ)硬件、個(gè)人計(jì)算機(jī)、軟件等基本要素構(gòu)成。&
38、lt;/p><p> 圖3-1 基于計(jì)算機(jī)的數(shù)據(jù)采集系統(tǒng)</p><p> 常用的數(shù)據(jù)采集硬件的功能包括模擬量輸入、模擬量輸出、數(shù)字量輸出、定時(shí)I/O和觸發(fā)等。 在數(shù)據(jù)采集系統(tǒng)中,軟件起著將DAQ硬件和PC轉(zhuǎn)換成一個(gè)完整的數(shù)據(jù)采集、分析和顯示系統(tǒng)的功能。軟件主要有驅(qū)動(dòng)器軟件和應(yīng)用軟件兩部分組成。</p><p> 3.2 超高速數(shù)據(jù)采集卡CS 82G </p
39、><p> 本次設(shè)計(jì)中采用的CS 82G是一種超高速的基于PC的數(shù)據(jù)采集卡,CS 82G的硬件可以以極高的采樣率和多通道采樣模擬信號(hào)并緩存到卡上的存儲(chǔ)器。CS 82G基于PC的一個(gè)主要優(yōu)點(diǎn)是它能夠以極高的速率把數(shù)據(jù)傳輸?shù)絇C的RAM中,數(shù)據(jù)可以從RAM中很容易地進(jìn)行分析、存儲(chǔ)和顯示。CS 82G可以直接插在PC的PCI插槽里,因此不需要輔助的數(shù)據(jù)接口,比如GPIB接口,這也可以解釋它的高速據(jù)傳輸率,圖3-2展示CS
40、 82G的結(jié)構(gòu)框圖。</p><p> CS 82G 的硬件主要由前置濾波器、衰減器、可程控模擬放大電路、A/D 轉(zhuǎn)換電路、D/A 轉(zhuǎn)換電路、計(jì)數(shù)/定時(shí)電路、振蕩電路、時(shí)序控制電路以及PCI接口電路構(gòu)成,全卡的功能電路由數(shù)字控制邏輯電路統(tǒng)一控制。由此可見,CS 82G本身帶有部分信號(hào)調(diào)理的功能,其結(jié)構(gòu)框圖如圖3-2 所示。 </p><p> 輸入信號(hào)經(jīng)衰減和放大后送入觸發(fā)電路及A/D
41、轉(zhuǎn)換器。在觸發(fā)電路內(nèi),經(jīng)調(diào)理后的輸入信號(hào)或外部信號(hào)與基準(zhǔn)電壓發(fā)生器送來的基準(zhǔn)信號(hào)進(jìn)行比較,形成觸發(fā)標(biāo)志。振蕩器產(chǎn)生的高頻振蕩信號(hào)掃描時(shí)間因數(shù)電路按設(shè)定系數(shù)分頻,經(jīng)脈沖形成電路產(chǎn)生系統(tǒng)所需的時(shí)鐘信號(hào),送往地址計(jì)數(shù)器,A/D 轉(zhuǎn)換器。地址計(jì)數(shù)器產(chǎn)生RA M的讀寫地址及地址溢出標(biāo)志。一個(gè)采集周期結(jié)束后,計(jì)算機(jī)通過PCI總線把RAM中的數(shù)據(jù)讀出,用于數(shù)據(jù)處理和構(gòu)建信號(hào)波形。</p><p> 圖3-2 CS 82G的系
42、統(tǒng)框圖</p><p> 3.3 基于數(shù)據(jù)采集卡的虛擬示波器的原理和結(jié)構(gòu) </p><p> 在電子測(cè)量中,傳統(tǒng)儀器都是自成系統(tǒng)的,功能單一,模式固定,不具備用戶對(duì)儀器進(jìn)行定義及編程的功能。隨著計(jì)算機(jī)技術(shù)特別是軟件技術(shù)的發(fā)展,將個(gè)人計(jì)算機(jī)應(yīng)用于測(cè)試和分析的虛擬示波器是一個(gè)順應(yīng)形勢(shì)的新的發(fā)展方向。 </p><p> 3.3.1 虛擬示波器的工作原理 </
43、p><p> 模擬信號(hào)經(jīng)同軸電纜進(jìn)入采集卡的輸入通道,經(jīng)過前置濾波電路、衰減電路、可變?cè)鲆娴姆糯箅娐?,將信?hào)處理成A/D轉(zhuǎn)換器可以處理的標(biāo)準(zhǔn)電平,經(jīng)過A/D采樣量化轉(zhuǎn)化成計(jì)算機(jī)可以處理的數(shù)字信號(hào)并緩存到卡上的存儲(chǔ)器。其支持軟件通過PC機(jī)的PCI總線接口控制模擬通道的阻抗匹配、放大器的增益選擇、啟動(dòng)A/D轉(zhuǎn)換及轉(zhuǎn)換結(jié)束的識(shí)別,并將采集數(shù)據(jù)以DMA方式傳輸?shù)接?jì)算機(jī)內(nèi)存,同時(shí)對(duì)數(shù)據(jù)信號(hào)進(jìn)行分析處理、顯示、存儲(chǔ)及打印輸出等
44、。</p><p> 3.3.2 系統(tǒng)的結(jié)構(gòu)和特點(diǎn) </p><p> 基于數(shù)據(jù)采集卡的虛擬示波器由支持軟件、數(shù)據(jù)采集卡及PC機(jī)組成,其結(jié)構(gòu)如圖3-3所示。</p><p> 圖 3-3 基于數(shù)據(jù)采集卡的虛擬示波器的結(jié)構(gòu)</p><p> 虛擬示波器和傳統(tǒng)示波器的根本區(qū)別在于: </p><p> (1)傳統(tǒng)
45、示波器完全用硬件實(shí)現(xiàn),功能和模塊固定,其功能的自動(dòng)測(cè)試系統(tǒng),功能及模式由用戶自己定義。 </p><p> ?。?)傳統(tǒng)示波器結(jié)構(gòu)復(fù)雜,維護(hù)困難,對(duì)工作現(xiàn)場(chǎng)條件有較高的要求。器結(jié)構(gòu)簡(jiǎn)單,僅由計(jì)算機(jī)和一塊數(shù)據(jù)采集卡和一張光盤組成,將采集卡插在PC機(jī)的擴(kuò)展槽上即可工作,軟硬件維護(hù)都很方便。</p><p> 第四章 虛擬示波器的方案設(shè)計(jì)</p><p> 4.1硬件
46、和軟件的選擇 </p><p> 虛擬示波器主要由儀器硬件和功能軟件兩部分組成。以DAQ方式構(gòu)成的虛擬示波器的硬件主要由計(jì)算機(jī)和模塊化硬件組成,計(jì)算機(jī)通常是個(gè)人計(jì)算機(jī),也可以是任何通用計(jì)算機(jī)。模塊化硬件主要是數(shù)據(jù)采集卡。本課題設(shè)計(jì)的虛擬示波器主要是由一塊PCI總線的高速數(shù)據(jù)采集卡、PC機(jī)和用VC++ 6.0開發(fā)的功能模塊軟件組成。 </p><p> 4.1.1硬件的選擇 </p
47、><p> 計(jì)算機(jī)和數(shù)據(jù)采集卡組成了虛擬示波器的硬件平臺(tái)。數(shù)據(jù)采集卡是虛擬示波器的重要組成部件,其性能指標(biāo)直接決定著虛擬示波器的采樣速率、精度等主要指標(biāo)。CPU的速度及計(jì)算機(jī)的內(nèi)存影響著示波器處理數(shù)據(jù)的速度;計(jì)算機(jī)的硬盤決定著它的存儲(chǔ)數(shù)據(jù)的容量。 </p><p> 數(shù)據(jù)采集系統(tǒng)的任務(wù)是采集原始的模擬信號(hào),把它們轉(zhuǎn)換為計(jì)算機(jī)可以處理的數(shù)字信號(hào),其主要指標(biāo)有采樣精度和采樣速度。采樣精度主要由
48、A/D轉(zhuǎn)換器的位數(shù)決定,而采樣速度由A/D轉(zhuǎn)換器最高工作頻率決定,然而,兩個(gè)指標(biāo)是相互制約的。 </p><p> 數(shù)據(jù)采集卡的選擇主要與采樣率、采樣通道數(shù)和測(cè)量精度有關(guān)。根據(jù)第三章的分析,采樣率是指模擬量輸入通道在單位時(shí)間內(nèi)能夠采集的數(shù)據(jù)點(diǎn)數(shù),一般用Hz即采樣頻率來表示,也有的用S/s表示。采樣頻率高,就能在一定時(shí)間獲得更多的原始信號(hào)信息。為了再現(xiàn)原始信號(hào),必須有足夠高的采樣頻率。如果信號(hào)變化比采集卡的數(shù)字化
49、要快,或者采樣太慢,就會(huì)產(chǎn)生波形失真。根據(jù)奈奎斯特理論,采樣頻率至少是被測(cè)信號(hào)最高頻率的兩倍,才不至于產(chǎn)生波形失真。即應(yīng)選用2GHz的數(shù)據(jù)采集卡才可以完成最高頻率為1GHz的被測(cè)信號(hào)的測(cè)量工作。 </p><p> 采樣通道數(shù)是系統(tǒng)可以同時(shí)進(jìn)行采樣的信號(hào)通道數(shù),在選取采集卡時(shí)需要注意以下幾點(diǎn):采樣通道數(shù)是否滿足系統(tǒng)要求;在需要差分輸入測(cè)量時(shí),板上有無差分輸入以及差分輸入的通道數(shù);在測(cè)量多通道時(shí),應(yīng)注意采集卡能否
50、擴(kuò)展以及最多的可擴(kuò)展的通道數(shù)。 </p><p> 4.1.2軟件開發(fā)環(huán)境的選擇 </p><p> 在給定計(jì)算機(jī)和必要儀器硬件之后,構(gòu)成虛擬儀器的關(guān)鍵在于軟件。虛擬儀器系統(tǒng)的一個(gè)重要革新就是儀器硬件軟件化,用軟件實(shí)現(xiàn)硬件功能。虛擬儀器系統(tǒng)的核心技術(shù)是軟件技術(shù),一個(gè)現(xiàn)代化測(cè)控系統(tǒng)性能的優(yōu)劣很大程度上取決于軟件平臺(tái)的選擇與應(yīng)用軟件的設(shè)計(jì)。因此正確選擇軟件開發(fā)環(huán)境對(duì)于程序的開發(fā)和設(shè)計(jì)起著重
51、要的作用。 </p><p> 目前,能夠用于虛擬儀器系統(tǒng)開發(fā)、比較成熟的軟件開發(fā)平臺(tái)主要有兩大類:一類是通用的可視化軟件編程環(huán)境,主要有Microsoft公司的Visual C++和Visual Basic、Insprise公司的Delphi和C++ Builder等;另一類是一些公司推出的專用于虛擬儀器開發(fā)的軟件編程環(huán)境,主要有Agilent公司(由原HP公司分離出來的一個(gè)公司)的圖形化編程環(huán)境Agilen
52、tVEE、NI公司的圖形化編程環(huán)境LabVIEW及文本編程環(huán)境LabWindows/CVI。 </p><p> 在以上這些的軟件開發(fā)環(huán)境中,面向儀器的交互式C語言開發(fā)平臺(tái)LabWindows/CVI具有編程方法簡(jiǎn)單直觀、提供程序代碼自動(dòng)生成功能及有大量符合VPP規(guī)范的儀器驅(qū)動(dòng)程序源代碼可供參考和使用等優(yōu)點(diǎn),是國內(nèi)虛擬儀器系統(tǒng)集成商使用較多的編程開發(fā)環(huán)境。Agilent VEE和LabVIEW則是一種圖形化編程
53、環(huán)境或稱為G語言編程環(huán)境,采用了不同于文本語言的流程圖編程方法,十分適合對(duì)軟件編程了解較少的工程技術(shù)人員使用。 </p><p> Visual C++是一種功能齊全的面向?qū)ο蟮拈_發(fā)工具,可直接對(duì)硬件操作,支持多任務(wù)多線程。Visual C++不僅是C++語言的集成開發(fā)環(huán)境,而且與Win32緊密相連,所以利用Visual C++開發(fā)系統(tǒng)可以完成各種各樣應(yīng)用程序的開發(fā),從底層軟件直到上層面向用戶的軟件都可以用Vi
54、sual C++來開發(fā)完成;而且Visual C++強(qiáng)大的調(diào)試功能也為大型復(fù)雜軟件的開發(fā)提供了有效的排錯(cuò)手段。隨著軟件版本的不斷升級(jí),其功能也越來越強(qiáng)大,幾乎包括了Windows應(yīng)用的各個(gè)方面。 </p><p> Visual C++可以說是匯集Microsoft公司技術(shù)精華的主流產(chǎn)品。它最重要的特征是提供了MFC類庫,封裝了Windows API函數(shù),并建立了應(yīng)用程序框架,使開發(fā)人員可以將主要精力集中在所要
55、解決的具體問題上,尤其是利用Visual C++的AppWizard功能生成的SDI或MDI應(yīng)用程序,進(jìn)行少量修改后,就可以進(jìn)入軟件界面的外觀設(shè)計(jì)。 </p><p> 由于Visual C++的面向?qū)ο蟪绦蛟O(shè)計(jì)的特性十分適合虛擬儀器系統(tǒng)的軟件開發(fā),而且在本設(shè)計(jì)中所使用的數(shù)據(jù)采集卡的驅(qū)動(dòng)程序是由C語言開發(fā),所以我們選用Visual C++6.0作為虛擬示波器系統(tǒng)的軟件開發(fā)工具。</p><p
56、> 4.2軟件總體方案 </p><p> 虛擬示波器是采用基于計(jì)算機(jī)的虛擬技術(shù),用以模擬傳統(tǒng)示波器的面板操作和處理功能,也就是使用個(gè)人計(jì)算機(jī)及其接口電路來采集現(xiàn)場(chǎng)或?qū)嶒?yàn)室信號(hào),并通過軟件的圖形用戶界面(GUI)來模仿示波器的操作面板,來完成信號(hào)的采集、分析處理和顯示輸出等功能。 </p><p> 本課題設(shè)計(jì)的虛擬示波器,是在高速數(shù)據(jù)采集卡的支持下,配備一定功能的軟件,完成波
57、形的存儲(chǔ)、分析、顯示等功能。傳統(tǒng)的測(cè)試儀器由信號(hào)采集、信號(hào)處理和結(jié)果顯示三大部分組成,這三部分均由硬件構(gòu)成。虛擬示波器也是由這三大部分組成,但是除了數(shù)據(jù)采集部分是由硬件實(shí)現(xiàn)之外,其它兩部分都是由軟件實(shí)現(xiàn)。 </p><p> 本次設(shè)計(jì)利用Visual C++ 6.0作為開發(fā)工具 ,采用了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,在Windows2000下進(jìn)行。軟件采用模塊化設(shè)計(jì),其總體框圖如圖4-1所示。 </p>
58、<p> 從圖4-1可以看出軟件部分的總體框圖以及數(shù)據(jù)流、控制流的流向。其中主控模塊相當(dāng)于一個(gè)任務(wù)調(diào)度中心。當(dāng)軟件開始運(yùn)行時(shí),首先進(jìn)入主控模塊,然后啟動(dòng)數(shù)據(jù)采集線程和數(shù)據(jù)處理線程,于是數(shù)據(jù)采集模塊和數(shù)據(jù)處理模塊開始工作直至用戶停止系統(tǒng)工作。 </p><p> 數(shù)據(jù)流從數(shù)據(jù)采集模塊開始,分別流向數(shù)據(jù)存儲(chǔ)模塊和數(shù)據(jù)處理模塊,數(shù)據(jù)存儲(chǔ)模塊負(fù)責(zé)把用戶感興趣的數(shù)據(jù)存人硬盤,而數(shù)據(jù)處理模塊負(fù)責(zé)數(shù)據(jù)的實(shí)時(shí)顯示
59、、數(shù)字濾波、頻譜分析和波形的參數(shù)計(jì)算。 </p><p> 當(dāng)用戶需要查詢歷史信號(hào)時(shí),可以啟動(dòng)歷史查詢模塊,然后把查詢到的數(shù)據(jù)送往歷史曲線顯示模塊;如果需要打印歷史信號(hào),調(diào)用曲線打印模塊即可。</p><p> 圖4-1 軟件系統(tǒng)總體框圖</p><p> 圖4-2 軟件系統(tǒng)總體流程圖</p><p> 第五章 虛擬示波器系統(tǒng)的軟件具
60、體實(shí)現(xiàn)</p><p> 5.1虛擬示波器的系統(tǒng)軟件功能框圖</p><p> 軟件采用模塊化設(shè)計(jì),在功能上劃分為多個(gè)模塊,分別為數(shù)據(jù)采集模塊、軟面板模塊(用戶界面模塊)、數(shù)據(jù)處理模塊、數(shù)據(jù)存儲(chǔ)模塊和幫助文件模塊。其中數(shù)據(jù)處理模塊又劃分為頻譜分析模塊、數(shù)字濾波模塊、參數(shù)計(jì)算模塊和波形顯示模塊。各個(gè)模塊之間的聯(lián)系如圖5-1所示。由于篇幅關(guān)系,本文中只給出了重要模塊的設(shè)計(jì)。</p&g
61、t;<p> 圖5-1 系統(tǒng)軟件功能框圖</p><p> 5.2 數(shù)據(jù)采集模塊的設(shè)計(jì) </p><p> 數(shù)據(jù)采集模塊是最為關(guān)鍵的一個(gè)程序模塊,這個(gè)模塊中應(yīng)用程序會(huì)通過采集卡的驅(qū)動(dòng)程序和硬件進(jìn)行通信,要發(fā)出各種控制字、參量字到儀器中去,同時(shí)又要對(duì)硬件的工作狀態(tài)進(jìn)行判斷和處理,然后讀取采樣值。如果把這個(gè)模塊程序在主線程中實(shí)現(xiàn),那么,當(dāng)應(yīng)用程序與驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)通信時(shí),主
62、界面就會(huì)凍結(jié)。為了解決這個(gè)問題,本文直接創(chuàng)建一個(gè)子線程來單獨(dú)完成與驅(qū)動(dòng)程序的通信任務(wù),讓主界面專心于響應(yīng)視窗界面的信息。在主線程中通過調(diào)用StartCapture()函數(shù)啟動(dòng)數(shù)據(jù)采集子線程進(jìn)行數(shù)據(jù)采集。</p><p> 5.2.1 數(shù)據(jù)采集的編程過程 </p><p> ?。?)初始化采集卡的驅(qū)動(dòng)程序和硬件 </p><p> 這個(gè)過程包括兩個(gè)部分,一是確定硬
63、件安裝位置及I/O口和內(nèi)存映射,由GAGESCOP.INC文件來配置內(nèi)存區(qū)域和I/O地址,二是用戶進(jìn)行的采集卡驅(qū)動(dòng)初始化,選擇(打開相應(yīng)的)采集卡,讀取配置文件等。驅(qū)動(dòng)程序的初始化也可以直接調(diào)用InitBoard()函數(shù)或?qū)Υ撕瘮?shù)進(jìn)行適當(dāng)?shù)男薷暮笳{(diào)用(該函數(shù)的源代碼在app_supp.c文件中)。 </p><p> (2)設(shè)置相關(guān)參數(shù)準(zhǔn)備進(jìn)行數(shù)據(jù)采集 </p><p> 該采集卡的所
64、有的參數(shù)都是通過軟件進(jìn)行設(shè)置的,驅(qū)動(dòng)程序中提供了一些數(shù)據(jù)結(jié)構(gòu),使得參數(shù)設(shè)置比較容易進(jìn)行,也可以不用這些數(shù)據(jù)結(jié)構(gòu)。設(shè)置參數(shù)主要包括:工作模式(單通道,多通道),采樣率、輸入電壓的范圍、輸入阻抗及耦合方式、觸發(fā)源、上升沿、下降沿觸發(fā)、觸發(fā)電平、采樣深度(采樣點(diǎn)數(shù)),所有這些參數(shù)設(shè)置被綜合到一個(gè)函數(shù)中:SetBoard();對(duì)此函數(shù)進(jìn)行適當(dāng)?shù)男薷?,即可滿足采集的要求。 </p><p> ?。?)開始采集數(shù)據(jù) <
65、/p><p> 調(diào)用gage_start_capture()函數(shù)即開始采集數(shù)據(jù),如調(diào)用時(shí)傳給該函數(shù)的參數(shù)為非零值,且觸發(fā)條件設(shè)置為軟件觸發(fā),則調(diào)用此函數(shù)后立即開始采集數(shù)據(jù),否則就等待至觸發(fā)條件滿足時(shí)開始采集數(shù)據(jù)。當(dāng)計(jì)算機(jī)上只有一塊GaGe公司的采集卡時(shí),可以用另外兩個(gè)函數(shù)來代替gage_start_capture();即順序調(diào)用gage_init_clock()和gage_get_data();執(zhí)行這兩個(gè)函數(shù)的速度
66、比執(zhí)行g(shù)age_start_capture()要快許多,因?yàn)間age_start_capture()要做一些額外的工作以確保多卡同時(shí)有效地工作。 </p><p> ?。?)檢測(cè)數(shù)據(jù)是否采集結(jié)束 </p><p> 相關(guān)函數(shù)為gage_triggered(),gage_busy(),gage_force_capture(),gage_abort_capture()。gage_trigge
67、red()是用來檢測(cè)采集卡是否已經(jīng)觸發(fā),如果沒有觸發(fā),則在采集卡的RAM上沒有有效數(shù)據(jù)。gage_busy()則是用來判斷是否已經(jīng)采集結(jié)束。正在采集數(shù)據(jù)時(shí),是不能讀取采集卡上的RAM的(該卡上的RAM是單端口的)??梢杂胓age_force_capture()強(qiáng)制觸發(fā)一次,或者用gage_abort_capture()結(jié)束這一次數(shù)據(jù)采集,這樣可以對(duì)后續(xù)的數(shù)據(jù)采集產(chǎn)生影響。 </p><p> ?。?)傳輸數(shù)據(jù)從采
68、集卡RAM至計(jì)算機(jī)的內(nèi)存 </p><p> 采樣點(diǎn)在采集卡的RAM中存儲(chǔ)的位置(地址)可由函數(shù),gage_calculate_addresses(),該函數(shù)返回三個(gè)地址值:開始地址、觸發(fā)地址、結(jié)束地址。傳輸數(shù)據(jù)的函數(shù)是gage_transfer_buffer_3();使用它時(shí)需要傳遞的參數(shù)為開始地址和要傳送的數(shù)據(jù)量。</p><p> 數(shù)據(jù)采集的主要代碼如下</p>&
69、lt;p><b> {</b></p><p> InitBoard(); /*初始化驅(qū)動(dòng)程序和硬件*/</p><p> /* 校驗(yàn)當(dāng)前采集卡的結(jié)構(gòu)* /</p><p> Gage_get_driver_info(board_info);</p><p> board_setting();/*對(duì)采
70、集卡進(jìn)行參數(shù)設(shè)置*/</p><p> /*開始數(shù)據(jù)采集,觸發(fā)源為軟件觸發(fā)*/</p><p> gage_start_capture ((int16) (board.source =GAGE_SOFTWARE));</p><p> /*計(jì)算出起始地址、觸發(fā)地址、結(jié)束地址*/</p><p> gage_calculate_ad
71、dresses(GAGE_CHAN_A,board.opmode,sample_rate_table</p><p> [board.srindex].sr_calc,&trigger[bd],&starting[bd],&ending[bd]);</p><p> /把采集卡上的數(shù)據(jù)傳輸?shù)接?jì)算機(jī)內(nèi)存*/</p><p> gage_t
72、ransfer_buffer_3(trigger[bd],</p><p> GAGE_CHAN_A,chan_a_8,points);</p><p><b> }</b></p><p> 5.2.2采集模塊的流程圖 </p><p> 采集模塊的流程圖如圖5-2所示。 </p><p&g
73、t; 5.3 軟面板的設(shè)計(jì) </p><p> 用戶界面的設(shè)計(jì)采用了VC++中切分多視圖技術(shù),界面主要切分為三個(gè)視圖:主視圖基類為CscrollView,用于顯示波形;還有兩個(gè)視圖基類為CformView,一個(gè)用于動(dòng)態(tài)顯示采集數(shù)據(jù)的特征參數(shù),另一個(gè)用于對(duì)示波器進(jìn)行操作。整個(gè)軟件的主界面設(shè)計(jì)如圖5-3所示。 </p><p> 實(shí)現(xiàn)切分多視圖的技術(shù)核心: </p><
74、;p> ?。?)在框架窗口類中聲明一個(gè)CSplitterWnd類對(duì)象,對(duì)MDI應(yīng)用程序,框架窗口類為CChildFrame類;對(duì)SDI應(yīng)用程序,框架窗口類為CMainFrame類。CSplitterWnd類是專門繪制和處理分隔條的類。 </p><p> ?。?)在框架窗口類的OnCreateClient()函數(shù)中創(chuàng)建分割條窗口。 </p><p> ?。?)為分割條窗口的每個(gè)子窗口
75、創(chuàng)建視圖。 </p><p> 示波器主界面分為三個(gè)功能模塊,波形顯示模塊,參數(shù)顯示模塊和示波器操作模塊。在波形顯示模塊中,可以同時(shí)動(dòng)態(tài)顯示兩個(gè)通道的波形。在參數(shù)顯示模塊中,可以動(dòng)態(tài)顯示兩個(gè)通道的參數(shù),主要有周期、最大值、有效值、功率和頻率,當(dāng)然周期和頻率是針對(duì)周期信號(hào)來說的。在示波器操作模塊中,又可以分為兩個(gè)部分,分別是系統(tǒng)控制和通道控制。系統(tǒng)控制主要是對(duì)采樣頻率、觸發(fā)源、觸發(fā)電平、采樣深度的控制;通道控制主
76、要實(shí)現(xiàn)兩個(gè)通道參數(shù)的設(shè)置和波形顯示的控制。通道參數(shù)主要有輸入電壓的范圍、單/雙通道選擇、輸入阻抗和交直流耦合;顯示控制包括時(shí)基控制、波形縮放和單/雙通道顯示選擇。</p><p> 5.4 頻譜分析模塊的設(shè)計(jì) </p><p> 本軟件利用快速傅里葉變換(FFT)進(jìn)行頻譜分析。頻譜分析采用按時(shí)間抽取FFT算法,然后將幅值頻譜分析結(jié)果在用戶界面上以坐標(biāo)曲線形式顯示。進(jìn)行FFT時(shí)可以選擇點(diǎn)
77、數(shù),有1024、2048、4096三種選擇,如果點(diǎn)數(shù)不夠,程序自動(dòng)補(bǔ)零。</p><p> 圖5-2 數(shù)據(jù)采集程序流程圖</p><p> 5-3 虛擬示波器的主界面</p><p><b> DFT為:</b></p><p><b> 由于</b></p><p>
78、;<b> 所以</b></p><p> 其中和分別為和的N/2點(diǎn)DFT,即</p><p> 由于和均為N/2為周期,且,所以又可表示為</p><p><b> 5-1</b></p><p><b> 5-2</b></p><p>
79、 這樣,就將N點(diǎn)DFT分解為兩個(gè)N/2點(diǎn)的DFT和式5-1以及5-2的運(yùn)算。依次類推,經(jīng)過M-1次分解,最后將N點(diǎn)DFT分解成N/2個(gè)2點(diǎn)DFT.</p><p> 5.4.1 設(shè)計(jì)結(jié)果 </p><p> 頻譜顯示模塊主要完成對(duì)不同通道信號(hào)頻譜的顯示,它由參數(shù)設(shè)置對(duì)話框和頻譜顯示對(duì)話框組成。參數(shù)設(shè)置對(duì)話框主要完成通道和采樣點(diǎn)數(shù)的選擇,如圖 5-5 所示。</p><
80、;p> 圖5-4 DIT-FET 運(yùn)算和程序框圖</p><p> 圖5-5 FFT的控制對(duì)話框</p><p> 圖5-6 鋸齒波的頻譜圖</p><p> 圖5-7 正弦波的頻譜圖</p><p> 5.4.2 數(shù)字濾波模塊的設(shè)計(jì) </p><p> 在虛擬示波器中,對(duì)被測(cè)信號(hào)背景噪聲干擾的抑制是
81、非常重要的一個(gè)任務(wù),一般情況下,采用數(shù)字濾波可以較好地清除干擾。</p><p> 濾波器的設(shè)計(jì)采用了經(jīng)典的設(shè)計(jì)方法,首先根據(jù)指標(biāo)設(shè)計(jì)出巴特沃斯濾波器,然后利用雙線性變換法設(shè)計(jì)數(shù)字低通濾波器,這部分的內(nèi)容在一般的數(shù)字信號(hào)處理著作中都有詳盡的介紹。</p><p> 數(shù)字濾波模塊主要完成對(duì)不同通道的濾波和濾波前后波形的顯示,圖5-8為濾波器的控制對(duì)話框,它主要完成通道的選擇、濾波器類型的
82、選擇和一些參數(shù)的輸入。濾波前后波形的顯示仍在主界面中的波形顯示區(qū)進(jìn)行,圖5-9為鋸齒波通過低通濾波器,其中下面的波形為輸入的鋸齒波,上面的波形為鋸齒波濾波后的波形。</p><p> 圖5-8 濾波器的控制對(duì)話框</p><p> 圖5-9 鋸齒波通過低通濾波器后的波形</p><p> 5.6 波形顯示模塊的設(shè)計(jì)</p><p>
83、5.6.1 數(shù)據(jù)內(nèi)插技術(shù) </p><p> 要想觀察采集好的波形,就必須采用某種方式將采集好的數(shù)據(jù)顯示出來,這就要用到數(shù)據(jù)內(nèi)插技術(shù)。選擇不同的內(nèi)插技術(shù)會(huì)對(duì)存儲(chǔ)帶寬帶來不同的影響。常用的內(nèi)插技術(shù)有:直接點(diǎn)顯示、矢量?jī)?nèi)插和正弦內(nèi)插。 </p><p><b> ?。?)直接點(diǎn)顯示 </b></p><p> 直接點(diǎn)顯示是在顯示器上直接按點(diǎn)顯示
84、,顯示效果較為直觀,但該方式也存在著嚴(yán)重的不足。當(dāng)采樣點(diǎn)較少時(shí),觀察者會(huì)把相鄰的兩個(gè)點(diǎn)連起來,隨著信號(hào)頻率的增加,很可能得出錯(cuò)誤的結(jié)果。因此,要得到正確的結(jié)果就必須采集更多的點(diǎn),但是太多的點(diǎn)反而會(huì)影響觀察結(jié)果。一般情況下,每個(gè)周期要求20~25個(gè)點(diǎn)。 </p><p> (2)矢量?jī)?nèi)插顯示 </p><p> 矢量?jī)?nèi)插是在采集點(diǎn)之間采用直線擬合方式畫線顯示的方法。它可以消除視覺上混淆,
85、矢量越短效果就越好。對(duì)正弦信號(hào)而言,如果每周期只有兩個(gè)采樣點(diǎn),那么矢量?jī)?nèi)插就沒有什么效果。一般當(dāng)采樣點(diǎn)增加到10個(gè)以上時(shí),才能得到較為準(zhǔn)確的正弦波。因此,采用矢量?jī)?nèi)插的方法,可以將有效存儲(chǔ)帶寬提高兩倍以上。矢量?jī)?nèi)插法適合于顯示脈沖和數(shù)字信號(hào),在顯示正弦波時(shí)可能會(huì)產(chǎn)生失真。 </p><p> ?。?)正弦內(nèi)插顯示 </p><p> 正弦內(nèi)插法是用sin(x)/x函數(shù)曲線將各采樣點(diǎn)連接起
86、來。正弦內(nèi)插器基本上可看作是理想的矩形濾波器,它與矢量法相比不但可以產(chǎn)生精確的波形,也可以得到較高分辨率的定時(shí)和幅度測(cè)量。 </p><p> 正弦內(nèi)插法分兩步來完成。首先,在每個(gè)己采樣點(diǎn)之后插入L-1個(gè)零值,這時(shí)產(chǎn)生的新序列的奈奎斯特頻率已經(jīng)提高了L倍,然后我們就可以通過適當(dāng)?shù)臄?shù)字濾波器來獲取原始采樣數(shù)據(jù)。 </p><p> 我們可以采用有限長(zhǎng)脈沖響應(yīng)(FIR)數(shù)字濾波器來近似該理
87、想濾波器。因此,正弦內(nèi)插法本質(zhì)上是一個(gè)線性濾波器。這種方法對(duì)于顯示正弦波特別有效,它一般只需每個(gè)周期有2.5個(gè)采樣點(diǎn)。當(dāng)脈沖信號(hào)的上升與下降時(shí)間大于采樣周期的1.7倍時(shí),正弦內(nèi)插法對(duì)脈沖信號(hào)也十分有效。但是,對(duì)于變化很快的脈沖信號(hào),該方法就不可能精確的恢復(fù)該信號(hào)。</p><p> 5.6.2 波形顯示技術(shù) </p><p> 虛擬示波器的工作原理是對(duì)信號(hào)波形進(jìn)行密集的采樣,采樣值被數(shù)
88、字化并被存儲(chǔ),然后從存儲(chǔ)器中讀出,重建波形并用清晰的、均勻一致軌跡映現(xiàn)在屏幕上。由于檢測(cè)的波形經(jīng)數(shù)字化后只是一連串離散的數(shù)據(jù),因此,如何重建波形是設(shè)計(jì)虛擬示波器的關(guān)鍵問題。 </p><p> 虛擬示波器與傳統(tǒng)示波器的一大區(qū)別在于它沒有掃描電路,它也不是基于示波管的線性偏轉(zhuǎn)特性而工作,對(duì)于虛擬示波器而言,波形重現(xiàn)靠的是計(jì)算機(jī)的圖形處理功能。因此,它屬于軟件處理的范疇。 </p><p>
89、 與數(shù)字示波器類似,虛擬示波器也有一個(gè)不工作區(qū)的問題,捕捉信號(hào)需要時(shí)間(包括采樣時(shí)間和轉(zhuǎn)換時(shí)間),還有一些附加時(shí)間(包括存儲(chǔ)波形、處理波形和顯示等)。當(dāng)虛擬示波器進(jìn)行上述工作時(shí)它便停止了波形的采集。根據(jù)這個(gè)特點(diǎn),我們?cè)诓ㄐ蔚闹噩F(xiàn)上面采用兩種處理方式,第一種方式是采用“照像”技術(shù),也稱為分段方式;第二種方式是采用滾動(dòng)方式。 </p><p><b> (1)照像方式 </b></p&
90、gt;<p> 照像方式是把信號(hào)波形一幅一幅地取樣回來,在此同時(shí),也將波形一幅一幅地送至屏幕去顯示。前后兩幅波形在時(shí)間上不連續(xù),中間有一段時(shí)間差。這種捕捉信息的方式類似于“照像”的過程,故稱之為照像方法。采用照像方法的原因是為了讓人們?cè)谟^看波形時(shí)能留有一段視覺時(shí)間,以便看到穩(wěn)定的波形,這種采樣方法適合于捕捉快速信號(hào)的波形。采樣波形的最大頻率取決于A/D板卡的采集速率。</p><p><b&
91、gt; ?。?)滾動(dòng)方式</b></p><p> 滾動(dòng)方式是通過繪圖方法滾動(dòng)數(shù)字化波形,使其連續(xù)不斷地被顯示在屏幕上,它的工作方式很象圖表記錄儀。它的工作原理是每隔一個(gè)時(shí)鐘周期取樣一次,接著將波形從右到左滾動(dòng)一位(屏幕的一個(gè)點(diǎn)距),滾動(dòng)模式適合于觀察變化緩慢的信號(hào)、隨機(jī)信號(hào)和非重復(fù)信號(hào)。 </p><p> 傳統(tǒng)的滾動(dòng)顯示方式是這樣實(shí)現(xiàn)的,設(shè)采樣值在數(shù)組data[ ]中保
92、存。在顯示波形的過程中,采樣數(shù)據(jù)依次從右向左平移,即在數(shù)組的低端data[0]不斷補(bǔ)進(jìn)最新采樣數(shù)據(jù)newData,同時(shí)數(shù)組的高端data[2*length-1]自動(dòng)丟失,例如: </p><p> 丟失←data[2*length-1]←?data[i]←data[0]← newData </p><p> 采樣值在屏幕上的定位映象有嚴(yán)格的要求。我們定義時(shí)間軸的中點(diǎn)為坐標(biāo)原點(diǎn),觀察窗口
93、的范圍從-lengh至length 因此,在時(shí)間軸坐標(biāo)點(diǎn)為legth-i處,對(duì)應(yīng)的縱坐標(biāo)為data[legth-i ]( i = -lenth~length)。</p><p> 圖5-10波形滾動(dòng)方式顯示</p><p> 在本次設(shè)計(jì)中采用了新的算法來實(shí)現(xiàn)波形的動(dòng)態(tài)顯示,新的算法改變了滾動(dòng)方式只能觀察變化緩慢的信號(hào)的限制,使示波器的動(dòng)態(tài)顯示波形效果得到了很大的改觀。 </p&g
94、t;<p> 算法核心思想如下: </p><p> (1) 得到所采集數(shù)據(jù)塊的第一個(gè)和最后一個(gè)數(shù)據(jù)點(diǎn)的橫坐標(biāo)m_xMin和m_xMax,m_xMax-m_xMin為波形的邏輯寬度。 </p><p> (2) m_xMax-m_xMin的值為邏輯坐標(biāo),把它轉(zhuǎn)化為設(shè)備坐標(biāo)cx,用cx設(shè)定整個(gè)滾動(dòng)視圖的寬度。</p><p> (3) 為了提高畫
95、圖的效率,只需畫出滾動(dòng)視圖可視部分的圖形,也就是剪裁區(qū)的圖形,因此要得到剪裁區(qū)。 </p><p> (4) 畫出坐標(biāo)和剪裁區(qū)內(nèi)的一段波形。 </p><p> (5) 利用CSplitterWnd::DoScrollBy()函數(shù),根據(jù)采樣間隔的大小決定視圖滾動(dòng)速度的快慢。這樣視圖滾動(dòng)以后相應(yīng)的剪裁區(qū)也會(huì)發(fā)生改變,促使動(dòng)態(tài)畫出新的波形。</p><p> 下面
96、是波形顯示的主要代碼</p><p><b> {</b></p><p><b> ……</b></p><p> /*得到第1個(gè)數(shù)據(jù)的橫坐標(biāo)*/</p><p> m_xMin=pMem->m_TestQF3FileInfo.xMin;</p><p>
97、/*得到最后1個(gè)數(shù)據(jù)的橫坐標(biāo)*/</p><p> m_xMax=pMen->m_TestQF3FileInfo.xMax;</p><p> /*邏輯坐標(biāo)轉(zhuǎn)換為設(shè)備坐標(biāo)*/</p><p> LogToDew_X(cx,m_xMax);</p><p> /*設(shè)定滾動(dòng)視圖的寬度*/</p><p>
98、sizeTotal.cx=cx;</p><p> /*得到裁剪區(qū)矩形*/</p><p> pDC->GetClipBox(&m_ClipRect);</p><p><b> /*畫出坐標(biāo)*/</b></p><p> DrawGrid(pDC);</p><p> /
99、*畫出一段波形*/</p><p> DrawCurve(pDC);</p><p> /*得到滾動(dòng)視圖*/</p><p> CGraphView*</p><p> View1=(CGraphView*)this->m_SW1.GetPane(0,0);</p><p> /*根據(jù)采樣間隔不斷滾動(dòng)視
100、圖,動(dòng)態(tài)顯示波形*/</p><p> This->m_SW1.DoScrollBy(View,CSize(1,0),TRUE);</p><p><b> ……</b></p><p><b> }</b></p><p> 5.6.3設(shè)計(jì)結(jié)果 </p><p&g
101、t; 波形顯示模塊主要負(fù)責(zé)兩個(gè)通道信號(hào)的波形滾動(dòng)顯示,工具欄上的按鈕可以控制波形滾動(dòng)的啟動(dòng)和停止,測(cè)試者如果發(fā)現(xiàn)感興趣的波形可以停止?jié)L動(dòng),以便進(jìn)行仔細(xì)的分析,設(shè)計(jì)效果如圖5-11所示。</p><p> 圖5-11 波形顯示模塊設(shè)計(jì)效果</p><p> 5.6.4數(shù)據(jù)采集和數(shù)據(jù)處理的多線程實(shí)現(xiàn) </p><p> 數(shù)據(jù)采集及其波形實(shí)時(shí)顯示是虛擬示波器中最為
102、重要的模塊,通過充分發(fā)掘Windows的系統(tǒng)資源,我們可以設(shè)計(jì)出高質(zhì)量的通用軟件模塊。 </p><p> Windows NT和Windows 95之后的版本都是多線程、搶先式多任務(wù)的操作系統(tǒng)。在Windows中,一個(gè)可執(zhí)行程序的運(yùn)行時(shí)刻實(shí)例稱為進(jìn)程(process)。一個(gè)進(jìn)程可以有多個(gè)線程(thread),Windows是按照線程分配CPU時(shí)間片的,而分配的機(jī)制就是搶先多任務(wù)方式。Windows給所有當(dāng)前進(jìn)
103、程分配動(dòng)態(tài)優(yōu)先級(jí),為進(jìn)程所屬的每一個(gè)線程分配相對(duì)優(yōu)先級(jí),Windows把進(jìn)程優(yōu)先級(jí)與各線程的相對(duì)優(yōu)先級(jí)相結(jié)合,就得到該線程的優(yōu)先級(jí)數(shù)(范圍是0到31)。在操作系統(tǒng)分配CPU的時(shí)間片的時(shí)候,高優(yōu)先級(jí)的線程總是可以優(yōu)先得到執(zhí)行。同時(shí),高優(yōu)先級(jí)的線程還可以終止低優(yōu)先級(jí)別線程的執(zhí)行,搶占時(shí)間片中剩余的時(shí)間。不同線程可以采用定時(shí)器、中斷、休眠、同步對(duì)象等方法同步。 </p><p> 顯示模塊的特點(diǎn)是必須承擔(dān)繁重的圖形顯
104、示輸出任務(wù),而這部分的實(shí)時(shí)性要求一般不苛刻。這樣的功能模塊如果用單任務(wù)操作系統(tǒng)(如Dos)或非搶先式操作系統(tǒng)(如Windows3.1)實(shí)現(xiàn),數(shù)據(jù)采集任務(wù)將無權(quán)剝奪顯示任務(wù)的執(zhí)行權(quán)利而只能等待后者自行交出對(duì)CPU的控制權(quán),從而使顯示模塊的延遲影響波及對(duì)時(shí)間響應(yīng)要求較嚴(yán)格的數(shù)據(jù)采集任務(wù)。但是在Windows9X下,實(shí)現(xiàn)中可以依靠系統(tǒng)的多線程、搶先多任務(wù)機(jī)制,將顯示功能在不同于數(shù)據(jù)采集線程的單獨(dú)線程中實(shí)現(xiàn),然后通過上面提到的優(yōu)先級(jí)調(diào)度、線程同
105、步等機(jī)制保證數(shù)據(jù)采集線程不被耗時(shí)的顯示線程所延誤。在數(shù)據(jù)采集和顯示任務(wù)由不同的線程完成的前提下,采集線程的執(zhí)行和休眠可以采用定時(shí)器或中斷調(diào)度等方式主動(dòng)控制。而顯示線程的調(diào)度主要有兩種策略: </p><p> (1)將顯示線程的優(yōu)先級(jí)設(shè)置成低于數(shù)據(jù)采集線程的優(yōu)先級(jí),那么顯示線程將始終處于等待狀態(tài),只有在采集線程休眠后才能獲得CPU時(shí)間片執(zhí)行,這實(shí)際上是通過Windows的優(yōu)先級(jí)調(diào)度機(jī)制完成的線程同步。 <
106、/p><p> (2)使用自定義消息,在采集線程每次休眠之前調(diào)用PostMessage()函數(shù)發(fā)出一個(gè)消息,由數(shù)據(jù)處理線程的消息響應(yīng)函數(shù)進(jìn)行響應(yīng),進(jìn)而激活數(shù)據(jù)處理線程。 </p><p> 在本次設(shè)計(jì)中,除了一個(gè)處理用戶輸入消息的用戶界面線程(User_Interface</p><p> Threads)之外,創(chuàng)建了兩個(gè)輔助線程(Worker Threads)。
107、在主線程中,主要進(jìn)行觸發(fā)控制、通道控制、時(shí)基控制、增益控制等有關(guān)示波器的操作和控制。一個(gè)輔助線程用于數(shù)據(jù)采集,另外一個(gè)輔助線程用于數(shù)據(jù)處理,其中最主要的是波形顯示。軟件的多線程設(shè)計(jì)框圖如圖5-15所示。由于CS 82G的存儲(chǔ)器為單口存儲(chǔ)器,我們只能采用單緩沖區(qū)的工作方式,就是說,每采集一定長(zhǎng)度的點(diǎn)后,采集線程休眠,并喚醒數(shù)據(jù)處理線程,當(dāng)數(shù)據(jù)處理線程有信號(hào)時(shí),再喚醒采集線程,循環(huán)進(jìn)行,直至用戶發(fā)出中止命令。該方法的關(guān)鍵在于線程的同步,就是
108、要保證在采集線程寫內(nèi)存的時(shí)候,數(shù)據(jù)處理線程不能讀內(nèi)存,反之亦然,否則,會(huì)產(chǎn)生錯(cuò)誤。可以采用臨界區(qū)或者Event同步對(duì)象來實(shí)現(xiàn),為了保證在一次采集中采集線程不被中斷,而不僅僅是出于內(nèi)存訪問保護(hù)的考慮,我們選擇Event同步對(duì)象的實(shí)現(xiàn)線程間的同步。</p><p> 圖5-12 軟件多線程設(shè)計(jì)框圖</p><p> 采用了多線程,那么就可以用一個(gè)單獨(dú)的線程進(jìn)行數(shù)據(jù)采集,而另一個(gè)線程進(jìn)行數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于高速數(shù)據(jù)采集卡的虛擬示波器的應(yīng)用畢業(yè)設(shè)計(jì)
- 基于高速數(shù)據(jù)采集卡的虛擬示波器設(shè)計(jì).pdf
- 外文翻譯----基于混合信號(hào)的數(shù)據(jù)采集卡的虛擬示波器
- 外文翻譯----基于混合信號(hào)的數(shù)據(jù)采集卡的虛擬示波器
- 外文翻譯----基于混合信號(hào)的數(shù)據(jù)采集卡的虛擬示波器
- 畢業(yè)論文外文翻譯-基于混合信號(hào)的數(shù)據(jù)采集卡的虛擬示波器
- 外文翻譯----基于混合信號(hào)的數(shù)據(jù)采集卡的虛擬示波器.doc
- 外文翻譯----基于混合信號(hào)的數(shù)據(jù)采集卡的虛擬示波器.doc
- 基于FPGA的高速數(shù)據(jù)采集卡的設(shè)計(jì).pdf
- 基于PCI總線的高速數(shù)據(jù)采集卡設(shè)計(jì).pdf
- 基于PCI總線的高速數(shù)據(jù)采集卡的設(shè)計(jì).pdf
- 基于高性能FPGA的高速數(shù)據(jù)采集卡設(shè)計(jì).pdf
- 基于FPGA的高速數(shù)據(jù)采集卡設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于PCI Express總線高速數(shù)據(jù)采集卡的設(shè)計(jì).pdf
- 基于FPGA的高速數(shù)據(jù)采集卡的研究與設(shè)計(jì).pdf
- 高速數(shù)據(jù)采集卡設(shè)計(jì)和實(shí)現(xiàn).pdf
- 畢業(yè)設(shè)計(jì)---基于labview和數(shù)據(jù)采集卡的船舶機(jī)艙監(jiān)控系統(tǒng)
- 高速PCI數(shù)據(jù)采集卡的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于PCIe的高速數(shù)據(jù)采集卡的FPGA設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于數(shù)據(jù)采集卡的虛擬儀器的設(shè)計(jì)和實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論