技術(shù)規(guī)范及其工作原理_第1頁
技術(shù)規(guī)范及其工作原理_第2頁
技術(shù)規(guī)范及其工作原理_第3頁
技術(shù)規(guī)范及其工作原理_第4頁
技術(shù)規(guī)范及其工作原理_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1.1 IVI技術(shù)規(guī)范及其工作原理1.1.1 IVI技術(shù)的特點(diǎn)為了進(jìn)一步提高儀器的可互換性和測試代碼的可重用性,降低系統(tǒng)升級(jí)的難度和成本,由NI公司、GEC馬可尼公司、朗訊技術(shù)公司、GDE系統(tǒng)公司等十幾家儀器生產(chǎn)廠商成立了IVI基金會(huì)并發(fā)布了IVI技術(shù)規(guī)范。IVI技術(shù)規(guī)范是IVI基金會(huì)在VPP規(guī)范的基礎(chǔ)上定義儀器的標(biāo)準(zhǔn)接口、通用結(jié)構(gòu)和實(shí)現(xiàn)方法,用于開發(fā)一種可互換、高性能、更易于開發(fā)維護(hù)的儀器的編程模型。IVI技術(shù)主要具有以下特點(diǎn)。1)通過儀器的可互換性,節(jié)省測試系統(tǒng)的開發(fā)和維護(hù)費(fèi)用IVI技術(shù)提升了儀器驅(qū)動(dòng)器的標(biāo)準(zhǔn)化程度,使儀器驅(qū)動(dòng)器從基本的互操作性提升到了儀器類的互操作性。通過為各儀器類定義明

2、確的API,測試系統(tǒng)開發(fā)者在編寫軟件時(shí)可以做到最大程度的與硬件無關(guān),當(dāng)替換過時(shí)的儀器或采用更高性能的新儀器進(jìn)行系統(tǒng)升級(jí)時(shí),測試程序源代碼可以不用做任何更改或重新編譯,這大大提高了代碼的可重用性,同時(shí)也縮短了測試系統(tǒng)開發(fā)周期以及系統(tǒng)維護(hù)費(fèi)用。2)通過狀態(tài)緩存,改善測試性能IVI引入了屬性管理機(jī)制,其模型中的IVI引擎可實(shí)現(xiàn)狀態(tài)存儲(chǔ)功能。VPP驅(qū)動(dòng)程序總是假設(shè)儀器狀態(tài)是未知的,因此,每個(gè)測量函數(shù)在進(jìn)行測量操作之前都要對(duì)儀器進(jìn)行設(shè)置,而不管儀器在此之前是否被配置過。而IVI驅(qū)動(dòng)器通過狀態(tài)緩存能自動(dòng)存儲(chǔ)儀器的當(dāng)前狀態(tài)。一個(gè)IVI儀器驅(qū)動(dòng)程序函數(shù)只有在儀器當(dāng)前設(shè)置和函數(shù)所要求的值不一致時(shí),才執(zhí)行I/O操

3、作,而不是每次都對(duì)儀器的所有參數(shù)進(jìn)行重新配置,這樣IVI引擎可以避免發(fā)送冗余的儀器配置命令,從而優(yōu)化程序運(yùn)行時(shí)的性能,極大的縮短測試時(shí)間。3)通過仿真,使測試開發(fā)更容易、更經(jīng)濟(jì)利用IVI儀器驅(qū)動(dòng)器的仿真功能,用戶可以在儀器還不能用的條件下,使用驅(qū)動(dòng)程序建立應(yīng)用程序,這種情況下,驅(qū)動(dòng)程序不執(zhí)行儀器I/O而僅利用軟拷貝來進(jìn)行處理,它檢查輸入?yún)?shù)并且產(chǎn)生仿真的輸出結(jié)果。有了這些仿真數(shù)據(jù),開發(fā)者在沒有儀器硬件的情況下也能為儀器開發(fā)應(yīng)用程序代碼。1.1.2 IVI驅(qū)動(dòng)器的類型及互換性的實(shí)現(xiàn)原理如圖4所示,IVI驅(qū)動(dòng)器分為IVI類驅(qū)動(dòng)器和IVI專用驅(qū)動(dòng)器兩大類型。IVI類驅(qū)動(dòng)器提供符合已定義IVI儀器類規(guī)

