虛擬儀器技術-虛擬儀器基礎實驗課件_第1頁
虛擬儀器技術-虛擬儀器基礎實驗課件_第2頁
虛擬儀器技術-虛擬儀器基礎實驗課件_第3頁
虛擬儀器技術-虛擬儀器基礎實驗課件_第4頁
虛擬儀器技術-虛擬儀器基礎實驗課件_第5頁
已閱讀5頁,還剩145頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

8、儀器驅動器設計

8.1虛擬儀器軟件結構VISA8.2VPP儀器驅動程序8.3基于lVl規范的互換型驅動器8.4VPP儀器驅動程序設計8.5LabVIEW儀器驅動程序

8、儀器驅動器設計8.1虛擬儀器軟件結構VISA8.1虛擬儀器軟件結構VISA

VISA的基本概念1、什么是VISAVISA是虛擬儀器軟件結構(VirtualInstrumentSoftwareArchitectuere)的簡稱,是由VXIplug&play系統聯盟所統一制定的I/O接口軟件標準及其相關規范的總稱。一般稱這個I/O函數庫為VISA庫(用于儀器編程的標準I/O函數庫)。VISA函數庫駐留于計算機系統中,是計算機與儀器之間的標準軟件通信接口,用以實現對儀器的控制。8.1虛擬儀器軟件結構VISAVISA的基本概念VISA的結構模型圖VISA采用這種金字塔型的結構模型,為各種虛擬儀器系統軟件提供了一個形式統一的I/O操作函數庫,VISA將不同廠商的儀器軟件統一于同一平臺。VISA的結構模型圖2、為什么要使用VISA

VISA的內部結構是一個先進的面向對象的結構,這一結構使得VISA與在它之前的I/O控制軟件相比,接口無關性有很大提高。VISA的可擴展性使它遠遠超出了一般I/O控制軟件的范疇,而且由于VISA內部結構的靈活性,使得VISA在功能和靈活性上也超過了其它I/O控制庫。盡管VISA的API函數卻比其它具有類似功能的I/O庫少得多,因此,VISA很容易被初學者掌握。另外,VISA高度的可訪問性和可配置性又使得熟練的用戶可以利用VISA的許多獨有特性,使得VISA的應用范圍大大超過了傳統的I/O軟件。VISA不僅為將來的儀器編程提供了許多新特性,而且兼容過去已有的儀器軟件。總之,VISA具有與儀器硬件接口無關的特性,是理想的儀器I/O軟件。2、為什么要使用VISA3、VISA的特點1)VISA的I/O控制功能適用于各種儀器類型2)VISA的I/O控制功能適用于各種儀器硬件接口方式3)VISA的I/O控制功能適用于多種計算機平臺4)VISA能適應未來發展的需要4、VISA的發展現狀VISA規范是VPP規范的核心內容,其中《VPP4.3:VISA庫》規定了VISA庫的函數名、參數定義及返回代碼等。《VPP4.3.2:文本語言的VISA實現規范》和《VPP4.3.3:圖形語言的VISA實現規范》分別對文本語言(C/C++和VisualBasic)和圖形語言(LabVIEW)實現VISA時的VISA數據類型與各種語言特定數據類型的對應關系、返回代碼、常量等進行了定義。3、VISA的特點VISA的組成原理1、VISA的內部結構VISA的內部結構簡化圖VISA的組成原理1)資源管理器VISA資源管理器是用于管理所有資源的一種系統資源(控制設備資源),執行管理、控制和分配VISA資源的操作。2)資源VISA的資源類概念類似于面向對象程序設計方法中類的概念,它是一個實例的外觀和行為的描述,是一種抽象化的設備特點的功能描述,是對資源精確描述的專用術語。3)會話(連接)。會話(Sessions)是指與任何已存在資源的連接,包括默認資源管理器的連接。1)資源管理器2、VISA資源描述1)資源描述格式2、VISA資源描述2)資源類型定義

