方法文章

一种基于远程互操作协议为LabVIEW应用程序自动生成网页界面的方案

DOI:

10.3791/72765

2026年8月14日

本文内容

摘要

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

本研究通过两个不同的 LabVIEW 系统——风扇模型和直流电机位置控制模型,验证了基于远程互操作协议(RIP)的自动 Web 用户界面生成方法,并提供了构建、注册、部署和测试这两个示例的可重复操作流程。

摘要

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

远程实验平台能够通过网络访问本地的仿真模型或物理设备,但传统的网页前端通常需要为每个实验单独设计页面、控制布局和数据通信逻辑,从而增加了开发成本。本研究验证了一种已建立的工作流程,该流程通过远程互操作协议(RIP)从LabVIEW虚拟仪器(VIs)自动生成网页用户界面(UI),并提供可复现的实施协议。该工作流程构建定义了前面板上输入控件和输出指示器的LabVIEW虚拟仪器,将每个虚拟仪器注册到RIP服务器配置中,读取生成的变量元数据,并据此生成相应的网页控件和输出显示。使用Caddy作为反向代理,以统一前端静态文件路径和RIP应用程序编程接口(API)请求路径。该工作流程通过两个不同的系统进行评估:风扇转速模型和直流(DC)电机比例-积分-微分(PID)位置控制模型。在这两种情况下,网页均能识别暴露的变量,将用户输入写入LabVIEW后端,读取模型输出,并根据RIP元数据生成界面。这些结果验证了在同一自动化用户界面生成流程在两个不同动态系统中的适用性,并记录了复现该流程所需的步骤。

引言

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

随着远程实验、在线教学和物联网技术的发展,提供对本地仿真模型或实验设备的基于Web的访问已成为实验平台发展的重要方向1,2,3,4。近期研究进一步将配备物联网的实验室与基于项目的学习以及本地或远程访问相结合,展示了工程教育中灵活化、网络化实验平台的持续发展5。在控制系统实验中,用户通常需要在浏览器中调整输入参数,并实时观察输出状态6,7。传统方法通常需要为每个实验对象单独设计网页、控制绑定逻辑和数据通信接口8,9。当后端模型中的变量发生变化时,前端页面往往需要相应修改,导致大量重复开发工作,限制了实验平台的快速扩展。

远程互操作协议(Remote Interoperability Protocol, RIP)在后端实验模型与Web前端之间提供了一个中间件层10,11。在先前研究中描述的基于RIP的自动用户界面生成方法中,RIP服务器为每个实验提供元数据,包括变量名、输入/输出属性、数据类型、最小值、最大值、精度、描述信息以及可用的读写方法11。Web客户端随后可在页面加载或刷新期间利用这些元数据创建相应的HTML元素,例如标签、数值输入框、滑动条、布尔控件和输出显示组件11。本实验方案并未重新实现或重新定义RIP规范,而是采用现有的开源RIP服务以及基于RIP的元数据到HTML用户界面生成逻辑作为通信和界面生成的基础,重点实现两个LabVIEW VI示例的可重复构建、注册、代理部署及验证。

与传统的自定义Web界面开发相比,基于RIP的自动UI生成在多个LabVIEW实验暴露出相似的标量输入和输出变量时,能够减少对控制布局、变量绑定逻辑以及基本通信功能的实现需求8,9,10,11。当一个新的VI被注册且其变量可被RIP服务器访问后,相同的元数据读取和控件生成逻辑即可被复用,以构建基本的Web界面10,11。该特性对于需要快速部署、教学演示以及需一致访问多个相似实验的远程实验平台具有重要意义3,8,9。然而,自动生成的界面也存在局限性:它无法完全推断变量之间的物理关系,不能自动确定图表映射,也无法设计特定领域的可视化效果和安全交互机制11。因此,当实验需要高度定制的图形、复杂的用户操作流程、高级可视化功能、硬件安全联锁或多人写入仲裁时,仍优先采用手动Web界面开发方式。

本方案的整体工作流程如图1所示。在此工作流程中,首先在LabVIEW的前面板上定义所需的输入控件和输出指示器。随后,在RIP服务器配置中注册该VI,方法是指定实验名称和VI路径。注册完成后,RIP服务器读取所选实验的元数据,并提供对可用变量的读写访问权限。XHTML网页利用返回的元数据自动生成相应的输入控件和输出显示,而Caddy则为静态网页和RIP通信路径提供统一的访问接口。本研究中以风扇和直流电机模型作为同一工作流程的两个实现示例。对于其他提供兼容的标量、数值型和布尔型变量的LabVIEW实验,开发人员可遵循相同的构建-注册-部署-验证流程来创建自动生成的网页界面,并在需要时添加实验特定的可视化功能、安全逻辑或复杂数据处理机制。

本文并未提出新的RIP架构,也未扩展RIP已支持的数据类型范围。相反,本文将RIP作为既有的通信机制和基于元数据的用户界面生成方法,重点在于通过两种不同的LabVIEW系统验证该流程的可重复性,同时记录一个可复现的实施协议。先前的研究已提出一种基于RIP元数据的自动Web用户界面生成基本方法,并以在线伺服电机实验作为案例研究11。结合交互式界面与工程软件及LabVIEW的Web化远程实验室架构在早期研究中也已有报道9,12。然而,在实际复现过程中,原始案例中的部分LabVIEW模型受到软件版本和模块兼容性的影响,难以直接在较新的环境中使用。因此,本研究重构了两个兼容的后端VI——一个风扇模型和一个直流(DC)电机比例-积分-微分(PID)位置控制模型——并对两者应用相同的元数据驱动的用户界面生成流程。本研究的贡献在于对既有的RIP工作流程进行跨系统的验证,并提供详细的流程复现协议,而非拓展RIP的通用性。