4、范的儀器驅(qū)動(dòng)器API,通過IVI類兼容專用驅(qū)動(dòng)器間接實(shí)現(xiàn)與儀器硬件的通信連接。實(shí)際上,可以將IVI類驅(qū)動(dòng)器理解為一種抽象的、具有過渡性質(zhì)的儀器驅(qū)動(dòng)器,類似于面向?qū)ο缶幊碳夹g(shù)中的虛擬基類,而IVI類兼容專用驅(qū)動(dòng)器則是它的派生類。IVI專用驅(qū)動(dòng)器封裝了用于控制某一類或某一種儀器所需的信息和函數(shù),能夠直接與底層硬件通信,它又包括IVI類兼容專用驅(qū)動(dòng)器和IVI定制專用驅(qū)動(dòng)器。IVI類兼容專用驅(qū)動(dòng)器與某一類已定義的IVI儀器類兼容,使用已定義儀器類的標(biāo)準(zhǔn)API,但同時(shí)又增加了一些其他特性,以滿足用戶對(duì)儀器互換性的要求;IVI定制專用驅(qū)動(dòng)器使用用戶化的API,不與任何已定義的儀器類標(biāo)準(zhǔn)兼容,不能實(shí)現(xiàn)硬件的

5、互換性,主要用于一些特殊場合。 IVI驅(qū)動(dòng)器IVI專用驅(qū)動(dòng)器IVI類驅(qū)動(dòng)器類兼容專用驅(qū)動(dòng)器定制專用驅(qū)動(dòng)器圖1 IVI驅(qū)動(dòng)器分類IVI規(guī)范把儀器驅(qū)動(dòng)器分成類驅(qū)動(dòng)器和專用驅(qū)動(dòng)器的目的是為了實(shí)現(xiàn)儀器的互換性。為了確保在進(jìn)行儀器替換時(shí)不修改測試代碼,不再做重新編譯或鏈接,做到完全的互換性,IVI規(guī)范規(guī)定用戶需要直接用儀器類API編程而不是用特定的IVI類兼容專用驅(qū)動(dòng)器編程,與特定儀器相關(guān)的驅(qū)動(dòng)器和硬件資源配置不能在測試程序中完成,于是IVI技術(shù)規(guī)范提出了一種被稱為“配置倉”的軟件結(jié)構(gòu)。用 戶應(yīng)用程序IVI類驅(qū)動(dòng)器IVI類兼容專用驅(qū)動(dòng)器GUIIVI配置倉圖2 IVI儀器驅(qū)動(dòng)器互換性原理圖IVI配置倉是用

6、來實(shí)現(xiàn)儀器互換性的外部軟件,具有動(dòng)態(tài)加載特定儀器驅(qū)動(dòng)器的能力,通過建立類驅(qū)動(dòng)器和特定儀器驅(qū)動(dòng)器的映射關(guān)系來實(shí)現(xiàn)儀器的互換和測試程序的代碼重用。圖5解釋了儀器互換性的實(shí)現(xiàn)方法。IVI配置倉中包括了一系列邏輯名以及與各邏輯名一一對(duì)應(yīng)的驅(qū)動(dòng)器通話配置器,在應(yīng)用程序通過某個(gè)邏輯名來訪問IVI類驅(qū)動(dòng)器時(shí),IVI類驅(qū)動(dòng)器通過邏輯名的匹配得到實(shí)際的IVI類兼容專用驅(qū)動(dòng)器通話配置器,并實(shí)現(xiàn)該驅(qū)動(dòng)器的動(dòng)態(tài)加載,然后通話配置器建立與專用驅(qū)動(dòng)器和儀器的通話鏈路,同時(shí)也決定一些可配置屬性的配置,如仿真、狀態(tài)緩存狀態(tài)檢查等,當(dāng)用戶更換儀器時(shí),只需將IVI配置倉中對(duì)應(yīng)的邏輯名重新定位到另一個(gè)通話配置器,從而實(shí)現(xiàn)儀器的互換

