引言
隨著數(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)鏈接庫(kù)(DLL)、對(duì)象的鏈接與嵌入(OLE)以及開放式數(shù)據(jù)庫(kù)連接(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),新的命令*不斷加入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命令樹如表1所列。
命令樹圖通常由三部分構(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)容通常用于指示必要的情況。
4 GPIB在功率測(cè)量系統(tǒng)中的應(yīng)用
下面以Agilent E4407功率計(jì)的遠(yuǎn)程測(cè)量系統(tǒng)為例來進(jìn)行說明。為實(shí)現(xiàn)計(jì)算機(jī)對(duì)功率計(jì)的遠(yuǎn)程控制,需要通過VC調(diào)用GPIB接口控制卡驅(qū)動(dòng)程序接口函數(shù)。一般最常用到的函數(shù)有ibdev (GPIB接口控制卡初始化設(shè)置函數(shù))、ibwrt(寫字符串命令函數(shù))和ibrda(讀字符串命令函數(shù))。以下是測(cè)量程序的部分控制代碼,其作用是通過GPIB接口卡對(duì)功率計(jì)進(jìn)行初始化,并對(duì)功率計(jì)進(jìn)行讀寫操作。
首先是初始化GPIB卡,以使其具備控制和通信能力;然后初始化儀器,使儀器完成與GPIB的連接,并對(duì)儀器進(jìn)行相關(guān)的初始化操作,其代碼如下:
int m_iBoardIndex;//GPIB卡號(hào)此處為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);
//初始化功率計(jì),GPIB接口卡的地址為0、功率計(jì)的主地址為19,沒有輔地址、超時(shí)設(shè)置為1S、使用默認(rèn)傳輸結(jié)束方式。
ibwrt(m_iGPIBDev,“*RST?”);//儀器復(fù)位
ibwrt(m_iGPIBDev,“*CLS?”);//清除狀態(tài)寄存器
ibwrt(m_iGPIBDev,“*SRE 0”);//允許服務(wù)請(qǐng)求
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’”);//顯示屏進(jìn)行顯示
}
其次是功率測(cè)量與顯示??刂苾x器完成相應(yīng)的測(cè)量和顯示時(shí),首先也應(yīng)初始化相關(guān)變量,其代碼如下:
程序運(yùn)行后,首先還應(yīng)對(duì)GPIB卡和GPIB儀器進(jìn)行初始化,并完成與儀器的連接,然后利用遠(yuǎn)程測(cè)量程序向功率計(jì)發(fā)送測(cè)量命令“:MEA-SURE:POW?”進(jìn)行功率測(cè)量,之后再通過ibrda(m_iGPIBDev,buf_pow,20)函數(shù)讀取功率值并將讀取的數(shù)據(jù)存儲(chǔ)在本地開辟的數(shù)據(jù)緩存中,最后經(jīng)過本地處理后將測(cè)量數(shù)據(jù)顯示在遠(yuǎn)程測(cè)量的顯示屏上,從而實(shí)現(xiàn)功率計(jì)的遠(yuǎn)程控制和測(cè)量功能,其程序界面如圖2所示。
5 結(jié)束語
在采用VC++語言的編程環(huán)境下,利用SCPI儀器控制命令進(jìn)行GPIB儀器遠(yuǎn)程測(cè)量系統(tǒng)的開發(fā),其程序直觀,可讀性強(qiáng),可提高測(cè)量效率。此外,利用該方法還可實(shí)現(xiàn)對(duì)多種GPIB儀器遠(yuǎn)程測(cè)量系統(tǒng)的開發(fā),因而具有廣泛的推廣和應(yīng)用價(jià)值。
-
控制器
+關(guān)注
關(guān)注
112文章
16396瀏覽量
178509 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7518瀏覽量
88191 -
總線
+關(guān)注
關(guān)注
10文章
2891瀏覽量
88164
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論