GPIB-シリアル変換器のSモードを使用する方法

更新しました Apr 19, 2019

使用製品

Hardware

  • GPIB-RS232
  • GPIB-RS485

Software

  • LabVIEW Full
  • LabVIEW Professional
  • LabVIEW Base

Driver

  • NI-VISA
  • NI-488.2
  • NI-Serial
  • Miscellaneous GPIB Software (Legacy)
  • GPIB Software

問題

  • LabVIEWを使用してSモードで構成したGPIB-RS232/485/422デバイスから読み書きしたいのです。
  • シリアルコンバータと通信するためのコマンドとその構文は何ですか?
  • 接続されているデバイスとシリアル変換器をどのように区別しますか?

解決策

GPIB-シリアル変換器は、ソフトウェア透過的ではないため、接続されているデバイスにコマンドを送信する際は変換器に対するコマンドと区別するために変換機用の特殊なコマンドを送る必要があります。VISAを使用してコマンド送る際、コンピュータはGPIB-シリアル変換器と通信していることになります。

LabVIEWまたはLabVIEW Real-Timeを使用している場合、Communicating with GPIB Instruments using NI CompactRIO(GPIB-RS232のみ)で変換器をした際の注意事項やVIライブラリを提供しています。
 

メモ: このページでは、CompactRIOでの使用を中心に記載されています。ただし、このページに添付されているVIは、開発PC、Compact FieldPointなどその他のデバイスでも動作します。

 

その他の開発環境を使用する場合やローレベル関数については、NI GPIB-Serial Converter Helpを参照してください。



 

デバイスへ書き込む

GPIBデバイスにデータやコマンドを送信するには、VISA書き込み関数を使用してwrtコマンドを送信する必要があります。 このVISA書き込み関数は、同期I/Oに設定する必要があります。LabVIEWでVISA関数のモードを非同期から同期に変更するには、VISA関数を右クリックして同期I/Oモードメニューから同期を選択します。このコマンドの構文は、次のとおりです。

 

wrt #[x] [Address]<LF>[Data]<CR>

 

コマンドを記載する際に [ ](角括弧)は不要です。 
 

#[x]は、送信するデータの長さを示しています。ここで、xはバイト数です。変換器は、終端文字を使用してコマンドの最後を識別するため、このパラメータはオプションの項目です。しかし、デバイスに送られたコマンドに終端文字が必要な場合は、この値が必要となります。
 

[Address]<LF>は、 計測器に設定されたプライマリおよびセカンダリアドレス(PADおよびSAD)を示しています。プライマリアドレスとセカンダリアドレスの間は、プラス文字[+]で区切ります。複数の計測器が変換器に接続されている場合、カンマ文字[,]で区切りPADとSADを入力します。<LF>("\n")は、アドレスと最初のデータ文字の境界線を示しています。
 

[Data]<CR>は、計測器に送信したいデータを示しています。<CR>("/r")は、wrtコマンドの終端文字として使用されていて、送信する実際のデータの一部ではありません。

 

例:

wrt #6 1,2+1\n*idn?\r

このコマンドは、*idn?\rをプライマリアドレスが1、そしてプライマリアドレス2でセカンダリアドレスが1の計測器に送信します。その他の例は、製品マニュアル: NI GPIB-Serial Converter Help (ZIP)を参照してください。
 



 

デバイスから読み取る

GPIBデバイスからデータを読み取るには、VISA読み取り関数を使用してrdコマンドを送る必要があります。このVISA読み取り関数は、同期I/Oモードを同期に設定する必要があります。このコマンドの構文は、以下のとおりです。
 

rd #[x] [Address]<CR>


コマンドを記載する際に [ ](角括弧)は不要です。 
 

#[x]は、受信するデータの長さを示しています。ここで、xはバイト数です。ここでは予想される読み取るバイト数以上の値を設定します。変換器は、終端文字を受信するか、もしくは読み取るバイト数が指定バイト数に達した時点で読み取りを終了します。

[Address]<CR>は、は読み取りたいデバイスのプライマリおよびセカンダリアドレスを示しています。<CR>("/r")は、rdコマンドの終端文字として使用されています。

rdコマンドが変換器に送信された後、変換器に接続されたCOMポートのシリアルバッファを読み取る必要があります。これには、VISA読み取り関数を使用します。
 

VISA読み取り関数を使用してシリアルバッファから一度読み取ると、変換器はシリアルバッファの中へ現在のコマンドに関しての統計値を自動的に置き換えます。統計値は、実際に読み取るバイト数に続いて、リクエストした利用可能なバイト数に対するスペースを含みます。たとえば、デバイスから64バイトをリクエストする場合、読み取りコマンドがシリアルバッファで"    60"を完了した時点でデバイスはデータの60バイトのみを返します。4つのスペースは、リクエストした追加のバイト数を示していて、60は実際に読み取るデータのバイト数を示しています。シリアルバッファ外のデータを読み取るか、他のコマンドを実行する前にバッファをフラッシュする必要があります。

 

例: 

rd #128 2+1\r 

このコマンドは、プライマリアドレス2でセカンダリアドレス1から128バイトを読み取ります。コマンドが送信されたら、データはシリアルバッファから読み取ることができます。VISA読み取り関数を実行して利用可能なデータを取得します。

追加情報

この記事はお役に立ちましたか?

いいえ