方法論記事

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

DOI:

10.3791/72765

2026年8月14日

この記事について

サマリー

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

要約

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

概要

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

遠隔実験、オンライン教育、およびモノのインターネット(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

プロトコル

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

図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」をクリックし、~かどうかを確認してください。 位置、電圧、測定角速度 また、関連する内部状態は、リセットロジックに従って初期状態に戻ります。

結果

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

上述のワークフローを完了した後、ファン実験とDCモーターPID位置制御実験の両方に、自動生成されたWebフロントエンドを通じてアクセスできます。成功した結果は、次の3つの観察事項によって示されます。第一に、WebページにRIPサーバーから返された変数メタデータに基づいた入力コントロールと出力表示フィールドが自動的に生成されること。第二に、ユーザーがWebページ上の入力変数を変更すると、修正された値がRIPインターフェースを通じてLabVIEWバックエンドVIに書き込まれること。第三に、バックエンドVIで計算された出力変数がRIPを通じて返され、Webページ上でリアルタイムに更新されることです。ファン実験では、ブラウザにhttp://localhost:8090/fanを入力すると、図7に示すように、ページにRIPメタデータから入力コントロールと出力フィールドが自動的に生成されます。入力側には Enable, PWM, Load, Tau, KMaxRPM, およびDisturbanceが含まれ、出力側には SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA, および PowerW が表示されます。正常な動作中、TimeSは継続的に増加し、バックエンドのfengshan.viが実行されていることを示します。PWMを増加させると、それに伴いSpeedRPMSteadyRPMが増加します。Loadを増加させると、loadによって定常動作速度が低下するため、ファン速度が低下します。Disturbanceを調整すると、SpeedRPM, CurrentA,およびPowerWに相応の変化が観察されます。これらの観察により、Web側の入力がLabVIEWバックエンドに正しく送信され、計算された出力がRIPを通じてフロントエンドに返されていることが確認されます。

DCモーターのPID位置制御実験において、ブラウザでhttp://localhost:8090/motorを入力すると、RIPメタデータから対応する制御項目および出力フィールドが自動的に生成されます。これは以下に示されています。 図12入力変数には以下が含まれます。 設定点、比例ゲイン (Kc)、積分時間 (Ti)、微分時間 (Td)、外乱、および リセット 制御し、出力変数には以下が含まれます。 位置、電圧、時間 および 測定された角速度y. ~のとき 設定値 変更される、 位置 新しい目標値に反応します。PIDパラメータが Kc, Ti, および Td(分解温度) 調整される、出力応答、コントロール 電圧、および 測定された角速度 適切に変更し、ウェブページに入力されたパラメータ値がLabVIEWバックエンドモデルに正しく書き込まれ、制御演算に組み込まれていることを示します。「Reset control(制御リセット)」を有効にすると、リセットロジックに従ってモデル変数が初期状態に戻ります。

ブラウザ側の失敗および通信状態をFigure 13, Figure 14, Figure 15に示します。Figure 13は、Caddyが動作していない場合のブラウザアクセスの失敗例を示しています。ブラウザが http://localhost:8090/motor へのアクセスを試みますが、ERR_CONNECTION_REFUSED メッセージが表示されており、これはローカルプロキシサービスが利用不可であるか、選択したアクセスポートで待機していないことを示しています。Figure 14は、ページ読み込み後の RIP POST 通信の失敗を示しています。このケースでは、ブラウザコンソールに RIP POST リクエストに対する 502 Bad Gateway エラーが報告されており、フロントエンドがプロキシアドレスには到達したものの、リクエストを RIP WebService バックエンドに正常に転送または処理できなかったことを示しています。対照的に、Figure 15は、正常なブラウザ側の通信状態を示しています。ブラウザの開発者ツールには、ページの正常な読み込み、RIP POST リクエスト、および expId=fan によるアクティブな SSE リクエストが表示されており、Web フロントエンドが Caddy プロキシを介して RIP WebService と通信し、SSE チャネルを通じてリアルタイムアップデートを受信していることを示しています。

ファンとモーターの正常な動作結果、およびブラウザ側の診断結果を合わせることで、同一のメタデータに基づく自動UI生成ワークフローを、2つの異なるLabVIEW実験で再現できることが実証されました。また、これらの結果は、通信の成功と代表的な導入失敗を区別するための観察可能な基準を提供するものであり、対応するトラブルシューティングの手順については「考察」セクションで詳しく述べられています。

LabVIEW VIダイアグラム、RIPサーバー、Caddyプロキシ、自動生成されたWeb UIのプロセスフロー。
Figure 1: 実験システムの全体構成. システムは、LabVIEWバックエンドVI、RIPサーバー、Caddyプロキシ、および自動生成されたWeb UIで構成されています。LabVIEW VIはモデル変数を提供し、RIPサーバーはVIのメタデータと変数値を読み取り、Caddyはアクセスパスを統一してクロスオリジンアクセスを解決し、Web UIはコントロールを自動的に生成します。Caddyの名前とロゴは、ワークフローで使用されているCaddy Webサーバー/プロキシコンポーネントを特定するためにのみ表示されています。こちらのリンクをクリックして、この図の拡大版を表示してください。

入力/出力を伴うモーター制御システムの図;SpeedRPMチャート;PWM、KMaxRPM設定;データ解析。
図 2: ファンVIのフロントパネル。 フロントパネルには、Enable、PWM、Load、Tau、KMaxRPMおよびDisturbanceの入力コントロールと、SpeedRPM、SteadyRPM、TimeS、SpeedNorm、CurrentAおよびPowerWの出力インジケーターが含まれている。このスクリーンショットは、著者自身のローカル実験環境のLabVIEW 2026におけるfengshan.viのフロントパネルからキャプチャされたものである。第三者のユーザーデータや機密情報は含まれていない。この図の拡大版を表示するには、ここをクリックしてください。

速度解析のための数式ノード、Whileループ、およびシフトレジスタを含むモーター制御アルゴリズムのダイアグラム。
図 3: ファンVIのブロックダイアグラム。 ファンモデルは、Whileループ、シフトレジスタ、Enableロジック、数式ノード、および出力インジケータを用いて実装されている。このスクリーンショットは、著者のローカル実験環境のLabVIEW 2026におけるfengshan.viのブロックダイアグラムからキャプチャされたものである。第三者のユーザーデータや機密情報は含まれていない。こちらのリンクをクリックして、この図の拡大版を表示してください。

ファンモデルの設定とデータサンプリング用のカメラパスを示すLabVIEW設定インターフェース。
図4: fan.viの設定ページ。 ファン実験はRIP Configurationに、実験名「fan」、実際のVIパス、キーワード情報、説明、およびサンプリング周波数として登録されている。このスクリーンショットは、著者のローカル実験環境でLabVIEW 2026およびRIP WebServiceと共に使用されたRIP Configurationインターフェースからキャプチャされたものである。第三者のユーザーデータや機密情報は含まれていない。この図の拡大版を表示するには、ここをクリックしてください。

データ初期化のためのJavaScriptにおけるメタデータベースのUIロジックを示すコードブロック図。
図 5: XHTMLフロントエンドファイルにおけるExperiment ID設定およびメタデータベースのUI生成ロジック。XHTMLコードのスクリーンショットは、Visual Studio Codeで開いたFan_Automatic_UI.xhtmlおよびMotor_Automatic_UI.xhtmlからキャプチャしたものである。ファンとモーターのページでは同じメタデータ読み取りおよび制御生成ロジックが使用されており、RIP Configurationの対応するNameフィールドに合わせるためにExperiment IDのみが変更されている。XHTMLコードのスクリーンショットは、著者自身のローカル開発環境において、Visual Studio Codeで開いたFan_Automatic_UI.xhtmlおよびMotor_Automatic_UI.xhtmlからキャプチャされた。コードファイルは、本プロトコルのために著者によって作成されたものである。第三者のユーザーデータや機密情報は含まれていない。こちらのリンクをクリックして、この図の拡大版を表示してください。

リバースプロキシ、ルーティングパス、およびポート設定の詳細を示すCaddyサーバー構成図。
図 6: Caddyfileの設定。Caddyfileでは、ローカルプロキシアクセスポートの定義、フロントエンドルートディレクトリの設定、/fanおよび/motorルートの対応するXHTMLファイルへの書き換え、および/RIP/SSE*と/RIP*のリクエストをLabVIEW/RIP WebServiceポートへリバースプロキシすることが定義されています。Caddyfile構成のスクリーンショットは、著者らのローカル開発環境においてVisual Studio Codeで開いたCaddyfileからキャプチャしたものです。このCaddyfileは、CaddyをローカルWebサーバーおよびリバースプロキシとして構成するために著者らによって作成されました。第三者のユーザーデータや機密情報は含まれていません。この図の拡大版を表示するには、ここをクリックしてください。

ファン速度制御シミュレーション図;入力スライダー、出力表示;機械系解析。
図7: fan.viのWeb UIページ。このWebインターフェースのスクリーンショットは、Mozilla Firefoxを用いて著者がローカルに展開したファンWebページからキャプチャしたものである。フロントエンドページは、RIPサーバーから返される変数メタデータに基づいて、入力コントロールと出力表示を自動的に生成する。このWebインターフェースのスクリーンショットは、Mozilla Firefoxを用いて著者がローカルに展開したファンWebページからキャプチャしたものである。表示されているコントロールと出力フィールドは、著者のローカル実験環境におけるRIPメタデータから生成された。第三者のユーザーデータや機密情報は含まれていない。この図の拡大版を表示するには、ここをクリックしてください。

PID制御システムの図、モーター位置フィードバック、入出力プロセス、角速度測定。
図 8: モーターVIのフロントパネル。 フロントパネルには、Setpoint(設定値)、Kc、Ti、Td、Disturbance(外乱)、およびReset(リセット)制御のコントロールと、Position(位置)、Voltage(電圧)、Time(時間)、およびMeasured angular velocity(測定角速度)のインジケータが含まれています。 このスクリーンショットは、著者らのローカル実験環境におけるLabVIEW 2026のMotor.viのフロントパネルからキャプチャしたものです。第三者のユーザーデータや機密情報は含まれていません。この図の拡大版を表示するには、ここをクリックしてください。

方程式を伴うPID制御システムの図;電圧制限、電気的および機械的モデル。
図 9: DCモーターPID位置制御モデル図。 この図は、設定値誤差、PID制御、電圧制限、外乱の重畳、電気的ダイナミクス、機械的ダイナミクス、そして位置更新からフィードバックに至る信号経路を示しています。 こちらをクリックして、この図の拡大版を表示してください。

シフトレジスタ、フォーミュラノード、位置フィードバック用の制御ループを示すLabVIEWプログラムダイアグラム。
図10: モーターVIのブロックダイアグラム。 モーターモデルは、Whileループ、シフトレジスタ、フォーミュラノード、タイミングロジック、および出力インジケータを用いて実装されています。このスクリーンショットは、著者自身のローカル実験環境のLabVIEW 2026におけるMotor.viのブロックダイアグラムからキャプチャしたものです。第三者のユーザーデータや機密情報は含まれていません。この図の拡大版を表示するには、ここをクリックしてください。

LabVIEWモーターモデルインターフェース、シミュレーション制御のためのパス設定、サンプリング構成、モーターの説明。
Figure 11: Motor.viの設定ページ。モーターの実験は、実験名「Motor」、実際のVIパス、キーワード情報、説明、およびサンプリング周波数とともにRIP Configurationに登録されています。このスクリーンショットは、著者のローカル実験環境におけるLabVIEW 2026およびRIP WebServiceで使用されるRIP Configurationインターフェースからキャプチャしたものです。第三者のユーザーデータや機密情報は含まれていません。この図の拡大版を表示するには、ここをクリックしてください。

PID制御システムのシミュレーション。入力スライダーと分析用の出力表示指標を含むダイアグラム。
図 12: Motor.viのWeb UIページ。フロントエンドページは、DCモータのPID位置制御実験のための入力コントロールと出力ディスプレイを自動的に生成します。このWebインターフェースのスクリーンショットは、Mozilla Firefoxを使用して、著者がローカルに展開したモータWebページからキャプチャされました。表示されているコントロールと出力フィールドは、著者のローカル実験環境におけるRIPメタデータから生成されました。第三者のユーザーデータや機密情報は含まれていません。この図の拡大版を表示するには、ここをクリックしてください。

ウェブページのエラーメッセージ。localhostへの接続が拒否され、ブラウザのトラブルシューティングオプションが表示されている。
Figure 13: Caddyが動作していない場合のブラウザアクセス失敗. Caddyが起動していない場合、プロキシされたローカルアドレス http://localhost:8090/motor にアクセスできず、ブラウザにERR_CONNECTION_REFUSEDメッセージが表示されます。この失敗症状は、ローカルのCaddyプロキシサービスが利用不能であるか、選択したアクセスポートでリスニングしていないことを示しています。このブラウザのスクリーンショットは、著者のローカルテスト環境でMozilla Firefoxを使用してキャプチャしたものであり、ローカルのCaddyプロキシが動作していない時のアクセス失敗状態を示しています。第三者のユーザーデータや機密情報は含まれていません。この図の拡大版を表示するには、こちらをクリックしてください。

大学のエンブレムが入ったファンデザイン。ブラウザコンソールのエラーコンテキストで表示。
図 14: ページ読み込み後のRIP POST通信失敗。 ブラウザコンソールには、RIP POSTリクエストに対する502 Bad Gatewayエラーが表示されています。この結果は、ウェブページがCaddyプロキシアドレスに到達したものの、リクエストをRIP WebServiceバックエンドに正常に転送できなかったか、あるいはバックエンドで処理できなかったことを示しています。このブラウザコンソールのスクリーンショットは、著者自身のローカル展開環境においてMozilla Firefox Developer Toolsを使用してキャプチャされたものであり、RIP POST 502 Bad Gatewayの通信失敗を示しています。第三者のユーザーデータや機密情報は含まれていません。この図の拡大版を表示するには、ここをクリックしてください。

速度と電力パラメータを備えた仮想ファン制御UIで、ネットワークアクティビティを表示している。ダッシュボード図。
図 15: 正常動作時のブラウザ側の通信状態。ブラウザの開発者ツールにより、ページの正常な読み込み、RIP POSTリクエスト、およびexpId=fanを伴うアクティブなSSEリクエストが示されている。これらのリクエストは、WebフロントエンドがCaddyプロキシを介してRIP WebServiceと通信し、SSEチャネルを通じてリアルタイム更新を受信していることを示している。このブラウザ開発者ツールのスクリーンショットは、著者自身のローカル展開環境でMozilla Firefoxを使用してキャプチャされたものであり、正常なRIP POSTおよびSSE通信を示している。第三者のユーザーデータや機密情報は含まれていない。この図の拡大版を表示するには、ここをクリックしてください。

ネットワークリクエストエラーと変数の読み込み状況を示すFirefoxデベロッパーコンソール。
図 16: ファン実験におけるブラウザコンソールおよびプロセスレベルのリソース監視の代表例。 このスクリーンショットは、ローカルでのファン実験テスト中に記録されたものである。コンソールには、メタデータの要求/応答時間、メタ変数の数、メタデータに基づくUI生成時間、SSE接続の開始時間、および受信したSSEデータが表示されている。タスクマネージャーのビューには、キャプチャ時点におけるブラウザおよびLabVIEWプロセスのプロセスレベルのCPUおよびメモリ値が表示されている。これらの値はこの個別のテストから得られた記述的な観察結果であり、再現された性能測定値や統計的なベンチマークではない。このスクリーンショットは、著者自身のローカルテスト環境において、Mozilla FirefoxデベロッパーツールとWindowsタスクマネージャーからキャプチャされた。ブラウザコンソールの出力を記録するためにMozilla Firefoxが使用され、ブラウザおよびLabVIEWプロセスのCPUおよびメモリ使用量を観察するためにWindowsタスクマネージャーが使用された。サードパーティのユーザーデータや機密情報は含まれていない。この図の拡大版を表示するには、ここをクリックしてください。

ファン制御インターフェース。WebおよびモバイルUI上のSpeedRPMおよびCurrentA設定を伴うデータ同期図。
図 17: デスクトップブラウザとモバイルブラウザから同一のRIPベースのWebページに同時アクセスした様子。 ファンの実験ページがPCとモバイルデバイスで同時に開かれ、両方のクライアントに自動生成されたコントロールと出力変数が表示されている。デスクトップのWebページにはMozilla Firefoxを使用してアクセスし、モバイルのWebページには同一のローカルネットワーク環境内のモバイルブラウザを使用してアクセスした。スクリーンショットは著者自身のローカルテスト環境でキャプチャされたものである。第三者のユーザーデータや機密情報は含まれていない。こちらのリンクをクリックして、この図の拡大版を表示してください。

変数名データ型入力/出力物理的意味モデルにおける役割範囲/設定
有効にするブーリアン入力ファン運転スイッチモデルがPWM入力を受信するかどうかを制御します。Trueの場合、u = PWMとなり、Falseの場合、u = 0となります。正 / 誤
パルス幅変調二重結合ライゲーション入力ドライブ入力基本的なファン駆動強度を決定し、定常状態の回転数であるSteadyRPMを算出するための主要な入力値となります。0-1、ステップ0.01
ロードDBL入力負荷係数負荷が定常速度に及ぼす減速効果について記述する。負荷が増加するにつれて、定常速度は低下する。0-1、ステップ0.01
タウ二重結合ライゲーション(DBL)入力応答時定数前の状態からファン速度が定常状態の速度に到達するまでの速さを決定します。0.1-5、0.1刻み
最大回転数DBL入力最大速度モデルが許容する最大速度を設定し、速度制限および正規化に使用されます。500-6000、ステップ100
撹乱DBL入力外乱入力外部乱れまたは負荷変動が、定常状態の速度、電流、および電力に及ぼす影響を示す。0-1、ステップ 0.1
回転速度(RPM)二重結合ライゲーション出力実速度ファンの現在の出力速度を表しており、一次慣性系として更新されます。モデルにより算出
定速RPM二重結合ライゲーション出力定常速度現在の入力条件下における理論的な定常速度を表します。モデルにより算出
TimeS二重結合リガンド(DBL)出力実行時間モデルの連続実行時間を表します。モデルにより算出
SpeedNorm二重盲検法出力正規化速度SpeedRPMに対するKMaxRPMの比率を表します。0-1、またはモデルによって算出される
CurrentADBL出力電流駆動入力および外乱入力に応じて変化する、推定モデル電流を表します。モデルにより算出
PowerW二重結合ライゲーション(DBL)出力検出力電圧定数と電流から算出された、推定モデル電力を表します。モデルにより算出
設定値二連鎖抗体(DBL)入力希望職位モーターが到達すべき位置を設定し、実際の位置(Position)との誤差eを形成します。-3-3、ステップ 0.1
KcDBL入力比例ゲインPIDコントローラーの誤差に対する応答強度を調整します。0-10、0.1刻み
Ti二重結合(Double Bond)入力積分時間PIDコントローラーの積分動作を調整し、定常偏差を減少させるために使用されます。0-10、0.1刻み
Td二重結合ライゲーション(DBL)入力微分時間PIDコントローラの微分動作を調整し、過度に急速な誤差変化を抑制して動的応答を改善するために使用します。0~5、0.1刻み
撹乱二重結合ライゲーション (Double Bond Ligation)入力外乱入力モーター入力に重畳され、制御電圧とともにモーターモデルに作用する外乱を表します。0-10、0.1刻み
リセットコントロールブール値入力リセットコントロールモデルの状態クリアをトリガーし、位置、角速度、電流、誤差、および積分項を初期状態に戻します。正 / 誤
位置DBL出力実際の位置モーターの現在の角度位置を表し、PID制御のフィードバック変数として機能します。モデルにより算出
電圧二重結合ライゲーション出力制御電圧電圧制限後のPIDコントローラー出力を表し、モーター入力に作用します。モデルにより算出。-24から24 Vの範囲に限定。
時間DBL出力実行時間モーターモデルの連続運転時間を表します。モデルにより算出
測定された角速度二重結合(Double Bond)出力測定された角速度モーターの現在の角速度を表しており、モーターの機械的状態の出力となります。モデルによって算出された

表1:ファンおよびDCモーターの例で使用される入力および出力変数。 表には、各変数の名称、データ型、入出力の役割、物理的意味、推奨範囲、およびステップサイズが記載されています。

パラメータ物理的意味モデルにおける役割
R1電機子抵抗モーター電機子回路における抵抗項を表し、電流方程式における電圧降下 R × im を決定します。
L0.5電機子インダクタンス電機子回路のインダクタンスを表し、電流の変化率を決定します。Lが大きくなるほど、電流応答は遅くなります。
J0.01慣性モーメントモーターローターの角加速度の変化に対する抵抗を表し、角速度がどの程度の速さで変化するかを決定します。
b0.1粘性減衰係数機械的減衰を表し、回転時の角速度の増加を妨げる減衰トルクについて記述する。
Kt0.01トルク定数電機子電流を電磁トルクに変換する比例係数を表します。
Ke0.01逆起電力定数角速度によって逆起電力が発生する比例係数を表し、速度が電流に及ぼすフィードバック効果を記述する。
最大反応速度24最大制御電圧コントローラー出力電圧の制限値を表し、電圧を-24 Vから24 Vの範囲内に維持します。
dt0.001離散シミュレーションステップ各ループベースの状態更新の時間間隔を表し、電流、角速度、位置、および経過時間を更新するために使用されます。

表2:DCモーターPID位置制御モデルで使用される内部パラメータ。 この表には、モデルにおける電気的および機械的パラメータ、記号、数値、単位、および役割が記載されています。

補足コーディングファイル:ファンおよびDCモーターの例を再現するための完全なソースおよび設定ファイル。補足コーディングファイルには、本プロトコルで使用されるLabVIEW Formula Nodeコード、Caddyリバースプロキシ設定、XHTMLフロントエンドファイル、およびLabVIEW VIソースファイルが含まれています。Code in LabVIEW Formula Node.docxには、ファンおよびDCモーターのPID位置制御モデル用のFormula Nodeコードが含まれています。Caddyfile.txtには、ローカルWebサーバーおよびリバースプロキシの設定が含まれています。Fan_Automatic_UI.xhtmlおよびMotor_Automatic_UI.xhtmlには、メタデータに基づくWebフロントエンドのロジックが含まれています。fengshan.viおよびMotor.viは、ファンおよびモーターの実験用のLabVIEWバックエンドVIファイルです。こちらのリンクからファイルをダウンロードしてください。

ディスカッション

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

主なトラブルシューティングの問題は、XHTMLの実験ID、RIP構成、RIP WebService、およびCaddyプロキシ設定の一貫性に関連しています。XHTMLファイル内の実験IDがRIP構成の実験名と一致しない場合、Webページが正しいメタデータをリクエストできず、その結果、期待されるコントロールや出力フィールドを生成できなくなります。VIパスが正しくないか、RIP WebServiceが起動していない場合、Webページは開く可能性がありますが、LabVIEWバックエンドと通信できません。Caddyが動作していない場合、ブラウザは選択したローカルプロキシアドレスにアクセスできず、図 13に示すようにERR_CONNECTION_REFUSEDメッセージが表示されることがあります。Caddyは動作しているがリバースプロキシのターゲットがRIP WebServiceポートと一致していない場合、ページは読み込まれる可能性がありますが、RIP POSTリクエストが502 Bad Gatewayエラーで失敗し、図 14のように表示されます。/RIP/SSE*ルートが正しく機能していない場合、ページは開きコントロールも表示されますが、出力値がリアルタイムで更新されません。正常な動作状態では、ブラウザの開発者ツールにページの正常な読み込み、RIP POSTリクエスト、および正しい実験IDを持つアクティブなSSEリクエストが表示されるはずであり、これは図 15に示されています。したがって、トラブルシューティングは、実験ID、VIパス、RIP WebServiceのステータス、Caddyの動作ステータス、プロキシポート、およびSSEルートの確認から始める必要があります。それでも通信に異常がある場合は、RIP WebServiceとCaddyの両方を再起動し、ブラウザのキャッシュをクリアするか、別のブラウザでテストを繰り返すことで、ブラウザ固有の動作かRIP/Caddyの構成上の問題かを切り分けることができます。

本プロトコルでは、ファン速度モデルとDCモータPID位置制御モデルの両方に同一の「ビルド・レジスタ・デプロイ・検証」ワークフローを適用しているため、2つの例にわたって再現可能です。特殊なツールボックスへの依存を減らすため、バックエンドVIは、フロントパネルのコントロールとインジケータ、Whileループ、シフトレジスタ、フォーミュラノード、および標準的なスカラー数値変数とブーリアン変数を含む、基本的なLabVIEW構造を用いて再構築されています。ただし、LabVIEWのバージョン、Windowsのインストール状況、およびローカルネットワーク環境における再現性は、依然としてファイルパス、アクセス権限、ローカルポート、サービスの起動コマンド、およびブラウザの動作などの設定詳細に依存します。このワークフローはハードウェアに関連するリモート実験にも拡張可能ですが、本手法をWeb側での直接的なハードウェア認識と解釈すべきではありません。Webフロントエンドは、RIPメタデータを通じてLabVIEWフロントパネルのコントロールとインジケータを識別します。したがって、センサ、アクチュエータ、計測器、またはプロセス制御デバイスは、まず適切なハードウェアドライバ、データ収集モジュール、計測器制御モジュール、またはその他のハードウェア適応メカニズムを介して、LabVIEWバックエンドVIに接続および処理される必要があります。ハードウェアの測定値と制御コマンドがフロントパネルのインジケータおよびコントロールにマッピングされた後、RIPベースのWebフロントエンドは、本プロトコルで使用されるシミュレーション変数と同様に、これらの変数を認識できます。従来のLabVIEWベースのリモートラボラトリ研究により、LabVIEWがリモート制御工学実験、ロボット実験、プロセス制御装置、センサデータ収集、および物理デバイスのインタラクションのためのバックエンド環境として利用可能であることが示されています9,12,17,18,19,20

図 16は、ローカルファン実験中に記録された単一の代表的な実装例を示しています。フロントエンドコードには、メタデータの要求/応答時間、メタデータ変数数、メタデータに基づくUI生成時間、SSE接続の開始時間、および受信したSSEデータを記録するためのインストルメンテーションが施されました。この例では、ブラウザコンソールにメタデータの要求/応答時間として68.00 msが報告され、RIPメタデータから7つの書き込み可能変数と7つの読み取り可能変数が特定され、対応するUI要素が2.00 msで生成され、SSE接続が16.00 msで開始されました。繰り返されるSSEデータエントリにより、SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA、およびPowerWなどの出力変数がLabVIEWバックエンドから継続的に受信されていることが示されました。同じローカルテスト状態のタスクマネージャービューでは、FirefoxプロセスのCPU使用率は約1.5%、メモリは391.7 MBであり、キャプチャ時のLabVIEWプロセスのCPU使用率は0%、メモリは9.2 MBでした。これらの観察結果は、ローカル展開環境において、メタデータの取得、メタデータに基づくUI生成、RIP/SSE通信、およびプロセスレベルのCPUオーバーヘッドが観察可能であるという基本的な根拠を提供するものです。ただし、これらのデータは実装レベルの検証を目的としたものであり、包括的なパフォーマンスベンチマークではありません。異なるブラウザ、反復試行、より多くの変数負荷、物理ハードウェア、および複数の同時ユーザー条件下での体系的なパフォーマンス評価が、今後の課題として引き続き必要です。

本手法には制限もあり、特に複雑なデータ構造、ハードウェア実験、およびマルチユーザー操作に拡張する場合に顕著です。現在のワークフローは、スカラー数値およびBoolean型の入出力変数に最適です。複雑な配列、クラスター、ネストされたデータ構造、チャート間の関係、またはドメイン固有の可視化を自動的に完全にサポートすることはできません。これらのケースでは、追加のメタデータマッピングルールや、手動で記述したフロントエンドコンポーネントが必要になる場合があります。自動生成されたUIは、変数のメタデータから基本的なコントロールと表示を作成できますが、変数間の物理的な関係を完全に推論したり、最も適切な可視化を選択したり、実験固有の安全インタラクションを設計したりすることはできません。ワークフローを実際の装置に拡張する場合、ハードウェアドライバ、デバイスのキャリブレーション、サンプリング制約、アクチュエータの制限、非常停止ロジック、認証、およびマルチユーザー書き込み制御メカニズムを含む追加の検討事項が必要となります。現在のデプロイメントでは、同一のローカルネットワーク環境内にある標準的なWebブラウザを通じて、複数のクライアントデバイスからアクセスすることも可能です。Figure 17に示すように、同一のファン実験ページをデスクトップブラウザとモバイルブラウザで同時に開き、どちらのクライアントでも自動生成されたコントロールと対応する出力変数が表示されました。この観察結果は、同一の実験ページを閲覧し、操作するための基本的な同時マルチクライアントアクセスが可能であることを示しています。しかし、現在の実装には専用のユーザー認証、コントロールロック、並行書き込み調停、書き込みキュー、または競合解決メカニズムが含まれていないため、これを完全なマルチユーザー制御フレームワークと解釈すべきではありません。これらの制限は、複雑または共同的なリモートラボラトリーにおいて、通常、実験固有のインターフェース設計、同期メカニズム、安全制約、およびユーザー管理ロジックが必要とされるという、過去のリモートラボラトリー研究の結果と一致しています13,14,15,16,17

本プロトコルの手法的な価値は、新しいRIPアーキテクチャを導入することや、RIPでサポートされるデータ型を拡張することにあるのではなく、確立されたRIPベースの自動UI生成メカニズムを異なるLabVIEWシステムに適用するための、完全で再現可能な実装パスを提供することにあります。個々の実験に合わせてカスタムWebインターフェースを構築する場合と比較して、バックエンドのVIが互換性のある変数を公開していれば、このワークフローにより、基本的なコントロールレイアウト、変数バインド、および読み書き通信ロジックの重複した実装を削減できます8,9,10,11。したがって、本プロトコルは、工学教育、リモートラボの開発、およびブラウザベースのパラメータ調整とリアルタイムの状態監視を必要とする低リスクのシミュレーションや教育用実験の迅速な展開に有用です。今後の課題としては、このワークフローをより複雑なデータ構造、物理的な実験装置、正式なマルチユーザーアクセス制御、およびインターフェース生成時間、通信レイテンシ、同期安定性、サーバー負荷、CPUオーバーヘッド、フロントエンドのユーザビリティを含む定量的な性能評価へと拡張することが挙げられます。

開示事項

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

謝辞

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

材料

この記事で使用された材料の一覧
名前会社カタログ番号コメント
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およびメモリの観察を記録するために使用

参考文献

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,
  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.

再版と許可

このJoVE記事のテキストまたは図の再利用許可をリクエスト

許可をリクエスト

タグ

UI RIP Caddy PID
動画は近日公開

関連記事