0 引言
隨著數(shù)字化的智能化儀器的快速發(fā)展,工程上越來越希望將常用儀器設(shè)備與計(jì)算機(jī)連接起來組成一個(gè)由計(jì)算機(jī)控制的智能系統(tǒng)。而工程中常用的儀器設(shè)備種類繁多、功能各異、獨(dú)立性強(qiáng),一個(gè)系統(tǒng)往往需要多臺(tái)不同類型的儀器協(xié)同工作。而基于通用接口總線GPIB則可以把各種可編程儀器與計(jì)算機(jī)緊密地聯(lián)系起來,使電子測(cè)量由獨(dú)立的、傳統(tǒng)的單臺(tái)儀器向大規(guī)模自動(dòng)測(cè)試系統(tǒng)的方向發(fā)展。本文提出了一種在VC++6.0編程環(huán)境中利用SCPI對(duì)基于GPIB接口的儀器進(jìn)行遠(yuǎn)程測(cè)量的實(shí)現(xiàn)方法。
1 GPIB接口總線
GPIB主要是為臺(tái)式測(cè)量?jī)x器(或裝置)組成自動(dòng)測(cè)量系統(tǒng)而設(shè)計(jì)的。GPIB儀器系統(tǒng)主要利用GPIB接口卡將若干GPIB儀器連接起來,每個(gè)設(shè)備(包括計(jì)算機(jī)接口卡)必須有一個(gè)0~30之間的GPIB地址。一般GPIB接口卡設(shè)置為地址0,儀器的GPIB地址則從1到30。GPIB有一個(gè)控者(電腦)來控制總線。在總線上傳送儀器命令和數(shù)據(jù),控者尋址一個(gè)講者以及一個(gè)或多個(gè)聽者。數(shù)據(jù)串在總線上從講者向聽者傳送。
GPIB系統(tǒng)的連接方式可以是線型、星型或者混合拓?fù)湫汀R话闱闆r下,GPIB電纜的連接器都具有特殊的構(gòu)造,它都允許多個(gè)連接器堆疊連接在一起。對(duì)GPIB總線系統(tǒng)連接的基本配置要求主要有兩個(gè):
第一種配置,其兩個(gè)設(shè)備之間的最大距離為4米,整個(gè)電纜的長(zhǎng)度不得超過20米(第一個(gè)器件與最后一個(gè)器件之間的距離);
在第二種配置下,GPIB母線上最多可掛15個(gè)器件,這主要是受TTL接口收發(fā)器驅(qū)動(dòng)能力限制。當(dāng)測(cè)試系統(tǒng)有必要使用多于15個(gè)器件時(shí),只需在控制器上再添置一個(gè)GPIB接口,這樣可多拉一個(gè)母線,再多掛14個(gè)器件。該總線的最大數(shù)據(jù)傳輸速率為1 MB/s,在20米總線上,最高可工作于500 KB/s。
2 系統(tǒng)組成
基于VC++的GPIB儀器遠(yuǎn)程測(cè)量系統(tǒng)組成如圖1所示。該系統(tǒng)主要包括計(jì)算機(jī)、GPIB電纜、USB-GPIB控制器、GPIB儀器等。
系統(tǒng)的主要優(yōu)勢(shì)表現(xiàn)在以下幾個(gè)方面:
(1)編程方便,可使用高級(jí)語言編程;
(2)提高儀器設(shè)備的性能指標(biāo)?衫糜(jì)算機(jī)對(duì)帶有GPIB接口的儀器實(shí)現(xiàn)操作和控制,以實(shí)現(xiàn)各種自動(dòng)標(biāo)準(zhǔn)、多次測(cè)量平均等功能,從而提高測(cè)量精度;
(3)便于將多臺(tái)帶有GPIB接口的儀器組合起來,以形成較大的遠(yuǎn)程測(cè)量系統(tǒng),從而高效、靈活地完成各種不同的測(cè)試任務(wù);
(4)便于擴(kuò)展傳統(tǒng)儀器的功能。由于儀器與計(jì)算機(jī)相聯(lián),因此可在計(jì)算機(jī)的控制下對(duì)測(cè)試數(shù)據(jù)進(jìn)行更加靈活和方便的傳輸、處理、綜合利用和顯示,從而使原來儀器采用硬件邏輯很難解決的問題迎刃而解。
3 系統(tǒng)軟件
本系統(tǒng)選用了可視化的Visual C++通用編程工具來開發(fā)測(cè)試軟件,該工具的主要特點(diǎn)為易學(xué)易用、開發(fā)高效率開發(fā)功能強(qiáng)大等。開發(fā)人員能在VC++環(huán)境下利用上述特點(diǎn)并使用Windows內(nèi)部的應(yīng)用程序接口(API)函數(shù)、動(dòng)態(tài)鏈接庫(DLL)、對(duì)象的鏈接與嵌入(OLE)以及開放式數(shù)據(jù)庫連接(ODBC)等技術(shù),來快速、方便地開發(fā)出圖形界面豐富、功能強(qiáng)大且工作于Windows平臺(tái)下的應(yīng)用軟件系統(tǒng)。
與儀器進(jìn)行通信的格式實(shí)際上有兩種:一種為基于寄存器的通信格式,另一種為基于消息的通信格式。此處的GPIB系統(tǒng)程序設(shè)計(jì)語言為可編程儀器的標(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)容,因而使各類不同的儀器更容易被理解和使用。同時(shí)SCPI是一種“活”的標(biāo)準(zhǔn),可以滿足新儀器和新技術(shù)的需要。SCPI命令可分為儀器公用命令和儀器特定控制命令兩個(gè)部分。SCPI把IEEE488.2要求儀器必須執(zhí)行的公用命令作為SCPI儀器公用命令,這些公用命令用于控制儀器的某些基本功能操作,其句法和語義遵循IEEE488.2規(guī)定。儀器特定控制命令是指每個(gè)程控儀器完成自身命令操作的特定命令。采用SCPI編程有以下幾方面優(yōu)點(diǎn):
(1)SCPI是一個(gè)獨(dú)立于硬件的純粹軟件標(biāo)準(zhǔn),SCPI字符串可以通過任何儀器接口發(fā)送,無論是GPIB、RS-232、VXIbus、還是局域網(wǎng),都沒有問題;
(2)SCPI允許用相同的代碼來控制許多不同的儀器,而且語法簡(jiǎn)單有力,方便易學(xué)。因此,在掌握了一種儀器的命令集之后,就很容易掌握其他儀器的命令集。這些命令集有很多的相似性,這種相似性體現(xiàn)在兩個(gè)層面:其一是在垂直層面上,同一類型的儀器命令集比較相似;其二是在水平層面上,不同類型儀器之間的同種功能的SCPI命令也一致;
(3) SCPI的獨(dú)特設(shè)計(jì)使得它可以不斷擴(kuò)展而不會(huì)引起過多問題。隨著新型儀器的出現(xiàn),新的命令集會(huì)不斷加入SCPI;
(4)SCPI的語句以ASCⅡ文本的方式存在,因此,可以加入到任何計(jì)算機(jī)測(cè)試編程語言之中,如BASIC、C或C++;也可以用于如LabWin-dows/CVI、LabVIEW或者Agilent VEE這樣的專用測(cè)試程序開發(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),一個(gè)實(shí)際的命令通常由一個(gè)或多個(gè)關(guān)鍵字構(gòu)成,關(guān)鍵字之間用“;”分隔;參數(shù)形式用于指明命令的參數(shù)個(gè)數(shù)和順序,以及它們的合法取值;注釋通常命令的詢問形式可以由命令形式加上問號(hào)構(gòu)成,但不是所有的命令都有詢問形式,注釋部分的內(nèi)容通常用于指示必要的情況。