本研究通过两个不同的 LabVIEW 系统——风扇模型和直流电机位置控制模型,验证了基于远程互操作协议(RIP)的自动 Web 用户界面生成方法,并提供了构建、注册、部署和测试这两个示例的可重复操作流程。
方法文章
本研究通过两个不同的 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. 构建并部署风扇模型实验
2. 构建并部署直流电机PID位置控制实验
完成上述工作流程后,可通过自动生成的 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 时,SpeedRPM 和 SteadyRPM 相应增加。当增大 Load 时,风扇转速下降,因为 load 会降低稳态运行速度。当调节 Disturbance 时,可在 SpeedRPM, CurrentA 和 PowerW 中观察到相应变化。这些现象表明,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 实验。这些结果还提供了可观察的判据,用于区分通信成功的情况与典型的部署失败情况,相应的故障排查方法将在讨论部分进行阐述。

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

图2:风扇VI的前面板。 前面板包含用于Enable, PWM, Load, Tau, KMaxRPM 和 Disturbance 的输入控件,以及用于 SpeedRPM, SteadyRPM, TimeS, SpeedNorm, CurrentA 和 PowerW 的输出指示器。本截图采集自作者在中国台湾本地实验环境中使用 LabVIEW 2026 打开的 fengshan.vi 文件的前面板界面。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

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

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

图 5:XHTML 前端文件中的实验 ID 设置及基于元数据的 UI 生成逻辑。 XHTML 代码截图取自作者本地开发环境中使用 Visual Studio Code 打开的 Fan_Automatic_UI.xhtml 和 Motor_Automatic_UI.xhtml 文件。风扇和电机页面采用相同的元数据读取与控件生成逻辑,仅实验 ID 不同,以匹配 RIP 配置中的相应名称字段。这些 XHTML 代码截图由作者为本实验方案专门准备,不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

图 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 元数据生成。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

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

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

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

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

图 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 通信。图中不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。

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