本方案的目标用户是已经使用 LabVIEW 虚拟仪器(VIs)的研究人员、教师和实验室开发人员,他们需要通过网络浏览器将仿真模型或低风险实验系统对外提供,而无需为每个模型独立开发完整的自定义前端界面。该方案特别适用于使用标准数值和布尔变量、参数调节以及实时状态监控的实验10,11。对于需要复杂数据结构、专用可视化功能、严格的硬件安全联锁机制或多用户写入仲裁的实验,本方案作为独立解决方案则不太适用11。本研究的目标是通过两个不同的 LabVIEW 系统验证基于 RIP 的自动 Web 用户界面生成方法,并提供一套从后端 VI 构建到基于浏览器交互的完整且可重复的实验流程。该方案包括输入和输出变量定义、RIP 服务器实验注册、基于元数据的用户界面生成、Caddy 代理部署以及远程读写验证。将相同的工作流程应用于风扇和直流电机模型,证明了所建立的流程可以复现,且无需为每个示例手动重写完整的 Web 前端界面9,10,11

方案

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

按照图1中总结的工作流程,完成以下步骤,以构建、注册、部署并验证两个可通过远程仪器协议(RIP)访问的LabVIEW实验。本研究中使用的所有工具和平台均列在材料表中。

1. 构建并部署风扇模型实验

  1. 构建风扇模型 VI。
    1. 打开 LabVIEW,创建一个新的 VI,并将文件保存为 fengshan.vi。将该 VI 保存在 RIP WebService 进程可访问的任意目录中。“Private”文件夹仅作为示例目录使用,并未在 RIP 中硬编码。在注册 RIP 实验时,输入实际选定的 VI 路径。
    2. 在前面板上,添加风扇模型的输入控件。在此示例中,将输入控件命名为 启用, PWM, 负载,Tau,KMaxRPM扰动设置 启用 作为布尔控制,并设置 PWM,负载,Tau,KMaxRPM,以及 扰动 以双精度浮点数(DBL)数值控件形式。参见 补充表1 关于风扇变量的物理意义及其在模型中的作用。
    3. 为风扇模型添加输出指标。在此示例中,命名输出指标 转速RPM、恒定转速RPM、时间S、归一化转速、电流A PowerW. 将所有输出指示器设置为 DBL 指示器。
      ​注意: 表1 描述了这些输出变量的物理意义及其在模型中的作用。完成后的风扇前面板如图所示 图2变量名称、范围和步长如所示 表1 描述本方案中实现的两个示例。它们并非RIP的硬性要求。对于其他LabVIEW实验,开发人员可定义不同的前面板变量名和数值属性。RIP服务器从VI元数据中读取实际的变量名、数据类型、输入/输出属性以及可用的数值属性,网页则根据返回的元数据生成相应的控件和显示界面。
    4. 在程序框图中添加一个 While 循环。添加两个移位寄存器以存储 速度_prev时间_prev,并将两个值均初始化为 0。
    5. 在 While 循环内添加一个公式节点。连接 使能,脉宽调制,负载,时间常数,最大转速系数,扰动,前一时刻转速 时间_prev 连接到公式节点的左侧输入端子,并设置 SteadyRPM、speed_next、SpeedNorm、CurrentA、PowerW 下一步时间 作为右侧输出端子。
    6. 构建 启用 公式节点外部的控制逻辑。使用 启用 作为选择信号,以便 u = 脉宽调制 启用 为真且 u = 0 启用 为假。
    7. 在公式节点中输入风扇型号代码。使用该代码计算稳态转速、实际转速、归一化转速、电流、功率和运行时间;完整代码见补充编码文件1。
    8. 连接 速度_next 公式节点的输出到 转速RPM 指示剂,并连接 速度_next 回到右侧的移位寄存器 速度_prev连接 SteadyRPM SteadyRPM 指示剂
    9. 连接 下一步时间时间 指示剂,并连接 下一步时间 返回到右侧的移位寄存器 时间_prev连接 SpeedNorm,CurrentAPowerW 对应的输出指标。
    10. 在 While 循环内添加一个等待函数,并将等待时间设置为 50 ms。添加一个停止本地按钮,并将其连接到 While 循环的条件终端。
    11. 保存 fengshan.vi。完成的风扇框图如图所示 图3.
      暂停点:保存完成的风扇 VI 后,可以停止工作流程。之后通过重新打开已保存的 VI,并确认所有前面板控件、指示器以及框图连接仍然存在,即可恢复操作。
  2. 在 RIP 服务器中注册风扇实验。
    1. 在 LabVIEW 项目浏览器中打开 RIPWebService.lvproj
      .
    2. 从项目树中打开 Configuration.vi,然后找到实验配置表。
    3. 添加新的实验行。将名称设置为 fan。设置保存的 fengshan.vi 文件的完整路径。风扇实验的注册字段如下所示 图4.
    4. 填写其余配置字段。将作者设置为实验负责人,关键词设置为风扇,描述设置为风扇转速模型,采样频率设置为 200。
    5. 在 LabVIEW 菜单中,选择 编辑 > 将当前值设为默认值. 保存配置.vi
    6. 重启RIP WebService,并确认风扇实验在重启后仍保留在配置界面中。
      注意:实验名称区分大小写。RIP 配置中的值 fan 必须与前端 XHTML 文件中使用的实验 ID 完全一致。若要部署另一个具有相同自动用户界面生成逻辑的 LabVIEW VI,需在 RIP 配置中添加新的实验条目,设置新的 Name 值,并将 Path 指向对应的 VI 文件,然后在 XHTML 文件中使用相同的 Name 值作为实验 ID。前端页面无需为每个变量重新编写。
      ​暂停点:保存 Configuration.vi 并将当前值设为默认值后,可停止工作流程。稍后通过重新启动 RIP WebService 并确认风扇实验仍处于注册状态来恢复操作。
  3. 准备风扇实验的前端页面。
    1. 将 Fan_Automatic_UI.xhtml 放置在用作前端根目录的 Client 目录中。
    2. 使用文本编辑器打开 Fan_Automatic_UI.xhtml 文件。
    3. 在脚本部分中找到实验 ID 变量,并将其设置为 fan。
      注意:此值必须与RIP配置中风扇实验的“名称”字段完全一致。实验ID设置以及用于XHTML前端文件的基于共享元数据的UI生成逻辑如下所示。 图5.
    4. 验证页面是否通过 window.location.origin 获取当前访问源,并通过以下方式请求实验元数据 rip.info(),并将返回的元数据传递给 autobuildUI().
      注意:页面不应手动对风扇变量名称、范围或步长进行硬编码。相反,可写变量应从 meta.writables.list,可读变量由 meta.readables.list,最小值、最大值和步长等数值属性由 RIP 服务器返回的元数据中获取。
    5. 保存 Fan_Automatic_UI.xhtml。
      ​注意:若要对另一个 LabVIEW VI 使用相同的前端生成逻辑,请在 XHTML 文件中设置新的实验 ID,并在 RIP 配置中注册相应的实验名称和 VI 路径。网页控件和输出显示将根据所选实验返回的元数据自动生成。
  4. 为风扇实验配置 Caddy 访问路径。
    1. 使用文本编辑器打开 Caddyfile。
    2. 将前端根目录设置为包含 Fan_Automatic_UI.xhtml 的 Client 目录。
    3. 为 Caddy 选择一个未使用的本地端口,以提供对网页和 RIP 路由的浏览器访问。在本方案中,端口 8090 用作示例代理访问端口。
      注意:RIP 或 Caddy 不需要使用 8090 端口。如果 8090 端口已被占用,请将其替换为另一个未使用的本地端口,并在浏览器地址中使用相同的端口。
    4. 添加一条路由,将 /fan 重写为 Fan_Automatic_UI.xhtml。
    5. 确定在 LabVIEW 中配置的 RIP WebService 端口。在本方案中,使用 http://localhost:8001 作为 RIP WebService 地址。
      注意:端口 8001 是测试环境中使用的 LabVIEW/RIP WebService 后端端口。该端口可在 LabVIEW/RIP WebService 配置中更改。若使用其他端口,需将 Caddyfile 中的 http://localhost:8001 替换为相应的 RIP WebService 地址。
    6. 添加一条反向代理规则,将 /RIP/SSE* 请求发送至 RIP WebService 地址,例如 http://localhost:8001。
    7. 添加一条反向代理规则,将 /RIP* 请求发送到 RIP WebService 地址,例如 http://localhost:8001。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 启动时未报告配置错误。在 Web 浏览器中打开 http://localhost:8090/fan,验证风扇 Web 用户界面已生成,如图所示 图7.
      ​注意:如果浏览器返回 502 错误,请确认 RIP WebService 正在运行,LabVIEW 中的 RIP WebService 端口与 Caddyfile 中的反向代理地址匹配,且所选的 Caddy 访问端口未被占用。
  5. 验证风扇实验的运行结果。
    1. 验证前端页面是否自动生成 启用, PWM,负载,Tau,KMaxRPM扰动 输入对照组
    2. 验证前端页面是否显示 转速RPM、稳定转速RPM、时间S、归一化转速、电流A PowerW 输出变量
    3. 调节 PWM 并观察是否 转速RPM 增加 PWM 增加和减少 PWM 减少。
    4. 调节负载并观察是否 SteadyRPM 转速RPM 随着负载增加而减小。
    5. 调整扰动并观察是否 转速RPM,电流APowerW 响应扰动输入的变化。
    6. 验证 时间S 持续增加,证实后端风扇 VI 正在持续运行。