2)資源類型定義3)VISA的資源結構3)VISA的資源結構4)VISA機制需要用到VISA的3種機制:屬性機制、鎖定機制和事件機制。以寫資源為例,3種機制的作用如圖4)VISA機制(1)屬性機制屬性機制用來控制資源的各種屬性,這些屬性分為兩種:只讀屬性和可讀可寫屬性。(2)鎖定機制鎖定機制可以設置通道對資源的訪問模式。應用程序能同時對資源開辟多個通道,并能通過不同的通道對資源進行訪問。(3)事件處理機制VISA中還定義了一種常見的機制提醒應用程序注意某種特殊情況,這些特殊情況成為事件。有了事件就可以使VISA的資源和它的應用程序之間傳遞消息。應用程序有兩種不同的方式獲得事件通知,它們分別是:隊列機制和回調機制。(1)屬性機制VISA編程及應用實例1、VISA編程概要在VISA編程過程中,面向儀器的所有操作都必須首先進行打開VISA資源通信通道(Session)的操作。用戶可以打開兩種類型的通信通道:資源管理器通信通道(ResourceManagerSession)和器件通信通道(DeviceSession)。2、應用實例本節通過分別調用非VISA的I/O接口軟件庫與VISA庫函數,對GPIB器件與VXI消息基器件進行簡單的讀/寫操作(向器件發送查詢器件標識符命令,并從器件讀回響應值),從而進行VISA與其他I/O接口軟件的異同點比較。VISA編程及應用實例【實例1】用非VISA與其他I/O接口軟件庫(NI公司的NI-488)實現GPIB儀器的讀/寫操作【實例1】用非VISA與其他I/O接口軟件庫(N【實例2】用非VISA的I/O接口軟件庫(NI公司的NI-VXI)實現對VXI消息基儀器的讀/寫操作。【實例2】用非VISA的I/O接口軟件庫(NI公【實例3】用VISA的I/O接口軟件庫實現對GPIB儀器與VXI消息的讀/寫操作【實例3】用VISA的I/O接口軟件庫實現對GP【實例4】對于用戶來說,只需了解VISA函數的格式與參數就可以編寫儀器的驅動程序,而不必關心VISA庫與儀器如何溝通的細節。對VISA函數的調用一般可以分為聲明、開啟、器件I/O和關閉4部分,下面以一段簡單的C語言程序為例進行說明。該程序是由計算機向一臺GPIB器件發出“*IDN?”的IEEE-488.2公用命令,并從該器件回讀其響應字符串。【實例4】對于用戶來說,只需了解VISA函數VISA在LabVIEW中的實現1.VISA子模板簡介VISA功能模塊位于InstrumentI/O→VISA→VISAAdvanced子模板中如圖。

VISA在LabVIEW中的實現2.VISA總線系統軟件設計VISA子模板中各個函數的端口圖和功能如表

2.VISA總線系統軟件設計VISA高級選項子模板中部分函數及子函數的簡單介紹VISA高級選項子模板中部分函數及子函數的簡單介紹3.VISA屬性節點LabVIEW提供了VISA屬性節點(位于VISAAdvanced子模板),在程序中通過屬性節點可讀取設置VISA資源的屬性值。VISA屬性節點如圖將VISA屬性節點放到流程圖上以后,可設置VISA屬性。設置屬性有兩種方法:(1)把VISA會話通道連接到屬性節點的reference輸入端子,VISA就會變成與這個會話相關聯的類。3.VISA屬性節點(2)在屬性節點彈出選單,選擇SelectClass→VISA→I/OSession選項,如圖8-7所示,在此選項的下列選單包含各種不同的VISA類,選擇VISA類后進行屬性設置。(2)在屬性節點彈出選單,選擇SelectClass4.實例【例8-1】VISA鎖定機制的運用VISA鎖定機制允許優先通過獨立的操作訪問資源。前面板及流程圖程序設計4.實例【例8-2】VISA屬性應用實例:串口寫和讀。VISA屬性應用.vi框圖程序如圖所示。該VI打開一個與串口COM1的會話通道,通過屬性節點對串口初始化為19200波特,8位數據位,1位停止位,無奇偶校驗位。而后將一個字符串寫入writebuffer端口,經10s延時后,通過VISA的另一個屬性端子BytesatPort返回從串口設備讀取的字節數,這些字節在VISARead模塊的readbuffer端口獲取。通信結束由VISAClose模塊關閉與串口的會話連接。【例8-2】VISA屬性應用實例:串口寫和讀。VISA屬性應用.VI框圖程序VISA屬性應用.VI框圖程序8.2VPP儀器驅動程序儀器驅動器概述1、儀器驅動器的由來1)問題的提出2)標準儀器命令集的控制方式3)儀器驅動器的控制方式總之,在虛擬儀器系統中,驅動程序起著非常重要的作用,它將儀器硬件和計算機有機地組合成為一個儀器系統,完整地實現虛擬儀器內部的數據采集、分析處理、顯示輸出的全部功能。隨著儀器硬件,計算機和軟件的復雜性越來越高,驅動程序的重要性與價值已經越來越被人們所重視。8.2VPP儀器驅動程序儀器驅動器概述2、關于驅動器的基本概念儀器驅動程序是完成對某一特定儀器的控制與通信的軟件程序集合。它負責處理與某一專門儀器通信和控制的具體過程,將底層的復雜的硬件操作隱蔽起來,通過封裝復雜的儀器編程細節,為了使用戶使用儀器提供了簡單的函數調用接口。儀器驅動程序是連接上層應用軟件與底層輸入/輸出軟件的紐帶和橋梁。每個儀器模塊均由自己的驅動程序,并且儀器廠商將其原碼以動態鏈接庫(DLL)的形式提供給用戶。2、關于驅動器的基本概念3、VPP儀器驅動器的特點(1)儀器驅動程序一般由儀器供應廠家提供(2)所有儀器驅動程序必須提供程序源代碼,而不是只提供可調用的函數(3)儀器驅動程序結構的模塊化與層次化(4)儀器驅動程序設計與實現的一致性(5)儀器驅動程序的兼容性與開放性3、VPP儀器驅動器的特點VPP儀器驅動器的結構模型1、儀器驅動器外部接口模型外部接口模型分為以下5個部分,如圖VPP儀器驅動器的結構模型(1)函數體。它是儀器驅動程序的主體,為儀器驅動程序的實際源代碼。(2)交互式開發接口。它提供了一個圖形化的功能面板,用戶可以在這個圖形接口上實施各種控制,改變每一功能調用的參數值。(3)編程開發者接口。它是應用程序調用驅動程序的軟件接口,通過此接口可方便地調用儀器驅動程序中所定義的所有功能函數。(4)VISAI/O接口。它通過本接口調用VISA這一標準的I/O接口程序庫,提供了儀器驅動器與儀器硬件的通信能力。(5)子程序接口。它使得儀器驅動器在運行時能調用其它所需要的軟件模塊(如數據庫、FFT等),而提供的軟件接口。(1)函數體。它是儀器驅動程序的主體,為儀器驅動程序的實際源2、儀器驅動程序內部設計模型儀器驅動器的第二個模型是內部設計模型2、儀器驅動程序內部設計模型儀器驅動程序函數體由兩大部分組成:第一部分是一組部件函數,它們是一些控制儀器特定功能的軟件模塊;第二部分是一組應用函數,它們使用一些部件函數共同實現完整的測試和測量操作。1)部件函數(1)初始化函數(2)配置函數(3)激活/狀態函數(4)數據函數(5)實用函數(6)關閉函數儀器驅動程序函數體由兩大部分組成:第一部分是一2)應用函數應用函數是以源代碼形式提供的一種面向測試任務的高級編程函數。通常情況下,應用函數通過設置、啟動、從儀器讀取測量數據等動作來完成一次完整的測試操作。根據測試任務的不同,將虛擬儀器粗分為3種類型:即測量儀器、源儀器及開關儀器。它們分別完成測量任務、源激勵任務及開關選通任務。在VPP系統儀器驅動程序規范中,將配置函數、動作/狀態函數及數據函數統稱為功能類別函數,對應以上的3種儀器類型,分別定義了3種功能類別函數的結構,即測量類函數、源類函數及開關類函數。2)應用函數儀器驅動程序函數簡介1、通用函數(1)初始化函數建立驅動程序與儀器的通信聯系。VPP規范對參數返回的狀態值作了規定儀器驅動程序函數簡介(2)復位函數將儀器置為默認狀態(3)自檢函數對儀器進行自檢。(4)錯誤查詢函數。完成儀器錯誤的查詢。(5)錯誤消息函數將錯誤代碼轉換為錯誤消息。(6)版本查詢函數對儀器驅動程序的版本與固有版本進行查詢。(7)關閉函數終止軟件與儀器的通信聯系,并釋放系統資源。(2)復位函數將儀器置為默認狀態2、特定函數1)測量類功能類別函數。2)源類功能類別函數。3)開關類功能類別函數。2、特定函數儀器驅動程序功能面板1、功能面板的結構功能面板文件最小樹結構儀器驅動程序功能面板2、功能面板的部件函數

功能面板樹結構2、功能面板的部件函數在功能面板中,每一個層次的部件都必須包括各自的幫助文檔,幫助文檔可分為如下5部分:(1)功能面板幫助文檔對應于儀器節點,描述了整個儀器的功能及功能面板所含的類節點與函數節點概念。(2)功能類幫助文檔對應于類節點,描述了類的功能與類所含的函數節點概述。(3)功能函數幫助文檔對應于函數節點,描述了功能函數的功能。(4)控件幫助文檔對應于函數的輸入、輸出函數,分別描述各自的意義、默認值與注意點。(5)控件幫助文檔對應于函數的返回狀態值,包括了正確返回值與各種錯誤返回值代碼的含義。在功能面板中,每一個層次的部件都必須包括各自8.3基于lVl規范的互換型驅動器8.3.1IVI概述1、IVI的基本概念

VPP儀器驅動器與特定儀器密切相關,更換不同廠家或同一廠家不同型號的儀器時,不僅要更換儀器驅動器而且要修改測試程序,針對VPP規范的缺點,為了進一步提高儀器驅動程序的規范化和標準化,充分實現儀器的互換性和互操作性,制定了IVI規范。

8.3基于lVl規范的互換型驅動器8.3.1IVI概述2、IVI驅動器的特點1)優點和VPP驅動器相比,IVI儀器驅動器的優點主要有:(1)儀器級可互換。(2)采用了基于狀態存儲機制的程序結構。(3)儀器仿真。(4)具有多線程安全性。(5)具有范圍檢查、狀態儲存及其他的調試和開發功能。2、IVI驅動器的特點2)缺點

