このコンテンツを表示するには、JoVEへの購読が必要です。 または、無料トライアルをお申し込みください。

方法論記事

リモート相互運用プロトコルを用いたLabVIEWアプリケーション向けウェブベースインターフェースの自動生成プロトコル

189 回視聴

⸱

DOI:

10.3791/72765

⸱

2026年8月14日

この記事について

サマリー

本研究では、リモート相互運用プロトコル(RIP)に基づく自動Webユーザーインターフェース生成を、ファンモデルと直流モーター位置制御モデルという2つの異なるLabVIEWシステムを用いて検証し、これら両方の例における構築、登録、展開、およびテストのための再現可能な手順を提供します。

要約

リモート実験プラットフォームにより、ネットワーク経由でローカルのシミュレーションモデルや物理デバイスへのアクセスが可能になりますが、従来のWebフロントエンドでは、通常、実験ごとに個別のページ、コントロールレイアウト、およびデータ通信ロジックが必要となり、開発コストが増大します。本研究では、リモート相互運用プロトコル(RIP)を用いてLabVIEWバーチャルインストゥルメント(VI)からWebユーザーインターフェース(UI)を自動生成するための確立されたワークフローを検証し、その実装のための再現可能なプロトコルを提供します。このワークフローでは、フロントパネル上の入力コントロールと出力インジケータを定義するLabVIEW VIを構築し、各VIをRIPサーバー構成に登録して、得られた変数メタデータを読み取り、対応するWebコントロールと出力表示を生成します。フロントエンドの静的ファイルパスとRIPアプリケーションプログラミングインターフェース(API)リクエストパスを統合するために、リバースプロキシとしてCaddyを使用します。このワークフローは、ファン速度モデルと直流(DC)モータの比例・積分・微分(PID)位置制御モデルという2つの異なるシステムで評価されました。どちらの場合においても、Webページは公開された変数を特定し、ユーザー入力をLabVIEWバックエンドに書き込み、モデル出力を読み取り、RIPメタデータからインターフェースを生成します。これらの結果により、2つの異なる動的システムにおいて同一のUI自動生成プロセスが有効であることが検証され、それを再現するために必要な手順が文書化されました。

概要

遠隔実験、オンライン教育、およびモノのインターネット(IoT)技術の発展に伴い、ローカルなシミュレーションモデルや実験装置へのWebベースのアクセスを提供することが、実験プラットフォーム開発における重要な方向性となっています1,2,3,4。近年の研究では、IoTを導入した研究室をプロジェクトベース学習(PBL)やローカルおよびリモートアクセスとさらに統合させており、工学教育における柔軟でネットワーク化された実験プラットフォームの継続的な発展が示されています5。制御システム実験において、ユーザーは通常、ブラウザで入力パラメータを調整し、出力状態をリアルタイムで観察する必要があります6,7。従来の手法では、通常、個々の実験対象に対して個別のWebページ、制御バインドロジック、およびデータ通信インターフェースが必要でした8,9。バックエンドモデルの変数が変更されると、フロントエンドのページもそれに応じて修正しなければならないことが多く、これが大幅な重複開発作業を生み出し、実験プラットフォームの迅速な拡張を制限しています。

Remote interoperability protocol (RIP)は、バックエンドの実験モデルとWebフロントエンドの間にミドルウェア層を提供します10,11。先行研究で述べられているRIPベースの自動UI生成アプローチでは、RIPサーバーが各実験のメタデータ(変数名、入出力属性、データ型、最小値、最大値、精度、説明、および利用可能なリード/ライトメソッドを含む)を提供します11。Webクライアントは、ページの読み込み時または更新時に、このメタデータを用いてラベル、数値入力フィールド、スライダー、Booleanコントロール、出力ディスプレイなどの対応するHTML要素を作成できます11。本プロトコルでは、RIP仕様の再実装や再定義は行いません。その代わりに、既存のオープンソースRIPサービスおよびRIPベースのメタデータからHTML UIへの生成ロジックを通信とインターフェース生成の基盤として利用し、2つのLabVIEW VI例の再現可能な構築、登録、プロキシ展開、および検証に焦点を当てます。

従来のカスタムWebインターフェース開発と比較して、RIPベースの自動UI生成は、複数のLabVIEW実験で同様のスカラー入出力変数が公開されている場合、コントロールレイアウト、変数バインディングロジック、および基本的な通信機能の実装の必要性を低減します8,9,10,11。新しいVIが登録され、その変数がRIPサーバーで利用可能になると、同一のメタデータ読み取りおよびコントロール生成ロジックを再利用して、基本的なWebインターフェースを構築できます10,11。この機能は、迅速な展開、教育用デモンストレーション、および複数の類似した実験への一貫したアクセスを必要とするリモートラボプラットフォームに有用です3,8,9。しかし、自動生成されたインターフェースには制限もあります。変数間の物理的な関係を完全に推論したり、チャートのマッピングを自動的に決定したり、ドメイン固有の可視化や安全に関するインタラクションを設計したりすることはできません11。したがって、実験に高度にカスタマイズされたグラフィックス、複雑なユーザーワークフロー、高度な可視化、ハードウェアの安全インターロック、またはマルチユーザーの書き込み調停が必要な場合は、引き続き手動でのWebインターフェース開発が推奨されます。

