設定 GPIB 驅動程式系統相符

概觀

GPIB Software 開發人員最常遇到的其中一項問題,就是要根據每個測試系統的需求來設定軟體。由於單一驅動程式可搭配多種系統使用,因此設定驅動程式必須簡單。NI 的 NI-488 軟體提供多種配置方法,可讓您選擇最適合自身應用的方法。本文件說明 NI-488 MS-DOS 軟體可用的每種設定方法。


內容

GPIB 組選項

NI-488 軟體有 3 種方式可用來變更系統的預設設定選項。其中包括:

  • 執行設定公用程式 IBCONF。
  • 執行特殊的批次檔案 (.BAT),以動態變更 IBCONF 檔案。
  • 使用應用程式中的特殊設定函式。


下列段落會說明變更驅動程式設定特性的方法,以及每種方法的優勢。

 

方法 1:設定公用程式 IBCONF


IBCONF.EXE 為螢幕導向的互動式程式,可將兩組功能傳遞至驅動程式。第 1 組包含連接至 GPIB 介面的 裝置特性。每個裝置都有下列特性:

  • 符號化名稱 (例如 DEV5、PLOTTER 或 METER)。
  • 主要 GPIB 位址 (若使用) 以及次要位址 (若使用)。
  • 執行特定函式時施加的時間限制。這樣的時間限制有助於確保傳輸作業不會永久暫停 GPIB。
  • 執行裝置呼叫時的資料終止方法,包含 End-Of-String (EOS) 字元、End Or Identify (EOI) 訊號和/或位元組數。
  • 回頭函式呼叫裝置的啟用或停用重複定址參數。


第二組則包含電腦中每個 GPIB 介面卡的特性。NI-488 驅動程式最多可控制 2 個 GPIB 介面卡。每個 GPIB 介面卡都有下列特性:

  • 符號化名稱 (GPIB0 或 GPIB1)。
  • 主要 GPIB 位址 (若使用) 以及次要位址 (若使用)。
  • 可指定為匯流排上的裝置系統控制器的功能,以及可執行系統控制器的特定動作。
  • 執行特定函式的時間限制。
  • 執行機板函式時使用 EOS 字元、EOI 訊號和/或位元組數的 GPIB 資料終止方法。
  • 機板使用的中斷線 (若有)。
  • 機板使用的 DMA 通道 (若有)。
  • 傳輸資料時的時序速度 (T1 延遲)。


手動執行與修改 IBCONF 的優勢在於,您可以完全靈活地設定每個裝置,不必為每個應用程式新增設定程式碼。

 

方式 2:IBCONF 批次模式


IBCONF 批次模式可用來修改 NI-488 驅動程式的設定參數。在批次模式中,設定資訊會包含在您建立的設定檔案中。若要從已建立的檔案載入設定資訊,請輸入下列指令:

ibconf -b 檔案名稱 <Enter>


其中檔名是配置檔案的名稱,例如,範例。cfg。-b 與 檔案名稱之間至少須存在一個空白。

您將不會看到 IBCONF 裝置對應,但會看到要求更新已載入的 GPIB 驅動程式的提示訊息。回答「是」後不需在進行變更後重新啟動電腦。不過,只要使用 -d 選項執行 IBCONF,即可消除提示,進而 自動 更新驅動程式。如此會自動設定載入的驅動程式版本。

部署可執行程式的 GPIB 開發人員,以及 GPIB 終端使用者,都可使用批次模式。對於已安裝程式庫的開發人員來說,使用此批次模式的 IBCONF 是可輕鬆確保適當設定的方式,不需變更任何現有程式。使用者只需執行批次檔,GPIB 裝置就會自動設定。程式設計師可以針對各個程式開發批次檔案。

您可以使用任何文字編輯器編輯批次檔案。批量檔案為由兩組項目組成的自由形式文字檔案。每個項目至少必須以一個空白字元或新行字元隔開,這是唯一的格式限制。配對的第 1 個項目為代表機板或裝置特性,或是要設定的機板/裝置對應設定函式 (例如,重新命名、連接、中斷連接)。配對中的第 2 個項目為第一個項目 (名稱) 應設定的值。例如,若要將裝置對應中的 dev8 重新命名為 掃描器,請在批次檔案中輸入下列程式碼行:



要啟用適用於 gpib0 的自動序列輪詢,請輸入下列程式碼:

尋找 board0 spoll yes