2. 构建并部署直流电机PID位置控制实验

  1. 构建直流电机 PID 位置控制模型 VI。
    1. 打开 LabVIEW,创建一个新的 VI,并将文件保存为 Motor.vi。将该 VI 保存在 RIP WebService 进程可访问的任意目录中。
      注意:Private 文件夹仅作为示例目录使用,并未在 RIP 中硬编码。在 RIP 实验注册期间,请输入实际选定的 VI 路径。
    2. 在前面板上,添加直流电机 PID 位置控制模型的输入控件。本示例中,将输入控件命名为 设定值(Setpoint)、比例增益(Kc)、积分时间(Ti)、微分时间(Td)、扰动(Disturbance)复位控制(Reset control)。将 设定值、比例增益、积分时间、微分时间和扰动 设置为 DBL 数值控件,将复位控制设置为布尔控件。
      注意:表 1 描述了本示例中所用变量的物理意义、模型作用及推荐取值范围。
    3. 添加直流电机 PID 位置控制模型的输出指示器。本示例中,将输出指示器命名为 位置(Position)、电压(Voltage)、时间(Time)测量角速度(Measured angular velocity)。将所有输出指示器设置为 DBL 指示器。表 1 描述了这些输出变量的物理意义和模型作用。电机的完整前面板如 图 8 所示。
      注意:表 1 中列出的变量名称和取值范围描述了本协议中实现的两个示例,但并非基于 RIP 的自动 UI 生成工作流的固定要求。当使用其他 LabVIEW VI 时,RIP 会从 VI 元数据中读取实际的变量名、数据类型、输入/输出属性以及可用的数值属性。因此,前端生成逻辑无需对每个实验的变量名、最大值、最小值或步长进行硬编码。
    4. 在程序框图中添加一个 While 循环。添加六个移位寄存器,用于存储 theta、omega、im、e_prev、integtime,并将这六个初始值均设为 0。
    5. 在 While 循环内添加一个公式节点。根据 图 9 所示的直流电机 PID 位置控制模型图,使用该公式节点作为误差计算、PID 控制、电压限幅、电气模型、机械模型和位置更新的核心计算模块。
      注意:本模型中使用的内部电机参数,如 R、L、J、b、Kt、KeVmax,是归一化的教学模型参数,而非特定物理电机的校准参数。这些参数的选择旨在所选时间步长和电压限制条件下产生稳定且可观测的仿真响应,以便在基于 Web 的操作过程中清晰展示 设定值、比例增益、积分时间、微分时间扰动 的影响。
    6. sp、theta、omega、im、e_prev、integ、Kc、Ti、Td、disturbance、resetdt 设置为公式节点的输入端子。将 theta_next、omega_next、im_next、e_next、integ_nextvoltage 设置为公式节点的输出端子。
    7. 设定值(Setpoint) 控件连接至公式节点的 sp 输入端子。将 比例增益(Kc)、积分时间(Ti)、微分时间(Td)扰动(Disturbance) 分别连接至公式节点的 Kc、Ti、Tddisturbance 输入端子。
    8. 将复位控制的布尔信号转换为数值信号,并连接至公式节点的 reset 输入端子。当 reset 不等于 0 时执行状态复位;当 reset 等于 0 时执行 PID 控制和电机状态更新。
    9. 添加数值常量 dt,并将其值设为 0.001 s。将 dt 连接至公式节点的 dt 输入端子,用于时间更新。
    10. 在公式节点中设置直流电机的内部模型参数。有关电机变量的物理意义和模型作用,请参见 补充表 2
    11. 在公式节点中输入直流电机 PID 位置控制代码。使用该代码实现复位逻辑、误差计算、积分项计算、微分项计算、PID 控制、电压限幅、电流更新、角速度更新和位置更新;完整代码请参见补充编码文件。
    12. theta_next 连接到 位置(Position) 指示器,并将 theta_next 反馈连接至 theta 的右侧移位寄存器。将 omega_next 连接到 测量角速度指示器(Measured angular velocity indicator),并将 omega_next 反馈连接至 omega 的右侧移位寄存器。
    13. 将电压连接至电压指示器。将 im_next、e_nextinteg_next 分别反馈连接至 im、e_previnteg 的右侧移位寄存器。
    14. 在公式节点外部使用加法函数计算 time_next = time + dt。将 time_next 连接到 时间(Time) 指示器,并将 time_next 反馈连接至 time 的右侧移位寄存器。
    15. 在 While 循环内添加一个等待函数,并将等待时间设为 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)设为直流电机位置控制模型,采样频率(Sampling Freq)设为 200。
    5. 在 LabVIEW 菜单中选择 编辑(Edit) > 将当前值设为默认值(Make Current Values Default)。保存 Configuration.vi。
    6. 重启 RIP WebService,并确认重启后 Motor 实验仍在配置界面中列出。
      注意:实验名称区分大小写。RIP 配置中的 Motor 值必须与 Motor_Automatic_UI.xhtml 中使用的实验 ID 完全一致。若要部署另一个使用相同自动 UI 生成逻辑的 LabVIEW VI,需在 RIP 配置中添加新的实验条目,设置新的名称(Name)值,并将路径(Path)指向对应的 VI 文件,然后在 XHTML 文件中使用相同的名称作为实验 ID。前端页面无需为每个变量重写。
      ​暂停点:保存 Configuration.vi 并将当前值设为默认值后,可暂停工作流程。稍后可通过重启 RIP WebService 并确认 Motor 实验仍已注册来继续操作。
  3. 准备电机实验的前端页面。
    1. 将 Motor_Automatic_UI.xhtml 放置在用作前端根目录的 Client 目录中。
    2. 使用文本编辑器打开 Motor_Automatic_UI.xhtml。
    3. 在脚本部分找到实验 ID 变量,并将其设为 Motor。该值必须与 RIP 配置中电机实验的名称(Name)字段完全匹配。该前端页面使用与 图 5 所示相同的基于元数据的 UI 生成逻辑,仅实验 ID 被更改为匹配 RIP 配置中的 Motor 条目。
    4. 验证页面是否包含 RIP 元数据读取逻辑、HTML 控件生成逻辑、RIP 写入函数和输出更新函数。
      注意:页面不应手动硬编码电机变量的名称、范围或步长。这些属性由 RIP 服务器返回的元数据获取,遵循此前描述的基于 RIP 的元数据到 HTML 生成机制11
    5. 保存 Motor_Automatic_UI.xhtml。
      ​注意:若要在另一个 LabVIEW VI 中使用相同的前端生成逻辑,需在 XHTML 文件中设置新的实验 ID,并在 RIP 配置中注册对应的实验名称(Name)和 VI 路径(VI Path)。Web 控件和输出显示将根据所选实验返回的元数据生成。
  4. 配置电机实验的 Caddy 访问路径。
    1. 使用文本编辑器打开 Caddyfile。
    2. 将前端根目录设置为包含 Motor_Automatic_UI.xhtml 的 Client 目录。
    3. 为 Caddy 选择一个未使用的本地端口,以便通过浏览器访问网页和 RIP 路由。本协议中以端口 8090 为例作为代理访问端口。
      注意:RIP 或 Caddy 并不要求使用端口 8090。若端口 8090 已被占用,请替换为另一个未使用的本地端口,并在浏览器地址中使用相同端口。
    4. 添加一条路由规则,将 /motor 重写为 Motor_Automatic_UI.xhtml。
    5. 确定在 LabVIEW 中配置的 RIP WebService 端口。本协议中使用 http://localhost:8001 作为 RIP WebService 地址。
      注意:端口 8001 是测试环境中使用的 LabVIEW/RIP WebService 后端端口,可在 LabVIEW/RIP WebService 配置中更改。若使用不同端口,请将 Caddyfile 中的 http://localhost:8001 替换为相应的 RIP WebService 地址。
    6. 添加一条反向代理规则,将 /RIP/SSE* 请求转发至 RIP WebService 地址,例如 http://localhost:8001。
    7. 添加一条反向代理规则,将 /RIP* 请求转发至 RIP WebService 地址,例如 http://localhost:8001。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 启动时未报告配置错误。在 Web 浏览器中打开 http://localhost:8090/motor,验证电机 Web UI 是否已生成,如 图 12 所示。
      ​注意:若电机网页加载成功但输出值未更新,请确认 RIP WebService 正在运行、电机 VI 正在执行、LabVIEW 中的 RIP WebService 端口与 Caddyfile 中的反向代理地址一致,且 /RIP/SSE* 路由已正确代理。
  5. 验证电机实验的运行结果。
    1. 验证前端页面是否自动生成了 设定值(Setpoint)、比例增益(Kc)、积分时间(Ti)、微分时间(Td)、扰动(Disturbance)复位(Reset) 控制输入控件。
    2. 验证前端页面是否显示了 位置(Position)、电压(Voltage)、时间(Time)测量角速度(Measured angular velocity) 输出变量。
    3. 调节 设定值,观察位置是否响应期望位置的变化。
    4. 调节 比例增益(Kc)、积分时间(Ti)微分时间(Td),观察 电压、位置测量角速度 是否发生变化。
    5. 调节 扰动,观察 位置、控制电压测量角速度 是否受扰动输入的影响。
    6. 点击复位控制,观察 位置、电压、测量角速度 及相关内部状态是否根据复位逻辑返回初始状态。

