一部のRTターゲットには、RTターゲットVIのフロントパネルを表示したり制御したりできるユーザインタフェースが組み込まれています。しかし、LabVIEW Real-Timeモジュールでサポートされている他のRTターゲットには、基本的な出力表示だけで、ヘッドレスに実行されるように設計されているものがあります。組込ユーザインタフェースをサポートしていないRTターゲットの場合、LabVIEW Real-Timeモジュールアプリケーション用にグラフィカルユーザインタフェース (GUI) を作成するには、分散コンピューティングのアプローチが必要になります。リアルタイムアプリケーションがユーザインタフェースを必要とするにも関わらず、組込UIを使用できない場合は、汎用オペレーティングシステムでGUIを表示し、リモート通信プロトコルでRTターゲットとGUIデバイスとの間でデータを転送します。

フロントパネルオブジェクト、メソッド、イベントの使用を回避する

組込UIをサポートしないターゲットのRT VIを開発する際は、デバッグを目的としてフロントパネル制御器/表示器を使用できますが、実際のスタンドアロンRTアプリケーションでユーザインタフェースとしてフロントパネルを使用することはできません。VIをスタンドアロンRTアプリケーションとしてデプロイすると、VIのフロントパネルとそれに関連するすべてのオブジェクト、プロパティ、メソッド、イベントは自動的に削除されます。イベント駆動型プログラミングは多くのLabVIEW VIにとって有効なユーザインタフェースデザインパターンですが、RTターゲットで実行するVIには一般的なLabVIEWイベント駆動型UIデザインパターンを使用することはできません。ただし、RTターゲットVIとの通信にネットワークプロトコルを使用するホストコンピュータで実行するユーザインタフェースVIには使用できます。

適切なネットワーク装置を使用する

ネットワーク装置には、既に使用しているものを使用したり、最も安価なものを選択しがちです。市販のネットワーク装置の品質は非常に幅広いため、アプリケーションに最も適したネットワーク装置を選択する際は十分に検討する必要があります。アプリケーションによっては、安価な装置で十分な場合もあります。しかし、ネットワークのスループット、レイテンシ、信頼性に依存するアプリケーションでは、高品質なネットワーク装置を使用することが不可欠です。

適切なネットワークプロトコルを使用する

以下の表は、RTターゲットおよびGUIデバイス間のデータ転送によく使用されるリモート通信プロトコルの長所、短所、一般的な用途を示しています。

使用例 プロトコル 利点 欠点
最新値の監視 ネットワーク共有シェア変数 プログラムが簡単、一度に多数のコンピュータへのパブリッシュが可能、RT FIFOが有効な場合に確定的ループを安全に使用できる、業界プロトコルとの統合可能 高いCPUオーバーヘッド、独自、シェア変数エンジンが必要
RTターゲットとホストコンピュータ間でのデータストリーム、RTターゲットへのコマンド送信 ネットワークストリーム 高スループット、無損失、自動接続管理、ネイティブLabVIEWデータタイプのサポート 単一書き込みと単一読み取り、単方向データ転送、非確定的、独自
ni.comから参照できるSTMなどのカスタムプロトコルの基盤 TCPまたはUDP 高いCPUおよびメモリ使用率、優れた柔軟性、相互運用の標準プロトコル 難解なプログラミング、文字列データのみ、データ識別用の標準メソッドなし
RT VIのダイナミック制御 VIサーバ VIのローカルまたはリモート制御と他のLabVIEW構成項目の抽象化 低速、独自
Webベースユーザインタフェース、標準Webテクノロジとの統合 Webサービス Web標準、クライアント接続にLabVIEWが不要 高いオーバーヘッド、プログラミングが困難、非LabVIEW言語でのシンクライアントの作成が必要

以下の表は、多くの一般的なRT GUI使用例で推奨されるネットワークプロトコルを示しています。