對于面向儀器互換的虛擬儀器設計目標,目前IVI模型的主要缺點體現在以下方面:(1)只適合同類儀器的互換,不能實現不同類儀器或某些多類功能的綜合性儀器之間的互換。(2)IVI類驅動器只能統一某類儀器中大部分儀器功能,其他功能只能通過專用驅動器來實現。(3)可用標準較少。目前只完成了示波器、萬用表、函數發生器、多路形狀等部分儀器的類驅動器的標準化。(4)標準開放程度低。IVI模型只適合于通用儀器,如萬用表等,而對某些專用儀器(如數據采集卡)不適用。2)缺點8.3.2IVI驅動器的類型1、IVI驅動器的類型IVI驅動器的類型

8.3.2IVI驅動器的類型IVI驅動器的類型IVI驅動器類型具體介紹如下:1)IVI儀器驅動器2)IVI特定驅動器3)IVI類兼容特定驅動器4)IVI定制特定驅動器5)IVI類驅動器IVI驅動器類型具體介紹如下:2、IVI驅動器的功能1)IVI固有功能(InherendCapabilities)2)基本類功能(BassSlassCapabilities)3)VI類擴展功能(ClassExtensionCapabilities)4)儀器專用功能(InstrumentSpecificCapabilities)2、IVI驅動器的功能3、IVI驅動程序的體系結構基于IVI規范的驅動程序體系結構

3、IVI驅動程序的體系結構基于IVI規范的驅動程序體系結通過類驅動程序間接調用方式,是IVI驅動器的特色。多用表類的IVI驅動器的結構如下圖所示。

多用表類的IVI驅動器的結構

通過類驅動程序間接調用方式,是IVI驅動器的4、IVI驅動器的結構框架IVI儀器驅動器的結構框架如下圖所示

IVI儀器驅動器的結構框架

4、IVI驅動器的結構框架IVI儀器驅動器的結構框架8.3.3IVI函數庫IVI函數庫包括以下內容:①儀器通信資源管理,包括資源的創建、鎖定、解鎖和釋放;②儀器通信管理;③添加儀器屬性;④添加儀器屬性的回調函數;⑤設置、獲取和檢查儀器的屬性;⑥屬性的狀態緩存和狀態檢測;⑦范圍表管理,包括創建、查找、更改和強制取值;⑧錯誤報告和錯誤獲取;⑨內存分配和配置信息的設置和獲取;⑩通信資源的內存分配和釋放。

8.3.3IVI函數庫IVI函數庫功能強大,應用復雜。下面將介紹其中的主要功能和使用方法。1、儀器通信資源管理

名稱屬性定義常量默認值含義RangeCheckIVI_ATTR_RANGE_CHECKVI_TRUE范圍檢測QueryInstrStatueIVI_ATTR_QUERY_INSTR_STATUSVI_TRUE狀態檢測CacheIVI_ATTR_CACHEV-_TRUE狀態緩存SimulateIVI_ATTR_SIMULATEVI_FALSE儀器仿真RecordCoercionsIVI_ATTR_RECORD_COERCIONSVI_FALSE強制賦值記錄DriverSetupIVI_ATTR_DRIVER_SETUP

驅動器啟動儀器驅動器的初始化信息

IVI函數庫功能強大,應用復雜。下面將介紹其中2、屬性的創建和刪除值標志名含義0x0001IVI_VAL_NOT_SUPPORTED驅動器不支持該屬性0x0002IVI_VAL_NOT_READABLE儀器驅動器和使用者對該屬性不可讀0x0004IVI_VAL_NOT_WRITABLE儀器驅動器和使用者對該屬性不可寫0x0008IVI_VAL_NOT_USER_READABLE使用者對該屬性不可寫0x0010IVI_VAL_NOT_USER_WRITABLE使用者對該屬性不可讀0x0020IVI_VAL_NEVER_CACHE禁止使用緩沖區內的值0x0040IVI_VAL_ALWAYS_CACHE使用緩存器內的值0x0080IVI_VAL_NO_DEFERRED_UPDATE不推遲屬性的更新0x0100IVI_VAL_DONT_RETURN_DEFETTED_VALUE不返回推遲更新屬性的值0x0200IVI_VAL_FLUSH_ON_WRITE更新屬性值后是否向I/O回調函數發送IVI_MSG_FLUSH消息0x0400IVI_VAL_MULTI_CHANNEL是否每個通道都具有單獨的屬性0x0800IVI_VAL_COERCEABLE_ONLY_BY_INSTR是否只由儀器給出屬性強制賦值0x1000IVI_VAL_WAIT_FOR_OPC_BEFORE_READS在調用讀回調函數前是否調用操作完畢回調函數0x2000IVI_VAL_WAIT_FOR_OPC_AFTER_WRITES在調用寫回調函數后是否調用操作完畢回調函數0x4000IVI_VAL_USE_CALLBACK_FOR_SIMULATION在仿真模式下是否使用回調函數0x8000IVI_VAL_DONT_CHECK_STATUS是否檢查狀態參數flags設置含義

2、屬性的創建和刪除值標志名含義0x0001IVI_VAL3、獲取、設置和檢查屬性及屬性的回調函數回調函數包括:①讀回調函數;②寫回調函數;③范圍檢查回調函數;④強制賦值回調函數;⑤比較緩存值回調函數;⑥范圍表回調函數;

4、屬性的范圍表

3、獲取、設置和檢查屬性及屬性的回調函數8.3.4IVI特定驅動程序的開發1、開發的基本步驟

下面結合實例說明在LabWindows/CVI環境下開發IVI驅動程序的基本步驟。1)用IVI提供的CreateIVIInstrumentDriver工具,生成符合IVI規范的程序框架,創建基本的儀器驅動程序文件(包括源文件、頭文件和函數面板文件)。2)分析驅動程序的組成文件和源代碼,根據自己開發的儀器功能,刪除不用的擴展代碼,添加自己的函數和代碼。3、對獨立屬性實現屬性回調函數。4、明確屬性的無效值,IVI引擎是用一套相對直觀的機制來保持狀態存儲的完整性。5、編寫應用程序對IVI驅動程序的各函數進行測試,以保證正確性。8.3.4IVI特定驅動程序的開發2、開發實例下面是IVI.INI文件的一個例子,它分為虛擬儀器、儀器驅動器、硬件設置三部分。如果要將Fluke-45DMM換成HP34401DMM,只要將IVI.INI中相關內容換成HP34401的信息即可。

[IviLogicalNames]DMM1=”Vistr→F145”[ClassDriver→IviDmm]Description=”IVIDigitalMultimeter類驅動程序”

SimulationVInstr=”VIstr→NISimDmm”[VIstr→F45]Description=”Fluke45DigitalMultimeter”Driver=”Driver→F45”2、開發實例Hardware=”Hardware→F45”RangeCheck=TrueSimulate=TrueUseSpecificSimulation=TrueTrace=TrueInterchangeCheck=TrueQueryStatus=TrueChannelNames=”ch1”Defaultsetup=””[Driver→F45]Description=”Fluke45DigitalMultimeterInstrumentDriver”ModulePath=”c:\cvi50\instr\F145_32.dll”Prefix=”FL145”Interface=”GPIB”[Hardware→F145]Description=””ResourceDesc=”GPIB::2::INSTR”IdString=”FLUKE,4,4940191,1.6D1.0.”DefaultDriver=”Driver→F145”Hardware=”Hardware→F45”8.4VPP儀器驅動程序設計