结果

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

完成上述工作流程后,可通过自动生成的 Web 前端访问风扇实验和直流电机 PID 位置控制实验。成功的结果可通过三个现象进行判断。首先,Web 页面根据 RIP 服务器返回的变量元数据,自动生成功能输入控件和输出显示区域。其次,当用户在 Web 页面上更改某个输入变量时,修改后的值会通过 RIP 接口写入 LabVIEW 后端 VI。第三,后端 VI 计算出的输出变量会通过 RIP 返回,并在 Web 页面上实时刷新。对于风扇实验,在浏览器中输入 http://localhost:8090/fan 后,页面会根据 RIP 元数据自动生成输入控件和输出字段,如图7所示。输入侧包括Enable, PWM, Load, Tau, KMaxRPM,Disturbance,而输出侧显示 SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA,PowerW。在正常运行期间,TimeS 持续增加,表明后端 fengshan.vi 正在执行。当增大 PWM 时,SpeedRPMSteadyRPM 相应增加。当增大 Load 时,风扇转速下降,因为 load 会降低稳态运行速度。当调节 Disturbance 时,可在 SpeedRPM, CurrentAPowerW 中观察到相应变化。这些现象表明,Web 端的输入已正确传输至 LabVIEW 后端,且计算得到的输出已通过 RIP 返回至前端。