7、。1.1.3 IVI驅(qū)動(dòng)器的工作原理IVI驅(qū)動(dòng)器的工作機(jī)制如圖6所示。IVI模型中把每一個(gè)可讀寫的儀器設(shè)置定義為一個(gè)屬性。IVI引擎與驅(qū)動(dòng)程序一起參與對(duì)設(shè)置儀器屬性范圍檢查和強(qiáng)制設(shè)定與緩存值比較存儲(chǔ)當(dāng)前屬性值檢查儀器狀態(tài)VISA I/O庫函數(shù)(訪問儀器)用戶應(yīng)用程序驅(qū)動(dòng)器高層函數(shù)屬性回調(diào)函數(shù)(讀、寫)屬性范圍表進(jìn)程回調(diào)函數(shù)(狀態(tài)檢查等)儀器驅(qū)動(dòng)器IVI引擎圖3 IVI儀器驅(qū)動(dòng)器工作機(jī)制儀器屬性的管理,主要包括記憶和跟蹤屬性值、屬性范圍檢查和強(qiáng)制設(shè)定、控制屬性值的讀寫等。組成IVI儀器驅(qū)動(dòng)程序的高層函數(shù)主要包括以下四個(gè)部分:(1)用于讀寫某個(gè)儀器屬性的IVI標(biāo)準(zhǔn)屬性函數(shù);(2)用于規(guī)定每一個(gè)儀器

8、屬性有效范圍的范圍表;(3)屬性回調(diào)函數(shù)(讀回調(diào)函數(shù)、寫回調(diào)函數(shù)、范圍檢查回調(diào)函數(shù)等);(4)全局通道回調(diào)函數(shù)(如狀態(tài)檢查回調(diào)函數(shù)等)。當(dāng)驅(qū)動(dòng)程序在高層函數(shù)中設(shè)置屬性時(shí),IVI引擎被激活并訪問屬性范圍表進(jìn)行范圍檢查和強(qiáng)制設(shè)定值,在設(shè)置值與緩存值不同時(shí)激活屬性回調(diào)函數(shù),執(zhí)行儀器I/O操作,否則直接返回成功。如果執(zhí)行了I/O操作,則高層函數(shù)還要在驅(qū)動(dòng)程序中調(diào)用狀態(tài)檢查回調(diào)函數(shù),查看是否有錯(cuò)誤發(fā)生。由于IVI引擎運(yùn)行在計(jì)算機(jī)內(nèi)部,而驅(qū)動(dòng)程序只有在對(duì)儀器進(jìn)行硬件操作時(shí)才花費(fèi)較多時(shí)間,因此,通過在高層函數(shù)和低層I/O操作之間引入屬性管理機(jī)制,可以在不影響儀器工作的條件下增強(qiáng)對(duì)儀器操作的靈活性和安全性,并

9、大大提高驅(qū)動(dòng)程序的效率。以通道配置函數(shù)dsoes1452_ConfigureChannel配置垂直靈敏度為5V/div為例,IVI驅(qū)動(dòng)器和IVI引擎將執(zhí)行以下幾步:函數(shù)dsoes1452_ConfigureChannel中調(diào)用標(biāo)準(zhǔn)IVI屬性設(shè)置函數(shù)Ivi_SetAttributeViReal64(),將屬性DSOES1452_ATTR_VERTICAL_RANGE的值設(shè)置為5.0。如果IVI內(nèi)置屬性IVI_ATTR_RANGE_CHECK(范圍檢查)的值為真VI_TRUE,IVI引擎調(diào)用屬性范圍檢查回調(diào)函數(shù),判斷5.0是否超出了垂直靈敏度屬性范圍表。如果超出了有效范圍,屬性設(shè)置函數(shù)返回一個(gè)錯(cuò)誤