8.4.1VPP儀器驅動程序設計概要1、設計的基本要求VPP驅動程序的設計要求如下:(1)儀器驅動程序都提供程序源代碼,使用戶可以根據自己的需要理解、修改與優化儀器驅動程序。(2)儀器驅動程序的結構一定要模塊化,能夠提供多級功能訪問,以便用戶能使用各個驅動器的子功能集。(3)儀器驅動程序的設計和實現形式必須一致,以使用戶在了解某一驅動程序的設計方法后,就能使用其他的驅動程序。

8.4VPP儀器驅動程序設計8.4.1VPP儀器驅動程2、設計方法概述VPP儀器驅動程序的設計應按照一定步驟進行。下面介紹設計的一般方法(1)應確定需要研制的儀器模塊的類型,確定其屬于VXI儀器還是串行接口儀器,是屬于消息基器件、寄存器基器件還是存儲器基器件。(2)應確定儀器模塊的應用目標及功能指標。(3)在基本清楚了設計目標之后,應選擇虛擬儀器系統的系統框架,確定模塊設計的軟、硬件環境。(4)應選擇一個可作參考的現有的VPP儀器驅動程序,盡量在現有的儀器驅動程序基礎上進行設計,不必從頭開始進行重復性勞動。

2、設計方法概述(5)在對應參考模塊的研究基礎上,確定儀器驅動程序應包括的功能函數,也即儀器驅動程序的內部設計模型。(6)在實際源程序的編寫中,還需加入各種異常處理。(7)在圖形化平臺上運行與調試儀器驅動程序。(8)編寫儀器驅動程序相關文檔,包括Windows格式的幫助文件、知識庫文件以及VisualBasic函數原型文件等,并應提供自動安裝程序。(5)在對應參考模塊的研究基礎上,確定儀器驅動程序應包括的功3、設計內容在前面關于儀器驅動器的介紹中可知,儀器驅動程序包括以下幾個部分:操作接口提供了一個虛擬儀器面板,用戶通過對該面板的控制完成對儀器的操作;編程接口能將虛擬儀器面板的操作轉換成相應的儀器代碼,以實現對儀器驅動器的功能調用;I/O接口提供了儀器驅動器與儀器通信能力;功能庫描述了儀器驅動器所能完成的測試功能;子程序接口使得儀器驅動器在運行時能調用它所需要的軟件模塊。1)儀器驅動器的開發工具。2)儀器驅動器的設計模型。(1)外部設計模型圖。(2)內部設計模型圖。3)儀器驅動程序開發和編輯的工具。3、設計內容4、設計步驟

典型LabVIEW儀器驅動器的設計步驟大致可以分為以下三步:一是設計儀器驅動器的結構層次;二是設計儀器驅動器的功能體;三是按外部設計模型設計接口程序。1)儀器驅動器結構層次的設計。2)儀器驅動器功能體程序設計。3)儀器驅動器功能體接口程序設計。4、設計步驟8.4.2VPP儀器驅動程序的設計實例1.設計要求及步驟

對儀器驅動器的基本要求是:(1)模塊化和層次化;(2)源代碼;(3)廣泛的可訪問性。

開發用于WIN框架的LabWindows/CVI儀器驅動器必須遵循的步驟如下:(1)熟悉儀器和獲得實際操作經驗(2)研究儀器手冊中的編程命令及GPIB庫(3)生成儀器驅動程序8.4.2VPP儀器驅動程序的設計實例2.設計實例

本設計基于LabWindows/CVI開發平臺,以HP34410數字多用表為例簡要說明其儀器驅動程序設計,設計步驟如下:①創建FP文件,編輯函數面板和類節點名稱;②編輯函數面板控件與變量定義;③生成代碼;④編寫幫助文檔;⑤編譯。

2.設計實例1)儀器HP34410數字多用表驅動程序設計

打開指定設備回話函HP34410A_OpenInstrumentDirectly()的程序流程圖如圖所示函數HP34401A_OpenInstrumentDirectly()程序流程圖

1)儀器HP34410數字多用表驅動程序設計函數HP344

查找和打開設備回話函數HP34401A_OpenInstrumentFormAddress()的程序流程圖如下圖所示。

函數HP34401A_OpenInstrumentFormAddress()程序流程圖

查找和打開設備回話函數HP34401A_OpenInstr驅動程序HP34401A.c源代碼例程如下:#include<userint.h>#include"ATEhp34401a.h"#include<formatio.h>#include<ansi_c.h>#defineON1#defineOFF0charHP34401AChanState=OFF;/*函數聲明*/ViStatusHP34401AWrite(ViSessioninstr,char*TempChar,ViUInt32Count,ViPUInt32ReturnCount);ViStatusHP34401ARead(ViSessioninstr,char*TempChar,ViUInt32Count,ViPUInt32ReturnCount);/*****1.為指定儀器打開一個會話(需提供指定儀器的GPIB卡號和GPIB初始地址)********///defaultRM為輸入參數,代表資源管理器會話;//PrimaryAddress為儀器初始地址;GPIBBoardNum為儀器的GPIB卡號//InstrumentHandle為輸出參數,代表返回的儀器句柄ViStatus_VI_FUNCHP34410A_OpenInstrumentDirectly(ViSessiondefaultRM,intPrimaryAddress,ViPSessionInstrumentHandle,char*GPIBBoardNum){ ViStatusReturnVal=-1; inti; ViCharInstrDescriptor[260];驅動程序HP34401A.c源代碼例程如下:ViSessionTempInstr; charTempChar[50]; *InstrumentHandle=VI_NULL; Fmt(TempChar,"%s<%s%s%d%s",GPIBBoardNum,"::",PrimaryAddress,"::INSTR");//把儀器的GPIB板號、GPIB初始地址等參數轉換成字符串,存放在變量TempChar ReturnVal=viOpen(defaultRM,TempChar,VI_NULL,VI_NULL,&TempInstr);//打開指定GPIB板上,指定初始地址的儀器會話,TempInstr為返回的會話 if(ReturnVal!=VI_SUCCESS) returnReturnVal; *InstrumentHandle=TempInstr; HP34401AChanState=ON;//打開通信通道 ReturnVal=HP34401A_Init(*InstrumentHandle); if(ReturnVal!=VI_SUCCESS) {viClose(*InstrumentHandle); *InstrumentHandle=VI_NULL; ReturnVal=-1; } returnReturnVal;}ViSessionTempInstr;VI_SUCCESS)//成功打開相匹配設備中第一個設備的回話 { if(viGetAttriute(TempInstr,VI_ATTR_GPIB_PRIMARY_ADDR,&TempPrimaryAddress)==VI_SUCCESS)//檢測指定會話的屬性狀態(初始地址),并成功找到 if(TempPrimaryAddress==PrimaryAddress) {*InstrumentHandle=TempInstr; HP34401AChanState=ON; ReturnVal=HP34401A_Init(*InstrumentHandle); ReturnVal=0; } } if(ReturnVal!=0)//打開第一個設備會話沒有成功 {for(i=2;i<=TheInstrMached;i++)//繼續查找,直到查完所有相匹配的設備 {if(viFindNext(FindList,InstrDescriptor)==VI_SUCCESS)//查找下一個設備 { if(viOpen(defaultRM,InstrDescriptor,VI_NULL,VI_NULL,&TempInstr)==VI_SUCCESS) { if(viGetAttriute(TempInstr,VI_ATTR_GPIB_PRIMARY_ADDR,&TempPrimaryAddress)==VI_SUCCESS)//成功打開相匹配設備中第一個設備的回2)儀器HP34410數字多用表應用程序設計程序流程圖如下圖所示應用程序流程圖

