需要JoVE订阅才能观看此内容。 请登录或开始免费试用

方法文章

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

189 次观看

⸱

DOI:

10.3791/72765

⸱

2026年8月14日

本文内容

摘要

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

摘要

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

引言

随着远程实验、在线教学和物联网技术的发展,提供对本地仿真模型或实验设备的基于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。

访问受限。请登录或开始试用以查看此内容。

方案

按照图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,CurrentA 和 PowerW 对应的输出指标。
    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,电流A 和 PowerW 响应扰动输入的变化。
    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、integ 和 time,并将这六个初始值均设为 0。
    5. 在 While 循环内添加一个公式节点。根据 图 9 所示的直流电机 PID 位置控制模型图,使用该公式节点作为误差计算、PID 控制、电压限幅、电气模型、机械模型和位置更新的核心计算模块。
      注意:本模型中使用的内部电机参数,如 R、L、J、b、Kt、Ke 和 Vmax,是归一化的教学模型参数,而非特定物理电机的校准参数。这些参数的选择旨在所选时间步长和电压限制条件下产生稳定且可观测的仿真响应,以便在基于 Web 的操作过程中清晰展示 设定值、比例增益、积分时间、微分时间 和 扰动 的影响。
    6. 将 sp、theta、omega、im、e_prev、integ、Kc、Ti、Td、disturbance、reset 和 dt 设置为公式节点的输入端子。将 theta_next、omega_next、im_next、e_next、integ_next 和 voltage 设置为公式节点的输出端子。
    7. 将 设定值(Setpoint) 控件连接至公式节点的 sp 输入端子。将 比例增益(Kc)、积分时间(Ti)、微分时间(Td) 和 扰动(Disturbance) 分别连接至公式节点的 Kc、Ti、Td 和 disturbance 输入端子。
    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_next 和 integ_next 分别反馈连接至 im、e_prev 和 integ 的右侧移位寄存器。
    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. 点击复位控制,观察 位置、电压、测量角速度 及相关内部状态是否根据复位逻辑返回初始状态。

访问受限。请登录或开始试用以查看此内容。

结果

完成上述工作流程后,可通过自动生成的 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 正在执行。当增大

访问受限。请登录或开始试用以查看此内容。

讨论

本方案中的一个关键步骤是 LabVIEW 后端 VI 的标准化构建与注册。前面板的控件和指示器必须使用清晰且唯一的变量名,其数据类型必须与模型计算以及 RIP 读写过程所期望的变量相匹配。在本方案使用的两个示例中,标量数值变量被定义为 DBL 控件或指示器,布尔变量被定义为布尔控件。程序框图还必须通过 While 循环、移位寄存器和公式节点持续更新状态,以便在执行过程中实时更新风扇转速、电机位置、电机角速度、电压和时间等变量。VI 构建完成后,RIP 配置中的实验名称必须与相应 XHTML 文件中使用的实验 ID 完全一致,且 VI 路径必须指向实际保存的 VI 文件。这些设置至关重要,因为 Web 前端不会对每个实验的变量进行硬编码,而是依赖于 RIP 服务器返回的元数据来识别可写变量、可读变量、数据类型及数值属性10,11。

主要的故障排查问题与XHTML实验ID、RIP配置、RIP WebService以及Caddy代理设置之间的一致性有关。如果XHTML文件...

访问受限。请登录或开始试用以查看此内容。

披露

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

致谢

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

访问受限。请登录或开始试用以查看此内容。

材料

本文使用的材料清单
姓名公司目录编号评论
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 与内存使用情况

参考文献

  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位置控制变量元数据

本文已发表

视频即将推出