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