2)儀器HP34410數字多用表應用程序設計應用程序流程圖主程序源代碼如下:#include<HP34401A.h>intmain(intargc,char*argv[]){ViSessiondefaultRM,viHP33401a;unsignedlongretcnt=0;floatResult;HP34410A_OpenInstrumentDirectly(defaultRM,15,&viHP33401a,0);//打開GPIB板號為0,GPIB初始地址為15的儀器回話HP34401A_Reset(viHP33401a);//復位HP34401A_Init(viHP33401a);//初始化儀器HP34401A_Mode(viHP33401a,0,10,0.001);//選擇測量直流電壓功能,測量量程范圍為10V,測量分辯率為精確到0.001HP34401AWrite(viHP33401a,“TRIG:COUN5”,11,&retcnt);//觸發次數5次HP34401AWrite(viHP33401a,“TRIG:SOURIMM”,13,&retcnt);//選擇內部觸發HP34401A_ReadData(viHP33401a,&Result);//讀取測量結果存放在變量Result中Printf(“%f”,Result);//打印輸出變量ResultHP34401A_Close(viHP33401a);//關閉儀器會話}主程序源代碼如下:8.5LabVIEW儀器驅動程序

8.5LabVIEW儀器驅動程序

儀器驅動程序應當安裝到LabVIEW/instr.lib的相應子目錄中。例如,LabVIEW內置的儀器驅動程序HP34401A被安裝在LabVIEW/instr.lib/hp34401a。在這個子目錄中可以找到構成驅動程序的選單文件和VI庫。安裝驅動程序后即可在Functions→InstrumentI/O的模板找到儀器驅動程序模板,如下圖所示。

儀器驅動程序應當安裝到LabVIEW/inst8.5.2驗證儀器驅動軟件

在LabVIEW安裝了儀器驅動程序后,用戶就可編寫自己的儀器應用程序了。從HP34401AMultiMeter子模板→ApplicationExamples選擇HP34401AGettingStarted.vi模塊,如下圖所示,

HP34401A儀器驅動程序模板

8.5.2驗證儀器驅動軟件HP34401A儀器驅動程序模前面板圖如下圖所示。

HP34401AGettingStarted.vi前面板

前面板圖如下圖所示。HP34401AGettingS框圖程序如下圖所示。框圖程序

框圖程序如下圖所示。框圖程序在框圖程序中使用了儀器初始化、應用實例和關閉子程序模塊。各子程序功能如下。(1)HP34401AInitialize子程序:該子程序用于與儀器建立通信并產生一個VISAsession標識字串。(2)HP34401AApplicationExample子程序:該程序完成儀器設置、觸發、測量等功能。(3)HP34401ACloseVI子程序:該程序關閉VISAsession進程。

在框圖程序中使用了儀器初始化、應用實例和關閉子8、儀器驅動器設計

8.1虛擬儀器軟件結構VISA8.2VPP儀器驅動程序8.3基于lVl規范的互換型驅動器8.4VPP儀器驅動程序設計8.5LabVIEW儀器驅動程序

8、儀器驅動器設計8.1虛擬儀器軟件結構VISA8.1虛擬儀器軟件結構VISA

VISA的基本概念1、什么是VISAVISA是虛擬儀器軟件結構(VirtualInstrumentSoftwareArchitectuere)的簡稱,是由VXIplug&play系統聯盟所統一制定的I/O接口軟件標準及其相關規范的總稱。一般稱這個I/O函數庫為VISA庫(用于儀器編程的標準I/O函數庫)。VISA函數庫駐留于計算機系統中,是計算機與儀器之間的標準軟件通信接口,用以實現對儀器的控制。8.1虛擬儀器軟件結構VISAVISA的基本概念VISA的結構模型圖VISA采用這種金字塔型的結構模型,為各種虛擬儀器系統軟件提供了一個形式統一的I/O操作函數庫,VISA將不同廠商的儀器軟件統一于同一平臺。VISA的結構模型圖2、為什么要使用VISA

VISA的內部結構是一個先進的面向對象的結構,這一結構使得VISA與在它之前的I/O控制軟件相比,接口無關性有很大提高。VISA的可擴展性使它遠遠超出了一般I/O控制軟件的范疇,而且由于VISA內部結構的靈活性,使得VISA在功能和靈活性上也超過了其它I/O控制庫。盡管VISA的API函數卻比其它具有類似功能的I/O庫少得多,因此,VISA很容易被初學者掌握。另外,VISA高度的可訪問性和可配置性又使得熟練的用戶可以利用VISA的許多獨有特性,使得VISA的應用范圍大大超過了傳統的I/O軟件。VISA不僅為將來的儀器編程提供了許多新特性,而且兼容過去已有的儀器軟件。總之,VISA具有與儀器硬件接口無關的特性,是理想的儀器I/O軟件。2、為什么要使用VISA3、VISA的特點1)VISA的I/O控制功能適用于各種儀器類型2)VISA的I/O控制功能適用于各種儀器硬件接口方式3)VISA的I/O控制功能適用于多種計算機平臺4)VISA能適應未來發展的需要4、VISA的發展現狀VISA規范是VPP規范的核心內容,其中《VPP4.3:VISA庫》規定了VISA庫的函數名、參數定義及返回代碼等。《VPP4.3.2:文本語言的VISA實現規范》和《VPP4.3.3:圖形語言的VISA實現規范》分別對文本語言(C/C++和VisualBasic)和圖形語言(LabVIEW)實現VISA時的VISA數據類型與各種語言特定數據類型的對應關系、返回代碼、常量等進行了定義。3、VISA的特點VISA的組成原理1、VISA的內部結構VISA的內部結構簡化圖VISA的組成原理1)資源管理器VISA資源管理器是用于管理所有資源的一種系統資源(控制設備資源),執行管理、控制和分配VISA資源的操作。2)資源VISA的資源類概念類似于面向對象程序設計方法中類的概念,它是一個實例的外觀和行為的描述,是一種抽象化的設備特點的功能描述,是對資源精確描述的專用術語。3)會話(連接)。會話(Sessions)是指與任何已存在資源的連接,包括默認資源管理器的連接。1)資源管理器2、VISA資源描述1)資源描述格式2、VISA資源描述2)資源類型定義