对于直流电机 PID 位置控制实验,在浏览器中输入 http://localhost:8090/motor 后,页面会根据 RIP 元数据自动生成相应的控制和输出字段,如图所示 图12输入变量包括 设定点,比例增益,积分时间,微分时间,干扰,以及 重置 对照,输出变量包括 位置、电压、时间 测量的角速度y. 当 设定点 发生变化, 位置 响应新的目标值。当 PID 参数 Kc,Ti Td 进行调整时,输出响应、控制 电压,以及 测量的角速度 相应地发生变化,表明网页上输入的参数值已正确写入LabVIEW后端模型,并参与控制计算。当激活复位控制时,模型变量将根据复位逻辑恢复至其初始状态。

图13图14图15展示了浏览器端的故障与通信状态。图13显示了一种浏览器访问失败的情况,此时Caddy未运行。浏览器尝试访问 http://localhost:8090/motor,但显示“ERR_CONNECTION_REFUSED”错误信息,表明本地代理服务不可用或未在选定的访问端口上监听。图14展示了页面加载后RIP POST通信失败的情况。在此情况下,浏览器控制台报告RIP POST请求出现502 Bad Gateway错误,表明前端已到达代理地址,但请求无法被成功转发至RIP WebService后端或无法被其处理。相比之下,图15展示了一种正常的浏览器端通信状态。浏览器开发者工具显示页面成功加载、RIP POST请求正常,并存在一个expId=fan的活动SSE请求,表明Web前端正通过Caddy代理与RIP WebService通信,并通过SSE通道接收实时更新。

风扇和电机的实验结果,以及浏览器端的诊断结果共同表明,相同的基于元数据的自动用户界面生成工作流程可以成功应用于两个不同的 LabVIEW 实验。这些结果还提供了可观察的判据,用于区分通信成功的情况与典型的部署失败情况,相应的故障排查方法将在讨论部分进行阐述。

LabVIEW VI 图形界面、RIP 服务器、Caddy 代理;自动生成的网页用户界面流程。
图 1:整体实验系统结构。该系统由 LabVIEW 后端 VI、RIP 服务器、Caddy 代理和自动生成的 Web 用户界面组成。LabVIEW VI 提供模型变量,RIP 服务器读取 VI 的元数据和变量值,Caddy 统一访问路径并解决跨域访问问题,Web 用户界面则自动生成功能控件。Caddy 的名称和标志仅用于标识本工作流程中所使用的 Caddy Web 服务器/代理组件。请点击此处查看此图的放大版本。

电机控制系统示意图,包含输入/输出;转速RPM图表;PWM、KMaxRPM设置;数据分析。
图2:风扇VI的前面板。 前面板包含用于Enable, PWM, Load, Tau, KMaxRPMDisturbance 的输入控件,以及用于 SpeedRPM, SteadyRPM, TimeS, SpeedNorm, CurrentAPowerW 的输出指示器。本截图采集自作者在中国台湾本地实验环境中使用 LabVIEW 2026 打开的 fengshan.vi 文件的前面板界面。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

用于速度分析的电机控制算法框图,包含公式节点、While循环和移位寄存器。
图3:风扇VI的程序框图。 风扇模型通过While循环、移位寄存器、Enable逻辑、公式节点以及输出指示器实现。本截图取自作者在中国台湾本地实验环境中使用LabVIEW 2026打开的fengshan.vi程序的程序框图界面。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

