アプリケーション間でのデータのストリームおよびコマンドの送信
- 更新日2025-08-27
- 5分で読める
データストリーミングとコマンド送信は、2つのLabVIEWアプリケーション間でデータを送信するための通信モデルです。これらのタスクを実行するにはネットワークストリームを使用します。ネットワークストリームは、書き込み/読み取りエンドポイントで構成されるロスレスで単方向の1対1通信チャンネルです。ネットワークストリーム関数とネットワークストリームエンドポイントプロパティを使用して、ネットワークストリームを使ったアプリケーションを設計します。
ネットワークストリームでは、LabVIEWクラスおよびrefnum以外のすべてのLabVIEWデータタイプを転送できます。ネットワークストリームで転送できるrefnumは、Vision画像データタイプのみです。以下のデータタイプは最も高速なレートで転送できます。
- 数値スカラ
- ブール
- 数値スカラの1D配列
- ブールの1D配列
以下の図は、データを転送するためにネットワークを構成するいくつかの方法を示しています。
上記の図では、異なるコンピュータにある2つのアプリケーション間で、データがネットワークストリームにより転送されます。
上記の図では、アプリケーションビルドとWebサービスの間で、データがネットワークストリームにより転送されます。
| メモ ネットワークストリーミングでは、ネットワーク通信を促進するために、非ネットワークデータ転送よりも多くのオーバーヘッドが必要とされます。1つのアプリケーション内のループ間でデータを転送するには、以下の方法の使用が推奨されます。
|
上記の図では、1つのコンピュータにある1つのアプリケーションともう1台のコンピュータにある2つのアプリケーションの間で、データがネットワークストリームにより転送されます。
上記の図では、1つのコンピュータにある1つのアプリケーションと別々のコンピュータにある2つのアプリケーションの間で、データがネットワークストリームにより転送されます。
ネットワークストリームエンジン
各エンドポイントはデータ転送にFIFOバッファを使用します。ネットワークストリームエンジン (NSE) は、LogosXTを使用して、書き込みエンドポイントのFIFOバッファから読み取りエンドポイントのFIFOバッファにデータを転送します。
以下の図は、ネットワークストリーム内のデータフローを示してします。
上記の図のデータフローの順序は以下のとおりです。
- 書き込みエンドポイントがFIFOバッファにデータを書き込みます。
- NSEがネットワークを介して読み取りエンドポイントにある別のFIFOバッファにデータを転送します。
- 読み取りエンドポイントがFIFOバッファからデータを読み取ります。
シェア変数の代わりにネットワークストリームを使用するべき状況
データセットの最新値を多数のコンピュータへパブリッシュするには、シェア変数を使用します。一方、1つのコンピュータのデータのすべてのポイントをログするには、ネットワークストリームを使用します。
たとえば、パイプラインで天然ガスを再圧縮するポンプの振動を検出するために加速度計を使用しているとします。CompactRIOターゲットで振動データを処理して、ポンプが必ず正常に動作するようベアリングの故障を監視しているとします。しかし、CompactRIOターゲットにはデータ解析を行うために十分なメモリがありません。このような場合は、データの保存、解析、表示をするために十分なメモリを搭載したデスクトップコンピュータにデータを送信する必要があります。
シェア変数はデータの最新値をパブリッシュするよう設計されているため、重要なデータポイントを失う可能性があります。一方、ネットワークストリームはデータのすべてのポイントをデスクトップコンピュータにストリーミングするため、エンジンの状態を監視できます。
| メモ ネットワークストリームでは、リアルタイム (RT) タイムクリティカルループでジッタが発生する可能性があります。したがって、タイムクリティカルループからネットワークストリームでデータをストリーミングする場合は、まず優先度の低いループでデータを共有することをお勧めします。その後、ネットワークストリームで別のアプリケーションにデータをストリームします。 |