《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測(cè)試測(cè)量 > 業(yè)界動(dòng)態(tài) > 通用計(jì)算機(jī)平臺(tái)上IEEE-488兼容儀器的設(shè)計(jì)

通用計(jì)算機(jī)平臺(tái)上IEEE-488兼容儀器的設(shè)計(jì)

2008-04-01
作者:呂 鋒, 陳 園
關(guān)鍵詞: NI-Device 寄存器組 指令集 C++ I/O

  摘 要: 提出了一個(gè)通用計(jì)算機(jī)平臺(tái)上IEEE-488兼容儀器的設(shè)計(jì)方案,給出了系統(tǒng)的軟硬件組成,并且對(duì)儀器端程序以及狀態(tài)報(bào)告模型的設(shè)計(jì)進(jìn)行了說明。該方案主要通過C++" title="C++">C++語言編程實(shí)現(xiàn),具有成本低和可移植性強(qiáng)的特點(diǎn),目前已經(jīng)在某基于計(jì)算機(jī)的測(cè)試儀器上得到初步應(yīng)用并取得了較好的效果。
  關(guān)鍵詞: IEEE-488(GPIB)接口 SCPI 自動(dòng)測(cè)試系統(tǒng)


  通用計(jì)算機(jī)系統(tǒng)具有強(qiáng)大的處理能力以及豐富的軟件資源,正在被越來越多的現(xiàn)代儀器所采用。在儀器的設(shè)計(jì)過程中,往往需要提供GPIB接口以及相應(yīng)的指令集" title="指令集">指令集以方便用戶組成自動(dòng)測(cè)試系統(tǒng)。針對(duì)這一需求,本文提出了一個(gè)通用計(jì)算機(jī)平臺(tái)上IEEE-488兼容儀器的設(shè)計(jì)方案:通過使用GPIB接口卡和編寫相應(yīng)的儀器端程序,使得基于計(jì)算機(jī)的儀器能夠模擬一個(gè)或者多個(gè)GPIB儀器。


1 IEEE-488儀器簡(jiǎn)介
  IEEE-488儀器模型如圖1所示。儀器提供GPIB接口以及相應(yīng)的指令集,指令集由以下幾部分組成[1~2]
  (1) IEEE-488.2公用命令集,如:*IDN?,*STB?,*CLS等。
  (2) SCPI標(biāo)準(zhǔn)規(guī)定的STATus和SYSTem子系統(tǒng),主要用來報(bào)告儀器狀態(tài)和進(jìn)行系統(tǒng)設(shè)置。
  (3) 儀器特定測(cè)量功能指令。
  其中,(1)和(2)是儀器必備指令,(3)的選取與儀器的實(shí)際功能有關(guān)。用戶只需要將PC機(jī)與帶有GPIB接口的儀器連接,通過調(diào)用儀器控制軟件如NI-488.2和VISA等提供的I/O" title="I/O">I/O庫向儀器寫入指令,就能實(shí)現(xiàn)對(duì)儀器的控制。
2 系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)組成
  根據(jù)圖1所示的模型,在通用計(jì)算機(jī)平臺(tái)上設(shè)計(jì)的IEEE-488兼容儀器軟硬件組成如圖2所示。


  儀器運(yùn)行在Windows操作系統(tǒng)下,其各部分的功能如下:
  (1)PCI-GPIB是NI公司提供的GPIB接口卡。通過安裝設(shè)備端軟件NI-Device" title="NI-Device">NI-Device,使GPIB接口卡完成Talker/Listener功能。
  (2)模塊函數(shù)和必備函數(shù)與IEEE-488儀器模型中的儀器函數(shù)相對(duì)應(yīng):模塊函數(shù)是模塊制造商提供的API,大部分用來處理儀器特定測(cè)量功能指令;必備函數(shù)通過訪問狀態(tài)報(bào)告模型和調(diào)用某些模塊函數(shù)處理IEEE-488.2與SCPI標(biāo)準(zhǔn)規(guī)定的必備指令。
  (3)狀態(tài)報(bào)告模型由若干狀態(tài)寄存器組" title="寄存器組">寄存器組構(gòu)成,用來描述儀器的狀態(tài)。大部分儀器函數(shù)都會(huì)訪問此模型。
  (4)儀器端程序采用C++編寫,主要負(fù)責(zé)接收主控計(jì)算機(jī)發(fā)送的指令,然后找到對(duì)應(yīng)的儀器函數(shù)進(jìn)行處理。如果接收的是查詢指令,還負(fù)責(zé)將儀器函數(shù)的響應(yīng)結(jié)果返回給主控計(jì)算機(jī)。
  系統(tǒng)的核心是儀器端程序和狀態(tài)報(bào)告模型的設(shè)計(jì),以下將對(duì)這兩部分進(jìn)行詳細(xì)說明。