プロトコルの全体的なワークフローを図1にまとめます。このワークフローでは、まずLabVIEW VIを用いて、フロントパネル上の必要な入力コントロールと出力インジケータを定義します。次に、実験名とVIパスを指定して、RIPサーバー構成にVIを登録します。登録後、RIPサーバーは選択した実験のメタデータを読み取り、利用可能な変数への読み取り/書き込みアクセスを提供します。XHTMLウェブページは、返されたメタデータを使用して対応する入力コントロールと出力ディスプレイを自動的に生成し、Caddyが静的ウェブページとRIP通信ルートへの統合されたアクセスパスを提供します。本研究では、同じワークフローの2つの実装例として、ファンと直流モーターのモデルを使用しています。互換性のあるスカラー変数、数値変数、およびブール変数を提供する他のLabVIEW実験についても、開発者は同様の「構築-登録-展開-検証」のワークフローに従うことで、自動生成されたウェブインターフェースを作成でき、必要に応じて実験固有の可視化、安全ロジック、または複雑なデータ処理を追加することが可能です。

本記事では、新しいRIPアーキテクチャを提案したり、RIPで既にサポートされているデータ型の範囲を拡張したりするものではありません。その代わりに、確立された通信およびメタデータに基づくUI生成メカニズムとしてRIPを利用し、再現可能な実装プロトコルを文書化しながら、2つの異なるLabVIEWシステムで同一のプロセスを検証することに焦点を当てています。先行研究では、RIPメタデータに基づくWeb UI自動生成の基本手法が提示され、オンラインサーボモータ実験がケーススタディとして用いられました11。また、インタラクティブなインターフェースとエンジニアリングソフトウェアおよびLabVIEWを組み合わせた、Web対応のリモートラボラトリーアーキテクチャについても、以前の研究で報告されています9,12。しかし、実際に再現を試みたところ、元のケースにおける一部のLabVIEWモデルがソフトウェアのバージョンやモジュールの互換性の影響を受けており、新しい環境で直接使用することが困難であることが分かりました。したがって、本研究では、互換性のある2つのバックエンドVI(ファンモデルと直流(DC)モータの比例積分微分(PID)位置制御モデル)を再構築し、両方に同一のメタデータ駆動型UI生成プロセスを適用します。本研究の貢献は、RIPの汎用性を拡張することではなく、確立されたRIPワークフローのクロスシステム検証と、そのプロセスを再現するための詳細なプロトコルの提供にあります。

本プロトコルの想定利用者は、すでにLabVIEW VIを使用しており、モデルごとに個別にカスタムフロントエンドを完全に実装することなく、Webブラウザを通じてシミュレーションモデルや低リスクの実験システムを公開する必要がある研究者、指導者、およびラボ開発者です。本プロトコルは、標準的な数値変数やブーリアン変数、パラメータ調整、およびリアルタイムの状態監視を使用する実験に特に適しています10,11。一方で、複雑なデータ構造、特殊な可視化、厳格なハードウェア安全インターロック、またはマルチユーザーによる書き込み調停を必要とする実験に対する単独のソリューションとしては不向きです11。本研究の目的は、2つの異なるLabVIEWシステムを用いてRIPベースの自動Web UI生成を検証し、バックエンドVIの構築からブラウザベースのインタラクションに至るまでの完全で再現可能なプロトコルを提供することです。本プロトコルには、入出力変数の定義、RIPサーバーへの実験登録、メタデータに基づくUI生成、Caddyプロキシの展開、およびリモート読み書きの検証が含まれます。ファンおよびDCモーターモデルに同一のワークフローを適用することで、例ごとにWebフロントエンドを完全に手動で書き直すことなく、確立されたプロセスを再現できることが実証されます9,10,11。

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

プロトコル

図1にまとめられたワークフローに従い、以下の手順で2つのRIPアクセス可能なLabVIEW実験の構築、登録、デプロイ、および検証を行います。本研究で使用したすべてのツールとプラットフォームは、材料表に記載されています。