2)資源類型定義3)VISA的資源結構3)VISA的資源結構4)VISA機制需要用到VISA的3種機制:屬性機制、鎖定機制和事件機制。以寫資源為例,3種機制的作用如圖4)VISA機制(1)屬性機制屬性機制用來控制資源的各種屬性,這些屬性分為兩種:只讀屬性和可讀可寫屬性。(2)鎖定機制鎖定機制可以設置通道對資源的訪問模式。應用程序能同時對資源開辟多個通道,并能通過不同的通道對資源進行訪問。(3)事件處理機制VISA中還定義了一種常見的機制提醒應用程序注意某種特殊情況,這些特殊情況成為事件。有了事件就可以使VISA的資源和它的應用程序之間傳遞消息。應用程序有兩種不同的方式獲得事件通知,它們分別是:隊列機制和回調機制。(1)屬性機制VISA編程及應用實例1、VISA編程概要在VISA編程過程中,面向儀器的所有操作都必須首先進行打開VISA資源通信通道(Session)的操作。用戶可以打開兩種類型的通信通道:資源管理器通信通道(ResourceManagerSession)和器件通信通道(DeviceSession)。2、應用實例本節通過分別調用非VISA的I/O接口軟件庫與VISA庫函數,對GPIB器件與VXI消息基器件進行簡單的讀/寫操作(向器件發送查詢器件標識符命令,并從器件讀回響應值),從而進行VISA與其他I/O接口軟件的異同點比較。VISA編程及應用實例【實例1】用非VISA與其他I/O接口軟件庫(NI公司的NI-488)實現GPIB儀器的讀/寫操作【實例1】用非VISA與其他I/O接口軟件庫(N【實例2】用非VISA的I/O接口軟件庫(NI公司的NI-VXI)實現對VXI消息基儀器的讀/寫操作。【實例2】用非VISA的I/O接口軟件庫(NI公【實例3】用VISA的I/O接口軟件庫實現對GPIB儀器與VXI消息的讀/寫操作【實例3】用VISA的I/O接口軟件庫實現對GP【實例4】對于用戶來說,只需了解VISA函數的格式與參數就可以編寫儀器的驅動程序,而不必關心VISA庫與儀器如何溝通的細節。對VISA函數的調用一般可以分為聲明、開啟、器件I/O和關閉4部分,下面以一段簡單的C語言程序為例進行說明。該程序是由計算機向一臺GPIB器件發出“*IDN?”的IEEE-488.2公用命令,并從該器件回讀其響應字符串。【實例4】對于用戶來說,只需了解VISA函數VISA在LabVIEW中的實現1.VISA子模板簡介VISA功能模塊位于InstrumentI/O→VISA→VISAAdvanced子模板中如圖。

VISA在LabVIEW中的實現2.VISA總線系統軟件設計VISA子模板中各個函數的端口圖和功能如表

2.VISA總線系統軟件設計VISA高級選項子模板中部分函數及子函數的簡單介紹VISA高級選項子模板中部分函數及子函數的簡單介紹3.VISA屬性節點LabVIEW提供了VISA屬性節點(位于VISAAdvanced子模板),在程序中通過屬性節點可讀取設置VISA資源的屬性值。VISA屬性節點如圖將VISA屬性節點放到流程圖上以后,可設置VISA屬性。設置屬性有兩種方法:(1)把VISA會話通道連接到屬性節點的reference輸入端子,VISA就會變成與這個會話相關聯的類。3.VISA屬性節點(2)在屬性節點彈出選單,選擇SelectClass→VISA→I/OSession選項,如圖8-7所示,在此選項的下列選單包含各種不同的VISA類,選擇VISA類后進行屬性設置。(2)在屬性節點彈出選單,選擇SelectClass4.實例【例8-1】VISA鎖定機制的運用VISA鎖定機制允許優先通過獨立的操作訪問資源。前面板及流程圖程序設計4.實例【例8-2】VISA屬性應用實例:串口寫和讀。VISA屬性應用.vi框圖程序如圖所示。該VI打開一個與串口COM1的會話通道,通過屬性節點對串口初始化為19200波特,8位數據位,1位停止位,無奇偶校驗位。而后將一個字符串寫入writebuffer端口,經10s延時后,通過VISA的另一個屬性端子BytesatPort返回從串口設備讀取的字節數,這些字節在VISARead模塊的readbuffer端口獲取。通信結束由VISAClose模塊關閉與串口的會話連接。【例8-2】VISA屬性應用實例:串口寫和讀。VISA屬性應用.VI框圖程序VISA屬性應用.VI框圖程序8.2VPP儀器驅動程序儀器驅動器概述1、儀器驅動器的由來1)問題的提出2)標準儀器命令集的控制方式3)儀器驅動器的控制方式總之,在虛擬儀器系統中,驅動程序起著非常重要的作用,它將儀器硬件和計算機有機地組合成為一個儀器系統,完整地實現虛擬儀器內部的數據采集、分析處理、顯示輸出的全部功能。隨著儀器硬件,計算機和軟件的復雜性越來越高,驅動程序的重要性與價值已經越來越被人們所重視。8.2VPP儀器驅動程序儀器驅動器概述2、關于驅動器的基本概念儀器驅動程序是完成對某一特定儀器的控制與通信的軟件程序集合。它負責處理與某一專門儀器通信和控制的具體過程,將底層的復雜的硬件操作隱蔽起來,通過封裝復雜的儀器編程細節,為了使用戶使用儀器提供了簡單的函數調用接口。儀器驅動程序是連接上層應用軟件與底層輸入/輸出軟件的紐帶和橋梁。每個儀器模塊均由自己的驅動程序,并且儀器廠商將其原碼以動態鏈接庫(DLL)的形式提供給用戶。2、關于驅動器的基本概念3、VPP儀器驅動器的特點(1)儀器驅動程序一般由儀器供應廠家提供(2)所有儀器驅動程序必須提供程序源代碼,而不是只提供可調用的函數(3)儀器驅動程序結構的模塊化與層次化(4)儀器驅動程序設計與實現的一致性(5)儀器驅動程序的兼容性與開放性3、VPP儀器驅動器的特點VPP儀器驅動器的結構模型1、儀器驅動器外部接口模型外部接口模型分為以下5個部分,如圖VPP儀器驅動器的結構模型(1)函數體。它是儀器驅動程序的主體,為儀器驅動程序的實際源代碼。(2)交互式開發接口。它提供了一個圖形化的功能面板,用戶可以在這個圖形接口上實施各種控制,改變每一功能調用的參數值。(3)編程開發者接口。它是應用程序調用驅動程序的軟件接口,通過此接口可方便地調用儀器驅動程序中所定義的所有功能函數。(4)VISAI/O接口。它通過本接口調用VISA這一標準的I/O接口程序庫,提供了儀器驅動器與儀器硬件的通信能力。(5)子程序接口。它使得儀器驅動器在運行時能調用其它所需要的軟件模塊(如數據庫、FFT等),而提供的軟件接口。(1)函數體。它是儀器驅動程序的主體,為儀器驅動程序的實際源2、儀器驅動程序內部設計模型儀器驅動器的第二個模型是內部設計模型2、儀器驅動程序內部設計模型儀器驅動程序函數體由兩大部分組成:第一部分是一組部件函數,它們是一些控制儀器特定功能的軟件模塊;第二部分是一組應用函數,它們使用一些部件函數共同實現完整的測試和測量操作。1)部件函數(1)初始化函數(2)配置函數(3)激活/狀態函數(4)數據函數(5)實用函數(6)關閉函數儀器驅動程序函數體由兩大部分組成:第一部分是一2)應用函數應用函數是以源代碼形式提供的一種面向測試任務的高級編程函數。通常情況下,應用函數通過設置、啟動、從儀器讀取測量數據等動作來完成一次完整的測試操作。根據測試任務的不同,將虛擬儀器粗分為3種類型:即測量儀器、源儀器及開關儀器。它們分別完成測量任務、源激勵任務及開關選通任務。在VPP系統儀器驅動程序規范中,將配置函數、動作/狀態函數及數據函數統稱為功能類別函數,對應以上的3種儀器類型,分別定義了3種功能類別函數的結構,即測量類函數、源類函數及開關類函數。2)應用函數儀器驅動程序函數簡介1、通用函數(1)初始化函數建立驅動程序與儀器的通信聯系。VPP規范對參數返回的狀態值作了規定儀器驅動程序函數簡介(2)復位函數將儀器置為默認狀態(3)自檢函數對儀器進行自檢。(4)錯誤查詢函數。完成儀器錯誤的查詢。(5)錯誤消息函數將錯誤代碼轉換為錯誤消息。(6)版本查詢函數對儀器驅動程序的版本與固有版本進行查詢。(7)關閉函數終止軟件與儀器的通信聯系,并釋放系統資源。(2)復位函數將儀器置為默認狀態2、特定函數1)測量類功能類別函數。2)源類功能類別函數。3)開關類功能類別函數。2、特定函數儀器驅動程序功能面板1、功能面板的結構功能面板文件最小樹結構儀器驅動程序功能面板2、功能面板的部件函數