2.2 儀器端程序設(shè)計(jì)
  儀器端的程序完成圖1中除儀器函數(shù)以外的所有功能。其中,總線的消息處理即圖1中GPIB總線、I/O組件、輸出隊(duì)列、消息交換組件、輸入隊(duì)列部分的功能通過調(diào)用NI-Device提供的API完成,其余部分由設(shè)計(jì)者自行完成。
2.2.1 總線消息處理
  總線上的消息處理主要通過調(diào)用NI-Device提供的API完成。NI-Device是NI公司推出的一款面向儀器制造商的設(shè)備端軟件,可以為儀器開發(fā)人員處理絕大部分的IEEE-488協(xié)議要求,并且支持面向?qū)ο蟮腃++語言接口[3]。 IEEE-488兼容儀器主要使用以下幾個(gè)類:
  (1)C4882Device:是一個(gè)抽象類,是所有設(shè)備類的基類,它定義了設(shè)備類與總線接口方式。當(dāng)總線上發(fā)生某個(gè)事件時(shí),就調(diào)用相應(yīng)的事件處理函數(shù)。此外,C4882Device類還負(fù)責(zé)輸入輸出隊(duì)列管理和狀態(tài)字節(jié)報(bào)告等。
  (2)CGpibDevice:使用GPIB總線的設(shè)備類都必須是CGpibDevice類的派生類,它負(fù)責(zé)處理GPIB總線協(xié)議。
  (3)C4882MsgBuffer:輸入和輸出隊(duì)列使用這個(gè)類來存儲(chǔ)指令。
  NI-Device采用事件驅(qū)動(dòng)的方式處理總線上的消息。儀器端程序只需要從CGpibDevice類派生出自定義的儀器類,然后重載基類C4882Device的InputQueueEvent Handler、OutputQueueEventHandler、 DeviceClearEventHandler事件響應(yīng)函數(shù),最后編寫事件響應(yīng)代碼就能完成與總線間的消息交換。
  基于NI-Device的儀器端程序流程如圖3所示。其中,從輸出隊(duì)列取出的指令存放在InputQueueEvent Handler函數(shù)的pMsgBuf參數(shù)中。通過調(diào)用AcknowledgeEndOfMessage()即可通知消息交換組件指令已解釋完畢;此外,通過調(diào)用QueryDetected()可通知消息交換組件檢測(cè)到一個(gè)查詢操作。而將結(jié)果放入輸出隊(duì)列則通過調(diào)用QueueResponseMsg()完成。
  需要說明的是,在主控計(jì)算機(jī)讀取響應(yīng)結(jié)果時(shí),NI-Device會(huì)自動(dòng)將輸出隊(duì)列的隊(duì)首內(nèi)容取出并返回給主控計(jì)算機(jī),并且以一個(gè)MSG_SENT事件通知儀器響應(yīng)結(jié)果已被取走,該事件將在OutputQueueEventHandler響應(yīng)函數(shù)中進(jìn)行處理。DeviceClearEventHandler函數(shù)在主控計(jì)算機(jī)發(fā)送Device Clear消息的時(shí)候被調(diào)用,在該事件處理函數(shù)中,儀器端程序完成一些必要的清除工作。
  在圖3中,SCPI解釋器是最關(guān)鍵的部分,它的效率高低直接影響到儀器的性能。以下將說明SCPI解釋器的設(shè)計(jì)。