使用批次模式方法可以變更實際 IBCONF 檔案中的所有特性,包括基本 I/O 位址、中斷設定與 DMA 通道。您也可以像使用 IBCONF 裝置對應表一樣,連接與中斷 GPIB 介面卡的裝置。表 1 列出了所有有效的配置項目對。任何可作為數字輸入的值,皆可以小數或六十數輸入。六十分數的數字必須以 0x 為前端 (例如,小數 64 會以 0x40 寫入)。

表 1.批次模式指令對
第一個項目
第二個項目
助記符
說明
尋找尋找機板或裝置board# 或 device#
pad主要 GPIB 位址數字
sad次要 GPIB 位址數字
tmo逾時設定數字或記憶
eosEOS 位元組數字
reos終止在 EOS 上讀取是 或 否
xeos在寫入中設定 EOI是 或 否
分類表EOS 比較類型7 位元或 8 位元
eot使用最後一個寫入位元組設定 EOI是 或 否
sc系統控制器 (僅限機板)是 或 否
sre以 SC 為根據 (僅限機板) 設定的 REN是 或 否
spoll啟用自動序列輪詢 (僅限機板)是 或 否
tmng時序 (僅限板件)2usec、500nsec、
350nsec
e488_2啟用 488.2 協定 (僅限內建)是 或 否
cic_protCIC 協定 (僅限機板)是 或 否
int中斷設定 (僅限機板)數字
連接埠基本 I/O 位址 (僅限機板)數字
dmaDMA 通道 (僅限板件)數字
raddr重複定址 (僅限裝置)是 或 否
name重新命名裝置 (僅限裝置)裝置名稱
連接將裝置連接至機板 (僅限裝置)board#
中斷連接中斷裝置與機板的連接 (僅限裝置)無值
類型將電流機板切換為 PC2 或 PC2A 模式pc2 或 pc2a



下列範例為配置檔案範例,以及每個項目的逐步說明。

範例:scanner.cfg 範例設定檔案

需求:

  1. 將第一台裝置的名稱變更為「掃描器」。
  2. 將第三台裝置的名稱變更為「示波器」。
  3. 變更 board0 (gpib0) 的設定。
    • 主要地址為 2 (墊片 2)
    • 超時設定為 T30 (tmo T30s)
    • EOS 位元轉 6 位元 1E (eos 0x1E)
    • 系統控制器功能至 NO (sc no)
    • EOS 對 8 位元的比較類型 (分類 8 位元)
    • GPIB 匯流排時序速度為 350 nsec (tmng 350nsec)


設定檔:

 

方式 3:特殊配置函式

使用特殊設定函式,在應用程式中以動態方式設定裝置的第三種方式。如同先前所述,若要設定 GPIB 系統,則必須先了解匯流排及其連接裝置。應用程式軟體開發人員可以動態設定驅動程式,讓新手使用者無需了解或編輯 IBCONF。此方法也適用於使用相同的 GPIB 介面卡執行多種不同的系統配置。在程式中進行的設定變更只會在程式執行時生效。終止後,設定參數會回復至原始設定。這種配置方法不但更有效率,也更容易使用,因為此方法採用子常式函式呼叫的方式。

IBCONFIG 函式
只要在應用程式中新增 ibconfig 函式呼叫,即可使用最強大的設定函式 ibconfig,以動態方式設定 IBCONF 中所有軟體參數。無論您在 IBCONF 中使用何種設定,都可確保驅動程式的設定正確無誤。ibconfig 的設定參數可分為兩類:機板參數與裝置參數。例如,機板參數會啟用/停用硬體中斷,或是啟用/停用自動序列輪詢。裝置參數可啟用/停用重複定址。

您也可以使用 ibconfig 選擇主要與次要定址、逾時與 End-Of-String 終止。不過,傳統的 NI-488 配置函式仍然可支援 ibpad(變更主要位址)、ibsad(變更次要位址)、ibtmo(變更逾時設定)、ibeos(設定結束字串字元),以及 ibeot (設定結束字串訊息)。下列程式碼部分說明 ibconfig 函式的使用方式。

REM QuickBASIC 4.5 範例
REM 下列程式碼會設定 GPIB 作業裝置。
REM
REM $包含:qbdecl.bas
呼叫 ibfind ("dev1", dev%)

REM 將主要地址變更為 7。
option% = IbcPAD:value% = 7
呼叫 ibconfig (dev%、option%、value%)