功能面板樹結構2、功能面板的部件函數在功能面板中,每一個層次的部件都必須包括各自的幫助文檔,幫助文檔可分為如下5部分:(1)功能面板幫助文檔對應于儀器節點,描述了整個儀器的功能及功能面板所含的類節點與函數節點概念。(2)功能類幫助文檔對應于類節點,描述了類的功能與類所含的函數節點概述。(3)功能函數幫助文檔對應于函數節點,描述了功能函數的功能。(4)控件幫助文檔對應于函數的輸入、輸出函數,分別描述各自的意義、默認值與注意點。(5)控件幫助文檔對應于函數的返回狀態值,包括了正確返回值與各種錯誤返回值代碼的含義。在功能面板中,每一個層次的部件都必須包括各自8.3基于lVl規范的互換型驅動器8.3.1IVI概述1、IVI的基本概念

VPP儀器驅動器與特定儀器密切相關,更換不同廠家或同一廠家不同型號的儀器時,不僅要更換儀器驅動器而且要修改測試程序,針對VPP規范的缺點,為了進一步提高儀器驅動程序的規范化和標準化,充分實現儀器的互換性和互操作性,制定了IVI規范。

8.3基于lVl規范的互換型驅動器8.3.1IVI概述2、IVI驅動器的特點1)優點和VPP驅動器相比,IVI儀器驅動器的優點主要有:(1)儀器級可互換。(2)采用了基于狀態存儲機制的程序結構。(3)儀器仿真。(4)具有多線程安全性。(5)具有范圍檢查、狀態儲存及其他的調試和開發功能。2、IVI驅動器的特點2)缺點

對于面向儀器互換的虛擬儀器設計目標,目前IVI模型的主要缺點體現在以下方面:(1)只適合同類儀器的互換,不能實現不同類儀器或某些多類功能的綜合性儀器之間的互換。(2)IVI類驅動器只能統一某類儀器中大部分儀器功能,其他功能只能通過專用驅動器來實現。(3)可用標準較少。目前只完成了示波器、萬用表、函數發生器、多路形狀等部分儀器的類驅動器的標準化。(4)標準開放程度低。IVI模型只適合于通用儀器,如萬用表等,而對某些專用儀器(如數據采集卡)不適用。2)缺點8.3.2IVI驅動器的類型1、IVI驅動器的類型IVI驅動器的類型

8.3.2IVI驅動器的類型IVI驅動器的類型IVI驅動器類型具體介紹如下:1)IVI儀器驅動器2)IVI特定驅動器3)IVI類兼容特定驅動器4)IVI定制特定驅動器5)IVI類驅動器IVI驅動器類型具體介紹如下:2、IVI驅動器的功能1)IVI固有功能(InherendCapabilities)2)基本類功能(BassSlassCapabilities)3)VI類擴展功能(ClassExtensionCapabilities)4)儀器專用功能(InstrumentSpecificCapabilities)2、IVI驅動器的功能3、IVI驅動程序的體系結構基于IVI規范的驅動程序體系結構

3、IVI驅動程序的體系結構基于IVI規范的驅動程序體系結通過類驅動程序間接調用方式,是IVI驅動器的特色。多用表類的IVI驅動器的結構如下圖所示。

多用表類的IVI驅動器的結構

通過類驅動程序間接調用方式,是IVI驅動器的4、IVI驅動器的結構框架IVI儀器驅動器的結構框架如下圖所示

IVI儀器驅動器的結構框架

4、IVI驅動器的結構框架IVI儀器驅動器的結構框架8.3.3IVI函數庫IVI函數庫包括以下內容:①儀器通信資源管理,包括資源的創建、鎖定、解鎖和釋放;②儀器通信管理;③添加儀器屬性;④添加儀器屬性的回調函數;⑤設置、獲取和檢查儀器的屬性;⑥屬性的狀態緩存和狀態檢測;⑦范圍表管理,包括創建、查找、更改和強制取值;⑧錯誤報告和錯誤獲取;⑨內存分配和配置信息的設置和獲取;⑩通信資源的內存分配和釋放。

8.3.3IVI函數庫IVI函數庫功能強大,應用復雜。下面將介紹其中的主要功能和使用方法。1、儀器通信資源管理

名稱屬性定義常量默認值含義RangeCheckIVI_ATTR_RANGE_CHECKVI_TRUE范圍檢測QueryInstrStatueIVI_ATTR_QUERY_INSTR_STATUSVI_TRUE狀態檢測CacheIVI_ATTR_CACHEV-_TRUE狀態緩存SimulateIVI_ATTR_SIMULATEVI_FALSE儀器仿真RecordCoercionsIVI_ATTR_RECORD_COERCIONSVI_FALSE強制賦值記錄DriverSetupIVI_ATTR_DRIVER_SETUP

驅動器啟動儀器驅動器的初始化信息

IVI函數庫功能強大,應用復雜。下面將介紹其中2、屬性的創建和刪除值標志名含義0x0001IVI_VAL_NOT_SUPPORTED驅動器不支持該屬性0x0002IVI_VAL_NOT_READABLE儀器驅動器和使用者對該屬性不可讀0x0004IVI_VAL_NOT_WRITABLE儀器驅動器和使用者對該屬性不可寫0x0008IVI_VAL_NOT_USER_READABLE使用者對該屬性不可寫0x0010IVI_VAL_NOT_USER_WRITABLE使用者對該屬性不可讀0x0020IVI_VAL_NEVER_CACHE禁止使用緩沖區內的值0x0040IVI_VAL_ALWAYS_CACHE使用緩存器內的值0x0080IVI_VAL_NO_DEFERRED_UPDATE不推遲屬性的更新0x0100IVI_VAL_DONT_RETURN_DEFETTED_VALUE不返回推遲更新屬性的值0x0200IVI_VAL_FLUSH_ON_WRITE更新屬性值后是否向I/O回調函數發送IVI_MSG_FLUSH消息0x0400IVI_VAL_MULTI_CHANNEL是否每個通道都具有單獨的屬性0x0800IVI_VAL_COERCEABLE_ONLY_BY_INSTR是否只由儀器給出屬性強制賦值0x1000IVI_VAL_WAIT_FOR_OPC_BEFORE_READS在調用讀回調函數前是否調用操作完畢回調函數0x2000IVI_VAL_WAIT_FOR_OPC_AFTER_WRITES在調用寫回調函數后是否調用操作完畢回調函數0x4000IVI_VAL_USE_CALLBACK_FOR_SIMULATION在仿真模式下是否使用回調函數0x8000IVI_VAL_DONT_CHECK_STATUS是否檢查狀態參數flags設置含義