2.2.2 SCPI解釋器
  SCPI 是IEEE-488.2上的可程控儀器標(biāo)準(zhǔn)指令集。其命令格式為樹狀層次結(jié)構(gòu),可分為多個(gè)子系統(tǒng),每個(gè)子系統(tǒng)由一個(gè)根命令和一個(gè)或數(shù)個(gè)層次命令構(gòu)成[4]。例如,MEASure子系統(tǒng)中測(cè)量電壓周期的命令為:“MEASure:VOLTage:PERiod?”。
  解釋器的功能是對(duì)輸入指令進(jìn)行語法檢查并找到對(duì)應(yīng)的儀器函數(shù),其工作流程如下:
  (1)首先對(duì)輸入指令進(jìn)行掃描,根據(jù)分割符(:,空格等)位置將輸入的命令拆分為子系統(tǒng)根命令、層次命令、參數(shù)以及單位部分。
  (2)根據(jù)(1)識(shí)別的子系統(tǒng)根命令動(dòng)態(tài)加載相應(yīng)的命令樹。圖4是一個(gè)子系統(tǒng)命令樹的例子,每個(gè)葉節(jié)點(diǎn)除節(jié)點(diǎn)內(nèi)容以外還存放對(duì)應(yīng)儀器函數(shù)的編號(hào)。
  (3)根據(jù)(1)識(shí)別的層次命令自頂向下遍歷命令樹,如果遍歷成功則返回葉節(jié)點(diǎn)儀器函數(shù)的編號(hào)。如果失敗則說明發(fā)生語法錯(cuò)誤,返回錯(cuò)誤編碼。最后從內(nèi)存中釋放樹結(jié)構(gòu)。


  執(zhí)行組件維護(hù)著一個(gè)編號(hào)與儀器函數(shù)的對(duì)應(yīng)表。根據(jù)解釋器的返回值,執(zhí)行組件首先判斷是否有語法錯(cuò)誤。如果沒有則通過查表找到該函數(shù),然后驗(yàn)證參數(shù)并執(zhí)行,如果是查詢命令,還要將執(zhí)行結(jié)果放入輸出隊(duì)列。如果發(fā)生語法錯(cuò)誤則通過修改狀態(tài)報(bào)告模型中的相應(yīng)位表明產(chǎn)生了語法錯(cuò)誤。
2.3 狀態(tài)報(bào)告模型
  一個(gè)符合IEEE-488標(biāo)準(zhǔn)的儀器必須具備如圖5所示的狀態(tài)報(bào)告模型。絕大部分儀器函數(shù)都會(huì)影響到這個(gè)模型。其中,每一個(gè)寄存器組都是由條件寄存器、邊沿過濾器、事件寄存器和事件使能寄存器組成,具體的定義在參考文獻(xiàn)[1][2]中有明確的規(guī)定,在此不再贅述。


  一般在兩種情況下需要向主控計(jì)算機(jī)報(bào)告儀器的狀態(tài):
  (1)執(zhí)行STATus和SYSTem子系統(tǒng)對(duì)應(yīng)的儀器函數(shù)時(shí)。例如,儀器端接收到指令'STATus:OPERation?”后,對(duì)應(yīng)的儀器函數(shù)返回操作狀態(tài)寄存器組中的事件寄存器的內(nèi)容,然后由響應(yīng)格式化組件將返回內(nèi)容放入輸出隊(duì)列,等待主控計(jì)算機(jī)的讀取。
  (2)執(zhí)行某些IEEE-488.2公用命令對(duì)應(yīng)的儀器函數(shù)時(shí)。
  例如,接收到公用命令“*STB?”后,對(duì)應(yīng)的儀器函數(shù)返回狀態(tài)字節(jié)的內(nèi)容,隨后處理流程同(1)。
  另外,在執(zhí)行一些測(cè)量功能和公用命令時(shí)需要更新儀器狀態(tài)。例如用戶設(shè)置了一個(gè)可能引起不穩(wěn)定因素的電壓,對(duì)應(yīng)的儀器函數(shù)將可疑狀態(tài)寄存器組中事件寄存器的VOLTage位置為1。狀態(tài)報(bào)告模型的設(shè)計(jì)需要根據(jù)儀器的特定功能對(duì)某些寄存器進(jìn)行擴(kuò)展或者只實(shí)現(xiàn)其中的某些位。