REM 將超時改為 10 秒。
option% = IbcTMO:value% = 13
呼叫 ibconfig (dev%、option%、value%)

IBLN 函式
ibln 函式會檢查位於指定位址的 Listener。此功能與 NI-488.2TM 常式 FindLstn 類似,但參數為單一裝置位址,並非數個位址陣列。ibln 適用於掃描多個位址,以找出匯流排上的 Listeners。知道地址後,您可以使用 ibconfig 變更驅動程式中的該裝置的主要位址。

下列 QuickBASIC 程式碼會掃描匯流排上的所有 GPIB 主要位址 (不含次要位址),並回報找到的裝置。

REM $包含:qbdecl.bas
DIM 裝置%(30)
cnt% = 0
REM
REM 下列呼叫會開啟 Dev1 做為通用裝置。
REM 您需要一個單元描述子來呼叫 ibln。
呼叫 ibfind (Dev1、Dev%)
REM
REM 因為您不需要尋找次要地址,所以請設定
將悲觀參數 REM 至 0. sad% = 0
REM 現在可以掃描 30 個可能的主要位址。 請注意,
您不要檢查地址 0 的 REM,這是預設地址
GPIB 控制器的 REM 位址,此位址一律應為
REM 偵聽.
FOR i% = 1 至 30

呼叫 ibln (dev%、i%、 sad%、 listen%)

REM 檢查響應,以查看是否在
REM 位址以 i% 指定。 如果裝置正在監聽,請儲存
REM 位址至陣列裝置%(),這是清單
所有主動式傾聽器的 REM。
REM
REM 會隨著找到每個 Listener 而增加計數。

如果傾聽% = 1 那麼
裝置%(cnt%) = i%
cnt% = cnt% + 1
結束 IF

下一個 i%
REM 現在可以列印啟用的位址。
列印「裝置位於下列地址」
FOR j% = 0 至 cnt% - 1
列印 "裝置位於 GPIB 位址 "; 裝置%(j%)
下一個 j%

IBDEV 函式
在傳統的 NI-488 應用中,ibfind 函式用於開啟裝置進行通訊。ibfind 會傳回數字 (單元描述子),以便對該裝置進行 GPIB 呼叫。不過,若要使用 ibfind,則必須在 IBCONF 中預先設定裝置名稱,否則,ibfind 將會失敗。如果您不知道裝置名稱,會是缺點。

使用 ibdev 函式而非 ibfind 函式,即可開啟裝置並初始化裝置,而不了解其名稱。ibdev 與 ibfind 類似,但您不會將裝置名稱傳遞為函式中的參數之一。ibdev 只需開啟其找到的第一個未開啟的使用者可設定的裝置,並傳回用於 ibconfig、ibln 和所有其他裝置層級呼叫的單元描述子。呼叫 ibdev 以取得單元描述子後,您可能還需要呼叫 ibconfig 以設定未使用 ibdev 設定的通訊特性。

以下為使用 ibdev 的範例。

REM bd.index% 為 gpib0 的 0 或 gpib1 的 1。
bd.index% = 0
REM pad% 是您想要使用的裝置的主要地址
REM 開啟。假設在上述程式中,您決定
REM,說明地址 7 有一台偵聽裝置。
pad% = 裝置%(0) : sad% = 0
REM 針對必須指定的其他參數,請設定
將超時設定為 10 秒,啟用 的結束訊息
REM 寫入,並停用任何 EOS 終止。
tmo% = 13 : eot% = 1 : eos% = 0
REM 呼叫 ibdev 時,使用 ud% 傳回的值為
REM 單元描述子。
呼叫 ibdev (bd.index%、pad%、sad%、tmo%、eot%、eos%、ud%)

 

結論


本文件針對傳統 IBCONF 方法以外的 GPIB 系統配置,說明了 2 種替代方法:批次模式方法與 程式設計方法。這兩種新方法都能以透明透明的方式設定驅動程式,而且一般使用者幾乎不必費心。使用批次模式,您可以建立批次檔,以在 IBCONF 中設定設定,而無需終端使用者實際編輯 IBCONF 檔案。使用 NI-488 配置函式,即可在程式中新增函式,以動態方式設定驅動程式。最強大的 NI-488 配置函式 (ibconfig、ibln 與 ibdev) 共三個,可找到特定的 Listener,並且變更應用程式中 IBCONF 中所有配置設定。

 

Was this information helpful?

Yes

No