图 17:从桌面浏览器和移动浏览器同时访问基于 RIP 的同一网页。 风扇实验页面在 PC 和移动设备上同时打开,两个客户端均显示自动生成的控制项和输出变量。桌面网页使用 Mozilla Firefox 访问,移动网页在同一局域网环境下使用移动浏览器访问。截图来自作者自身的本地测试环境。不包含任何第三方用户数据或机密信息。请点击此处查看此图的放大版本。
| 变量名 | 数据类型 | 输入/输出 | 物理意义 | 在模型中的作用 | 范围/设置 | ||
| Enable | Boolean | 输入 | 风扇运行开关 | 控制模型是否接收PWM输入。当为True时,u = PWM;当为False时,u = 0。 | True / False | ||
| PWM | DBL | 输入 | 驱动输入 | 决定风扇的基本驱动强度,是用于计算稳态转速SteadyRPM的主要输入。 | 0–1,步长0.01 | ||
| Load | DBL | 输入 | 负载系数 | 描述负载对稳态转速的削弱作用。随着Load增大,稳态转速降低。 | 0–1,步长0.01 | ||
| Tau | DBL | 输入 | 响应时间常数 | 决定风扇转速从上一状态趋近稳态转速的速度。 | 0.1–5,步长0.1 | ||
| KMaxRPM | DBL | 输入 | 最大转速 | 设定模型允许的最大转速,用于转速限制和归一化处理。 | 500–6000,步长100 | ||
| Disturbance | DBL | 输入 | 扰动输入 | 表示外部扰动或负载波动对稳态转速、电流和功率的影响。 | 0–1,步长0.1 | ||
| SpeedRPM | DBL | 输出 | 实际转速 | 表示风扇当前的输出转速,通过一阶惯性动态更新。 | 由模型计算得出 | ||
| SteadyRPM | DBL | 输出 | 稳态转速 | 表示在当前输入条件下理论上的稳态转速。 | 由模型计算得出 | ||
| TimeS | DBL | 输出 | 运行时间 | 表示模型的连续运行时间。 | 由模型计算得出 | ||
| SpeedNorm | DBL | 输出 | 归一化转速 | 表示SpeedRPM与KMaxRPM的比值。 | 0–1 或由模型计算得出 | ||
| CurrentA | DBL | 输出 | 电流 | 表示模型估算的电流,随驱动输入和扰动输入而变化。 | 由模型计算得出 | ||
| PowerW | DBL | 输出 | 功率 | 表示模型估算的功率,由电压常数和电流计算得出。 | 由模型计算得出 | ||
| Setpoint | DBL | 输入 | 目标位置 | 设定电机应达到的位置,并与实际位置Position形成误差e。 | -3–3,步长0.1 | ||
| Kc | DBL | 输入 | 比例增益 | 调节PID控制器对误差的响应强度。 | 0–10,步长0.1 | ||
| Ti | DBL | 输入 | 积分时间 | 调节PID控制器的积分作用,用于减小稳态误差。 | 0–10,步长0.1 | ||
| Td | DBL | 输入 | 微分时间 | 调节PID控制器的微分作用,用于抑制误差过快变化,提升动态响应性能。 | 0–5,步长0.1 | ||
| Disturbance | DBL | 输入 | 扰动输入 | 表示叠加在电机输入端的外部扰动,与控制电压共同作用于电机模型。 | 0–10,步长0.1 | ||
| Reset control | Boolean | 输入 | 复位控制 | 触发模型状态清零,使位置、角速度、电流、误差和积分项恢复至初始状态。 | True / False | ||
| Position | DBL | 输出 | 实际位置 | 表示电机当前的角位置,作为PID控制的反馈变量。 | 由模型计算得出 | ||
| Voltage | DBL | 输出 | 控制电压 | 表示经过电压限幅后的PID控制器输出,作用于电机输入端。 | 由模型计算得出;限制在-24至24 V之间 | ||
| Time | DBL | 输出 | 运行时间 | 表示电机模型的连续运行时间。 | 由模型计算得出 | ||
| Measured angular velocity | DBL | 输出 | 测量的角速度 | 表示电机当前的角速度,是电机的机械状态输出。 | 由模型计算得出 | ||
表1:风扇和直流电机示例中使用的输入和输出变量。 该表格列出了每个变量名称、数据类型、输入/输出角色、物理意义、推荐范围以及步长。
| 参数 | 数值 | 物理意义 | 在模型中的作用 | ||
| R | 1 | 电枢电阻 | 表示电机电枢电路中的电阻项,决定电流方程中的电压降 R × im。 | ||
| L | 0.5 | 电枢电感 | 表示电枢电路的电感,决定电流变化率。L 越大,电流响应越慢。 | ||
| J | 0.01 | 转动惯量 | 表示电机转子对角加速度变化的阻力,决定角速度变化的快慢。 | ||
| b | 0.1 | 粘性阻尼系数 | 表示机械阻尼,描述旋转过程中阻碍角速度增加的阻尼转矩。 | ||
| Kt | 0.01 | 转矩常数 | 表示将电枢电流转换为电磁转矩的比例系数。 | ||
| Ke | 0.01 | 反电动势常数 | 表示角速度产生反电动势的比例系数,描述速度对电流的反馈作用。 | ||
| Vmax | 24 | 最大控制电压 | 表示控制器输出电压的极限,使电压保持在 -24 V 至 24 V 范围内。 | ||
| dt | 0.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 文件。请点击此处下载该文件。
本方案中的一个关键步骤是 LabVIEW 后端 VI 的标准化构建与注册。前面板的控件和指示器必须使用清晰且唯一的变量名,其数据类型必须与模型计算以及 RIP 读写过程所期望的变量相匹配。在本方案使用的两个示例中,标量数值变量被定义为 DBL 控件或指示器,布尔变量被定义为布尔控件。程序框图还必须通过 While 循环、移位寄存器和公式节点持续更新状态,以便在执行过程中实时更新风扇转速、电机位置、电机角速度、电压和时间等变量。VI 构建完成后,RIP 配置中的实验名称必须与相应 XHTML 文件中使用的实验 ID 完全一致,且 VI 路径必须指向实际保存的 VI 文件。这些设置至关重要,因为 Web 前端不会对每个实验的变量进行硬编码,而是依赖于 RIP 服务器返回的元数据来识别可写变量、可读变量、数据类型及数值属性10,11。
主要的故障排查问题与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, CurrentA 和 PowerW 等输出变量持续从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开销和前端可用性在内的定量性能评估。
作者仅使用人工智能辅助工具进行语言润色。所有科学内容、实验步骤、软件实现、图表、结果、解释及最终表述均经过作者审阅、修改和批准。未使用任何人工智能工具生成实验数据。
本工作得到武汉大学本科生创新训练计划项目的资助。
| 姓名 | 公司 | 目录编号 | 评论 |
|---|---|---|---|
| Caddy 代理服务器 | Caddy | N/A | 用作反向代理,用于提供 Web 用户界面,并将 /RIP 请求转发至 RIP WebService |
| Caddyfile | 作者准备 | N/A | 定义用于静态文件路由和 RIP 通信的反向代理路由 |
| Fan_Automatic_UI.xhtml | 作者准备 | N/A | 基于元数据的 Web 前端,用于风扇实验 |
| LabVIEW | National Instruments | 2026 | 用于构建和运行 fengshan.vi 与 Motor.vi 的软件 |
| Microsoft Windows 操作系统 | Microsoft | Win11 | 用于运行 LabVIEW、RIP WebService、Caddy 和浏览器的操作系统 |
| Motor_Automatic_UI.xhtml | 作者准备 | N/A | 基于元数据的 Web 前端,用于电机实验 |
| Mozilla Firefox 桌面浏览器 | Mozilla | 2026 | 用于访问 Web 用户界面、开发人员工具、时间/资源观察,以及 Network/Console 截图的桌面浏览器 |
| RIP WebService | UNEDLabs | https://github.com/Nebulous-Systems/rip-server_labview | 接收 RIP POST 请求,并为浏览器前端提供 WebService 通信层 |
| Windows 任务管理器 | Microsoft | 集成于 Windows 系统中 | 用于记录浏览器和 LabVIEW 进程的进程级 CPU 与内存使用情况 |
申请许可以重复使用本 JoVE 文章的文本或图表
申请许可