LabVIEW基本TCP/IP通信

概要

この記事では、TCP/IP通信の基本に関する概要を説明します。LabVIEWに関する前提知識が必要となります。LabVIEWの初心者である場合は、最初にこのLabVIEWチュートリアルを参照することで、この記事をよりよく理解することができます。

説明

インターネットプロトコル(IP)、ユーザデータグラムプロトコル(UDP)、および転送制御プロトコル(TCP)は、ネットワーク通信の基本ツールです。TCP/IPという名前は、最もよく知られている2つのインターネットプロトコル群である転送制御プロトコル(TCP)およびインターネットプロトコル(IP)から来ています。TCP/IPを使用して、単一ネットワークまたは相互接続されたネットワーク(インターネット)上で通信を行うことができます。

TCP/IP通信のユーザインタフェースは、信頼できるネットワーク通信を確保するための複雑性を感じさせないシンプルな作りになっています。TCP/IP通信の仕組みについては、下記の「TCP/IPおよびUDPでLabVIEWを使用する」を参照してください。TCPの技術情報については、下記の「TCP仕様」を参照してください。

LabVIEWでのTCP通信には、Functions→Data Communication→Protocols→TCPで開くパレットにあるTCP/IP関数を使用してください。DAQ、計測器、ファイルI/Oの通信と同様に、処理には接続開始、情報の読み書き、および接続終了が含まれます。

ほとんどのI/O通信では、プロセッサは常にクライアントであり、ディスクドライブサーバ、外部計測器サーバ、またはDAQボードサーバへの接続を開始します。TCP/IP接続では、コンピュータはクライアントまたはサーバとして機能します。以下のブロックダイアグラムは、「TCP接続を開く」を使用してリモートサーバへの接続を開始するクライアントアプリケーションを示しています。サーバ、すなわちデーモンはリモート接続をリスンし、適切に応答します。


LabVIEWユーザは、TCP/IP通信用のカスタムアプリケーションを開発できます。プログラマはクライアントとサーバの両方を開発する責任があります。LabVIEWを使ったTCPクライアントの作成について、詳しくは下記の「TCP/IPおよびUDPでLabVIEWを使用する」を参照してください。

誰でもサーバへの接続を開始できるため、サーバのアクセス制御が必要になる場合があります。以下のブロックダイアグラムは、サーバが「TCPリスン」VIのリモートアクセスの出力値を使って、リモートクライアントがサーバへのアクセス権を持っているかどうかを判断する方法を示しています。





通信アプリケーションを開発する
アプリケーションの多くは、1つの値の読み書きだけを行うわけではありません。通信はプロトコルを含む、進行中のプロセスです。たとえば、クライアントは以下の4つのコマンドを8ビット整数でサーバに送信したと想定します。
1 = データを収集して確認
2 = データを送信
3 = ステータスを取得
4 = 接続を閉じる

以下のブロックダイアグラムでは、WhileループがVIの残りの部分を囲っています。これにより、各接続が閉じるたびにVIを再起動しなくても、複数の連続した接続を処理することができます。VIは、複数の同時接続を処理できません。外部のケースストラクチャが、接続が有効かどうかを判断します。接続が有効でない場合は、何も起きません。有効な接続が行われると、VIはWhileループに入り、TCP/IPポートから1バイトを読み取ります。このバイトはクライアントの1~4のコマンドを保持します。読み取りタイムアウトの時間内にコマンドが受信されなかった場合、内部ケースストラクチャのデフォルトケースが内部のWhileループの継続端子にTRUE値を送信し、接続をアクティブな状態に保ちます。




以下のブロックダイアグラムは、内部ケースステートメントの他の4つのケースを示しています。各ケースは、サーバが送信する特定のコマンドを処理します。また、どのケースも、ループを継続するかどうかを判断する継続端子に情報を送信します。特に、Quit(終了)ケースは常にFALSEの値を返します。ループを終了すると、サーバはクライアントとの接続を閉じます。


 
 


このタイプのサーバアーキテクチャを使用することで、より複雑なネットワーク通信手順に対応するための柔軟なサーバを開発できます。開発するプロトコルは、前述の例よりも複雑な場合があります。

Was this information helpful?

Yes

No