10、代碼,或者調(diào)用強(qiáng)制回調(diào)函數(shù)強(qiáng)制設(shè)定為有效范圍內(nèi)的數(shù)值。如果IVI內(nèi)置屬性IVI_ATTR_CACHE(狀態(tài)緩存)為真VI_TRUE,IVI引擎比較5.0與當(dāng)前緩存中的值是否相等,如果相等,屬性設(shè)置函數(shù)直接返回執(zhí)行成功代碼。如果IVI內(nèi)置屬性IVI_ATTR_CACHE(仿真)為真VI_TRUE,屬性設(shè)置函數(shù)直接返回執(zhí)行成功代碼。如果5.0與緩存值不等且不是執(zhí)行的仿真,則調(diào)用垂直靈敏度屬性寫回調(diào)函數(shù)dsoes1452AttrVerticalRange_WriteCallback(),通過VISA I/O函數(shù)訪問底層硬件,寫入5.0對(duì)應(yīng)的命令,并更新當(dāng)前緩存值為5.0。如果屬性IVI_ATTR_Q

11、UERY_INSTR_STATUS(儀器狀態(tài)檢查)為真VI_TRUE,同時(shí)IVI引擎調(diào)用了寫回調(diào)函數(shù),則函數(shù)dsoes1452_ConfigureChannel調(diào)用狀態(tài)檢查回調(diào)函數(shù),該回調(diào)函數(shù)讀取儀器的狀態(tài)寄存器信息,以檢查是否有錯(cuò)誤發(fā)生。1.1.4 IVI儀器驅(qū)動(dòng)器的開發(fā)流程考慮到IVI規(guī)范是在VPP規(guī)范基礎(chǔ)上提出來的,IVI儀器驅(qū)動(dòng)器與VPP驅(qū)動(dòng)器的區(qū)別就在于IVI驅(qū)動(dòng)器多了IVI引擎,IVI引擎通過屬性管理來控制硬件,而VPP驅(qū)動(dòng)器是直接調(diào)用VISA函數(shù)訪問儀器,所以我們的開發(fā)是直接用LabWindows/CVI的開發(fā)向?qū)ч_發(fā)IVI驅(qū)動(dòng)器,同時(shí)就可以實(shí)現(xiàn)VPP儀器驅(qū)動(dòng)器的開發(fā)。IVI儀器

12、驅(qū)動(dòng)器的開發(fā)流程大致如下:啟動(dòng)IVI驅(qū)動(dòng)程序開發(fā)向?qū)?,按照向?qū)У奶崾驹O(shè)置儀器驅(qū)動(dòng)器的相關(guān)信息,生成驅(qū)動(dòng)程序框架代碼,生成的框架代碼中,包含了符合IVI規(guī)范的示波器類驅(qū)動(dòng)器的大部分標(biāo)準(zhǔn)函數(shù)。分析生成的各個(gè)屬性,對(duì)相應(yīng)屬性進(jìn)行編輯、刪除或新建;對(duì)獨(dú)立屬性實(shí)現(xiàn)屬性回調(diào)函數(shù),這些屬性可用來設(shè)置和訪問硬件,寫回調(diào)函數(shù)用來設(shè)置硬件屬性值,在狀態(tài)存儲(chǔ)機(jī)制無效時(shí),寫回調(diào)函數(shù)總是被調(diào)用,此時(shí)IVI驅(qū)動(dòng)的工作過程與VPP驅(qū)動(dòng)類似,讀回調(diào)函數(shù)用來獲取屬性值。明確屬性的無效值,IVI引擎采用屬性無效列表作為保持狀態(tài)存儲(chǔ)完整性的一種技術(shù),它用來解決高級(jí)屬性之間的相關(guān)性問題,例如某一屬性的無效列表中可以包含受其影響的屬性