显示风扇模型设置和用于数据采样的相机路径的 LabVIEW 配置界面。
图 4:fan.vi 的配置页面。 该风扇实验已在 RIP 配置中注册,包含实验名称“fan”、实际 VI 路径、关键词信息、描述以及采样频率。此截图来自作者在本地实验环境中使用的 LabVIEW 2026 与 RIP WebService 搭配的 RIP 配置界面。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

用于数据初始化的基于元数据的 JavaScript UI 逻辑代码框图。
图 5:XHTML 前端文件中的实验 ID 设置及基于元数据的 UI 生成逻辑。 XHTML 代码截图取自作者本地开发环境中使用 Visual Studio Code 打开的 Fan_Automatic_UI.xhtml 和 Motor_Automatic_UI.xhtml 文件。风扇和电机页面采用相同的元数据读取与控件生成逻辑,仅实验 ID 不同,以匹配 RIP 配置中的相应名称字段。这些 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 的网页用户界面。 本网页界面截图由作者在本地部署的风扇网页上使用 Mozilla Firefox 浏览器截取。前端页面根据 RIP 服务器返回的变量元数据自动生成功能输入控件和输出显示。所显示的控件和输出字段均由作者本地实验环境中的 RIP 元数据生成。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

PID 控制系统示意图、电机位置反馈、输入-输出过程、角速度测量。
图 8:电机 VI 的前面板。 前面板包含 设定值、Kc、Ti、Td、扰动复位 控制,以及 位置、电压、时间测量的角速度 指示器。此截图取自作者在本地实验环境中使用 LabVIEW 2026 打开的 Motor.vi 的前面板。不包含任何第三方用户数据或机密信息。 请点击此处查看此图的放大版本。

PID 控制系统示意图及方程;电压限制、电气与机械模型。
图9 直流电机 PID 位置控制模型示意图。 该示意图展示了从设定点误差、PID 控制、电压限制、扰动叠加、电气动态、机械动态、位置更新至反馈的信号路径。 请点击此处查看此图的放大版本。

展示移位寄存器、公式节点和位置反馈控制循环的LabVIEW程序框图。
图10:电机VI的程序框图。 电机模型通过While循环、移位寄存器、公式节点、定时逻辑以及输出指示器实现。本截图取自作者在中国台湾本地实验环境中使用LabVIEW 2026打开的Motor.vi的程序框图界面。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

LabVIEW 电机模型界面、用于仿真控制的路径设置、采样配置、电机描述。
图11:Motor.vi 的配置页面。该电机实验已在 RIP 配置中注册,包含实验名称 Motor、实际 VI 路径、关键词信息、描述内容以及采样频率。本截图来自作者在本地实验环境中使用的 LabVIEW 2026 与 RIP WebService 的 RIP 配置界面。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

PID 控制系统仿真;包含用于分析的输入滑块和输出显示指标的示意图。
图 12:Motor.vi 的 Web 用户界面页面。 前端页面为直流电机 PID 位置控制实验自动生成输入控件和输出显示。此 Web 界面截图由作者在本地部署的电机 Web 页面上使用 Mozilla Firefox 截取。所显示的控件和输出字段由作者本地实验环境中的 RIP 元数据生成。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

网页错误消息;本地主机连接被拒绝;浏览器故障排除选项。
图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 开发者工具捕获,展示了 RIP POST 502 Bad Gateway 通信失败的情况。不包含任何第三方用户数据或机密信息。 请点击此处查看此图的放大版本。

显示速度和功率参数以及网络活动的虚拟风扇控制界面;仪表盘示意图。
图15:正常运行状态下的浏览器端通信状态。 浏览器开发者工具显示页面成功加载、RIP POST 请求正常,以及一个 expId=fan 的活动 SSE 请求。这些请求表明,Web 前端正通过 Caddy 代理与 RIP WebService 进行通信,并通过 SSE 通道接收实时更新。本浏览器开发者工具截图由作者在其本地部署环境中使用 Mozilla Firefox 捕获,展示了正常的 RIP POST 和 SSE 通信。图中不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

Firefox 开发者控制台显示网络请求错误和变量加载状态。
图 16:风扇实验的单次代表性浏览器控制台及进程级资源观测。 该截图记录于一次本地风扇实验测试过程中。控制台展示了元数据请求/响应时间、元数据变量数量、基于元数据的用户界面生成时间、SSE 连接建立时间以及接收到的 SSE 数据。任务管理器视图显示了在截图时刻浏览器和 LabVIEW 进程的进程级 CPU 与内存使用值。这些数值为本次单次测试的描述性观察结果,并非重复的性能测量或统计基准数据。该截图由作者在其本地测试环境中使用 Mozilla Firefox 开发者工具和 Windows 任务管理器获取。Mozilla Firefox 用于记录浏览器控制台输出,Windows 任务管理器用于监测浏览器和 LabVIEW 进程的 CPU 与内存使用情况。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

风扇控制界面;Web 和移动 UI 上 SpeedRPM、CurrentA 设置的数据同步示意图。
图 17:从桌面浏览器和移动浏览器同时访问基于 RIP 的同一网页。 风扇实验页面在 PC 和移动设备上同时打开,两个客户端均显示自动生成的控制项和输出变量。桌面网页使用 Mozilla Firefox 访问,移动网页在同一局域网环境下使用移动浏览器访问。截图来自作者自身的本地测试环境。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

