《電子技術應用》
您所在的位置:首頁 > 測試測量 > 業界動態 > 通用計算機平臺上IEEE-488兼容儀器的設計

通用計算機平臺上IEEE-488兼容儀器的設計

2008-04-01
作者:呂 鋒, 陳 園

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


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


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


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


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


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


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


  以上提出了一個通用計算機平臺上IEEE-488儀器的設計方案并在實際應用中取得了較好的效果。由于該方案采用高級語言編程實現,且用戶不需要對原有系統做大的修改就能使基于計算機的儀器支持IEEE-488標準,因此具有成本低和可移植性強的特點。
參考文獻
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 王,侯國屏,趙 偉.可編程儀器控制規范和關鍵技術(一)[J]. 電測與儀表,2004;(2):22~24

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]
主站蜘蛛池模板: 成人亚洲精品777777 | 国产成人久久精品一区二区三区 | 国产一区二区亚洲精品 | 一级看片| 欧洲免费无线码一二区 | 精品视频在线一区 | 一区二区三区在线观看视频 | 国产精品外围在线观看 | 亚洲国产精品免费观看 | 国产一级毛片国语版 | 中文精品99久久国产 | 美女扒开腿让男人桶尿口 | 欧美精品网站 | 在线视频亚洲欧美 | 韩国在线精品福利视频在线观看 | 国产高清在线精品一区a | 看片网站在线 | 狠狠澡夜夜澡人人爽 | 三级手机在线观看 | 精品欧美成人高清在线观看2021 | 久久久久综合 | 91精品国产免费久久久久久 | 色综合久久加勒比高清88 | 成人综合在线视频免费观看 | 久草高清在线 | 亚洲线精品久久一区二区三区 | 女人张开腿让男人桶免费最新 | 久久精品成人 | 久久久国产精品视频 | 手机看片1024精品日韩 | 成年人看的免费视频 | 国产精品yjizz视频网一二区 | 国产精品女上位在线观看 | 亚洲精品久久久久综合91 | 亚洲国产福利精品一区二区 | 18在线网站| 久久精品视频一区二区三区 | 日产国产精品久久久久久 | 这里只有久久精品视频 | 久久福利青草狠狠午夜 | 欧美日韩一区二区三区高清不卡 |