3 實(shí)驗(yàn)結(jié)果
  目前該方案已經(jīng)在某基于計(jì)算機(jī)的手機(jī)終端測(cè)試儀上得到初步應(yīng)用并取得較好的效果。在主控計(jì)算機(jī)上用NI-MAX軟件向該儀器發(fā)送指令詢問激活小區(qū)是否激活,儀器的返回結(jié)果如圖6所示。實(shí)驗(yàn)結(jié)果表明儀器端的程序能夠正常工作,且沒有出現(xiàn)明顯的延時(shí)。


  以上提出了一個(gè)通用計(jì)算機(jī)平臺(tái)上IEEE-488儀器的設(shè)計(jì)方案并在實(shí)際應(yīng)用中取得了較好的效果。由于該方案采用高級(jí)語言編程實(shí)現(xiàn),且用戶不需要對(duì)原有系統(tǒng)做大的修改就能使基于計(jì)算機(jī)的儀器支持IEEE-488標(biāo)準(zhǔn),因此具有成本低和可移植性強(qiáng)的特點(diǎn)。
參考文獻(xiàn)
1 IEEE std 488.2-1992,IEEE standard codes, formats, protocols, and common commands for use with IEEE std 488.1-1987. IEEE standards digital interface for programmable instrumentation. (ANSI)
2 Standard commands for programmable instruments (SCPI), Version 1999.0.SCPI Consortium, May 1999
3 NI-deviceTM help. National Instruments, April 2004
4 王,侯國(guó)屏,趙 偉.可編程儀器控制規(guī)范和關(guān)鍵技術(shù)(一)[J]. 電測(cè)與儀表,2004;(2):22~24

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲激情婷婷| 欧美在线观看视频一区二区三区| 一个色综合av| 亚洲人成在线播放网站岛国| 精品999日本| 国产一区二区在线观看免费播放| 国产精品久久久久秋霞鲁丝| 欧美精品在线一区| 欧美激情一区二区三区在线视频观看| 久久另类ts人妖一区二区| 欧美一区二区三区四区视频| 亚洲欧美日韩在线不卡| 在线视频日本亚洲性| 99伊人成综合| 亚洲最新在线视频| 在线视频欧美日韩精品| 一区二区三欧美| 亚洲小视频在线| 亚洲自拍另类| 午夜精品久久久久久久白皮肤| 亚洲特级毛片| 亚洲综合日韩在线| 午夜精品视频在线观看一区二区| 亚洲综合色丁香婷婷六月图片| 亚洲在线一区| 欧美一区二区三区免费大片| 午夜精品久久久久久久白皮肤| 午夜视频在线观看一区二区| 性做久久久久久久久| 欧美自拍偷拍午夜视频| 久久爱www.| 久久综合九色综合欧美就去吻| 免费观看欧美在线视频的网站| 欧美91大片| 欧美日韩精品系列| 国产精品国内视频| 国产日韩欧美在线观看| 国产一区二区三区四区三区四 | 国产日韩精品一区二区三区在线| 国产三级欧美三级日产三级99| 国自产拍偷拍福利精品免费一| 亚洲国产欧美不卡在线观看| 日韩网站在线看片你懂的| 亚洲欧美国产制服动漫| 久久本道综合色狠狠五月| 亚洲精品综合| 亚洲自拍偷拍一区| 久久久久久久综合日本| 欧美高清在线精品一区| 国产精品高潮呻吟久久| 国产综合色在线| 亚洲九九精品| 欧美一区二区三区在线视频 | 亚洲欧美不卡| 久久se精品一区精品二区| 亚洲免费高清视频| 午夜视频在线观看一区二区| 老司机午夜精品| 国产精品qvod| 很黄很黄激情成人| 亚洲三级毛片| 欧美在线视频一区| 99精品久久免费看蜜臀剧情介绍| 亚洲欧美综合一区| 欧美大片免费久久精品三p| 国产精品v欧美精品v日韩| 激情久久中文字幕| 这里只有精品视频在线| 久久精品视频va| 亚洲永久免费| 欧美福利精品| 国产午夜精品一区二区三区视频| 亚洲精品国产精品乱码不99 | 午夜日韩在线观看| 99re66热这里只有精品4| 久久成人国产| 欧美日韩一区二区免费视频| 国内久久精品| 亚洲免费在线视频一区 二区| 亚洲人成在线观看一区二区| 欧美一级淫片播放口| 欧美黄色成人网| 国产在线一区二区三区四区| 夜夜嗨av一区二区三区四区| 亚洲高清自拍| 欧美在线播放高清精品| 欧美日韩中文字幕在线视频| 18成人免费观看视频| 午夜国产不卡在线观看视频| 一本久久综合亚洲鲁鲁五月天| 久久夜色精品国产亚洲aⅴ| 国产精品美女午夜av| 日韩一级视频免费观看在线| 亚洲国产综合视频在线观看| 欧美一区二区在线播放| 欧美日韩亚洲一区二区三区在线| 伊甸园精品99久久久久久| 欧美一级久久久| 亚洲欧美电影院| 欧美日韩中文字幕精品| 亚洲日韩欧美视频一区| 亚洲激情在线观看| 久久久久.com| 国产手机视频精品| 午夜精品免费在线| 性久久久久久久久久久久| 欧美色网在线| 日韩亚洲欧美成人| 一本综合久久| 欧美区一区二区三区| 亚洲经典三级| 亚洲精品乱码久久久久久久久| 久久影视精品| 国产日产亚洲精品| 午夜精品久久久久久久蜜桃app| 午夜精品一区二区在线观看| 欧美天堂亚洲电影院在线播放| 亚洲日本免费| 亚洲精品日韩激情在线电影| 欧美成在线视频| 亚洲激情在线视频| 99精品99| 欧美日韩精品在线| 99riav国产精品| 亚洲免费在线视频一区 二区| 欧美日韩在线视频首页| 日韩午夜在线| 亚洲一区二区精品视频| 欧美色道久久88综合亚洲精品| 99视频在线精品国自产拍免费观看| 一区二区免费看| 欧美日韩在线播| 亚洲视频专区在线| 午夜欧美电影在线观看| 国产精品夜夜夜| 欧美一区二区久久久| 久久久久久久久一区二区| 激情视频一区| 亚洲免费电影在线观看| 欧美日韩免费一区二区三区视频 | 一级成人国产| 欧美一区二区精美| 国产亚洲欧美一区| 亚洲国产精品综合| 欧美另类一区| 亚洲小视频在线观看| 欧美一区二区大片| 韩日成人av| 亚洲精品日韩精品| 国产精品wwwwww| 午夜久久久久久久久久一区二区| 久久久久久久久一区二区| 亚洲第一区在线观看| 一区二区三区.www| 国产精品日韩欧美| 久久av红桃一区二区小说| 麻豆视频一区二区| 一区二区三区国产精品| 久久精品91久久久久久再现| 在线电影一区| 亚洲一区二区四区| 国产一区二区三区久久久| 最新国产乱人伦偷精品免费网站| 欧美日韩一区二区三| 亚洲欧美国产高清| 嫩草影视亚洲| 一区二区三区www| 久久精品视频一| 亚洲高清免费在线| 亚洲免费在线精品一区| 激情六月综合| 亚洲一区在线直播| 欧美日韩国产精品一区| 亚洲一区二区影院| 欧美成人免费网站| 亚洲一区二区三区免费视频| 美女精品网站| 亚洲欧美区自拍先锋| 欧美刺激性大交免费视频| 亚洲影院在线观看| 欧美激情一区二区三区蜜桃视频| 亚洲一区影音先锋| 欧美国产先锋| 欧美一区二区三区在线观看| 欧美日韩国产91| 午夜伦理片一区| 欧美激情中文不卡| 午夜欧美大尺度福利影院在线看| 欧美精选一区| 久久精品国内一区二区三区| 欧美午夜一区| 91久久精品国产91久久性色tv| 国产精品v亚洲精品v日韩精品| 亚洲国产婷婷综合在线精品| 国产精品美女主播| 日韩视频在线观看免费| 国模私拍一区二区三区| 亚洲综合二区| 亚洲精品视频二区| 久久综合影音|