使用例 推奨プロトコル
コマンド (一対一) ホストPCから1つのRTターゲットにユーザインタフェースの値の変化を送信 ネットワークストリーム関数
コマンド (一対多数) ホストPCから複数のRTターゲットにユーザインタフェースの値の変化を送信 ネットワーク共有シェア変数
コマンド (多数対一) 複数のWebクライアントからRTターゲットにユーザインタフェースの値の変化を送信 WebサービスVIまたはネットワークで共有されたシェア変数
監視 (一対一) RTターゲットによってパブリッシュされた最新値をホストPCで監視 ネットワークで共有されたシェア変数またはSTM
監視 (一対多数) RTターゲットによってパブリッシュされた最新値を複数のWebクライアントで監視 WebサービスVIまたはネットワークで共有されたシェア変数
監視 (多数対一) 複数のRTターゲットによってパブリッシュされた最新値をホストPCで監視 ネットワーク共有シェア変数
ストリーム (一対一) ログ用にRTターゲットから連続的なデータストリームをホストPCへ送信 ネットワークストリーム関数
ストリーム (一対多数) Webビデオサーバ TCPまたはUDP
ストリーム (多数対一) Webビデオクライアント TCPまたはUDP
メモ コマンドの送受信を行うために、ネットワーク共有シェア変数を使用する例については、ni.comからNI CompactRIO開発ガイドを参照してください。

専用インタフェースを作成する

単一の専用ユーザインタフェース端末を必要とするアプリケーションでは、ネットワークストリーム関数を使用して、データの連続ストリームとコマンド送信を行います。各変数の最新値を監視するにはni.comから取得できる、ネットワークで共有されたシェア変数またはシンプルメッセージングリファレンスライブラリ (STM) を使用します。STMライブラリを使用して、RTターゲットにコマンドを送信できます。

SCADAインタフェースを作成する

監視制御およびデータ収集 (SCADA) では、一般的にユーザインタフェースに多数の組込コントローラと対話する1つまたは複数のユーザインタフェース端末が使用されます。SCADAアプリケーションでは、コマンドの送信や最新値の監視にネットワークで共有されたシェア変数を使用します。シェア変数をプログラム的に検索、読み取り、書き込みすることで、大規模アプリケーションの拡張性を最大限に高めることができます。

ユーザインタフェースデータをパブリッシュするためにシェア変数を使用する例については、labview\examples\Real-Time Module\RT Communication\RT FIFO VariablesRT FIFO Variables - networked.lvprojを参照してください。

メモ LabVIEW Datalogging and Supervisory Control (DSC) モジュールをインストールすると、高度なSCADAアプリケーションを作成するための追加機能を使用できます。

適切なペイロードサイズを使用する

ペイロードサイズとは、ネットワークで1度に送信するデータの容量です。ペイロードサイズが大きいほど、スループットとCPU効率が向上します。ただし、データを送信する際に大容量のデータが蓄積されるまで待機することで、ネットワーク転送のレイテンシが増加します。データのストリームにおいて、通常はスループットの最大化が最も重要な課題です。一方、コマンド送信時にはレイテンシの最小化が重要な課題です。

データを連続的にストリームする

スループットを最大化するには、以下のガイドラインに従ってください。

  • UDP、TCP、ストリームなどの効率的なネットワークプロトコルを使用します。
  • データを蓄積してからネットワークで送信します。多くのアプリケーションでは、データを1つまたは複数の1 KB (1024バイト) のペイロードで送信することで、レイテンシを適度に抑えつつ、スループットを高めてCPUオーバーヘッドを低くすることができます。ただし、データストリーム中にレイテンシを最小化する必要がある場合は、これよりもペイロードサイズを小さくします。
  • イーサネットパケット検出にポーリングモードへ切り替えることを検討してください。RTターゲットのパケット検出は、NI Measurement & Automation Explorerのネットワーク設定タブにある詳細設定プルダウンメニューで設定できます。
    メモ ポーリングモードでは、割り込みモードよりもジッタが低くなります。ただし、ポーリングモードで必要とされるCPUオーバーヘッドによって、最大スループットが減少します。すべてのリアルタイムターゲットがポーリングモードをサポートしているわけではありません。

コマンドを送信する

レイテンシを最小化するには、以下のガイドラインに従ってください。

  • UDP、TCP、ストリームなどの効率的なネットワークプロトコルを使用します。
  • 各コマンドをできるだけ迅速に送信します。たとえば、コマンドを書き込んだ直後にネットワークへコマンドを送信するために、「ストリームを排出」関数を使用することができます。