VI的概念
VI(虛擬儀器,Virtual Instrument)通過應用程序將通用計算機與儀器硬件結合起來,用戶可以通過友好的圖形界面(通常叫做虛擬前面板)操作這臺計算機,就象在操作自己定義、自己設計的一臺單個傳統(tǒng)儀器一樣。VI以透明的方式把計算機資源(如微處理器、內(nèi)存、顯示器等)和儀器硬件(如A/D、D/A、數(shù)字I/O、定時器、信號調理等)的測量、控制能力結合在一起,通過軟件實現(xiàn)對數(shù)據(jù)的分析處理、表達以及圖形化用戶接口(見圖2-1)。 應用程序將可選硬件(如GPIB、VXI、RS-232、DAQ板)和可重復用原碼庫函數(shù)等軟件結合在一起,實現(xiàn)了儀器模塊間的通信、定時與觸發(fā)。原碼庫函數(shù)為用戶構造自己的VI系統(tǒng)提供了基本的軟件模塊。由于VI的模塊化、開放性和靈活性,以及軟件是關鍵的特點,當用戶的測試要求變化時,可以方便地由用戶自己來增減硬、軟件模塊,或重新配置現(xiàn)有系統(tǒng)以滿足新的測試要求。這樣,當用戶從一個項目轉向另一個項目時,就能簡單地構造出新的VI系統(tǒng)而不丟棄已有的硬件和軟件資源。
關于 IVI
IVI Foundation 成立于 1998 年,目的是創(chuàng)建基于VXIplug&play 規(guī)范之上的儀器驅動標準,并提供各種額外特性(包括驅動 API 一致性、可互換性、仿真、狀態(tài)高速緩存、多線程安全等)。這些特性幫助延長了使用 IVI 測試系統(tǒng)的壽命。IVI Foundation 定義了兩種基本的架構和接口類型,即 IVI-C 和 IVI-COM。IVI-C 驅動程序基于現(xiàn)有的 VXIplug&play 規(guī)范和標準的 ANSI C 編程模型。IVI-COM 驅動程序基于微軟公司的標準的 COM(Component Object Model,組件對象模型)技術。IVI 儀器驅動程序可在通用的開發(fā)環(huán)境中使用,包括NI公司的 LabVIEW 和 LabWindows/CVI、安捷倫公司的 VEE Pro,以及微軟公司的Visual Basic、Visual C++ 和 Visual C# .NET。
IVI和VISA的關系
VISA是在不同的總線上作了一個統(tǒng)一的編程接口。IVI是在同類儀器,不同的產(chǎn)品間作了一個統(tǒng)一的編程接口;蛘哒f為同類儀器的不同儀器驅動上作了一個統(tǒng)一的編程接口。
使用VISA接口編寫的程序可以對不同的總線上(如GPIB,VXI,Serial和PXI)的儀器進行控制。但要求被控的儀器是同一廠商的同類儀器。即儀器的程控指令集是一樣的。使用IVI接口編寫的程序可以對同類儀器,但廠商不同,程控指令集不同的儀器進行控制。要求是
被控儀器支持IVI標準,提供IVI儀器驅動。如果從軟件體系結構上由低向高的來排序,應該是:程控儀器->程控指令+VISA->儀器驅動->IVI->測試系統(tǒng)應用。
從二者的英文全名也可窺見一斑:
VISA: Virtual Instrument Software Architecture
IVI: Interchangeable Virtual Instrument
實現(xiàn)IVI-COM驅動程序
上面說到了IVI Foundation定義了兩種基本的架構和接口類型,針對LabWindow和LabVIEW的IVI-C驅動程序的實現(xiàn)占據(jù)著主要地位,雖然IVI Foundation定義了IVI-COM驅動程序框架和接口函數(shù),但實現(xiàn)的并不是很多,此次采用ATL技術實現(xiàn)了IVI-COM驅動程序,實際上實現(xiàn)了一個通用的函數(shù)庫,方便不同的驅動程序開發(fā)者進行調用。
為了實現(xiàn)這樣一個函數(shù)庫,還需要VISA函數(shù)庫,互換性原則的體現(xiàn)在對VIAS庫中不同儀器控制命令的調用。IVI-Foundation對IVI-COM驅動程序的定義是比較詳細的,例如有這樣的定義:
COM Method Prototype
HRESULT SendSoftwareTrigger ();
定義了一個COM方法SendSoftwareTrigger,調用該函數(shù)發(fā)送一個軟觸發(fā)的三角波信號到設備上。在規(guī)范中詳細的定義了每個接口類的類名、屬性、方法以及參數(shù)說明,詳細的接口定義文件可以參考規(guī)范中的IDL文件附件,有了這個IDL文件和接口說明,具有ATL技術背景的話,實現(xiàn)IVI-COM就不是問題了,又例如:
Data Type ViString
Access R
Applies to <capability>
Coercion None
High Level Functions
該列表定義了一個COM屬性,其屬性名為:Name ([in] LONG Index),返回值類型為ViString,輸入?yún)?shù)為長整型,ViString數(shù)據(jù)類型和MFC中的CString類似。
限于篇幅這里不詳細列出實現(xiàn)代碼細節(jié),具體的文檔還可以參考以下網(wǎng)址:
http://www.ivifoundation.org/Default.htm
http://www.gongkong.com/tech/class/detail.asp?id=373
http://www.tmworld.com.cn/Cstmf/BCsy/AtcShow.asp?AID=2918
http://www.mathworks.com/access/helpdesk/help/toolbox/instrument/ch_ivi-6.html
虛擬儀器名詞掃盲(http://www.pansino.com.cn/bbs/dispbbs.asp?boardID=12&ID=205&page=1)
VIRTUAL INSTRUMENTS :虛擬儀器(其實VIRLTUAL 真實意思有一層與虛擬截然不同的意思,實 質,真實...
VIRTUAL INSTRUMENTATION:注意INSTRUMENT :儀器, INSTRUMENTATION:乃是指測量測試的方 法,技術.
LABVIEW:Laboratory Virtual Instrument Engineering Workbench.
GPIB(HP-IB,IEEE488):General Purpose Interface Bus,Hewlett-Packard Interface Bus, IEEE 488
Bus都是同一個東西,用來控制臺式儀器的通訊協(xié)議(當然既要有軟也要有硬方面的規(guī)范了),和后來IEEE 488.2
SCPI:Standard Commands for Programmable Instruments ,可程控儀器標準指令集。
VISA:Virtual Instrument Software Architecture,虛擬儀器軟件架構
IVI driver:Inerchangeable Virtual Instrauments Driver 可互換虛擬儀器驅動 VXI(IEEE 1155):VMEbus eXtensions for Instrumentation(VME:VERSAbus Module Eurocard)
VME總線是70年代末80年代初時由Motorola,Signatic等公司創(chuàng)立的一計算機總線。
PXI:PCIbus eXtensions for Instrumentation(PCIJ)
DAQ:Data AcQuisition數(shù)據(jù)采集,多指基于計算機的板卡及插卡式儀器的DAQ
SCXI:Signal Conditioning eXtensions for Instrumentation,是NI自定義的一專用于信號條理
領域的“總線”
CompactPCI 一種堅固的模塊化結構,結合了PCI電氣規(guī)范與Eurocard封裝。適合于工業(yè)計算應用。
GPIB General-Purpose Interface Bus, 通用接口總線。一種8位的并行通信接口。根據(jù)IEEE 488-1987 標準,數(shù)據(jù)傳輸速率可達1Mbyte/s。
Industrial PC 工業(yè)計算機,或稱為工控機,一種能夠承受工業(yè)環(huán)境的計算機。
MXI-2 一種PCI系統(tǒng)與VXI系統(tǒng)間的總線擴展器。由此PCI系統(tǒng)可以像內(nèi)置VXI控制器一樣控制VXI 設 備
MXI-3 一種PCI到PCI的橋(PCI-PCI bridge),用于以臺式計算機遠程控制PXI機箱。
PICMG PCI Industrial Computer Manufacture Group, PCI工業(yè)計算機制造商協(xié)會。一個會員公司的組織,維護目前的CompactPCI與PCI/ISA規(guī)范。http://picmg.com
PXI 一種基于PCI的堅固、模塊化的結構,具有專為測試與測量應用設計的電氣規(guī)范與時鐘電路。
PXI System Alliance PXI系統(tǒng)聯(lián)盟,一個全球生產(chǎn)商與系統(tǒng)集成商的組織?刂PXI規(guī)范,定義用于測試與測量、工業(yè)自動化 與數(shù)據(jù)采集應用的CompactPCI產(chǎn)品系統(tǒng)級要求。
RTSI Bus 實時系統(tǒng)集成(Real-Time System Integration)總線。一種局部總線,通過在插入式數(shù)據(jù)采集卡 或儀器類板卡間直接連線實現(xiàn)計數(shù)器、時鐘和觸發(fā)信號的共享。
Star Trigger 星形觸發(fā)。組合了第二槽(Slot 2)的左側局部總線,用于為第3槽至第15槽提供高精度、低 偏移的觸發(fā)。
Trigger Lines 觸發(fā)線。PXI總線上的信號線,專門用于在模塊間傳送觸發(fā)信號。
VISA 提供LabVIEW、CVI、Measurement Studio、C、C++和Visual Basic等各個編程環(huán)境與編程語言之間的接口。
VXI 一種工業(yè)標準的儀器總線,基于VME總線,主要用于模塊化的單卡儀器(instrument-on-a-card)系統(tǒng)。
VXIplug&play 標識硬件和軟件與VXIplug&play 系統(tǒng)聯(lián)盟(VXIplug&play System Alliance)規(guī)范的一致性。VISA是該聯(lián)盟的官方軟件語言。