1. ファンモデル実験の構築と展開

  1. ファンモデルVIを構築する。
    1. LabVIEWを起動して新しいVIを作成し、ファイルをfengshan.viとして保存します。VIは、RIP WebServiceプロセスがアクセス可能な任意のディレクトリに保存してください。「Private」フォルダーは例として提示しているディレクトリであり、RIP内でハードコードされているわけではありません。RIPの実験登録時に、実際に選択したVIのパスを入力してください。
    2. フロントパネルに、ファンモデルの入力コントロールを追加します。この例では、入力コントロールに名前を付けます。 有効にする, パルス幅変調, 負荷, 時定数, 最大回転数, および 撹乱セット 有効にする ブーリアン制御として使用し、設定して PWM、負荷、タウ、最大回転数、および 撹乱 倍精度浮動小数点数(DBL)数値コントロールとして。参照 付随表1 ファン変数の物理的な意味およびモデルにおける役割について。
    3. ファンモデルの出力インジケーターを追加します。この例では、出力インジケーターに名前を付けます。 速度RPM、定常RPM、時間S、正規化速度、電流A、 および PowerWすべての出力インジケーターをDBLインジケーターに設定します。
      ​注: 表1 これらの出力変数の物理的な意味とモデルにおける役割について説明します。完成したファンフロントパネルを(図/写真)に示します。 図2に表示されている変数名、範囲、およびステップサイズ。 表1 本プロトコルで実装されている2つの例について説明します。これらはRIPの固定要件ではありません。他のLabVIEW実験において、開発者は異なるフロントパネルの変数名や数値プロパティを定義することが可能です。RIPサーバーは、VIのメタデータから実際の変数名、データ型、入出力属性、および利用可能な数値プロパティを読み取り、ウェブページは返されたメタデータに基づいて対応するコントロールとディスプレイを生成します。
    4. ブロックダイアグラムにWhileループを追加します。保存用のシフトレジスタを2つ追加します。 速度_前 および 前回の時間、そして両方の値を0に初期化します。
    5. Whileループ内にFormulaノードを追加し、接続します。 有効化, PWM, 負荷, 時定数, 最大回転数, 外乱, 前回の速度, および 前の時間 Formula Nodeの左側入力端子に接続し、設定します。 SteadyRPM、speed_next、SpeedNorm、CurrentA、PowerW、 および 次へ を右側出力端子として。
    6. 構築する 有効にする 数式ノード外の制御ロジックを使用します。 有効にする 選択信号として使用することで、 u = パルス幅変調 (PWM) いつ 有効にする は真であり、かつ u = 0 いつ 有効にする 偽である。
    7. 数式ノードにファンモデルコードを入力してください。このコードを使用して、定常速度、実際速度、正規化速度、電流、電力、および運転時間を算出します。完全なコードについては、補足コーディングファイル1を参照してください。
    8. 接続してください 次へ進む Formula Nodeの出力を〜へ 回転数RPM 指示薬、および接続 次へ進む 右シフトレジスタに戻り、 速度_前接続します。 SteadyRPM 〜へ SteadyRPM 指標
    9. 接続 次へ ~へ TimeS 指示薬、および接続 次へ 右シフトレジスタに戻り、 前の時間接続する SpeedNorm、CurrentA、 および PowerW 対応する出力インジケーターへ。
    10. Whileループ内に待機関数を追加し、待機時間を50 msに設定します。ローカルストップボタンを追加し、それをWhileループの条件端子に接続します。
    11. fengshan.viを保存します。完成したファン・ブロックダイアグラムを図に示します。 図3.
      一時停止ポイント:完成したfan VIを保存した後、ワークフローを停止しても構いません。後で保存したVIを再度開き、フロントパネルのすべてのコントロール、インジケーター、およびブロックダイアグラムの接続がそのまま保持されていることを確認して再開してください。
  2. RIPサーバーにファン実験を登録してください。
    1. LabVIEWプロジェクトエクスプローラでRIPWebService.lvprojを開きます。
      .
    2. プロジェクトツリーからConfiguration.viを開き、実験構成テーブルを確認します。
    3. 新しい実験行を追加します。「Name」を「fan」に設定します。保存した「fengshan.vi」ファイルのフルパスを設定します。fan実験の登録フィールドは以下に示されています。 図4.
    4. 残りの設定フィールドを入力してください。「Authors」に実験の著者を、「Keywords」にFan(ファン)を、「Description」にfan speed model(ファン速度モデル)を、そして「Sampling Freq」に200を設定してください。
    5. LabVIEWメニューで、以下を選択します。 編集 > 現在の値をデフォルトに設定設定保存.vi
    6. RIP WebServiceを再起動し、再起動後も設定インターフェースにファン実験が表示されたままになっていることを確認してください。
      注:実験名は大文字と小文字を区別します。RIP Configurationのfanの値は、フロントエンドのXHTMLファイルで使用される実験IDと完全に一致させる必要があります。同じ自動UI生成ロジックを持つ別のLabVIEW VIをデプロイするには、RIP Configurationに新しい実験エントリを追加し、新しいName値を設定して、Pathを対応するVIファイルに設定してください。その後、XHTMLファイル内でそのName値を実験IDとして使用します。変数ごとにフロントエンドページを書き直す必要はありません。
      ​一時停止ポイント:Configuration.viを保存し、現在の値をデフォルトに設定した後、ワークフローを停止しても構いません。後でRIP WebServiceを再起動し、ファン実験が引き続き登録されていることを確認して、作業を再開してください。
  3. ファン実験用のフロントエンドページを準備します。
    1. Fan_Automatic_UI.xhtmlを、フロントエンドのルートディレクトリとして使用されるClientディレクトリに配置します。
    2. テキストエディタでFan_Automatic_UI.xhtmlを開きます。
    3. スクリプトセクションにある実験ID(experiment ID)変数を探し、それをfanに設定してください。
      注:この値は、RIP構成におけるファン実験の「Name」フィールドと完全に一致させる必要があります。実験IDの設定およびXHTMLフロントエンドファイル用の共有メタデータに基づくUI生成ロジックは、以下に示されています。 図5.
    4. ページがwindow.location.originを通じて現在のアクセスオリジンを取得し、以下の方法で実験メタデータをリクエストしていることを確認してください。 rip.info()、そして返されたメタデータを~に渡します。 autobuildUI().
      注:ページ内でファン変数の変数名、範囲、またはステップサイズを手動でハードコードしてはいけません。代わりに、書き込み可能な変数は以下から生成されます。 meta.writables.list、読み取り可能な変数が生成されます メタ.読み取り可能リスト、およびmin、max、stepなどの数値属性は、RIPサーバーから返されるメタデータから取得されます。
    5. Fan_Automatic_UI.xhtmlを保存してください。
      ​注:別のLabVIEW VIに同じフロントエンド生成ロジックを使用するには、XHTMLファイルで新しい実験IDを設定し、RIP設定(RIP Configuration)に対応する実験名とVIパスを登録してください。ウェブコントロールと出力ディスプレイは、選択された実験によって返されるメタデータに基づいて生成されます。
  4. ファン実験用のキャディアクセスパスを設定します。
    1. テキストエディタでCaddyfileを開きます。
    2. フロントエンドのルートディレクトリを、Fan_Automatic_UI.xhtmlを含むClientディレクトリに設定してください。
    3. CaddyがウェブページおよびRIPルートへのブラウザアクセスを提供するために、使用されていないローカルポートを選択してください。本プロトコルでは、例としてポート8090をプロキシアクセスポートとして使用します。
      注意:ポート8090はRIPおよびCaddyでは不要です。ポート8090が既に使用されている場合は、他の未使用のローカルポートに置き換え、ブラウザのアドレスでも同様のポートを使用してください。
    4. /fanをFan_Automatic_UI.xhtmlに書き換えるルートを追加してください。
    5. LabVIEWで設定されているRIP WebServiceポートを確認します。本プロトコルでは、RIP WebServiceアドレスとしてhttp://localhost:8001を使用します。
      注意:ポート8001は、テスト環境で使用されるLabVIEW/RIP WebServiceバックエンドポートです。これはLabVIEW/RIP WebServiceの設定で変更可能です。別のポートを使用する場合は、Caddyfile内のhttp://localhost:8001を、対応するRIP WebServiceのアドレスに置き換えてください。
    6. /RIP/SSE* へのリクエストを http://localhost:8001 などの RIP WebService アドレスに転送するリバースプロキシルールを追加します。
    7. /RIP* へのリクエストを http://localhost:8001 などの RIP WebService アドレスに転送するリバースプロキシルールを追加します。Caddyfile の設定は以下に示されています。 図6.
    8. Windowsでコマンドプロンプトを開きます。次のコマンドを入力し、Caddyをダウンロードまたはインストールしたローカルディレクトリに移動します。
      cd /d D:\caddy
      注:本プロトコルにおいて、D:\caddyはテスト環境で使用されるCaddyのローカルダウンロード先またはインストールパスです。Caddyを別のディレクトリに保存している場合は、D:\caddyを対応するローカルパスに置き換えてください。
    9. 次のコマンドを入力して、指定したCaddyfileでCaddyを起動します。
      caddy.exe run --config Caddyfile
    10. Caddyが設定エラーを報告せずに起動することを確認します。ウェブブラウザで http://localhost:8090/fan を開き、以下に示すようにfanウェブUIが生成されていることを確認してください。 図7.
      ​注:ブラウザに502エラーが表示される場合は、RIP WebServiceが動作していること、LabVIEWのRIP WebServiceポートがCaddyfileのリバースプロキシアドレスと一致していること、および選択したCaddyアクセスポートが使用中でないことを確認してください。
  5. ファン実験の動作結果を確認してください。
    1. フロントエンドページが自動的に生成することを確認してください。 有効にする, PWM、負荷、タウ、最大回転数 および 撹乱 入力コントロール
    2. フロントエンドページに以下が表示されていることを確認します。 回転速度RPM, 定常回転速度RPM, 時間S, 正規化回転速度, 電流A, および PowerW 出力変数
    3. 調整 パルス幅変調 および、~かどうかを観察する 回転速度(RPM) ~に伴い増加する パルス幅変調 〜に従って増加および減少する パルス幅変調 減少する。
    4. 負荷を調整し、~かどうかを観察する SteadyRPM および 回転速度(RPM) 負荷の増加に伴い減少する。
    5. 撹乱を調整し、〜かどうかを観察する 回転数(RPM)、電流(A)、 および PowerW 外乱入力に対する応答の変化。
    6. ~であることを確認してください TimeS 増加し続けており、バックエンドファンVIが連続して動作していることが確認される。