2、屬性的創建和刪除值標志名含義0x0001IVI_VAL3、獲取、設置和檢查屬性及屬性的回調函數回調函數包括:①讀回調函數;②寫回調函數;③范圍檢查回調函數;④強制賦值回調函數;⑤比較緩存值回調函數;⑥范圍表回調函數;

4、屬性的范圍表

3、獲取、設置和檢查屬性及屬性的回調函數8.3.4IVI特定驅動程序的開發1、開發的基本步驟

下面結合實例說明在LabWindows/CVI環境下開發IVI驅動程序的基本步驟。1)用IVI提供的CreateIVIInstrumentDriver工具,生成符合IVI規范的程序框架,創建基本的儀器驅動程序文件(包括源文件、頭文件和函數面板文件)。2)分析驅動程序的組成文件和源代碼,根據自己開發的儀器功能,刪除不用的擴展代碼,添加自己的函數和代碼。3、對獨立屬性實現屬性回調函數。4、明確屬性的無效值,IVI引擎是用一套相對直觀的機制來保持狀態存儲的完整性。5、編寫應用程序對IVI驅動程序的各函數進行測試,以保證正確性。8.3.4IVI特定驅動程序的開發2、開發實例下面是IVI.INI文件的一個例子,它分為虛擬儀器、儀器驅動器、硬件設置三部分。如果要將Fluke-45DMM換成HP34401DMM,只要將IVI.INI中相關內容換成HP34401的信息即可。

[IviLogicalNames]DMM1=”Vistr→F145”[ClassDriver→IviDmm]Description=”IVIDigitalMultimeter類驅動程序”

SimulationVInstr=”VIstr→NISimDmm”[VIstr→F45]Description=”Fluke45DigitalMultimeter”Driver=”Driver→F45”2、開發實例Hardware=”Hardware→F45”RangeCheck=TrueSimulate=TrueUseSpecificSimulation=TrueTrace=TrueInterchangeCheck=TrueQueryStatus=TrueChannelNames=”ch1”Defaultsetup=””[Driver→F45]Description=”Fluke45DigitalMultimeterInstrumentDriver”ModulePath=”c:\cvi50\instr\F145_32.dll”Prefix=”FL145”Interface=”GPIB”[Hardware→F145]Description=””ResourceDesc=”GPIB::2::INSTR”IdString=”FLUKE,4,4940191,1.6D1.0.”DefaultDriver=”Driver→F145”Hardware=”Hardware→F45”8.4VPP儀器驅動程序設計

8.4.1VPP儀器驅動程序設計概要1、設計的基本要求VPP驅動程序的設計要求如下:(1)儀器驅動程序都提供程序源代碼,使用戶可以根據自己的需要理解、修改與優化儀器驅動程序。(2)儀器驅動程序的結構一定要模塊化,能夠提供多級功能訪問,以便用戶能使用各個驅動器的子功能集。(3)儀器驅動程序的設計和實現形式必須一致,以使用戶在了解某一驅動程序的設計方法后,就能使用其他的驅動程序。

8.4VPP儀器驅動程序設計8.4.1VPP儀器驅動程2、設計方法概述VPP儀器驅動程序的設計應按照一定步驟進行。下面介紹設計的一般方法(1)應確定需要研制的儀器模塊的類型,確定其屬于VXI儀器還是串行接口儀器,是屬于消息基器件、寄存器基器件還是存儲器基器件。(2)應確定儀器模塊的應用目標及功能指標。(3)在基本清楚了設計目標之后,應選擇虛擬儀器系統的系統框架,確定模塊設計的軟、硬件環境。(4)應選擇一個可作參考的現有的VPP儀器驅動程序,盡量在現有的儀器驅動程序基礎上進行設計,不必從頭開始進行重復性勞動。

2、設計方法概述(5)在對應參考模塊的研究基礎上,確定儀器驅動程序應包括的功能函數,也即儀器驅動程序的內部設計模型。(6)在實際源程序的編寫中,還需加入各種異常處理。(7)在圖形化平臺上運行與調試儀器驅動程序。(8)編寫儀器驅動程序相關文檔,包括Windows格式的幫助文件、知識庫文件以及VisualBasic函數原型文件等,并應提供自動安裝程序。(5)在對應參考模塊的研究基礎上,確定儀器驅動程序應包括的功3、設計內容在前面關于儀器驅動器的介紹中可知,儀器驅動程序包括以下幾個部分:操作接口提供了一個虛擬儀器面板,用戶通過對該面板的控制完成對儀器的操作;編程接口能將虛擬儀器面板的操作轉換成相應的儀器代碼,以實現對儀器驅動器的功能調用;I/O接口提供了儀器驅動器與儀器通信能力;功能庫描述了儀器驅動器所能完成的測試功能;子程序接口使得儀器驅動器在運行時能調用它所需要的軟件模塊。1)儀器驅動器的開發工具。2)儀器驅動器的設計模型。(1)外部設計模型圖。(2)內部設計模型圖。3)儀器驅動程序開發和編輯的工具。3、設計內容4、設計步驟

典型LabVIEW儀器驅動器的設計步驟大致可以分為以下三步:一是設計儀器驅動器的結構層次;二是設計儀器驅動器的功能體;三是按外部設計模型設計接口程序。1)儀器驅動器結構層次的設計。2)儀器驅動器功能體程序設計。3)儀器驅動器功能體接口程序設計。4、設計步驟8.4.2VPP儀器驅動程序的設計實例1.設計要求及步驟

對儀器驅動器的基本要求是:(1)模塊化和層次化;(2)源代碼;(3)廣泛的可訪問性。

開發用于WIN框架的LabWindows/CVI儀器驅動器必須遵循的步驟如下:(1)熟悉儀器和獲得實際操作經驗(2)研究儀器手冊中的編程命令及GPIB庫(3)生成儀器驅動程序8.4.2VPP儀器驅動程序的設計實例2.設計實例

本設計基于LabWindows/CVI開發平臺,以HP34410數字多用表為例簡要說明其儀器驅動程序設計,設計步驟如下:①創建FP文件,編輯函數面板和類節點名稱;②編輯函數面板控件與變量定義;③生成代碼;④編寫幫助文檔;⑤編譯。

2.設計實例1)儀器HP34410數字多用表驅動程序設計

打開指定設備回話函HP34410A_OpenInstrumentDirectly()的程序流程圖如圖所示函數HP34401A_OpenInstrumentDirectly()程序流程圖

1)儀器HP34410數字多用表驅動程序設計函數HP344

查找和打開設備回話函數HP34401A_OpenInstrumentFormAddress()的程序流程圖如下圖所示。

函數HP34401A_OpenInstrumentFormAddress()程序流程圖

查找和打開設備回話函數HP34401A_OpenInstr驅動程序HP34401A.c源代碼例程如下:#include<userint.h>#include"ATE

溫馨提示

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

評論

0/150

提交評論