ユーザインタフェースをネットワークで使用する
- 更新日2025-02-20
- 9分で読める
一部の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から取得できる、ネットワークで共有されたシェア変数またはシンプルメッセージングリファレンスライブラリ (STM) を使用します。STMライブラリを使用して、RTターゲットにコマンドを送信できます。
SCADAインタフェースを作成する
監視制御およびデータ収集 (SCADA) では、一般的にユーザインタフェースに多数の組込コントローラと対話する1つまたは複数のユーザインタフェース端末が使用されます。SCADAアプリケーションでは、コマンドの送信や最新値の監視にネットワークで共有されたシェア変数を使用します。シェア変数をプログラム的に検索、読み取り、書き込みすることで、大規模アプリケーションの拡張性を最大限に高めることができます。
ユーザインタフェースデータをパブリッシュするためにシェア変数を使用する例については、labview\examples\Real-Time Module\RT Communication\RT FIFO VariablesのRT FIFO Variables - networked.lvprojを参照してください。
適切なペイロードサイズを使用する
ペイロードサイズとは、ネットワークで1度に送信するデータの容量です。ペイロードサイズが大きいほど、スループットとCPU効率が向上します。ただし、データを送信する際に大容量のデータが蓄積されるまで待機することで、ネットワーク転送のレイテンシが増加します。データのストリームにおいて、通常はスループットの最大化が最も重要な課題です。一方、コマンド送信時にはレイテンシの最小化が重要な課題です。
データを連続的にストリームする
スループットを最大化するには、以下のガイドラインに従ってください。
- UDP、TCP、ストリームなどの効率的なネットワークプロトコルを使用します。
- データを蓄積してからネットワークで送信します。多くのアプリケーションでは、データを1つまたは複数の1 KB (1024バイト) のペイロードで送信することで、レイテンシを適度に抑えつつ、スループットを高めてCPUオーバーヘッドを低くすることができます。ただし、データストリーム中にレイテンシを最小化する必要がある場合は、これよりもペイロードサイズを小さくします。
- イーサネットパケット検出にポーリングモードへ切り替えることを検討してください。RTターゲットのパケット検出は、NI Measurement & Automation Explorerのネットワーク設定タブにある詳細設定プルダウンメニューで設定できます。メモ ポーリングモードでは、割り込みモードよりもジッタが低くなります。ただし、ポーリングモードで必要とされるCPUオーバーヘッドによって、最大スループットが減少します。すべてのリアルタイムターゲットがポーリングモードをサポートしているわけではありません。
コマンドを送信する
レイテンシを最小化するには、以下のガイドラインに従ってください。
- UDP、TCP、ストリームなどの効率的なネットワークプロトコルを使用します。
- 各コマンドをできるだけ迅速に送信します。たとえば、コマンドを書き込んだ直後にネットワークへコマンドを送信するために、「ストリームを排出」関数を使用することができます。