CVI實驗指導書2012版-8_第1頁
CVI實驗指導書2012版-8_第2頁
CVI實驗指導書2012版-8_第3頁
CVI實驗指導書2012版-8_第4頁
CVI實驗指導書2012版-8_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PAGEPAGE74《現(xiàn)代測試技術(shù)》課程實驗指導書孔忻白潔駱一萍西安交通大學測控教研室2012年3月目錄實驗一熟悉LabWindows/CVI集成軟件開發(fā)環(huán)境2實驗二虛擬波形發(fā)生器演示儀20實驗三模擬信號的采集及其信號頻率的計算41實驗四虛擬頻譜分析演示儀46實驗五溫度的測量52實驗六電量測量的研究57實驗七磁性材料磁特性測量的研究65實驗八NI-NIELVISII實驗平臺的使用71現(xiàn)代測試系統(tǒng)軟件平臺基礎(chǔ)訓練實驗一熟悉LabWindows/CVI集成軟件開發(fā)環(huán)境一、實驗?zāi)康恼莆展こ添椖看翱?ProjectWindow)中各菜單選擇項的使用方法。掌握用戶接口編輯窗口(UserInterfaceEditorwindow)的使用和功能掌握源代碼窗口(Sourcewindow)的使用和功能了解函數(shù)面板(FuctionPanel)的使用和功能二、實驗原理LabWindows/CVI是一個ANSIC的集成開發(fā)環(huán)境。它包含了32位的編譯、鏈接器,以及先進的編輯與調(diào)試工具。LabWindows/CVI編寫的虛擬儀器軟件基本組成框圖,如圖1-1所示。*.prj*.prj文件虛擬儀器*.uir文件儀器面板*.c文件源程序*.h文件C語言說明*.cws文件工作空間圖1-1LabWindows/CVI編寫的虛擬儀器軟件基本組成框圖LabWindows/CVI開發(fā)環(huán)境有4個主要的界面窗口(window):工程項目窗口(ProjectWindow)——生成*.prj文件用戶接口編輯窗口(UserInterfaceEditorwindow)——設(shè)計*.uir文件源代碼窗口(Sourcewindow)——編輯*.c文件函數(shù)面板窗口(FunctionPanel)。其中:*.prj文件:工程文件,它是最終的運行文件。由*.uir、*.c和*.h文件組成。*.c文件:源程序文件,用戶編寫的程序代碼就在此文件中,是標準的C語言程序。*.uir文件:用戶接口文件,該文件為虛擬儀器的面板文件,類似VB或VC中的窗口體文件,包含如旋鈕、開關(guān)等各類控件。*.h文件:頭文件,在*.uir文件存盤的同時自動生成。它是對*.uir文件中創(chuàng)建的所有控件的桌面句柄及回調(diào)函數(shù)的說明。與C語言中的*.h文件結(jié)構(gòu)完全一致。下面詳細介紹這4個窗口的功能。1.工程項目組窗口(ProjectWindow)啟動LabWindows/CVI后,出現(xiàn)的界面窗口即為工程項目窗口(ProjectWindow),下圖1-2顯示了TEMPSYS.prj工程文件的界面,該工程文件包括TEMPSYS.c、TEMPSYS.uir和TEMPSYS.h。菜單項共有11項,可完成有關(guān)LabWindows/CVI的全部操作,1.CVI工程文件編輯環(huán)境介紹在應(yīng)用程序的開發(fā)過程中,會用到許多不同類型的程序。項目工程管理器就是專門用來管理這些程序的。圖1-2中顯示的就是一個名為TEMPSYS.cws的工作區(qū)間文件,它包含一個名為TEMPSYS.prj工程文件。工程文件的后綴名均為prj。在windows系統(tǒng)中只要雙擊后綴為*.prj或者*.cws就可以進入CVI窗口文件的編輯環(huán)境,并自動加載上一次編輯過的相關(guān)文件。如果要在工程文件編輯界面中加載以前編輯過的文件,只需點擊File>Open>Project菜單,在打開的文件選擇框中選擇需要打開的文件。圖1-2CVI工程文件編輯環(huán)境1.1菜單項功能1)File完成對文件新建(New)、打開(Open)、保存(Save)、另存(SaveAs)、保存所有(SaveAll)、自動保存工程文件(AutoSavePriject)、打?。≒rint)、最新關(guān)閉文件(MostRecentlyClosedFiles)、退出(ExitLabWindows/CVI)等功能。其菜單如圖1-3所示。圖1-3LabWindows/CVI菜單運行屏幕2)Edit完成將有關(guān)文件加入到工程文件、執(zhí)行所創(chuàng)建的文件、移除文件、上移文件、下移文件等內(nèi)容。其菜單如圖1-4所示。圖1-4LabWindows/CVI菜單運行屏幕3)View顯示視圖,可顯示有關(guān)文件的全路徑名、日期及各類排列方法,如圖1-5所示圖1-5LabWindows/CVI菜單運行屏幕4)Build完成有關(guān)文件編譯的操作。其具體內(nèi)容有:編譯文件、創(chuàng)建工程文件、連接工程文件、從磁盤修改文件、標記編譯文件、標記所有編譯文件等內(nèi)容,如圖1-6所示。圖1-6LabWindows/CVI菜單運行屏幕5)Run運行工程文件。同時還包含一些調(diào)試功能:比如設(shè)置斷點、繼續(xù)運行、終止運行等,合理運用本項功能,在調(diào)試軟件時將會帶來極大的方便,如圖1-7所示。圖1-7LabWindows/CVI菜單運行屏幕6)Instrument編輯儀器文件。包括將存在的儀器文件調(diào)入、卸載和編輯等功能,如圖1-8所示。圖1-8LabWindows/CVI菜單運行屏幕7)Library庫函數(shù)設(shè)置。完成用戶界面、信號分析、信號輸入/出及各類協(xié)議設(shè)置等功能,如圖1.8所示。圖1-9LabWindows/CVI菜單運行屏幕8)Tools提供實用工具。包括運行向?qū)В╳izard)和向Tools添加一些工具??山ctiveX控件和IVI儀器驅(qū)動程序,如圖1-10所示。圖1-10LabWindows/CVI菜單運行屏幕9)Windows窗口操作。完成窗口的最大化、最小化、關(guān)閉等功能。也可用來訪問某個已經(jīng)打開的窗口。例如,用戶接口編輯窗口,如圖1-11所示。圖1-11LabWindows/CVI菜單運行屏幕10)Options開發(fā)環(huán)境信息設(shè)置。完成LabWindows/CVI編程環(huán)境有關(guān)信息的設(shè)置,如圖1-12所示。圖1-12LabWindows/CVI菜單運行屏幕11)Help提供系統(tǒng)幫助信息。LabWindows/CVI在線幫助及WindowsSDK的函數(shù)幫助,如圖1-13所示。圖1-13LabWindows/CVI菜單運行屏幕2用戶接口編輯窗口(UserInterfaceEditwindow)用戶接口編輯窗口是用來創(chuàng)建,編輯用戶界面(GraphUerInterface)的,形成*.uir文件,它相當于真實儀器的操作面板。包括面板(Panel)以及在面板上的各種控件元素(ControlElement)。圖形用戶接口編輯窗口為你提供了快捷創(chuàng)建、編輯面板和控件的安放、屬性的設(shè)置等功能??稍诙虝r間里創(chuàng)建出符合要求的圖形界面。如圖1-14所示,下面詳細討論圖形用戶接口編輯窗口各菜單項的功能和模式選擇的用法。圖1-14圖形用戶接口編輯窗口2.1菜單功能1)File完成用戶接口文件(*.uir)的新建(New)、打開(Open)、保存(Save)、另存(SaveAs)、保存所有(SaveAll)、保存復(fù)制的用戶接口文件(SaveCopyAs)、設(shè)置用戶接口文件為只讀(ReadOnly)、添加文件到工程(AddFileToProject)、打印(Print)、關(guān)閉文件(Close)、退出(ExitLabWindows/CVI)等功能。如圖1-15所示。圖1-15用戶接口文件編輯窗口的File菜單項2)Edit可用來編輯面板或控件元素。完成重復(fù)/撤消、剪切、復(fù)制、粘貼、刪除、復(fù)制儀器面板、剪切儀器面板、菜單項的編輯、儀器面板的編輯、控件的編輯、顯示順序及有關(guān)字體的設(shè)置等內(nèi)容。其菜單屏幕如圖1-16所示。圖1-16Edit菜單項3)Creat用來創(chuàng)建面板、菜單項和面板中各種控件??丶灿?5種,如圖1-17所示。說明:當創(chuàng)建Panel后,在Panel上任意位置點擊鼠標右鍵,會彈出一個快捷菜單,選擇所想創(chuàng)建的對象即可。圖1-17Create菜單項命令控件屬性修改界面介紹選中所需要的控件并單擊,這個控件就會出現(xiàn)在我們所建立的面板上,雙擊面板上該控件,就可以進入圖1-18所示的控件屬性修改界面??丶煌瑢傩孕薷慕缑嬉灿胁顒e。其中重要的設(shè)置說明如下:有常量名(ConstantName):控件的變量名。由英文字母和數(shù)字組成,字母需大寫,不可用中文?;卣{(diào)函數(shù)名(CallFunction):應(yīng)用程序響應(yīng)鼠標或鍵盤的回調(diào)函數(shù)名。由英文字母和數(shù)字組成,不可用中文。標號名(Lable):控件在面板上的名稱。用于表示控件的功能??捎芍形?、英文字母和數(shù)字組成。圖1-18控件屬性修改界面ControlModeNormal控件數(shù)值即可由外界輸入也可從程序中賦值,但不能產(chǎn)生用戶事件Hot除了可以產(chǎn)生用戶事件外,其余則和N方式一樣。通常在此控制方式下,只有控件的狀態(tài)方式改變,就可產(chǎn)生一個用戶事件,程序完成相應(yīng)的回調(diào)功能。Indicator用戶不能對控件操作,控件不能產(chǎn)生用戶事件Validate控件產(chǎn)生用戶事件前,先對桌面上控件的值進行檢查,包括傳遞用戶事件前數(shù)據(jù)的有效性,看是否有效。其余功能和H相似。InitiallyDimmed不選中,控件外觀清晰,可操作,有相應(yīng)的響應(yīng)事件發(fā)生,若選中此欄,控件外觀模糊,不可操作,沒有相應(yīng)事件發(fā)生。4)View當創(chuàng)建多個面板后就可用該項來查看想要看的面板。具體功能分為3類:查找用戶界面對象:查找用戶接口文件中的對象。顯示儀器面板:包括顯示/隱藏儀器面板、顯示重疊儀器面板中的某一個、顯示下一個儀器面板、顯示上一個儀器面板等功能。預(yù)覽用戶接口的頭文件:顯示儀器面板中所涉及的控件、變量等的頭文件。View菜單項如圖1-19所示。圖1-19View菜單項說明:當某面板選中后,面板的上部的標題欄會出現(xiàn)線條,如圖1-20所示。當控件選中后,控件的周圍會出黑色方框,如圖1-21所示。在Panel上的任意位置點擊鼠標右鍵,會彈出一個快捷菜單,選擇所想創(chuàng)建的對象即可。圖1-20選中某面板圖1-21選中某命令按鈕控件5)Arrange用來調(diào)節(jié)各個控件元素的位置、大小、對齊方式、控件順序等。Arrange菜單項如圖1-22所示。圖1-22Arrange菜單項說明:當控件選中后,用鼠標拖動控件,可改變控件的位置。6)Code產(chǎn)生源代碼和事件消息類型。包括生成全部代碼、生成Main函數(shù)、儀器面板和控件的回調(diào)函數(shù)、查看回調(diào)函數(shù)及事件設(shè)置等,如圖1-23所示。圖1-23CVI產(chǎn)生C語言代碼框架的路徑說明:在用戶接口編輯窗口中有一快捷菜單是非常有用的,當你把鼠標指在某一控件元素上點擊右鍵后便彈出一快捷菜單,通過該菜單你可以生成回調(diào)函數(shù)及查看回調(diào)函數(shù),而無須你再切換到源代碼窗口后再查看.如下圖圖1-24所示。圖1-24利用快捷菜單生成C語言代碼框架方法7)Run運行程序。其功能和工程項目編輯窗口的Run功能類似。8)Library函數(shù)庫。包括界面和接口標準設(shè)置,完成用戶界面、信號分析、信號輸入/出及各類協(xié)議設(shè)置的功能,其功能和工程項目編輯窗口的Library功能類似。說明:我們將在后面詳細地介紹LabWindows/CVI的函數(shù)庫。9)Tools提供一些工具項。包括建立ActiveX控件的控制和創(chuàng)建IVI儀器的驅(qū)動程序。Tools菜單項如圖1-25所示。圖1-25Tools工具菜單項10)Windows完成對窗口的操作,其功能和工程項目編輯窗口的Windows功能類似。11)Options設(shè)置編輯環(huán)境。包括對儀器面板的操作、模式工具的轉(zhuǎn)換、顏色的設(shè)置、保存/調(diào)入以文本形式保存的用戶接口文件等功能,Options菜單項如圖1-26所示。圖1-26Options菜單項12)HelpLabWindows/CVI在線幫助及WindowsSDK的函數(shù)幫助。2.2模式選擇圖形用戶接口編輯窗口中還有4個模式選擇按扭,介紹如下:當該按扭被按下后,可以操作面板上的控件,同時在圖形用戶接口編輯窗口的右上角處來觀察面板上的事件消息。在這種模式下可以創(chuàng)建、編輯面板和控件元素以及修改它們的屬性。在這種模式下可以直接修改控件元素的名字、標簽等文字相關(guān)方面的東西。在這種模式下可以直接修改面板,控件元素的顏色。先把鼠標移動到想修改顏色的對象上,點擊右鍵會彈出一個選色對話框,選擇顏色后點擊后即可。在圖形用戶接口編輯窗口中Panel的灰色區(qū)域中,單擊鼠標右鍵,便會彈出一個快捷菜單如圖1-27所示。圖1-27控件的快捷菜單說明:這個菜單用于控件類型的選擇,請用鼠標點擊各項體會一下。3.源代碼編輯窗口(Soursewindow)在制作好用戶儀器界面后,點擊菜單Code>Generate>AllCode儀器面板編輯器會彈出設(shè)置對話框(如圖1-27所示),在圖1-28中由三個部分組成:最上面是存放目標代碼(程序)的路徑;中間部分是選擇應(yīng)用程序初始時載入和顯示的面板;下面的部分是選擇用哪個回調(diào)函數(shù)執(zhí)行退出應(yīng)用程序消息響應(yīng)。圖1-28CVI產(chǎn)生C語言代碼框架的路徑在上圖中設(shè)置完后點Ok,便進入圖1-29所示的界面,這就是源代碼編輯窗口。在此窗口中創(chuàng)建C語言代碼文件。例如:添加、刪除、插入函數(shù)等編程所需的基本編輯操作。但是LabWindows/CVI又有其獨特的簡捷快速的開發(fā)、編輯工具,可在短時間內(nèi)完成一個較復(fù)雜的C程序代碼程序。圖1-29File:創(chuàng)建、保存或打開文件。Edit:可用來編輯源代碼文件。View:設(shè)置源代碼編輯窗口的風格等功能。Build:編譯文件以及編譯設(shè)置。Run:運行程序。Instrument:裝入儀器驅(qū)動程序。Library:函數(shù)庫。Tools:一些可使用的工具。Windows:用來訪問某個已經(jīng)打開的窗口,例如:工程項目窗口,用戶接口編輯窗口,源代碼窗口等。Options:設(shè)置接口編輯窗口的編輯環(huán)境。Help:LabWindows/CVI在線幫助及WindowsSDK的函數(shù)幫助。說明:源代碼編輯窗口菜單項的功能和C語言的菜單項功能基本相似。編程中有一快捷菜單是非常有用的,當你把鼠標指在某一函數(shù)上點擊右鍵后便彈出一快捷菜單,通過該菜單你可以查看回調(diào)函數(shù)以及與該函數(shù)對應(yīng)控件元素。這是以后在編程中要掌握的技巧。如圖1-30所示。圖1-30關(guān)于函數(shù)的快捷菜單4.函數(shù)面板(FuctionPanel)編輯C語言代碼其中最重要的一步就是給生成的代碼框架中對應(yīng)的回調(diào)函數(shù)中添加內(nèi)容。因為CVI是基于C語言的集成開發(fā)環(huán)境,所以它遵從標準ANSIC程序的編輯、編譯、連接和調(diào)試規(guī)則。CVI同時也是基于消息響應(yīng)模式的編譯系統(tǒng)。所以,CVI的C語言源代碼必須添加的圖1-31中的光標處。變量定義也應(yīng)放在主程序或回調(diào)函數(shù)的開始。圖1-31在LabWindows/CVI編程環(huán)境下,當你想在源程序某處插入函數(shù)時,你只需從函數(shù)所在的庫中選擇該函數(shù)后便會彈出一個與之對應(yīng)的函數(shù)面板,填入該函數(shù)所需的參數(shù)后即可完成插入。更為方便的是若參數(shù)為一已有的常量或變量,只需點擊常量或變量工具按扭后選擇你所需的量即可。若參數(shù)是一變量,可直接聲明該變量無須切換至源代碼窗口。在函數(shù)面板中經(jīng)常用到的幾個快捷命令按鈕如下所示。常量或變量工具按扭。插入工具按扭。選擇屬性或UIR常量工具按扭。聲明變量按扭。下面以在源代碼編輯窗口中加入SineWave函數(shù)為例,說明函數(shù)面板使用方法。4.1設(shè)置方法啟動函數(shù)面板可按照下列的操作實現(xiàn):1)切換至源代碼編輯窗口2)移動鼠標到加入函數(shù)的位置3)按照Library>AdvancedAnalysis>SignalGenerate>Select>SineWave>Select選擇函數(shù),出現(xiàn)的函數(shù)面板如圖1-32所示。圖1-32函數(shù)面板4.2變量聲明這是產(chǎn)生一個正弦波的函數(shù),其中SineWave項是用來存放正弦波的數(shù)組,在程序中使用數(shù)組Wave[128]來存放正弦波。在SineWave項填入Wave后,由于Wave是一變量,所以我們需要聲明該變量:讓鼠標指在Wave上然后點擊工具條中的聲明變量按扭后,出現(xiàn)如圖1-33所示的聲明變量對話框,可聲明該變量為局域變量或為全局變量。圖1-33聲明變量對話框當所填參數(shù)是一常量或變量,只需點擊選擇常量或變量工具按扭,選擇所需的常量或變量即可。上述的技巧可加快編程速度,在編程時會頻繁使用。而這些也正是LabWindows/CVI開發(fā)環(huán)境所獨具的加快你編程速度的特色。三、實驗內(nèi)容1.練習在工程項目窗口調(diào)入已經(jīng)存在的虛擬儀器文件的方法。即:在LabWindows/CVI中載入并運行一個應(yīng)用程序。步驟:(1)啟動LabWindows/CVI。選擇開始>>程序>>NationalInstrumentsCVI。(2)載入項目文件。選擇File>>Open>>Project(*.prj),在打開文件對話框中瀏覽到C:\Exercises\CVIBasicI\Lesson1目錄,并載入TEMPSYS.PRJ。圖1-34載入TEMPSYS.PRJ文件 該項目載入后,CVI的窗口如圖1-34所示。 項目結(jié)構(gòu)樹列出了構(gòu)成一個項目或者程序的所有文件。在LabWindows/CVI下創(chuàng)建的項目可以包含不同種類的多個文件??梢酝ㄟ^選擇菜單Edit>>AddFiletoProject來添加C源程序文件、目標文件、DLL導入庫、C庫函數(shù)、用戶界面文件以及設(shè)備驅(qū)動程序到項目文件中。項目結(jié)構(gòu)樹顯示了項目中的文件的狀態(tài),如圖1-44所示??梢赃x擇菜單View>>Columns>>Status來啟用以及關(guān)閉項目結(jié)構(gòu)樹的狀態(tài)列。 這個TEMPSYS.PRJ項目包含了三個文件: TEMPSYS.C、 TEMPSYS.H、 TEMPSYS.UIR 這個.c文件是源代碼文件,.h文件是包含了用戶界面常量的頭文件,.uir文件是用戶界面文件。(3)運行本項目。可以選擇Run>>Debugtempsys.exe或者點擊調(diào)試項目按鈕來運行該項目。LabWindows/CVI將自動編譯項目結(jié)構(gòu)樹中的源代碼文件,聯(lián)接項目與所用的庫并運行編譯后的代碼。將看到如圖1-35所示的界面。圖1-35項目運行界面 這個項目模擬了一個溫度監(jiān)控系統(tǒng)的運行過程。溫度顯示到了溫度計指示器上并繪到了帶狀記錄曲線圖上。一個曲線圖顯示了溫度測量的柱狀圖。一個旋鈕控件用來設(shè)置報警狀態(tài)的最大與最小值,當溫度低于最小值或者是超出最大值,相應(yīng)的LED指示燈將會變亮報警。條形圖指示器則顯示了最近10個溫度值的平均值以及標準偏移值。(4)點擊Quit按鈕停止運行。(5)檢查項目結(jié)構(gòu)樹里的所有文件。雙擊文件名顯示相應(yīng)的窗口。文本文件(.c或.h)在源代碼編輯器窗口打開,用戶界面資源文件(.uir)在用戶界面編輯器中打開。結(jié)束后,關(guān)閉每個文件。不要保存你所做的改動。2.假設(shè)已經(jīng)編輯好了3個文件:TEMPSYS.C、TEMPSYS.H和TEMPSYS.UIR(文件存在路徑為:c:\cvi實驗\TEMPSYS中),還沒有生成工程文件TEMPSYS.prj?,F(xiàn)在我們希望把它們構(gòu)建為TEMPSYS.prj工程文件。3.制作一個簡單儀器面板(如圖1-36所示):要求有一個圖形控件,用來顯示圖形;兩個命令控件,一個用來運行用戶程序,另一個用來退出程序。圖1-36實驗面板要求4.利用CVI的代碼生成工具生成你制作的儀器面板的程序框架。四報告要求簡述用CVI編寫一個完整應(yīng)用程序的過程;五思考題寫出LabWindows/CVI編寫的虛擬儀器的文件類型及關(guān)系。LabWindows/CVI集成環(huán)境是由哪幾個窗口組成的?工程項目窗口(ProjectWindow)的主要功能是什么?用戶接口編輯窗口(UserInterfaceEditorwindow)的主要功能是什么?源代碼窗口(Sourcewindow)的主要功能是什么?函數(shù)面板(FuctionPanel)的主要功能是什么?如何啟動和運行LabWindows/CVI程序?熟悉4個編輯窗口中菜單項的內(nèi)容和操作方法;簡述回調(diào)函數(shù)名的作用;簡述NUMERIC和GRAPH控件的屬性設(shè)置過程。實驗二虛擬波形發(fā)生器演示儀一、實驗?zāi)康耐ㄟ^對一臺簡易虛擬信號發(fā)生器的設(shè)計,使學生掌握:利用CVI軟件平臺設(shè)計虛擬儀器的步驟;掌握仿真信號的生成方法(正弦波和方波等);掌握波形的顯示方法;學習以下面板控件的使用與屬性設(shè)置方法CommandButton命令按鈕NumericDial數(shù)字旋鈕Graph顯示波形窗Timer定時器學習幾種函數(shù)的使用方法:SineWave():生成正弦波函數(shù)GetCtrlVal():把控件的值賦給變量2)PlotY():繪圖函數(shù)3)DeleteGraphPlot():清屏函數(shù),即清除顯示的圖形二、實驗原理CVI編程的基本步驟:在新的工作空間(*.cws)中建立新的工程文件(*.prj);(2)創(chuàng)建用戶圖形界面(*.uir),添加控件,設(shè)置控件屬性及確定空間的回調(diào)函數(shù)名;(3)編輯程序源代碼。由計算機自動生成程序代碼和回調(diào)函數(shù)的基本框架,由用戶向源文件添加程序代碼,完成所要實現(xiàn)的功能;(4)調(diào)試和運行程序。仿真信號的生成方法所謂仿真信號是指不使用真實的被測信號源,信號源由計算機的軟件產(chǎn)生。信號仿真中常使用的控件為時鐘(Timer)控件,由時鐘控件在一定的時間段內(nèi)自動觸發(fā)事件,觸發(fā)事件包含生成各類信號的函數(shù),刷新并顯示各類信號的函數(shù)。在本例中,使用的時鐘控件每隔0.01s。CVI的高級分析庫(AdvancedAnanysis…)包含了幾乎所有常用的仿真信號源。若需要產(chǎn)生一個正弦波信號,只要選擇SineWave即可;若需要產(chǎn)生一個方波信號,只要選擇SquareWave即可。若需要產(chǎn)生一個三角波信號,只要選擇TriangeWave即可。對于比較簡單的,并且能夠?qū)懗霾ㄐ伪磉_式的信號,也可以用直接寫出其表達式的方式產(chǎn)生信號。例如:以生成正弦函數(shù):y(t)=sin(ωt)為例,可以寫成以下形式:y[i△t]=sin(2*π*i*△t/T),i=0,1,2,…….t為相鄰兩離散值之間的時間間隔,T為函數(shù)周期。將y[i△t]在示波器上逐點顯示連接,就得到正弦函數(shù)的波形。波形的顯示方法:虛擬示波器要顯示的數(shù)據(jù)都是存放在一個數(shù)組(例如數(shù)組y[i△t])中的離散數(shù)據(jù),示波器用CVI的繪圖函數(shù)PlotY()在GRAPH顯示窗中顯示離散數(shù)據(jù)y,這部分內(nèi)容見附錄1。三、實驗內(nèi)容完成示例“虛擬波形發(fā)生器”的設(shè)計,其功能要求如下:要求該“虛擬波形發(fā)生器”具有如圖2-1所示的前面板。假設(shè)要求正弦波的幅值A(chǔ)在0~10V范圍內(nèi),信號頻率f在0~10Hz范圍內(nèi)時,在顯示窗中顯示正弦波波形。2個數(shù)字控件,用來顯示當前正弦波的幅值和頻率?!瓣P(guān)閉”按鈕用來控制工作狀態(tài),當單擊“關(guān)閉”按鈕,則關(guān)閉儀器并退出該程序。當用鼠標調(diào)節(jié)幅度調(diào)節(jié)或頻率調(diào)節(jié)按扭時,信號波形的幅度或頻率就會發(fā)生相應(yīng)變化。圖2-1虛擬信號發(fā)生器運行面板四.用LabWindows/CVI設(shè)計虛擬儀器的步驟和具體過程在前面已經(jīng)詳細介紹了虛擬儀器實現(xiàn)步驟,本例的虛擬示波器將按照如下的步驟實現(xiàn):啟動LabWindows/CVI;在工作空間窗口中創(chuàng)建工程文件;創(chuàng)建用戶界面;設(shè)置用戶界面中各控件的屬性;生成原代碼框架;添加程序代碼;運行調(diào)試程序。1.啟動LabWindows/CVI,執(zhí)行步驟:開始>程序>NationalInstrumentCVI選擇菜單命令New>>Project(*.prj)來打開一個新的項目文件。圖2-2LabWindows/CVI啟動界面2.在工作空間窗口中創(chuàng)建新的工程文件圖2-3創(chuàng)建新的工程文件3.創(chuàng)建用戶界面A建立儀器面板(Panel)從Project窗中選擇:File>>New>>UserInterface(*.uir)…創(chuàng)建一個用戶接口文件(*.uir),創(chuàng)建路徑如圖2-4,CVI會自動彈出如圖2-5所示的窗口圖2-4創(chuàng)建儀器面板的路徑圖2-5創(chuàng)建好的儀器面板B建立圖形控件(Graph)從Project窗中選擇:Create>>Graph,創(chuàng)建路徑如圖2-6,CVI會自動彈出如圖2-7所示的窗口圖2-6建立圖形控件(Graph)的路徑圖2-7建立好的圖形控件(Graph)C建立數(shù)字旋鈕(NumericDial)從Project窗中選擇:Create>>Numeric>>Dial,創(chuàng)建路徑如圖2-8,CVI會自動彈出如圖2-9所示的窗口圖2-8建立數(shù)字旋鈕(NumericDial)的路徑圖2-9建立好的數(shù)字旋鈕(NumericDial)的外觀用同樣的方法再創(chuàng)建一個數(shù)字旋鈕,如圖2-10所示。圖2-10建立2個的數(shù)字旋鈕(NumericDial)的外觀D建立命令按鈕(CommandButton)用鼠標右鍵單擊UntitledPanel的灰色區(qū)域,出現(xiàn)快捷菜單。從該菜單中選擇:CommandButton>>SquareCommandButton,擊左鍵后便會創(chuàng)建一個方形的按扭。點擊左鍵后在儀器面板中會創(chuàng)建一個方形的按扭,用于退出關(guān)閉儀器,用鼠標拖動方形按鈕到右下角的位置,如圖2-11、2-12所示。圖2-11建立命令按鈕(CommandButton)的路徑圖2-12建立好的命令按鈕(CommandButton)按鈕的外觀E建立定時器控件(Timer)同理,用鼠標右鍵單擊UntitledPanel的灰色區(qū)域,從該菜單中選擇:Timer>>Timer,擊左鍵后便會創(chuàng)建一個定時器圖標。如圖2-13所示。圖2-13建立定時器控件(Timer)的路徑用鼠標拖動控件到合適的位置,已經(jīng)建好的用戶界面如圖2-14所示。圖2-14創(chuàng)建好的用戶界面3設(shè)置用戶界面中控件的屬性用鼠標雙擊對應(yīng)的控件,出現(xiàn)對應(yīng)的屬性設(shè)置窗口,在屬性設(shè)置窗口中可修改該控件的屬性。各個控件的名稱、回調(diào)函數(shù)及作用等信息如下所示。編號控件類型控件名稱回調(diào)函數(shù)名稱作用GraphDISPLAY顯示波形NumericNUMAMP幅度調(diào)節(jié)NumericNUMFRE頻率調(diào)節(jié)CommandButtonQUITQuitButton退出關(guān)閉d.TimerTIMERUpdateCallback產(chǎn)生波形e.PanelPANEL儀器面板A設(shè)置Panel的屬性雙擊UntitledPanel空白處,彈出Panel的EditPanel窗口,如圖2-15所示。圖2-15修改Panel屬性的窗口將Paneltitle項中的UntitledPanel改為DemoPanel.選中Auto-CenterVertically(whenloaded)項與Auto-CenterHorizontally(whenloaded)項前的矩形選擇框(默認原設(shè)置)。當選中后,程序運行時,面板會自動居中。B設(shè)置Graph的屬性雙擊Graph區(qū)域,出現(xiàn)EditGraph窗口,如圖2-16所示。圖2-16Graph屬性設(shè)置窗口屬性設(shè)置窗口中各屬性的值設(shè)置如下:Constantname:GRAPH;Label:輸入文字“虛擬虛擬信號發(fā)生器”;說明:通過這種方法可以修改Graph的標簽名??筛鶕?jù)需要對其它屬性進行設(shè)置,當設(shè)置完畢后,點擊OK按扭,完成對Graph屬性的修改和設(shè)置。C設(shè)置CommandButton按扭的屬性雙擊右下方OK按扭,出現(xiàn)CommandButton屬性設(shè)置窗口,如圖2-17所示:圖2-17CommandButton屬性設(shè)置窗口將ConstantName項改為QUIT;說明:ConstantName是程序中用來標識該控件元素的常量,在后面的編程中會用到。將CallbackFunction項改為Quit;將Label項改為文字“關(guān)閉”;當上述的屬性修改設(shè)置完畢后,點擊OK按扭,完成對CommandButton屬性的修改和設(shè)置。D設(shè)置NumericDial按扭的屬性點擊NumericDial控件,設(shè)置信號幅度旋鈕的屬性。將ConstantName項改為VERTICAL;將CallbackFunction項改為SetVertical;點擊Label/ValuePairs…項,出現(xiàn)如圖2-18所示的屬性設(shè)置窗口。圖2-18Label/ValuePairs…屬性設(shè)置窗口在屬性設(shè)置窗口中改變DataType為double,完成按鈕刻度標值的數(shù)據(jù)類型設(shè)置,然后再設(shè)置按鈕刻度標值,點擊RangeValue項輸入最大值、最小值以及刻度增量,最后選擇Ok設(shè)置完畢。將Label項改為文字“幅度調(diào)節(jié)”;再選擇LabelStyle,改變顯示字體的屬性。同理完成“頻率調(diào)節(jié)”旋鈕的設(shè)置,完成后的的窗口如圖2-19所示。圖2-19信號頻率按鈕設(shè)置完成后的的窗口F設(shè)置Timer的屬性按照圖2-20所示的屬性設(shè)置值,完成Timer控件屬性的設(shè)置。圖2-20Timer控件屬性的設(shè)置窗口說明:Interval屬性表示控件的更新時間,本例中的值為0.1s,表示每0.1s由系統(tǒng)自動調(diào)用回調(diào)函數(shù)UpdateCallback。注意:Timer控件在運行時是不可見的。完成以上的工作后,Panel應(yīng)該如圖2-21所示。圖2-21控件及屬性設(shè)置完的用戶界面選擇如下路徑,將上述步驟完成的用戶界面保存。File>Save保存UIR文件,命名為Sample1.uir。至此,完成了用戶界面(UserInterface)的設(shè)計。圖2-21保存用戶界面并命名4產(chǎn)生程序代碼框架在用戶界面窗口中按照下列的路徑選擇:Code>Generate>AllCode…圖2-22產(chǎn)生程序代碼框架的路徑圖2-23產(chǎn)生程序代碼框架的信息窗口按Yes,在出現(xiàn)的窗口中再點擊OK,出現(xiàn):圖2-24產(chǎn)生程序代碼框架的窗口在圖2-24中,窗口分為3個部分,第一部分確定目標文件的類型以及存放目錄;第二部分確定程序要啟動時顯示的面板;第三部分用來實現(xiàn)程序運行結(jié)束時的回調(diào)函數(shù)。圖2-25設(shè)置程序代碼框架的窗口中參數(shù)圖2-26新的工程文件的參數(shù)設(shè)置選擇OK,出現(xiàn):圖2-27自動生成的源代碼框架在工程文件中添加頭文件:頭文件是在源代碼框架生成后自動產(chǎn)生的,后綴為*.h。圖2-28添加頭文件的路徑圖2-29添加頭文件的窗口圖2-30在工程文件中已經(jīng)添加好的頭文件5添加程序代碼打開圖2-27,可在自動生成的源代碼框架看到,該程序代碼框架共有3個函數(shù):main()函數(shù)程序的入口,它的功能是初始化程序,裝載用戶界面面板,并顯示。CVICALLBACKUpdateCallback()函數(shù)系統(tǒng)自動產(chǎn)生的回調(diào)函數(shù),產(chǎn)生波形函數(shù)。CVICALLBACKQuit()函數(shù)當關(guān)閉按扭被點擊后,該函數(shù)就是響應(yīng)該消息的函數(shù)。main()函數(shù)與CVICALLBACKQuit()函數(shù)中的代碼是計算機自動生成的,計算機生成CVICALLBACKUpdateCallback()函數(shù)的框架,沒有生成詳細的代碼,其內(nèi)部的用來響應(yīng)并處理事件消息的代碼需要你自己添加上去的。ACVICALLBACKUpdateCallback()函數(shù)的程序代碼CVICALLBACKUpdateCallback()函數(shù)完成以下功能:從高級分析庫(AdvancedAnanysis…)中產(chǎn)生一個正弦波,放在Wave數(shù)組中,同時在Graph控件進行顯示。將鼠標放在CVICALLBACKUpdateCallback()函數(shù)Event_TIMER_TICK:下面的空白行上,如圖2-31所示。說明:鼠標所在位置,就是函數(shù)插入的位置。LabWindows/CVI程序中所需的庫函數(shù)是使用函數(shù)面板,填寫參數(shù),然后插入到所需要的位置。圖2-31加入UpdateCallback()函數(shù)的窗口在上面的圖中,按照如下的選擇,將波形函數(shù)插入。Library>AdvancedAnalysis…,在出現(xiàn)的對話框中按圖2-32選擇。圖2-32波形函數(shù)面板的進入路徑圖2-33波形函數(shù)在AdvancedAnanysis庫中的SignalGeneration中Select選中SignalGeneration,出現(xiàn)圖2-34畫面,包含信號發(fā)生的庫函數(shù)。圖2-34選中SineWave函數(shù)圖2-35SineWave函數(shù)參數(shù)的設(shè)置窗口根據(jù)需要設(shè)置相應(yīng)參數(shù),圖2-36為設(shè)置好的參數(shù)窗口。圖2-36SineWave函數(shù)參數(shù)的設(shè)置好的窗口在圖2-36中可看出,在Amplitude中參數(shù)設(shè)置為變量A,在Frequency中參數(shù)設(shè)置為變量F,在Phase中參數(shù)設(shè)置為變量PHASE,在SineWave中參數(shù)設(shè)置為變量WAVE。各參數(shù)變量設(shè)置好后,還需要對這些變量進行聲明,圖2-37為變量A的聲明窗口。選擇工具欄中的,進行變量聲明。見圖2-38。圖2-37為變量A聲明的路徑圖2-38變量A聲明窗口圖2-38打鉤表示添加變量聲明到Sample1.c的前面,按OK到圖2-39界面,表示變量A已經(jīng)聲明。圖2-39SineWave函數(shù)和變量A的聲明添加到源程序代碼的方法按在工具欄中的,把SineWave函數(shù)和變量A的聲明添加到源程序代碼中合適的位置,圖2-40。圖2-40在源程序代碼添加好的SineWave函數(shù)和變量A的聲明用同樣的方法可聲明F,WAVE,PHASE等變量。添加Graph函數(shù)庫的方法,在畫Graph函數(shù)前一般要先刪除Graph控件中的圖形,圖2-41為DeleteGraphPlot庫函數(shù)參數(shù)設(shè)置窗口。路徑為:Library>UserInterface,在出現(xiàn)的對話框窗口中選擇:Controls/Graph/StripChart>GraphandStripChart>GraphPlottingandDeleting>DeleteGraphPlot圖2-41DeleteGraphPlot庫函數(shù)參數(shù)設(shè)置窗口同理,設(shè)置GetCtrlVal函數(shù)面板如圖2-42所示。圖2-42GetCtrlVal函數(shù)面板的設(shè)置6保存并運行程序分別將源代碼程序和用戶界面命名為Sample1.c和Sample1.uir。并創(chuàng)建工程文件命名為Sample1.prj,運行該文件出現(xiàn)如圖2-1所示屏幕。正弦信號生成及顯示的虛擬信號發(fā)生器完整的C語言程序見附錄2。四報告要求1.簡述在CVI編輯環(huán)境中調(diào)用一個庫函數(shù)的過程;2.在上述設(shè)計的虛擬信號發(fā)生器的基礎(chǔ)上,修改用戶界面和源程序代碼,可輸出正弦波、方波和三角波這三種波形。五思考題1.簡述PanelHandle和ControlID參數(shù)的作用;2.簡述DeleteGraphPlot函數(shù)的調(diào)用和設(shè)置過程;3.簡述GetCtrlVal函數(shù)的調(diào)用和設(shè)置過程;4.簡述SquareWave函數(shù)的調(diào)用和設(shè)置過程;附錄1:PlotY():繪圖函數(shù)函數(shù)形式:PlotY(intpanelHandle,intContrleID,void*Yarray,intNumberPoint,intyDataType,intPlotStyle,intPointStyle,intLineStyle,intPointFrequency,ntColor)調(diào)用格式:PlotY(panelHandle,PANEL_GRAPH,y,1000,VAL_FLOAT,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_YELLOW);參數(shù)說明:panelHandle和ContrleID同前,略。Yarray數(shù)組名,存放要顯示的離散圖形數(shù)據(jù)。NumberPoint顯示器上顯示的數(shù)據(jù)點數(shù)。YDataType數(shù)組Yarray中的數(shù)據(jù)類型,以形如“VAL_FLOAT”(浮點型)的形式添入。在程序中定義數(shù)組Yarray的類型時,要與此處一致:floatYarray[1000]。PlotStyle繪圖時點與點間的曲線類型。本實驗中設(shè)置為:VAL_THIN_LINEPointStyle繪圖時點類型。本實驗中設(shè)置為:VAL_EMPTY_SQUARELineStyle線的類型。本實驗中設(shè)置為:VAL_SOLIDPointFrequency取默認值“1”Color線的顏色。以形如“VAL_RED”的形式添入例如:儀器面板上有一個Graph(繪圖)控件,即顯示器。其名稱屬性(ConstantName)為:GRAPH。數(shù)組y[1000]中放有一組正弦波形的離散數(shù)據(jù)。調(diào)用PlotY()函數(shù)后,在Graph控件上顯示出該正弦波形。顯示的數(shù)據(jù)個數(shù)為1000,線條顏色為黃色。調(diào)用格式:PlotY(panelHandle,PANEL_GRAPH,y,1000,VAL_FLOAT,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_YELLOW);DeleteGraphPlot():清屏函數(shù),即清除顯示的圖形函數(shù)形式:DeleteGraphPlot(intpanelHandle,intControlID,intPlotHandle,intRefresh)調(diào)用格式:DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,VAL_IMMEDIATE_DRAW)參數(shù)說明:panelHandle和ContrleID同前,略。PlotHandle:繪圖句柄,若該值為-1,則清除所有的圖形。Refresh:清除方式,若該值為1,則立即清除。附錄2:仿真信號生成及顯示的虛擬信號發(fā)生器完整的C語言程序清單如下:#include<analysis.h>#include<cvirte.h> /*Needediflinkinginexternalcompiler;harmlessotherwise*/#include<userint.h>#include"Sample1.h"staticintpanelHandle;/*************設(shè)置全局變量************************/staticdoubleA;staticdoubleF;staticdoublePHASE=0.0;staticdoubleWave[128];/*************主函數(shù)段************************/intmain(intargc,char*argv[]){ if(InitCVIRTE(0,argv,0)==0) /*Needediflinkinginexternalcompiler;harmlessotherwise*/ return-1; /*outofmemory*/ if((panelHandle=LoadPanel(0,"scopedem1.uir",PANEL))<0) return-1; RunUserInterface(); return0;}/*************“退出”回調(diào)函數(shù)段************************/intCVICALLBACKQuitButton(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ switch(event) { caseEVENT_COMMIT: QuitUserInterface(0); break; } return0;}/*************產(chǎn)生“正弦波”并顯示回調(diào)函數(shù)段************************/intCVICALLBACKUpdateCallback(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ switch(event) { caseEVENT_TIMER_TICK: DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,VAL_IMMEDIATE_DRAW);GetCtrlVal(panelHandle,PANEL_NUMAMP,&A);GetCtrlVal(panelHandle,PANEL_NUMFRE,&F);SineWave(128,A,F/128,&PHASE,WAVE);PlotY(panelHandle,PANEL_GRAPH,WAVE,128,VAL_DOUBLE,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED); break; } return0;}實驗三模擬信號的采集及其信號頻率的計算實驗?zāi)康耐ㄟ^完成實驗“具有實測功能的虛擬示波器”的設(shè)計1.學習利用NIUSB-6211數(shù)采卡進行A/D的轉(zhuǎn)換;2.學習測定數(shù)據(jù)采集時間間隔的方法。3.學習用過零法計算信號的頻率和周期4.學習6種函數(shù)的使用方法:DAQmxCreateTask();//創(chuàng)建采集任務(wù)DAQmxCreateAIVoltageChan();//創(chuàng)建采集電壓信號的方式DAQmxCfgSampClkTiming();//設(shè)置采樣間隔DAQmxStartTask(); //開始采集DAQmxReadAnalogF64(); //讀通道數(shù)據(jù)DAQmxStopTask(taskHandle); //結(jié)束任務(wù)DAQmxClearTask(); //清除任務(wù)二.實驗原理具有實測功能的虛擬示波器——A/D轉(zhuǎn)換實測是指該虛擬示波器可以測量實際信號。這時需要數(shù)據(jù)采集卡,將所測電量信號采集到計算機中,由軟件完成波形的顯示。如圖3-1所示的框圖說明了具有實測功能的虛擬示波器的原理框圖。虛擬示波器虛擬示波器計算機LabWindows/CVI軟件計算機LabWindows/CVI軟件采集卡信號圖3-1具有實測功能的虛擬示波器的原理框圖在上述的框圖中由計算機對采集卡發(fā)出指令,啟動采集卡,計算機將采集的信號數(shù)據(jù)進行存儲,處理和顯示,從而實現(xiàn)虛擬示波器。2.過零計數(shù)法測頻原理不含直流分量的正弦波每個周期內(nèi)都應(yīng)有兩個過零點。根據(jù)每兩個過零點之間的采樣次數(shù)我們可以得到每周期的采樣點數(shù)N。由于采樣時間間隔是由數(shù)據(jù)采集卡決定的,是一個確定值。所以可以得到正弦波的周期為N*;從而可以計算出頻率f。 對被測信號x(t)進行數(shù)據(jù)采集,得到被測信號序列為x(n),n=1,2,…,k。我們把該信號序列中上次采樣為負值、本次采樣為正值的點記為正過零點,兩個正過零點的時間間隔t為: (3-1)式中——采樣時間間隔; ——兩次過零點時間內(nèi)采樣的次數(shù); ——兩個正過零點之間的時間間隔,也即被測波形周期。故被測波形頻率f為 3.NIUSB-6211數(shù)采卡的使用方法信號的實時采集(A/D轉(zhuǎn)換),要使用數(shù)據(jù)采集卡,計算機對采集卡發(fā)出指令,啟動采集卡,計算機將采集的信號數(shù)據(jù)進行存儲、處理和顯示。虛擬信號發(fā)生器(D/A轉(zhuǎn)換),把計算機仿真的數(shù)字信號通過D/A轉(zhuǎn)換功能轉(zhuǎn)換為模擬信號,由模擬信號輸出。采用數(shù)據(jù)采集卡是虛擬儀器中常用的獲取數(shù)據(jù)的方法,數(shù)據(jù)采集卡為I/O接口設(shè)備,對I/O接口設(shè)備的驅(qū)動是通過相應(yīng)的庫函數(shù)來實現(xiàn)的。對于NI公司生產(chǎn)的數(shù)據(jù)采集卡,可利用Labwindows/CVI自帶的驅(qū)動函數(shù)驅(qū)動。設(shè)計者只需正確設(shè)置輸入?yún)?shù)就可實現(xiàn)數(shù)據(jù)采集的任務(wù),而不需編寫代碼程序。NIUSB-6211是一款USB總線供電M系列多功能DAQ模塊,在高采樣率下也能保持高精度。該模塊提供了16路模擬輸入;250kS/s單通道采樣率;2路模擬輸出;8路數(shù)字輸入線;8路數(shù)字輸出線;每通道有4個可編程輸入范圍(±0.2V-±10V);數(shù)字觸發(fā);2個計數(shù)器/定時器。本例中的被測信號是由信號發(fā)生器產(chǎn)生的標準正弦波信號。4.實測電量信號的實時顯示用數(shù)據(jù)采集卡采集被測信號,得到一組離散的信號值,存放在一個數(shù)組中,例如上面A/D轉(zhuǎn)換程序中的數(shù)組data[128],并在示波器上逐點顯示并連線。5.NI數(shù)據(jù)采集卡的添加和使用安裝NI的應(yīng)用程序軟件LabWindows/CVI后,會自動安裝MeasurementStudio軟件,它里面已經(jīng)打包了NI所有種類接口設(shè)備的驅(qū)動,是專門用來管理硬件設(shè)備的,當你插入所用設(shè)備后,它會自動識別并安裝驅(qū)動。(1)安裝設(shè)備將USB電纜連接上計算機和設(shè)備,在屏幕跳出的對話框上點擊Next和Finish。注:在首次介入該USB設(shè)備或者升級NI-DAQmx的驅(qū)動后,用戶可能會被提示安裝固件升級設(shè)備,這是正常的,可以通過Windows硬件向?qū)崾緛砩壴O(shè)備上的固件。注:對于USB-9211的用戶來說,當首次將USB-9211與計算機連接并能夠正常使用之前,找到新硬件向?qū)霈F(xiàn)大約三次來安裝該設(shè)備。請用戶等待設(shè)備安裝完成后即可使用該設(shè)備。(2)確認正確識別設(shè)備 請完成以下的步驟:雙擊桌面上的Measuremnet&Automation圖標,打開MAX;點擊展開DevicesandInterfaces,然后再點擊展開NI-DAQmxDevices;點擊出現(xiàn)在DevicesandInterfaces目錄下您已安裝的設(shè)備如下圖所示,如果您的設(shè)備未出現(xiàn),按F5刷新MAX中的設(shè)備列表。如果仍未識別設(shè)備,請查閱/suppot/install下的問題解決方案。圖3-2設(shè)備管理界面如果已安裝的設(shè)備能夠正常識別,右鍵點擊該設(shè)備,選擇Self-Test,如下圖所示。圖3-3設(shè)備自檢界面如果用戶在自檢過程中需要幫助的話,選擇Help>>HelpTopics>>NI-DAQmx,然后點擊MaxHelp中NI-DAQmx的相關(guān)幫助信息。自檢結(jié)束會彈出對話框表明自檢成功或者出現(xiàn)錯誤。如果出現(xiàn)錯誤,請參考/support/install下的問題解決方案。(3)配屬傳感器和信號線 接線端子模塊的附屬傳感器和信號線。用戶可以在設(shè)備和附屬品的用戶手冊中獲得信號線和傳感器的相關(guān)信息。USB設(shè)備用戶手冊可以在設(shè)備文檔瀏覽器中查閱。該瀏覽器在Start>>Programs>>NationalInstruments>>NI-DAQ>>BrowseDeviceDocumentation。設(shè)備在線文檔在/manuals。(4)運行測試面板許多設(shè)備都包含用來測試指定設(shè)備功能的測試面板,例如獲取和生成信號的功能。用戶要使用這些測試面板,請完成一下步驟:1)在MAX中,點擊展開DevicesandInterfaces>>NI-DAQmxDevices;2)右鍵單擊要測試的設(shè)備;3)選中TestPanels打開選中設(shè)備的測試面板4)點擊Start測試設(shè)備的不同功能,點擊Help查看操作該測試面板的說明;5)測試面板如圖3-4所示,會彈出對話框顯示設(shè)備是否存在錯誤,如果出現(xiàn)錯誤,請參閱NI-DAQmxHelp或者/support下的問題解決方案;6)點擊關(guān)閉退出測試面板。圖3-4設(shè)備測試面板(5)在程序中使用設(shè)備DAQ助手用戶可以在MAX或者NI應(yīng)用軟件中使用DAQ助手來設(shè)置LabView、LabWindows/CVI、MeasurementStudio和其他NI應(yīng)用軟件中的虛擬通道和測試任務(wù)。更多關(guān)于如何應(yīng)用DAQ助手在程序中建立任務(wù)使用設(shè)備及其他更多相關(guān)信息請參考Start>>Programs>>NationalInstruments>>NI-DAQ>>DAQGettingStartedGuide中的DAQ使用手冊例子用戶可以用已有的例子開發(fā)新的應(yīng)用程序或者向以后的程序中添加源代碼。應(yīng)用程序?qū)嵗恢肔abViewHelp>>FindExamplesLabWindows/CVIHelp>>FindExamplesMeasurementStudioMeasurementStudioVS2003\VCNET\Examples\DAQmxMeasurementStudioVS2003\DotNET\Examples\DAQmxANSICNI-DAQ\Examples\DAQmxANSIC更多的例子請參考/zone三.實驗內(nèi)容與步驟1.虛擬示波器的設(shè)計所要實現(xiàn)的虛擬示波器如圖3-5所示。圖3-5虛擬示波器儀器面板運行本例后,選擇采集按鈕,被測信號的波形顯示在儀器的面板上,當選擇關(guān)閉按鈕后,儀器關(guān)閉。下面說明虛擬示波器的設(shè)計和實現(xiàn)方法。(1)啟動LabWindows/CVI(2)新建工程文件(3)新建用戶接口界面文件(acquire.uir)(4)生成源代碼框架生成的源代碼框架可分為三部分:主程序段及其前綴部分;以CVICALLBACK為標志的控件回調(diào)功能函數(shù)段;有關(guān)測量功能及算法函數(shù)段。關(guān)于信號采集的庫函數(shù)的路徑為:Library>>NI-DAQmx在彈出的對話框中選擇所需要的關(guān)于采集的庫函數(shù)。(5)編輯源代碼("acquire.c"),具體內(nèi)容見附件2。(6)創(chuàng)建保存工程文件依次將acquire.c、acquire.h、acquire.uir文件加入工程項目文件acquire.prj中。(7)運行檢驗工程文件選擇Run>RunProject,運行工程文件。2.在虛擬示波器的基礎(chǔ)上設(shè)計一虛擬頻率計,用于信號頻率的測量并進行顯示。(1)程序設(shè)計要求:1)編寫一個波形采集程序,要求根據(jù)圖3-6設(shè)計一個簡單的儀器面板,有波形顯示和信號頻率顯示,可以輸入被測信號的輸入通道。(2)過零法計算頻率主要代碼段如下:k=0;for(i=1;i<MAX;i++){if((volt[i-1]*volt[i]<=0)&&(volt[i-1]<0)){ signpo[k]=i;k++; if(k>1)break;}} sumpo=signpo[1]-signpo[0];圖圖3-6虛擬頻率計 f=v/sumpo;其中:k為過零點數(shù),MAX為數(shù)據(jù)采樣點總數(shù),volt為存放采樣數(shù)據(jù)的數(shù)組,signpo為存放過零點序號的數(shù)組,sumpo為k-2個過零點之間的采樣點數(shù),f為被測信號的頻率,v為數(shù)據(jù)采集卡的采樣速率。(3)運行檢驗改變信號源輸出正弦信號的頻率,觀察“虛擬頻率計”的頻率輸出并記錄。信號源輸出頻率f1“虛擬頻率計”顯示頻率f2誤差△f=f1–f2四報告要求1.簡述在CVI使用NI-6211數(shù)據(jù)采集卡的步驟五思考題1.改變數(shù)據(jù)采集卡的采樣速率,觀測“虛擬頻率計”的測試結(jié)果,分析其原因;2.給出你的“虛擬頻率計”測量范圍,提出改進方案;六、實驗儀器PC機1臺NIUSB-6211數(shù)據(jù)采集卡1塊信號發(fā)生器1臺將NIUSB-6211數(shù)據(jù)采集卡與PC機的USB接口相連接。具體內(nèi)容見附錄1。附錄1USB-6211數(shù)采卡1~16號端子是模擬輸出和數(shù)字I/O端子排,17~32號端子是模擬輸入端子排。具體端子定義參見下圖3、4,及表1、表2。附錄2:“具有實測功能的虛擬示波器”的CVI源程序如下:#include<NIDAQmx.h>#include<cvirte.h> #include<userint.h>#include"acquire.h"staticintpanelHandle;intmain(intargc,char*argv[]){ if(InitCVIRTE(0,argv,0)==0) return-1; /*outofmemory*/ if((panelHandle=LoadPanel(0,"acquire.uir",PANEL))<0) return-1; DisplayPanel(panelHandle); RunUserInterface(); DiscardPanel(panelHandle); return0;}intCVICALLBACKClose(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ switch(event) { caseEVENT_COMMIT: QuitUserInterface(0); break; } return0;}intCVICALLBACKAcquire(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ int32read=50; cdata[1000]; doublerate; doublemax; doublemin; charvalue[20]; TaskHandletaskHandle; switch(event) { caseEVENT_COMMIT: GetCtrlVal(panel,PANEL_CHANNEL,value);//設(shè)置采集通道號 GetCtrlVal(panel,PANEL_MINVAL,&min); //設(shè)置最小值 GetCtrlVal(panel,PANEL_MAXVAL,&max); //設(shè)置最大值 DAQmxCreateTask("myTask",&taskHandle);//創(chuàng)建一個新任務(wù) DAQmxCreateAIVoltageChan(taskHandle,value,"",DAQmx_Val_RSE,min,max,DAQmx_Val_Volts,"");//創(chuàng)建一個新的模擬通道 GetCtrlVal(panel,PANEL_RATE,&rate);//設(shè)置采樣速率 DAQmxCfgSampClkTiming(taskHandle,"",rate,DAQmx_Val_Rising,DAQmx_Val_FiniteSamps,1000);//設(shè)置任務(wù)的持續(xù)時間,并使用采樣時鐘設(shè)置采樣間隔 DAQmxReadAnalogF64(taskHandle,DAQmx_Val_Auto,10.0,DAQmx_Val_GroupByChannel,data,1000,&read,0);//讀電壓值 DeleteGraphPlot(panel,PANEL_GRAPH,-1,VAL_IMMEDIATE_DRAW);//刪除GRAPH控件中的所有曲線 PlotY(panel,PANEL_GRAPH,data,200,VAL_DOUBLE,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED); //在GRAPH控件中顯示數(shù)據(jù)DAQmxStopTask(taskHandle); //結(jié)束任務(wù)DAQmxClearTask(taskHandle);//清除采集任務(wù) break; } return0;}Dev1/ai0附錄2:數(shù)據(jù)采集相關(guān)庫函數(shù)調(diào)用路徑:DAQmxCreateTask//創(chuàng)建一個新任務(wù)NI-Configuration/Control?TaskConfiguration/Control?DAQmxCreateTaskDAQmxCreateAIVoltageChan//創(chuàng)建一個新的模擬通道NI-Configuration/Control?CreateAnalogInputChannels?DAQmxCreateAIVoltageChanDAQmxCfgSampClkTiming//設(shè)置任務(wù)的持續(xù)時間,并使用采樣時鐘設(shè)置采樣間隔NI-Configuration/Control?Timing?ConfigurationSampleclockTimingDAQmxReadAnalogF64//讀電壓值NI-Configuration/Control?ReadFunctions?ReadAnalog64DAQmxStopTask(taskHandle); //結(jié)束任務(wù)NI-Configuration/Control?TaskConfiguration/Control?DAQmxStopTaskDAQmxClearTask(taskHandle);//清除采集任務(wù)NI-Configuration/Control?TaskConfiguration/Control?DAQmxClearTask實驗四虛擬頻譜分析演示儀一、實驗?zāi)康模和ㄟ^完成示例“虛擬頻譜分析演示儀”的設(shè)計學習兩種函數(shù)的使用方法FFT()頻譜分析函數(shù)ToPolar1D()函數(shù)完成由直角坐標到極坐標的轉(zhuǎn)換了解周期信號的頻域分析方法;理解用FFT法進行頻譜分析對采樣點數(shù)的要求。二、虛擬頻譜分析演示儀的工作原理對信號進行頻域分析,可以得到它頻域的各種表征量,得到信號的頻率組成信息。最主要的分析方法就是快速傅利葉變換及其反變換。Labwindows/CVI中的FFT()函數(shù)使用了目前最有效的裂基算法,該算法的計算量是最小的。該函數(shù)的使用方法見附錄1所示。本例的頻譜分析演示儀采用該算法。頻譜分析演示儀主要的功能就是生成仿真信號,然后用FFT()函數(shù)對仿真信號做變換,得到信號的幅頻和相頻特性。由于該函數(shù)得到的是復(fù)數(shù)形式,需要轉(zhuǎn)化為極坐標形式,可以用公式:編程計算,也可以用CVI的函數(shù)ToPolar1D(),該函數(shù)完成由直角坐標到極坐標的轉(zhuǎn)換。函數(shù)原型說明見附錄1。三、實驗內(nèi)容1.完成示例“虛擬頻譜分析演示儀”的設(shè)計,其功能要求如下:要求該“虛擬頻譜分析演示儀”能對信號源輸出的信號進行頻譜分析??稍趯嶒炄O(shè)計的面板中加入頻譜分析按鈕,實現(xiàn)信號頻譜分析并把頻譜分析圖顯示出來。四.“虛擬頻譜分析演示儀”的設(shè)計步驟設(shè)計步驟同前。1.頻譜分析演示儀的儀器面板設(shè)計圖形顯示窗用于顯示采集的信號波形及對其進行頻譜分析的波形;至少應(yīng)有3個命令按鈕分別用于信號采集、頻譜分析和關(guān)閉程序的功能;數(shù)字窗口應(yīng)包括信號采集的通道號設(shè)置、采樣頻率的設(shè)置、計算信號頻率的顯示等。由于FFT()函數(shù)只能計算個數(shù)為2m的序列頻譜,所以在面板上將采樣點數(shù)控件的類型設(shè)定為設(shè)定為Numeric控件,整型,且只能選擇2m的數(shù)目,也可以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論