变量名数据类型输入/输出物理意义在模型中的作用范围/设置
EnableBoolean输入风扇运行开关控制模型是否接收PWM输入。当为True时,u = PWM;当为False时,u = 0。True / False
PWMDBL输入驱动输入决定风扇的基本驱动强度,是用于计算稳态转速SteadyRPM的主要输入。0–1,步长0.01
LoadDBL输入负载系数描述负载对稳态转速的削弱作用。随着Load增大,稳态转速降低。0–1,步长0.01
TauDBL输入响应时间常数决定风扇转速从上一状态趋近稳态转速的速度。0.1–5,步长0.1
KMaxRPMDBL输入最大转速设定模型允许的最大转速,用于转速限制和归一化处理。500–6000,步长100
DisturbanceDBL输入扰动输入表示外部扰动或负载波动对稳态转速、电流和功率的影响。0–1,步长0.1
SpeedRPMDBL输出实际转速表示风扇当前的输出转速,通过一阶惯性动态更新。由模型计算得出
SteadyRPMDBL输出稳态转速表示在当前输入条件下理论上的稳态转速。由模型计算得出
TimeSDBL输出运行时间表示模型的连续运行时间。由模型计算得出
SpeedNormDBL输出归一化转速表示SpeedRPM与KMaxRPM的比值。0–1 或由模型计算得出
CurrentADBL输出电流表示模型估算的电流,随驱动输入和扰动输入而变化。由模型计算得出
PowerWDBL输出功率表示模型估算的功率,由电压常数和电流计算得出。由模型计算得出
SetpointDBL输入目标位置设定电机应达到的位置,并与实际位置Position形成误差e。-3–3,步长0.1
KcDBL输入比例增益调节PID控制器对误差的响应强度。0–10,步长0.1
TiDBL输入积分时间调节PID控制器的积分作用,用于减小稳态误差。0–10,步长0.1
TdDBL输入微分时间调节PID控制器的微分作用,用于抑制误差过快变化,提升动态响应性能。0–5,步长0.1
DisturbanceDBL输入扰动输入表示叠加在电机输入端的外部扰动,与控制电压共同作用于电机模型。0–10,步长0.1
Reset controlBoolean输入复位控制触发模型状态清零,使位置、角速度、电流、误差和积分项恢复至初始状态。True / False
PositionDBL输出实际位置表示电机当前的角位置,作为PID控制的反馈变量。由模型计算得出
VoltageDBL输出控制电压表示经过电压限幅后的PID控制器输出,作用于电机输入端。由模型计算得出;限制在-24至24 V之间
TimeDBL输出运行时间表示电机模型的连续运行时间。由模型计算得出
Measured angular velocityDBL输出测量的角速度表示电机当前的角速度,是电机的机械状态输出。由模型计算得出

表1:风扇和直流电机示例中使用的输入和输出变量。 该表格列出了每个变量名称、数据类型、输入/输出角色、物理意义、推荐范围以及步长。

参数数值物理意义在模型中的作用
R1电枢电阻表示电机电枢电路中的电阻项,决定电流方程中的电压降 R × im。
L0.5电枢电感表示电枢电路的电感,决定电流变化率。L 越大,电流响应越慢。
J0.01转动惯量表示电机转子对角加速度变化的阻力,决定角速度变化的快慢。
b0.1粘性阻尼系数表示机械阻尼,描述旋转过程中阻碍角速度增加的阻尼转矩。
Kt0.01转矩常数表示将电枢电流转换为电磁转矩的比例系数。
Ke0.01反电动势常数表示角速度产生反电动势的比例系数,描述速度对电流的反馈作用。
Vmax24最大控制电压表示控制器输出电压的极限,使电压保持在 -24 V 至 24 V 范围内。
dt0.001离散仿真步长表示每次基于循环的状态更新的时间间隔,用于更新电流、角速度、位置和运行时间。

表2:直流电机PID位置控制模型中使用的内部参数。 该表格列出了电气和机械参数、符号、数值、单位及其在模型中的作用。

补充代码文件:用于复现风扇和直流电机示例的完整源代码和配置文件。 补充代码文件包括本实验方案中使用的 LabVIEW 公式节点代码、Caddy 反向代理配置、XHTML 前端文件以及 LabVIEW VI 源文件。文件“Code in LabVIEW Formula Node.docx”包含风扇和直流电机 PID 位置控制模型的公式节点代码。“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 读写过程所期望的变量相匹配。在本方案使用的两个示例中,标量数值变量被定义为 DBL 控件或指示器,布尔变量被定义为布尔控件。程序框图还必须通过 While 循环、移位寄存器和公式节点持续更新状态,以便在执行过程中实时更新风扇转速、电机位置、电机角速度、电压和时间等变量。VI 构建完成后,RIP 配置中的实验名称必须与相应 XHTML 文件中使用的实验 ID 完全一致,且 VI 路径必须指向实际保存的 VI 文件。这些设置至关重要,因为 Web 前端不会对每个实验的变量进行硬编码,而是依赖于 RIP 服务器返回的元数据来识别可写变量、可读变量、数据类型及数值属性1011

主要的故障排查问题与XHTML实验ID、RIP配置、RIP WebService以及Caddy代理设置之间的一致性有关。如果XHTML文件中的实验ID与RIP配置中的实验名称不匹配,则网页无法请求正确的元数据,因此无法生成预期的控件和输出字段。如果VI路径不正确或RIP WebService未启动,则网页可能打开,但无法与LabVIEW后端通信。如果Caddy未运行,浏览器将无法访问所选的本地代理地址,并可能显示“ERR_CONNECTION_REFUSED”错误,如图13所示。如果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配置问题。

