?? 3.虛擬儀器系統io接口軟件.txt
字號:
發信人: ilyfe (伊犁*飛), 信區: LabVIEW
標 題: 第三章 虛擬儀器系統I/O接口軟件
發信站: 飲水思源 (2003年05月04日13:17:43 星期天), 站內信件
第三章 虛擬儀器系統I/O接口軟件
——VISA
VISA是虛擬儀器系統的I/O接口軟件,為虛擬儀器系統的統一性和擴展性奠定了基
礎。本章介紹了VISA的概念和特點,論述了VISA的結構模型,重點分析了VISA資源
與資源類的定義與描述,并結合實例,詳細討論了各資源的屬性、事件與操作規范
與軟件實現。在本章結束,還討論了VISA的實際設計思路與方法。
3.1 VISA的概念與特點
3.1.1 VISA的由來
隨著虛擬儀器系統的出現與發展,I/O接口軟件作為虛擬儀器系統軟件結構中承上
啟下的一層,其模型化與標準化越來越重要。I/O接口軟件駐留于虛擬儀器系統的
系統管理器——計算機系統中,是實現計算機系統與儀器之間命令與數據傳輸的橋
梁和紐帶。許多儀器生產廠家在推出硬件接口電路的同時,也紛紛推出了不同結構
的I/O接口軟件,有的只針對某類儀器(如NI公司用于控制GPIB儀器的NI-488及用
于控制VXI儀器的NI-VXI),有的在向統一化的方向靠攏(如HP公司的SICL—標準
儀器控制語言),這些都是在儀器生產廠家內部通用的、優秀的I/O接口軟件。
一般的I/O接口軟件的結構都采用了自頂向下的設計模型:首先列出該I/O接口軟件
需要控制的所有儀器類型,然后列出了各類儀器的所有控制功能,最后將各類儀器
控制功能中相同的操作功能盡可能地以統一的形式進行合并,并將統一的功能函數
稱為核心功能函數(如將GPIB儀器的讀/寫與RS232串行儀器的讀/寫統一為一個核
心功能函數)。所有統一形式的核心函數與其它無法合并的、與儀器類型相關的操
作功能函數一起構成了自頂向下的I/O接口軟件,實現不同類型的儀器的互操作性
與兼容性。然而,這種構成方法只適用于消息基器件的互操作性(如消息讀、消息
寫、軟件觸發、狀態獲取、異步事件處理等功能),對于如中斷處理、內存映射、
接口配置、硬件觸發等屬于器件特有的操作,根本無法得到統一的核心函數,消息
基器件與寄存器基器件無法在自頂向下的I/O接口軟件中得到統一。核心函數集在
整個I/O接口軟件中只有一個小子集,特定操作函數集是一個大子集。自頂向下結
構的I/O接口軟件實質上是建立在儀器類型層的疊加,并沒有真正實現接口軟件的
統一性。同時應該說,自頂向下的設計方法為真正統一的I/O接口軟件的設計與實
現提供了經驗借鑒與嘗試。VPP聯盟在考察了多個I/O接口軟件之后,提出了一種自
底向上的I/O接口軟件模型,也就是VISA。
3.1.2 VISA模型結構
VISA是虛擬儀器軟件結構(Virtual Instrument Software Architecture)的縮寫
,實質是一個I/O接口軟件及其規范的總稱。一般情況下,將這個I/O接口軟件稱為
VISA。
如上所說,VISA的構成是采用了自底向上的結構。與自頂向下的方法不同的是,
VISA的實現首先定義了管理所有資源的資源(在這兒,資源的概念相當于面向對象
程序設計中的對象,具體的定義與描述見下節),這個資源稱為VISA資源管理器,
它用于管理、控制與分配VISA資源的操作功能。各種操作功能主要包括:
1、 資源尋址;
2、 資源創建與刪除;
3、 資源屬性的讀取與修改;
4、 操作激活;
5、 事件報告;
6、 并行與存取控制;
7、 缺省值設置。
第二步是在資源管理器基礎上,列出了各種儀器各自的操作功能,并實現操作功能
的合并。在這個基礎上實現的資源實質可以包括不同格式的操作,如讀資源包括了
消息基器件的讀,也包括了寄存器基器件的讀;既可以包括同步讀操作,又可以包
括異步讀操作。每一個資源內部,實質是各種操作的集合。這種資源在VISA中即為
儀器控制資源,包含各種儀器操作的資源稱為通用資源,而將無法合并的功能,稱
為特定儀器資源。
第三步,需要定義與創建一個用API實現的資源,為用戶提供單一的控制所有VISA
儀器控制資源的方法,在VISA中稱為儀器控制資源組織器。
與自頂向下的構成方式相比,VISA的構成模型是從儀器操作本身開始的,它實現的
統一是深入到操作功能中去而不是停留于儀器類型之上。在VISA的結構中,儀器類
型的區別體現到統一格式的資源中的操作的選取,對于VISA使用者來說,形式上與
用法上是單一的。在理論層次上,自頂向下的方法屬于歸納范疇,而自底向上的方
法則屬于演繹范疇。因此,自頂向下是對過去所有儀器類型的總結,而不可能提供
擴展接口,而自底向上的結構是從共性到個性的推廣,它的兼容性不僅僅是過去、
現在,還可以包括將來。正由于這種自底向上的設計方法,VISA為虛擬儀器系統軟
件結構提供了一個共同的、統一的基礎,來自于不同供應廠家的不同的儀器軟件,
可以運行于同一平臺之上了。
VISA的結構模型如圖3.1所示。
圖3.1 VISA結構模型概圖
VISA結構模型自下往上,構成一個金字塔結構,最底層為資源管理器,其上為I/O
級資源、儀器級資源與用戶自定義資源集。其中,用戶自定義資源集的定義,在
VISA規范中并沒有規定,它是VISA的可變層,實現了VISA的可擴展性與靈活性,而
在金字塔頂的用戶層應用,是用戶利用VISA資源實現的應用程序,其本身并不屬于
VISA資源。
3.1.3 VISA的特點
基于自底向上結構模型的VISA創造了一個統一形式的I/O控制函數集,它是所有現
存的I/O接口軟件的功能超集,在形式上與其它I/O接口軟件十分相似。一方面,對
于初學者或是簡單任務的設計者來說,VISA提供了簡單易用的控制函數集,在應用
形式上相當簡單。另一方面,對于復雜系統的組建者來說,VISA提供了非常強大的
儀器控制功能與資源管理功能,能提供儀器間的互操作性與兼容性。它是易用性、
可擴展性、互操作性、兼容性的完全統一體。
與其它現存的I/O接口軟件相比,VISA具有以下幾個特點:
1、 VISA的I/O控制功能適用于各種儀器類型,VISA包含了VXI儀器、GPIB儀器、
RS232串行接口儀器等各類儀器的控制操作,也包含了消息基器件、寄存器基器件
、存貯器件等儀器的操作,其形式上是統一的。
2、 VISA的I/O控制功能適用于各種儀器硬件接口類型,以VXI儀器系統為例,無論
采用嵌入式計算機結構、GPIB接口外掛式結構、MXI接口外掛式結構,還是采用
IEEE1394接口外掛式結構,對于VXI儀器的操作函數是一樣的。同樣,無論VXI儀器
在系統中的邏輯地址是多少,儀器操作函數也是一樣的。
3、 VISA的I/O控制功能適用于單處理器系統結構,也適用于多處理器結構或分布
式網絡結構。
4、 VISA的I/O控制功能適用于多種網絡機制,無論虛擬儀器系統網絡構成為VXI多
機箱擴展網絡還是以太網,儀器操作是一致的。
5、 VISA的I/O軟件庫的源代碼是唯一的,其與操作系統及編程語言無關,只是提
供了不同形式的API文件作為系統的引出。
由于VISA結構考慮到了多種儀器類型與網絡機制的兼容性,因此以VISA I/O接口軟
件為基礎的虛擬儀器系統,不僅可以與過去已有的儀器系統(如GPIB儀器系統及串
行接口儀器系統)結合,也完全可以將儀器系統從過去的集中式結構過渡到分布式
結構。VISA的兼容性與互操作性,保證了新一代儀器完全可以加入到虛擬儀器系統
中去,同時也保證了儀器系統的投資者不會因為新儀器的出現而將過去的系統拋棄
,從而可以不使投資浪費。系統集成時,不必再選擇某家特殊的軟件和硬件產品,
可以根據自己的需要,在所有的VPP產品中作出最佳選擇,系統的兼容性與強健性
大大增強了,系統的標準化與統一性也找到了最基礎的保障。
3.1.4 VISA應用實例
下面通過分別調用非VISA的I/O接口軟件與VISA函數,對GPIB器件與VXI消息基器件
進行簡單的讀/寫操作(主要完成向器件發送查詢器件標識符命令,并從器件讀回
響應值操作過程),進行VISA與其它I/O接口軟件的異同點比較。所有例子中采用
的編程語言均為C語言。
例3.1 用非VISA的I/O接口軟件(NI公司的NI-488)實現對GPIB器件的讀/寫操作:
程序說明:
1、 聲明區:聲明程序中所有變量的數據類型,用C語言數據類型聲明。
2、 開啟區:進行GPIB器件初始化,確定GPIB器件地址,并為每個器件返回一個對
應的器件句柄。在初始化過程中,器件句柄作為器件的標志以輸出參數形式被返回
,在其它的I/O功能函數中,器件句柄則作為函數的輸入參數,以標志特定的GPIB
器件。
3、 器件I/O區:在本例程中,器件I/O主要完成命令發送,并從GPIB器件中讀回響
應數據。主要完成向器件發送查詢器件標識符命令,用標準命令符“*IDN?”,并
從器件讀回響應值,即器件的標識符。在NI-488函數集中,分別用ibwrt函數與
ibrd函數進行器件寫操作與讀操作。
4、 關閉區:GPIB的I/O軟件將本身的數據結構存于內存中,當系統關閉時,所有
儀器全部自動關閉,無需對I/O軟件本身作關閉操作。也就是說,GPIB的I/O軟件(
如NI-488)無關閉機制。
例3.1 用NI-488實現對GPIB儀器的讀/寫操作
例3.2 用非VISA的I/O接口軟件(NI公司的NI-VXI)實現對VXI消息基器件的讀/寫
操作:
例3.2 用NI-VXI實現對GPIB器件的讀/寫操作
程序說明:
1、 聲明區:聲明程序中所有變量的數據類型,用C語言數據類型聲明。
2、 開啟區:進行VXI消息基器件初始化,確定VXI消息基器件的邏輯地址。在對
VXI器件操作中,邏輯地址取代了GPIB器件操作中的器件句柄,作為器件操作的標
志,在初始化操作中返回唯一的值。
3、 器件I/O區:在本例程中,主要完成對命令發送,并從VXI消息基器件讀回響應
數據。同樣完成向器件發送查詢器件標識符命令,用標準命令符“*IDN?”,并從
器件讀回響應值,即器件的標識符。由初始化得到的器件邏輯地址在器件I/O操作
中作為函數的輸入參數被使用。程序通過對邏輯地址的處理,完成對器件的一對一
操作。在VXI消息基器件的操作中,分別用WSwrt函數與WSrd函數進行器件的寫操作
與讀操作,其中這兩個函數中的mode參數均表示數據傳輸方式,retCount參數表示
實際傳送的字節數。
4、 關閉區:對于VXI器件,存在著一個關閉機制,要求在結束器件操作的時候,
同時關閉I/O接口軟件。
例3.3 用VISA I/O接口軟件實現對GPIB器件與VXI消息基器件的讀/寫操作:
例3.3 用VISA實現對GPIB器件與VXI消息基器件的讀/寫操作
程序說明:
1、 聲明區:聲明程序中所有變量的數據類型。與以上兩例不同的是,在這兒聲明
的數據類型均為VISA數據類型,其是與編程語言無關的。而VISA數據類型與編程語
言數據類型的對應說明,均包含在特定文件中。如VISA數據類型的C語言形式的包
含頭文件為本章附錄文件visatype.h和visa.h。由于程序中沒有涉及到具體某種語
言的數據類型,故程序本身具有良好的兼容性與可移植性,各種編程語言調用
VISA的數據類型與操作函數的參數調用格式相差甚少。
2、 開啟區:進行消息基器件初始化,建立資源管理器及器件與VISA的通信關系。
對所有器件進行初始化均調用viOpenDefaultRM()與viOpen()函數。在此例中,對
于GPIB器件的初始化與對于VXI器件的初始化的函數調用形式是一致的,只是輸入
參數中器件描述符的值區別。在調用viOpen()函數時,器件硬件接口形式(計算機
結構形式)是無需特別說明的,該初始化過程完全適用于各種器件硬件接口類型。
初始化過程中返回的vi參數,類似于器件句柄,可作為器件操作的標志與數據傳遞
的中介。
3、 器件I/O區:在本例程中,主要完成對器件發送命令,并從器件讀回響應數據
。對于GPIB的讀/寫操作與對于VXI消息基器件的讀/寫操作,調用的VISA函數是一
樣的。其中vi是操作函數的輸入參數。
4、 關閉區:在器件操作結束時,調用viClose()函數,關閉器件及資源管理器與
VISA的關聯。
通過以上三個例程的分析,可以發現兩個事實:第一、VISA函數的調用與其它接口
軟件函數的調用形式上并無太多不同,學習功能強大的VISA軟件并不比一般的I/O
接口軟件任務重。而且VISA的函數參數意義明確,結構一致,在理解與應用儀器程
序時,效率較高。第二、VISA用戶只需學習了VISA函數應用格式,就可以對多種儀
器實現統一控制,不必再象以前學會了用NI-488對GPIB器件操作之后,還得學會
NI-VXI對VXI器件進行操作。與其它的I/O接口軟件相比,VISA體現的多種結構與類
型的統一性,使不同儀器軟件可以運行在同一平臺上,為虛擬儀器系統軟件結構提
供了堅實的基礎。
3.2 VISA資源描述
3.2.1 VISA資源類與資源
自底向上的VISA模型內部是由面向對象程序(OOP)軟件模塊構成的。在VISA中,
最基本的軟件模塊是定義在資源類上的資源。
VISA的資源類概念類似于面向對象程序設計方法中類的概念。類是一個實例外觀和
行為的描述。類通過構造函數來建立新的實例,因為不管怎樣,先得建立一個實例
才能使用它、操作它。當向類提出要建立一個實例的要求時,它會通過一個特定的
構造函數創建并初始化一個新的實例。然而,類并不對銷毀一個實例負責,這就要
求實例要自己負責,它們通過調用一個方法來申請自我的銷毀。類的聲明定義了類
的實例結構以及一組可以由該實例執行的有效操作。VISA資源類是一種抽象化的器
件特點功能描述,是對資源精確描述的專用術語。
VISA的資源概念類似于面向對象程序設計方法中對象的概念。對象實例不僅包含數
據實體,而且是一個服務提供者。做為一個數據實體,一個對象很象一個記錄,由
一些相同或不同類型的域構成。這些域的整體被稱為一個對象的狀態。改變這些域
的值,邏輯上講就是改變一個對象的狀態。作為服務提供者,或者說是一個過程實
體,一個對象是一些在其域上進行操作的方法或子程序的集合。從這個角度看來,
它有點象一個子例程庫。方法定義了對象的行為,激活一個對象方法的實際結果就
是讓對象做一個動作。這兩種互相補充的角色使對象這種概念變得非常強大。使用
對象,可以使抽象非常方便:一個對象的內部可以看成一個“黑匣子”,只能通過
精心設計的由方法組成的接口來訪問。對象的可見部分成為它的協議。
VISA中資源與OOP對象一樣,也由三個要素組成:屬性集、事件集與操作集。以讀
資源為例,其屬性集包括結束字符串、超時值及協議等,事件集包括用戶退出事件
,操作集包括各種端口讀取操作。
3.2.2 VISA資源描述格式
VISA資源是獨立于編程語言與操作系統的,在VISA本身的資源定義與描述中并不包
含任何操作系統或編程語言相關的限制。VISA源代碼是唯一的,只為不同的操作系
統編程語言提供了不同的API接口。VISA資源類共分為五大類:VISA資源模板、
VISA資源管理器、VISA儀器控制資源、VISA儀器控制組織器、VISA特定接口儀器控
制資源。在每一類中定義與描述的VISA資源都遵循同樣的格式。VISA資源描述格式
如表3.1所示。
VISA資源描述格式是一種抽象定義,與具體編程語言無關,資源內所有元件的定義
也均與編程語言無關。VISA通過提供不同的API接口,適用于不同的操作系統與編
程環境。在不同的編程語言環境之中調用VISA,均需在應用程序頭部引入說明文件
。在C語言環境下,VISA資源說明文件為visatype.h和visa.h文件(詳見本章附錄)
。唯一的VISA源程序通過不同的引入接口與文件說明,實現了不同環境下的適用性
。VISA資源描述格式不僅適用于現在VISA包含的所有資源,也為VISA將來資源擴充
定義了一個標準格式。現定義的VISA資源類型定義如表3.2所示。
X.1 資源概述
X.2 資源屬性表及屬性描述
X.3 資源事件集
X.4 資源操作集
所含每個操作包括:
X.4.Y 名字(含形參名)
X.4.Y.1 目標
X.4.Y.2 參數表
X.4.Y.3 返回狀態值
X.4.Y.4 描述
X.4.Y.5 相關操作項
X.4.Y.6 實現要求
表3.1 VISA資源描述格式
資源 縮寫名 標準名
VISA資源管理器資源 VRM VI_RSRC_VISA_RM
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -