コントローラ関数
- 更新日2026-07-27
- 11分で読める
コントローラ関数はコントローラを構成します。また、すべての計測器が応答するIEEE 488コマンドを送信します。
cac―アクティブコントローラになる
| 構文 | cac 0(同期的に制御を取得します) |
| cac 1(直ちに制御を取得します) |
cacは制御を同期的にまたは即時に、場合によっては非同期に取得します。一般的には、cacを使用する必要はありません。cmd、rppなどの関数が自動的に制御を取るためです。
データのハンドシェイク処理中に制御を同期的に取得しようとすると、関数はハンドシェイクが完了するまで制御の取得動作を行いません。ハンドシェイク処理中でなければ、関数は制御の取得動作をただちに実行します。読み取りまたは書き込み操作がタイムアウトやその他のエラーで完了した場合、同期的な制御の取得は保証されません。
制御の同期的取得が不可能な場合(タイムアウトエラーの後など)は、非同期に制御を取得する必要があります。
GPIBコントローラがCICではない場合は、ECICエラーが発生します。
cmd―IEEE 488コマンドを送信する
| 構文 | cmd 文字列 |
cmdはGPIBコマンドメッセージを送信します。これらのコマンドメッセージには、デバイスのトークアドレス、リスンアドレス、2次アドレス、シリアルおよびパラレルポール構成メッセージ、およびデバイスクリアとトリガメッセージが含まれます。
cmdは、デバイスにプログラミング命令を転送する目的では使用しません。「GPIB読み取り」関数と「GPIB書き込み」関数は、プログラミング命令やその他のデバイス特有の情報を転送します。
文字列には、コントローラが送信するコマンドバイトが含まれています。cmd 文字列のこれらのバイトはASCII文字で表記します。非表示文字を転送する必要がある場合は、文字列制御器または文字列定数のを有効にするか、またはフォーマット関数を使用してコマンドを16進数で表示します。
dma―DMAモードまたはプログラムI/Oモードに設定する
| 構文 | dma 0(プログラムI/Oを使用) |
| dma 1(DMA使用) |
dmaは、データ転送にDMAを使用するかどうかを示します。
GPIBコントローラにはDMA機能を持たないものがあります。dma 1を実行しようとすると、関数は、機能がないことを示すGPIBエラー11を返します。
gts―アクティブコントローラからスタンバイに移行する
| 構文 | gts 0(シャドウハンドシェイクなし) |
| gts 1(シャドウハンドシェイクあり) |
gtsは、GPIBコントローラをコントローラスタンバイに設定し、アクティブコントローラの場合はATN信号をアサート解除します。通常、データ転送にはGPIBコントローラが必要です。gtsを使用すると、GPIBデバイスはGPIBコントローラがなくてもデータ転送できます。
シャドウハンドシェイクがアクティブの場合、GPIBコントローラはリスナとしてGPIB転送に加わりますが、データを受け取ることはありません。ENDメッセージを検出すると、GPIBコントローラはNRFD(データに対する準備ができていません)をアサートして、ハンドシェイクのホールドオフ状態にします。
シャドウハンドシェイクがアクティブでない場合は、GPIBコントローラはシャドウハンドシェイクもハンドシェイクホールドオフも実行しません。
シャドウハンドシェイクオプションを有効にすると、GPIBコントローラはリスナとしてデータハンドシェイクに加わりますが、実際にはデータを読み取りません。GPIBコントローラは、ENDメッセージを検出するまで転送をモニタし、それ以降の転送を停止します。このメカニズムによって、GPIBコントローラは、cmdやrppなどのその後の操作で同期的に制御を取得できます。
gtsコマンドの送信後は、必ずENDの転送を待ってから次のGPIBコマンドを送信してください。これには「GPIB待機」関数を使用できます。
GPIBコントローラがCICではない場合は、ECICエラーが発生します。
ist―各ステータスビットを設定する
| 構文 | ist 0(個々のステータスビットをクリアします) |
| ist 1(個々のステータスビットを設定します) | |
| istは個々のステータス(ist)ビットの検出を設定します。 |
istを使用するのは、GPIBコントローラがCICではないが、アクティブコントローラのデバイスが実行するパラレルポールに加わる場合です。CICは、識別(IDY)メッセージを送信するEOIとATN信号をアサートして、パラレルポールを実行します。このメッセージがアクティブである場合、ポールに加わるように構成された各デバイスは、あらかじめ決められたGPIBデータラインをアサートし、そのローカルistビットの値に応じてTRUEまたはFALSEで応答します。たとえば、istが1の場合はDIO3データラインをTRUEに、istが0の場合はFALSEに駆動するようにGPIBコントローラを割り当てることができます。逆に、istが0の場合はDIO3をTRUEに、istが1の場合はFALSEに割り当てることができます。
各デバイスに有効なパラレルポールイネーブル(PPE)メッセージは、istの値、動作しているライン、および動作しているラインの検出との間の関係を決定します。GPIBコントローラは、このメッセージをppcを使用してローカルに受信するか、CICからのコマンドによってリモートに受け取ることができます。PPEメッセージがいったん実行されると、istはGPIBコントローラがパラレルポール時にラインを動かす際の検出を変更し、GPIBコントローラは1ビットのデバイス特有のメッセージをコントローラに伝えることができます。
llo―ローカルロックアウト
| 構文 | llo |
lloはすべてのデバイスをローカルロックアウト状態にします。通常、この動作によりデバイスのフロントパネルからの入力は認識できなくなります。
lloは、Local Lockout(LLO)コマンドを送信します。
loc―コントローラをローカル状態にする
| 構文 | 位置 |
locは、GPIBコントローラがリモートモードにロック(ステータスのLOKビットに表示)されていない場合、ローカルメッセージのReturn To Local (RTL)を送信してGPIBコントローラをローカル状態にします。コンピュータを使用して測定器をシミュレーションしている場合は、locを使用してフロントパネルのRTLスイッチをシミュレーションすることができます。
off―デバイスをオフラインにする
| 構文 | off |
offはコントローラをオフラインにします。これが必要なのは、NI-488ライブラリを使用している他のアプリケーションとコントローラを共有している場合のみです。
ppc―パラレルポール構成(有効および無効)
| 構文 | ppc バイト |
ppcは、Local Poll Enable(LPE)メッセージをバイトの値に設定して、GPIBコントローラをパラレルポールに加わるように構成します。バイトの値が0の場合、GPIBコントローラは自身の構成を解除します。
パラレルポール時にデバイスが識別(IDY)メッセージに応答する際に使用するGPIBデータライン(DIO1~DIO8)と検出(1または0)は、16種のParallel Poll Enable(PPE)メッセージそれぞれによって選択されます。デバイスは割り当てられたメッセージと個々のステータス(ist)ビットの現在値を解釈し、選択されたラインがTRUEになっているかFALSEになっているかを判断します。たとえば、PPE=0x64の場合、istが0であればDIO5はTRUE、istが1であればDIO5はFALSEになります。PPE=0x68の場合、DIO1 PPEメッセージは有効です。どのPPEおよびPPDのメッセージが送信されたかを知り、応答が何を示すのかを判断する必要があります。
ppu―パラレルポーリング構成を解除する
| 構文 | ppu |
ppuは、すべてのデバイスが、パラレルポールへ応答しないようにします。
ppuは、Parallel Poll Unconfigure(PPU)コマンドを送信します。
rpp―パラレルポールを実行
| 構文 | rpp |
rppは、IDYメッセージを送信するATNまたはEOI信号をアサートして、前に構成したデバイスのパラレルポールを実行します。
rppは、パラレルポール応答をASCII文字で出力文字列に入れます。
rsc―システム制御の解放または要求する
| 構文 | rsc 0(システム制御を解放) |
| rsc 1(システム制御を要求) |
rscは、GPIBコントローラの機能を解放または要求し、sicおよびsre関数を使用してInterface Clear(IFC)とRemote Enable(REN)メッセージをGPIBデバイスに送信します。GPIBコントローラが別のコントローラによって送信されたIFCに応答するには、そのGPIBコントローラはシステムコントローラであってはなりません。
ほとんどのアプリケーションでは、GPIBコントローラが常にシステムコントローラです。コンピュータがプログラムの実行中を通してシステムコントローラでない場合にのみrscを使用します。
rsv―サービス要求とシリアルポールステータスバイト設定の両方またはどちらかを実行する
| 構文 | rsvバイト |
rsvは 、GPIB コントローラのシリアル ポール ステータス バイトを byteに設定します。GPIBコントローラはまた、バイトに0x40ビットが設定されると、GPIB RQSラインをアサートしてコントローラにサービス要求も行います。たとえば、GPIB RQSラインをアサートする場合、0x40ビットが設定されているASCII文字@を送信します。
rsvを使用すると、Service Request(SRQ)信号を使用してコントローラにサービスを要求したり、コントローラがGPIBポートにシリアルポールを実行する場合にシステム特定のステータスバイトを提供することもできます。
sic―インタフェースクリアを送信する
| 構文 | sic |
コントローラがシステムコントローラの権限を持っている場合、sicは最低100ミリ秒間そのコントローラにIFC信号をアサートさせます。この動作はGPIBを初期化し、コントローラポートをCICにします。一般的にsicは、デバイスをCICにしたり、バスのフォルト状態をクリアするときに使用します。
IFC信号はバスデバイスのGPIB関数のみをリセットします。内部デバイスの関数はリセットしません。デバイス関数は、Device Clear(DCL)とSelected Device Clear(SDC)コマンドによってリセットされます。これらのメッセージによる動作を判断するには、計測器の資料を参照してください。
sre―リモート有効のアサートまたはアサート解除する
| 構文 | sre 0(リモート有効のアサートと解除) |
| sre 1(リモート有効のアサート) |
sreは、GPIB RENラインをアサートまたはアサート解除します。デバイスは、操作のローカルモードまたはリモートモードを選択する際にRENをモニタします。リスンアドレスを受信して初めて、デバイスは実際にリモートモードに入ります。
コントローラがシステムコントローラでない場合は、ESACエラーが発生します。