2. DCモータPID位置制御実験の構築と展開

  1. DCモータPID位置制御モデルVIを構築する。
    1. LabVIEWを開き、新しいVIを作成して、ファイルをMotor.viとして保存します。このVIは、RIP WebServiceプロセスがアクセス可能な任意のディレクトリに保存してください。
      注:Privateフォルダは例示としてのみ使用されており、RIPにハードコードされているわけではありません。RIP実験の登録時には、実際に選択したVIパスを入力してください。
    2. フロントパネルに、DCモーターPID位置制御モデルの入力コントロールを追加します。この例では、入力コントロールに以下の名前を付けます。 設定値、比例ゲイン(Kc)、積分時間(Ti)、微分時間(Td)、外乱、および リセットコントロール設定 設定値、比例ゲイン、積分時間、微分時間 および 摂動 DBL数値コントロールとして設定し、ResetコントロールをBooleanコントロールとして設定します。
      注: 表1 本例で使用される変数の物理的意味、モデルにおける役割、および推奨範囲について説明します。
    3. DCモータPID位置制御モデルに出力インジケータを追加します。この例では、出力インジケータに名前を付けます。 位置、電圧、時間、 および 測定角速度すべての出力インジケーターをDBLインジケーターとして設定します。 表1 これらの出力変数の物理的な意味とモデルにおける役割について説明します。完成したモーターのフロントパネルを以下に示します。 図8.
      注:以下に記載されている変数名および範囲は 表1 本プロトコルで実装されている2つの例について説明します。これらはRIPベースの自動UI生成ワークフローにおいて固定的な要件ではありません。別のLabVIEW VIを使用する場合、RIPはVIのメタデータから実際の変数名、データ型、入出力属性、および利用可能な数値プロパティを読み取ります。したがって、フロントエンドの生成ロジックにおいて、各実験の変数名、最大値、最小値、またはステップサイズをハードコードする必要はありません。
    4. ブロックダイアグラムにWhileループを追加します。保存用のシフトレジスタを6個追加します。 シータ、オメガ、im、e_prev、integ、 および 時間、 そして、6つの値をすべて0で初期化します。
    5. Whileループの中にFormulaノードを追加します。図に示されているDCモータPID位置制御モデル図に従って、 図9このFormula Nodeを、誤差計算、PID制御、電圧制限、電気モデル、機械モデル、および位置更新のためのコア計算モジュールとして使用してください。
      注:本モデルで使用されている内部モーターパラメータ(例えば、 R, L, J, b, Kt, Ke, および 最大反応速度、これらは特定の物理モータのキャリブレーション済みパラメータではなく、正規化されたティーチングモデルのパラメータである。これらは、選択したタイムステップおよび電圧制限の下で、安定し観察可能なシミュレーション応答を生成するように選択されており、これにより~の影響を 設定値, 比例ゲイン (Kc), 積分時間 (Ti), 微分時間 (Td), および 攪乱 Webベースの操作中に明確に実演することが可能です。
    6. セット 設定値, シータ, オメガ, 積分項, 前回の誤差, 積分値, 比例ゲイン, 積分時間, 微分時間, 外乱, リセット, および dt aFormula Nodeの入力端子です。設定してください。 theta_next, omega_next, im_next, e_next, integ_next, および 電圧 Formula Nodeの出力端子として。
    7. 接続してください 設定値 ~へのコントロール(対照) 種 Formula Nodeの入力端子に接続します。 Kc, Ti, Td, および 撹乱 〜へ Kc, Ti, Td, およびd乱れFormula Nodeのそれぞれの入力端子。
    8. リセット制御ブール信号を数値信号に変換し、次へ接続します。 リセット Formula Nodeの入力端子。以下の時に状態リセットを実行する。 リセット 0ではない場合に、PID制御およびモーター状態の更新を実行し、 リセット 0に等しい。
    9. 数値定数を加える dt その値を0.001秒に設定します。次に、~を接続します。 dt 〜へ dt Formula Nodeの入力端子を使用し、時間の更新に利用します。
    10. Formula NodeにてDCモーターの内部モデルパラメータを設定します。参照: 付録表2 モーター変数の物理的意味およびモデルにおける役割について。
    11. Formula NodeにDCモータのPID位置制御コードを入力します。このコードを用いて、リセットロジック、誤差計算、積分項の計算、微分項の計算、PID制御、電圧制限、電流の更新、角速度の更新、および位置の更新を実装してください。完全なコードについては、補足コーディングファイルを参照してください。
    12. 接続 次のシータ 〜へ 配置 指示薬、および接続 次のシータ 右シフトレジスタに戻ります シータ 接続 オメガ・ネクスト 〜へ 測定角速度インジケーター、および接続します omega_next 右シフトレジスタに戻り、~のための オメガ
    13. 電圧を電圧インジケーターに接続します。接続してください。 im_next, e_next, および integ_next 右シフトレジスタへ戻ります im, e_prev, および 統合的に それぞれ。
    14. Formula Node の外部で加算関数を使用して計算を行う time_next = time + dt. 接続 次へ ~へ 時間 指示薬、および接続 次へ 時間軸用の右シフトレジスタに戻ります。
    15. Whileループの中にWait関数を追加し、待ち時間を1 msに設定します。停止ボタンを追加し、それをWhileループの条件端子に接続します。
    16. Motor.viを保存します。完成したモーターのブロックダイアグラムを図に示します。 図10.
      一時停止ポイント:完成したモーターVIを保存した後、ワークフローを停止しても構いません。保存したVIを再度開き、フロントパネルのすべてのコントロール、インジケータ、およびブロックダイアグラムの接続が保持されていることを確認して、作業を再開してください。
  2. RIPサーバーに運動実験を登録します。
    1. LabVIEWプロジェクトエクスプローラでRIPWebService.lvprojを開きます。
    2. プロジェクトツリーからConfiguration.viを開き、実験構成テーブルを確認してください。
    3. 新しい実験行を追加します。「Name」を「Motor」に設定します。「Path」に、保存したMotor.viファイルの完全なパスを設定します。モーター実験の登録フィールドは、以下に示されています。 図11.
    4. 残りの設定フィールドを入力します。「Authors」に実験の著者を、「Keywords」に Motor を、「Description」に DC motor position control model を、そして「Sampling Freq」に 200 を設定してください。
    5. LabVIEWメニューから、以下を選択します。 編集 > 現在の値をデフォルトに設定設定保存.vi
    6. RIP WebServiceを再起動し、再起動後も構成インターフェースにMotor実験が引き続き表示されていることを確認してください。
      注:実験名は大文字と小文字を区別します。「RIP Configuration」の「Motor」の値は、「Motor_Automatic_UI.xhtml」で使用されている実験IDと完全に一致している必要があります。同じ自動UI生成ロジックを持つ別のLabVIEW VIをデプロイするには、「RIP Configuration」に新しい実験エントリを追加し、「Name」に新しい値を設定して、「Path」に対応するVIファイルを指定してください。その後、XHTMLファイル内で、その「Name」の値と同じものを実験IDとして使用してください。変数ごとにフロントエンドページを書き直す必要はありません。
      ​一時停止ポイント:Configuration.viを保存し、現在の値をデフォルトとして設定した後、ワークフローを停止しても構いません。後でRIP WebServiceを再起動し、Motor実験が引き続き登録されていることを確認して再開してください。
  3. 運動実験用のフロントエンドページを準備する。
    1. Motor_Automatic_UI.xhtmlを、フロントエンドのルートディレクトリとして使用されるClientディレクトリに配置してください。
    2. テキストエディタでMotor_Automatic_UI.xhtmlを開きます。
    3. スクリプトセクションにある実験ID(experiment ID)変数を確認し、値を「Motor」に設定してください。この値は、RIP Configurationにおけるモーター実験の「Name」フィールドと完全に一致している必要があります。モーターのフロントエンドページでは、以下に示すものと同じメタデータベースのUI生成ロジックが使用されています。 図5; RIP構成のMotorエントリーに合わせて、実験IDのみを変更します。
    4. ページにRIPメタデータ読み取りロジック、HTMLコントロール生成ロジック、RIP書き込み関数、および出力更新関数が含まれていることを確認してください。
      注:ページ内でモーターの変数名、範囲、またはステップサイズを手動でハードコードしてはいけません。これらのプロパティは、前述のRIPベースのメタデータからHTMLへの生成メカニズムに従い、RIPサーバーから返されるメタデータから取得されます。11.
    5. Motor_Automatic_UI.xhtmlを保存してください。
      ​注意:別のLabVIEW VIに同様のフロントエンド生成ロジックを使用する場合は、XHTMLファイルで新しい実験IDを設定し、RIP Configurationにそれに対応する実験名(Experiment Name)とVIパス(VI Path)を登録してください。ウェブコントロールおよび出力ディスプレイは、選択された実験によって返されるメタデータに基づいて生成されます。
  4. モーター実験用にCaddyのアクセスパスを設定してください。
    1. テキストエディタでCaddyfileを開きます。
    2. フロントエンドのルートディレクトリを、Motor_Automatic_UI.xhtmlが含まれているClientディレクトリに設定してください。
    3. Caddyを介してWebページおよびRIPルートへのブラウザアクセスを提供するため、使用されていないローカルポートを選択してください。本プロトコルでは、例としてプロキシアクセスポートにポート8090を使用しています。
      注:ポート8090はRIPまたはCaddyでは必要ありません。ポート8090が使用中の場合は、他の未使用のローカルポートに置き換え、ブラウザのアドレスでも同じポートを使用してください。
    4. /motorをMotor_Automatic_UI.xhtmlに書き換えるルートを追加します。
    5. LabVIEWで設定されているRIP WebServiceポートを確認します。本プロトコルでは、RIP WebServiceのアドレスとしてhttp://localhost:8001を使用します。
      注:ポート8001は、テスト環境で使用されるLabVIEW/RIP WebServiceバックエンドポートです。このポートはLabVIEW/RIP WebServiceの設定で変更可能です。別のポートを使用する場合は、Caddyfile内のhttp://localhost:8001を対応するRIP WebServiceアドレスに置き換えてください。
    6. /RIP/SSE* へのリクエストを、http://localhost:8001 などの RIP WebService アドレスに転送するリバースプロキシルールを追加してください。
    7. /RIP* へのリクエストを http://localhost:8001 などの RIP WebService アドレスに転送するリバースプロキシルールを追加します。Caddyfile の設定を図6に示します。
    8. Windowsでコマンドプロンプトを開きます。次のコマンドを入力し、Caddyをダウンロードまたはインストールしたローカルディレクトリに移動します。
      cd /d D:\caddy
      注:本プロトコルにおいて、D:\caddyはテスト環境で使用されるCaddyのローカルダウンロード先またはインストールパスです。Caddyを別のディレクトリに保存している場合は、D:\caddyを対応するローカルパスに置き換えてください。
    9. 次のコマンドを入力して、指定したCaddyfileでCaddyを起動します。
      caddy.exe run --config Caddyfile
    10. Caddyが設定エラーを報告せずに起動することを確認してください。ウェブブラウザで http://localhost:8090/motor を開き、図に示されているように、モーターのウェブUIが生成されていることを確認してください。 図12.
      ​注意:モーターのウェブページは読み込まれるが出力値が更新されない場合は、RIP WebServiceが動作していること、モーターVIが実行中であること、LabVIEWのRIP WebServiceポートがCaddyfileのリバースプロキシアドレスと一致していること、および /RIP/SSE* ルートが正しくプロキシされていることを確認してください。
  5. モーター実験の動作結果を確認してください。
    1. フロントエンドページで、〜が自動的に生成されることを確認してください。 設定値, 比例ゲイン, 積分時間, 微分時間, 外乱 および リセット コントロール入力コントロール
    2. フロントエンドページに以下が表示されていることを確認します。 位置、電圧、時間 および 測定された角速度 出力変数
    3. 調整 設定値 そして、目標位置の変化に対してPositionが応答するかどうかを確認します。
    4. 調整 Kc, Ti, および Td そして、〜かどうかを観察する 電圧、位置、 および 測定角速度 変更
    5. 調整 外乱を与え、位置、制御電圧、または測定された角速度がどのように変化するかを観察する 〜の影響を受ける 撹乱 入力してください。
    6. 「Reset control」をクリックし、~かどうかを確認してください。 位置、電圧、測定角速度 また、関連する内部状態は、リセットロジックに従って初期状態に戻ります。

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

結果

上述のワークフローを完了すると、ファン実験とDCモーターPID位置制御実験の両方に、自動生成されたWebフロントエンドを通じてアクセスできるようになります。成功した結果は、3つの観察事項によって示されます。第一に、Webページに、RIPサーバーから返された変数メタデータに基づいた入力コントロールと出力表示フィールドが自動的に生成されることです。第二に、ユーザーがWebページ上の入力変数を変更すると、修正された値がRIPインターフェースを介してLabVIEWバックエンドVIに書き込まれることです。第三に、バックエンドVIで計算された出力変数がRIPを通じて返され、Webページ上でリアルタイムに更新されることです。ファン実験では、ブラウザで http://localhost:8090/fan にアクセスすると、Figure 7 に示すように、RIPメタデータから入力コントロールと出力フィールドが自動的に生成されます。入力側には Enable, PWM, Load, Tau, KMaxRPM, および Disturbanceが含まれ、出力側には

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

ディスカッション

本プロトコルにおける重要なステップは、LabVIEWバックエンドVIの標準化された構築と登録です。フロントパネルのコントロールとインジケータには、明確で固有の変数名を使用する必要があり、そのデータ型はモデル計算およびRIP読み書きプロセスで想定される変数と一致していなければなりません。本プロトコルで使用する2つの例では、スカラー数値変数はDBLコントロールまたはインジケータとして定義され、ブーリアン変数はブーリアンコントロールとして定義されています。また、ブロックダイアグラムでは、Whileループ、シフトレジスタ、およびフォーミュラノードを通じて継続的な状態更新を維持し、実行中にファン速度、モーター位置、モーター角速度、電圧、時間などの変数を更新できるようにする必要があります。VIの構築後、RIP Configurationの実験名(experiment Name)は、対応するXHTMLファイルで使用されている実験IDと正確に一致させる必要があり、VIパス(VI Path)は実際に保存されたVIを指している必要があります。Webフロントエンドは各実験の変数をハードコードせず、代わりにRIPサーバーから返されるメタデータに依存して、書き込...

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

開示事項

著者は、言語の推敲のみを目的としてAI支援ツールを使用しました。すべての科学的内容、実験手順、ソフトウェアの実装、図、結果、解釈、および最終的な文言は、著者によって確認、修正、および承認されました。実験データの生成にAIツールは使用されていません。

謝辞

本研究は、武漢大学の学部生イノベーション育成プログラムの支援を受けて行われました。

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

材料

この記事で使用された材料の一覧
名前会社カタログ番号コメント
CaddyプロキシサーバーCaddyN/AWeb UIの提供および/RIPリクエストをRIP WebServiceへ転送するために使用されるリバースプロキシ
Caddyfile著者により作成N/ARIP通信のための静的ファイルルートおよびリバースプロキシルートを定義
Fan_Automatic_UI.xhtml著者により作成N/Aファン実験用のメタデータベースWebフロントエンド
LabVIEWNational Instruments2026fengshan.viおよびMotor.viの構築と実行に使用されるソフトウェア
Microsoft Windows オペレーティングシステムMicrosoftWin11LabVIEW、RIP WebService、Caddy、およびブラウザを実行するために使用されるオペレーティングシステム
Motor_Automatic_UI.xhtml著者により作成N/Aモーター実験用のメタデータベースWebフロントエンド
Mozilla Firefox デスクトップブラウザMozilla2026Web UIへのアクセス、デベロッパーツール、タイミング/リソースの観察、およびネットワーク/コンソールのスクリーンショットに使用されるデスクトップブラウザ
RIP WebServiceUNEDLabshttps://github.com/Nebulous-Systems/rip-server_labviewRIP POSTリクエストを受信し、ブラウザフロントエンドで使用されるWebService通信レイヤーを提供
WindowsタスクマネージャーMicrosoftWindowsに組み込みブラウザおよびLabVIEWプロセスのプロセスレベルのCPUおよびメモリの観察を記録するために使用

参考文献

  1. Gomes, L., Bogosyan, S. Current trends in remote laboratories. IEEE Trans Ind Electron. 2009;56(12):4744–4756.
  2. Ma, J., Nickerson, J. V. Hands-on, simulated, and remote laboratories: A comparative literature review. ACM Comput Surv. 2006;38(3):7-es.
  3. Heradio, R. et al. Virtual and remote labs in education: A bibliometric analysis. Comput. Educ. 2016;98:14–38.
  4. May, D., Jahnke, I., Moore, S. Online laboratories and virtual experimentation in higher education from a sociotechnical-pedagogical design perspective. J. Comput. High. Educ. 2023;35:203–222.
  5. Amador Nelke, S. et al. Enhancing lessons on the Internet of Things in science, technology, engineering, and medical education with a remote lab. Sensors.2024;24(19):6424.
  6. Lei, Z. et al. Interactive and visualized online experimentation system for engineering education and research. J. Vis. Exp. 2021;(177):e63342.
  7. Zhang, G., Lei, Z., Hu, W., Zhou, H. Online virtual reality networked control laboratory applied in control engineering education. J. Vis. Exp. 2024;(204):e66432.
  8. Fabregas, E., Farias, G., Dormido-Canto, S., Dormido, S., Esquembre, F. Developing a remote laboratory for engineering education. Comput. Educ. 2011;57(2):1686–1697.
  9. Chacón, J., Vargas, H., Farias, G., Sánchez, J., Dormido, S. EJS, JIL Server, and LabVIEW: An architecture for rapid development of remote labs. IEEE Trans. Learn. Technol.2015;8(4):393–401.
  10. Chacón, J., Farias, G., Vargas, H., Visioli, A., Dormido, S. Remote Interoperability Protocol: A bridge between interactive interfaces and engineering systems. IFAC-PapersOnLine.2015;48(29):247–252.
  11. de la Torre, L., Chacón, J., Chaos, D., Heradio, R., Chandramouli, R. Using IoT-type metadata and smart Web design to create user interfaces automatically. IEEE Trans. Ind. Inform. 2023;19(3):3109–3118.
  12. Chaos, D., Chacón, J., Lopez-Orozco, J. A., Dormido, S. Virtual and remote robotic laboratory using EJS, MATLAB, and LabVIEW. Sensors. 2013;13(2):2595–2612.
  13. Haj-Hosseini, N., Jonasson, H., Stridsman, M., Carlsson, L. Interactive remote electrical safety laboratory module in biomedical engineering education. Educ. Inf. Technol. 2024;29:20505–20521.
  14. Galán, D. et al. Safe experimentation in optical levitation of charged droplets using remote labs. J. Vis. Exp. 2019;(143):e58699.
  15. Kurtz, M., Benabbou, A., Pons, C., Broisin, J. Collaboration in virtual and remote laboratories for education: A systematic literature review. Int. J. Comput.-Support. Collab. Learn. 2025;20:549–603.
  16. Zamarreño, J. M., Ríos, J. C., Alonso, G. Virtual and remote laboratory as a complementary support in control education. Discov. Educ. 2025;4:477.
  17. Chacón, J., Sáenz, J., de la Torre, L., Díaz, J. M., Esquembre, F. Design of a low-cost air levitation system for teaching control engineering. Sensors. 2017;17(10):2321.
  18. Stefanovic, M., Cvijetkovic, V., Matijevic, M., Simic, V. A LabVIEW-based remote laboratory experiments for control engineering education. Comput. Appl. Eng. Educ.2011; 19(3):538–549.
  19. González, I., Calderón, A. J., Mejías, A., Andújar, J. M. Novel networked remote laboratory architecture for open connectivity based on PLC-OPC-LabVIEW-EJS integration. Application in remote fuzzy control and sensors data acquisition. Sensors. 2016;16(11):1822.
  20. Abdulwahed, M., Nagy, Z. K. Developing the TriLab, a triple access mode (hands-on, virtual, remote) laboratory, of a process control rig using LabVIEW and Joomla. Comput. Appl. Eng. Educ. 2013;21(4):614–626.

アクセスが制限されています。このコンテンツを表示するにはログインするか、トライアルを開始してください。

再版と許可

タグ

ウェブユーザーインターフェース自動UI生成仮想計器RIPサーバー設定リバースプロキシCaddyプロキシPID位置制御可変メタデータ

この記事は公開されました

動画は近日公開