本方案在两个示例中均具有可重复性,因为风扇转速模型和直流电机PID位置控制模型均采用了相同的构建-注册-部署-验证工作流程。为了减少对专用工具包的依赖,后端VI使用基本的LabVIEW结构重新构建,包括前面板控件和指示器、While循环、移位寄存器、公式节点以及标准的标量数值和布尔变量。然而,在不同版本的LabVIEW、不同的Windows系统安装环境以及不同的本地网络环境下,可重复性仍取决于文件路径、访问权限、本地端口、服务启动命令和浏览器行为等配置细节。该工作流程也可扩展至与硬件相关的远程实验,但不应将其理解为Web端对硬件的直接识别。Web前端通过RIP元数据识别LabVIEW前面板上的控件和指示器。因此,传感器、执行器、仪器或过程控制设备必须首先通过适当的硬件驱动程序、数据采集模块、仪器控制模块或其他硬件适配机制连接并处理于LabVIEW后端VI中。在硬件测量值和控制指令映射到前面板指示器和控件之后,基于RIP的Web前端即可像识别本方案中使用的仿真变量一样识别这些变量。以往基于LabVIEW的远程实验室研究表明,LabVIEW可作为远程控制工程实验、机器人实验、过程控制装置、传感器数据采集以及物理设备交互的后端环境9,12,17,18,19,20

图16 展示了在本地风扇实验期间记录的一个典型实现示例。前端代码被用于记录元数据请求/响应时间、元数据变量数量、基于元数据的用户界面生成时间、SSE连接建立时间以及接收到的SSE数据。在此示例中,浏览器控制台报告的元数据请求/响应时间为68.00 ms,从RIP元数据中识别出7个可写变量和7个可读变量,用2.00 ms生成了相应的用户界面元素,并在16.00 ms内建立了SSE连接。重复的SSE数据条目显示,诸如 SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentAPowerW 等输出变量持续从LabVIEW后端接收。在同一本地测试状态下的任务管理器视图显示,Firefox进程的CPU使用率约为1.5%,内存占用为391.7 MB,而LabVIEW进程在捕获时刻的CPU使用率为0%,内存占用为9.2 MB。这些观察结果提供了基本证据,表明在本地部署环境中可以观测到元数据获取、基于元数据的用户界面生成、RIP/SSE通信以及进程级别的CPU开销。然而,这些数据旨在用于实现层面的验证,而非全面的性能基准测试。未来工作仍需在不同浏览器、重复试验、更重的变量负载、实际硬件以及多用户并发等条件下进行系统的性能评估。

该方法也存在局限性,尤其是在扩展到复杂数据结构、硬件实验和多用户操作时。当前的工作流程最适合标量数值型和布尔型的输入/输出变量。它无法自动为复杂数组、簇、嵌套数据结构、图表关系或领域特定的可视化提供完整支持。这些情况可能需要额外的元数据映射规则或手动编写的前端组件。自动生成的用户界面可根据变量元数据创建基本的控件和显示元素,但无法完全推断变量之间的物理关系,无法选择最合适的可视化方式,也无法设计针对特定实验的安全交互机制。当工作流程扩展至真实设备时,还需考虑其他因素,包括硬件驱动程序、设备校准、采样限制、执行器限值、急停逻辑、身份认证以及多用户写入控制机制。当前的部署还可通过标准Web浏览器在相同的局域网环境中被多个客户端设备访问。如图17所示,同一个风扇实验页面同时在桌面浏览器和移动浏览器中打开,两个客户端均显示了自动生成的控件及相应的输出变量。该现象表明,多个客户端可基本实现对同一实验页面的同时访问与交互。然而,这不应被理解为一个完整的多用户控制框架,因为当前实现并未包含专用的用户身份认证、控制锁定、并发写入仲裁、写入队列或冲突解决机制。这些局限性与以往远程实验室研究的结果一致,在这些研究中,复杂的或协作式的远程实验室通常需要针对特定实验设计的界面、同步机制、安全约束以及用户管理逻辑13,14,15,16,17

本方案的方法学价值并不在于引入了一种新的RIP架构或扩展了RIP所支持的数据类型,而在于为将已有的基于RIP的自动用户界面生成机制应用于不同的LabVIEW系统,提供了一条完整且可重复的实现路径。与为每个实验单独编写定制化的Web界面相比,该工作流程在后端VI暴露了兼容变量的情况下,减少了对基本控制布局、变量绑定以及读写通信逻辑的重复实现8,9,10,11。因此,该方案对于工程教育、远程实验室开发,以及需要基于浏览器进行参数调节和实时状态监控的低风险仿真或教学实验的快速部署具有实用价值。未来的工作应将该工作流程扩展至更复杂的数据结构、物理实验设备、正式的多用户访问控制,以及包括界面生成时间、通信延迟、同步稳定性、服务器负载、CPU开销和前端可用性在内的定量性能评估。

披露

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

作者仅使用人工智能辅助工具进行语言润色。所有科学内容、实验步骤、软件实现、图表、结果、解释及最终表述均经过作者审阅、修改和批准。未使用任何人工智能工具生成实验数据。

致谢

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

本工作得到武汉大学本科生创新训练计划项目的资助。

材料

本文使用的材料清单
姓名公司目录编号评论
Caddy 代理服务器CaddyN/A用作反向代理,用于提供 Web 用户界面,并将 /RIP 请求转发至 RIP WebService
Caddyfile作者准备N/A定义用于静态文件路由和 RIP 通信的反向代理路由
Fan_Automatic_UI.xhtml作者准备N/A基于元数据的 Web 前端,用于风扇实验
LabVIEWNational Instruments2026用于构建和运行 fengshan.vi 与 Motor.vi 的软件
Microsoft Windows 操作系统MicrosoftWin11用于运行 LabVIEW、RIP WebService、Caddy 和浏览器的操作系统
Motor_Automatic_UI.xhtml作者准备N/A基于元数据的 Web 前端,用于电机实验
Mozilla Firefox 桌面浏览器Mozilla2026用于访问 Web 用户界面、开发人员工具、时间/资源观察,以及 Network/Console 截图的桌面浏览器
RIP WebServiceUNEDLabshttps://github.com/Nebulous-Systems/rip-server_labview接收 RIP POST 请求,并为浏览器前端提供 WebService 通信层
Windows 任务管理器Microsoft集成于 Windows 系统中用于记录浏览器和 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
视频即将推出

相关文章