13、,當(dāng)這一屬性的值改變而導(dǎo)致被其影響的屬性無效時(shí),IVI引擎就可以修改它們的屬性值。分析驅(qū)動(dòng)程序的各組成文件,編輯和修改函數(shù)樹與函數(shù)面板、刪除不用的擴(kuò)展代碼,根據(jù)本模塊的實(shí)際需要修改生成的函數(shù)代碼,添加本模塊所需要的特殊函數(shù)代碼。設(shè)計(jì)軟面板程序,對(duì)IVI驅(qū)動(dòng)程序的各函數(shù)進(jìn)行測試并調(diào)試,在確保正確性的前提下生成安裝文件。1.1.5 儀器驅(qū)動(dòng)器屬性的設(shè)置運(yùn)行LabWindows/CVI的IVI儀器驅(qū)動(dòng)器開發(fā)向?qū)?,按照向?qū)У奶崾?,輸入所需要的本模塊的相應(yīng)信息,最后點(diǎn)擊Generate按鈕即可生成IVI儀器驅(qū)動(dòng)器所需的基本文件,包括函數(shù)面板文件PREFIX.fp,源代碼文件PREFIX.c,頭文件PRE

14、FIX.c,儀器屬性文件PREFIX.sub。這里PREFIX代表在向?qū)е休斎氲膬x器驅(qū)動(dòng)器前綴名稱,生成的所有驅(qū)動(dòng)器函數(shù)和屬性名稱都以此前綴開頭,以表明此驅(qū)動(dòng)器是某一型號(hào)特定儀器的特定驅(qū)動(dòng)器。打開屬性編輯器,可以看到自動(dòng)生成的IVI驅(qū)動(dòng)器的所有屬性列表,其中有一些屬性是IVI固有屬性,即不管是什么類型的儀器都必須要有的屬性,在CVI中這些屬性不能被用戶隨意更改,開發(fā)者不能對(duì)這些屬性做任何編輯。其余大部分屬性需要我們根據(jù)儀器的實(shí)際需要,進(jìn)行重新編輯修改,刪除不需要的屬性,增加本模塊所特有的設(shè)置屬性。圖7所示為本信號(hào)采集模塊的部分屬性列表。整個(gè)系統(tǒng)分為信號(hào)采集、通道、水平、觸發(fā)、參數(shù)測量以及時(shí)鐘同

15、步六個(gè)子系統(tǒng),在開發(fā)過程中,無論哪個(gè)階段我們都是按照這六個(gè)子系統(tǒng)分別進(jìn)行開發(fā),這是IVI驅(qū)動(dòng)器在橫向上的模塊化體現(xiàn),而在縱向上,IVI驅(qū)動(dòng)器的體系結(jié)構(gòu)從底層的VISA接口庫到上層的測試軟件也是模塊化的結(jié)構(gòu),這種多重模塊化的結(jié)構(gòu)正是IVI規(guī)范的一大特點(diǎn),既簡化了整個(gè)系統(tǒng)的復(fù)雜性也大大降低開發(fā)難度。屬性列表中每一個(gè)屬性代表一種可以配置的儀器設(shè)置或參數(shù),屬性的編輯對(duì)象主要包括數(shù)據(jù)類型、屬性范圍表、默認(rèn)值、屬性描述、回調(diào)函數(shù)選擇、屬性標(biāo)志以及屬性無效列表等,其中屬性范圍表和屬性無效列表的設(shè)置是重點(diǎn)和難點(diǎn),屬性范圍表決定了屬性的取值范圍和數(shù)值類型,是范圍檢查和強(qiáng)制設(shè)定回調(diào)函數(shù)的依據(jù),也是讀、寫回調(diào)函數(shù)進(jìn)行數(shù)值和命令字符串轉(zhuǎn)化的依據(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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論