隨著數(shù)字化的智能化儀器的快速發(fā)展,工程上越來越希望將常用儀器設(shè)備與計算機連接起來組成一個由計算機控制的智能系統(tǒng),。而工程中常用的儀器設(shè)備種類繁多,、功能各異、獨立性強,,一個系統(tǒng)往往需要多臺不同類型的儀器協(xié)同工作,。而基于通用接口總線GPIB則可以把各種可編程儀器與計算機緊密地聯(lián)系起來,使電子測量由獨立的,、傳統(tǒng)的單臺儀器向大規(guī)模自動測試系統(tǒng)的方向發(fā)展,。本文提出了一種在VC++6.0編程環(huán)境中利用SCPI對基于GPIB接口的儀器進行遠程測量的實現(xiàn)方法。
1 GPIB接口總線
GPIB主要是為臺式測量儀器(或裝置)組成自動測量系統(tǒng)而設(shè)計的,。GPIB儀器系統(tǒng)主要利用GPIB接口卡將若干GPIB儀器連接起來,每個設(shè)備(包括計算機接口卡)必須有一個0~30之間的GPIB地址,。一般GPIB接口卡設(shè)置為地址0,,儀器的GPIB地址則從1到30。GPIB有一個控者(電腦)來控制總線,。在總線上傳送儀器命令和數(shù)據(jù),,控者尋址一個講者以及一個或多個聽者。數(shù)據(jù)串在總線上從講者向聽者傳送,。
GPIB系統(tǒng)的連接方式可以是線型,、星型或者混合拓撲型。一般情況下,,GPIB電纜的連接器都具有特殊的構(gòu)造,,它都允許多個連接器堆疊連接在一起。對GPIB總線系統(tǒng)連接的基本配置要求主要有兩個:
第一種配置,,其兩個設(shè)備之間的最大距離為4米,,整個電纜的長度不得超過20米(第一個器件與最后一個器件之間的距離);
在第二種配置下,,GPIB母線上最多可掛15個器件,,這主要是受TTL接口收發(fā)器驅(qū)動能力限制。當(dāng)測試系統(tǒng)有必要使用多于15個器件時,,只需在控制器上再添置一個GPIB接口,,這樣可多拉一個母線,再多掛14個器件,。該總線的最大數(shù)據(jù)傳輸速率為1 MB/s,,在20米總線上,,最高可工作于500 KB/s。
2 系統(tǒng)組成
基于VC++的GPIB儀器遠程測量系統(tǒng)組成如圖1所示,。該系統(tǒng)主要包括計算機,、GPIB電纜、USB-GPIB控制器,、GPIB儀器等,。
系統(tǒng)的主要優(yōu)勢表現(xiàn)在以下幾個方面:
(1)編程方便,可使用高級語言編程,;
(2)提高儀器設(shè)備的性能指標(biāo),。可利用計算機對帶有GPIB接口的儀器實現(xiàn)操作和控制,,以實現(xiàn)各種自動標(biāo)準(zhǔn),、多次測量平均等功能,從而提高測量精度,;
(3)便于將多臺帶有GPIB接口的儀器組合起來,,以形成較大的遠程測量系統(tǒng),從而高效,、靈活地完成各種不同的測試任務(wù),;
(4)便于擴展傳統(tǒng)儀器的功能。由于儀器與計算機相聯(lián),,因此可在計算機的控制下對測試數(shù)據(jù)進行更加靈活和方便的傳輸,、處理、綜合利用和顯示,,從而使原來儀器采用硬件邏輯很難解決的問題迎刃而解,。
3 系統(tǒng)軟件
本系統(tǒng)選用了可視化的Visual C++通用編程工具來開發(fā)測試軟件,該工具的主要特點為易學(xué)易用,、開發(fā)高效率開發(fā)功能強大等,。開發(fā)人員能在VC++環(huán)境下利用上述特點并使用Windows內(nèi)部的應(yīng)用程序接口(API)函數(shù)、動態(tài)鏈接庫(DLL),、對象的鏈接與嵌入(OLE)以及開放式數(shù)據(jù)庫連接(ODBC)等技術(shù),,來快速、方便地開發(fā)出圖形界面豐富,、功能強大且工作于Windows平臺下的應(yīng)用軟件系統(tǒng),。
與儀器進行通信的格式實際上有兩種:一種為基于寄存器的通信格式,另一種為基于消息的通信格式,。此處的GPIB系統(tǒng)程序設(shè)計語言為可編程儀器的標(biāo)準(zhǔn)命令SCPI(Standard Commands for Programmable Instruments),,其通信格式屬于后者。
3.1 SCPI的儀器控制命令
SCPI可編程儀器標(biāo)準(zhǔn)命令是一種用來控制儀器的命令語言,。它可用一種標(biāo)準(zhǔn)方式來描述各種各樣的儀器功能,,其中規(guī)定了在控制器到儀器和儀器到控制器之間的信息交換層消息的構(gòu)造和內(nèi)容,,因而使各類不同的儀器更容易被理解和使用。同時SCPI是一種“活”的標(biāo)準(zhǔn),,可以滿足新儀器和新技術(shù)的需要,。SCPI命令可分為儀器公用命令和儀器特定控制命令兩個部分。SCPI把IEEE488.2要求儀器必須執(zhí)行的公用命令作為SCPI儀器公用命令,,這些公用命令用于控制儀器的某些基本功能操作,,其句法和語義遵循IEEE488.2規(guī)定。儀器特定控制命令是指每個程控儀器完成自身命令操作的特定命令,。采用SCPI編程有以下幾方面優(yōu)點:
(1)SCPI是一個獨立于硬件的純粹軟件標(biāo)準(zhǔn),,SCPI字符串可以通過任何儀器接口發(fā)送,無論是GPIB,、RS-232,、VXIbus、還是局域網(wǎng),,都沒有問題,;
(2)SCPI允許用相同的代碼來控制許多不同的儀器,而且語法簡單有力,,方便易學(xué),。因此,在掌握了一種儀器的命令集之后,,就很容易掌握其他儀器的命令集。這些命令集有很多的相似性,,這種相似性體現(xiàn)在兩個層面:其一是在垂直層面上,,同一類型的儀器命令集比較相似;其二是在水平層面上,,不同類型儀器之間的同種功能的SCPI命令也一致,;
(3) SCPI的獨特設(shè)計使得它可以不斷擴展而不會引起過多問題。隨著新型儀器的出現(xiàn),,新的命令集會不斷加入SCPI,;
(4)SCPI的語句以ASCⅡ文本的方式存在,因此,,可以加入到任何計算機測試編程語言之中,,如BASIC、C或C++,;也可以用于如LabWin-dows/CVI,、LabVIEW或者Agilent VEE這樣的專用測試程序開發(fā)環(huán)境。
3.2 SCPI命令樹圖
命令樹圖用于定義SCPI的命令集,,它描述了命令,、命令之間的層次關(guān)系,、相關(guān)的參數(shù)以及必要的注釋,SCPI命令樹如表l所列,。
命令樹圖通常由三部分構(gòu)成:關(guān)鍵字(KEY-WORD),、參數(shù)形式(PARAMETER FORM)和注釋(NOTES)。其中關(guān)鍵字提供命令的名字,,由于SCPI命令基于層次結(jié)構(gòu),,一個實際的命令通常由一個或多個關(guān)鍵字構(gòu)成,關(guān)鍵字之間用“,;”分隔,;參數(shù)形式用于指明命令的參數(shù)個數(shù)和順序,以及它們的合法取值,;注釋通常命令的詢問形式可以由命令形式加上問號構(gòu)成,,但不是所有的命令都有詢問形式,注釋部分的內(nèi)容通常用于指示必要的情況,。
4 GPIB在功率測量系統(tǒng)中的應(yīng)用
下面以Agilent E4407功率計的遠程測量系統(tǒng)為例來進行說明,。為實現(xiàn)計算機對功率計的遠程控制,需要通過VC調(diào)用GPIB接口控制卡驅(qū)動程序接口函數(shù),。一般最常用到的函數(shù)有ibdev (GPIB接口控制卡初始化設(shè)置函數(shù)),、ibwrt(寫字符串命令函數(shù))和ibrda(讀字符串命令函數(shù))。以下是測量程序的部分控制代碼,,其作用是通過GPIB接口卡對功率計進行初始化,,并對功率計進行讀寫操作。
首先是初始化GPIB卡,,以使其具備控制和通信能力,;然后初始化儀器,使儀器完成與GPIB的連接,,并對儀器進行相關(guān)的初始化操作,,其代碼如下:
int m_iBoardIndex;//GPIB卡號此處為0
int m_iGPIBDev,; //GPIB設(shè)備
int m_iSecondGPAdd,;//GPIB設(shè)備第二地址
int m_iGPAddress; //GPIB地址此處設(shè)為19
char buf_pow[20],;//數(shù)據(jù)緩存
InitGPIBDev(),;//初始化函數(shù)
{m_iGPIBDev=ibdev(m_ilndex,m_iG-PAdd,,m_iSecAdd,,Tls,1,,0),;
//初始化功率計,,GPIB接口卡的地址為0、功率計的主地址為19,,沒有輔地址,、超時設(shè)置為1S、使用默認傳輸結(jié)束方式,。
ibwrt(m_iGPIBDev,,“*RST?”);//儀器復(fù)位
ibwrt(m_iGPIBDev,,“*CLS?”),;//清除狀態(tài)寄存器
ibwrt(m_iGPIBDev,“*SRE 0”),;//允許服務(wù)請求
ibwrt(m_iGPIBDev,,“*ESE 0”);//允許標(biāo)準(zhǔn)事件狀態(tài)
ibwrt(m_iGPIBDev,,“:STAT:PRES”),;//預(yù)調(diào)整狀態(tài)
ibwrt(m_iGPIBDev,“:FUNC:ON‘POW’”),;//顯示屏進行顯示
}
其次是功率測量與顯示,。控制儀器完成相應(yīng)的測量和顯示時,,首先也應(yīng)初始化相關(guān)變量,,其代碼如下:
程序運行后,首先還應(yīng)對GPIB卡和GPIB儀器進行初始化,,并完成與儀器的連接,,然后利用遠程測量程序向功率計發(fā)送測量命令“:MEA-SURE:POW?”進行功率測量,之后再通過ibrda(m_iGPIBDev,,buf_pow,20)函數(shù)讀取功率值并將讀取的數(shù)據(jù)存儲在本地開辟的數(shù)據(jù)緩存中,,最后經(jīng)過本地處理后將測量數(shù)據(jù)顯示在遠程測量的顯示屏上,,從而實現(xiàn)功率計的遠程控制和測量功能,其程序界面如圖2所示,。
5 結(jié)束語
在采用VC++語言的編程環(huán)境下,,利用SCPI儀器控制命令進行GPIB儀器遠程測量系統(tǒng)的開發(fā),其程序直觀,,可讀性強,,可提高測量效率。此外,,利用該方法還可實現(xiàn)對多種GPIB儀器遠程測量系統(tǒng)的開發(fā),,因而具有廣泛的推廣和應(yīng)用價值,。