Después de completar el flujo de trabajo descrito anteriormente, tanto el experimento del ventilador como el experimento de control de posición PID del motor de corriente continua se pueden acceder mediante la interfaz web generada automáticamente. Un resultado exitoso se indica mediante tres observaciones. Primero, la página web genera automáticamente controles de entrada y campos de visualización de salida según los metadatos de las variables devueltos por el servidor RIP. Segundo, cuando el usuario modifica una variable de entrada en la página web, el valor modificado se escribe en la VI de fondo de LabVIEW a través de la interfaz RIP. Tercero, las variables de salida calculadas por la VI de fondo se devuelven mediante RIP y se actualizan en la página web en tiempo real. Para el experimento del ventilador, después de ingresar http://localhost:8090/fan en un navegador, la página genera automáticamente controles de entrada y campos de salida a partir de los metadatos de RIP, como se muestra en Figura 7. El lado de entrada incluye Enable, PWM, Load, Tau, KMaxRPM y Disturbance, mientras que el lado de salida muestra SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA y PowerW. Durante el funcionamiento normal, TimeS aumenta continuamente, lo que indica que la VI de fondo fengshan.vi está en ejecución. Cuando se incrementa PWM, SpeedRPM y SteadyRPM aumentan en consecuencia. Cuando se incrementa Load, la velocidad del ventilador disminuye porque la carga reduce la velocidad de operación estable. Cuando se ajusta Disturbance, se pueden observar cambios correspondientes en SpeedRPM, CurrentA y PowerW. Estas observaciones confirman que las entradas del lado web se transmiten correctamente al fondo de LabVIEW y que las salidas calculadas se devuelven al frente mediante RIP.
Para el experimento de control de posición PID del motor de corriente continua, después de ingresar http://localhost:8090/motor en un navegador, la página genera automáticamente los controles y campos de salida correspondientes a partir de los metadatos RIP, como se muestra en Figura 12. Las variables de entrada incluyen Punto de consigna, Kc, Ti, Td, Perturbación, y Reiniciar control, y las variables de salida incluyen Posición, Voltaje, Tiempo, y Velocidad angular mediday. Cuando Punto de consigna se cambia, Posición responde al nuevo valor objetivo. Cuando los parámetros PID Kc, Ti, y Td se ajustan, la respuesta de salida, control voltaje, y velocidad angular medida cambie en consecuencia, indicando que los valores de los parámetros ingresados en la página web se escriben correctamente en el modelo de fondo de LabVIEW y participan en el cálculo de control. Cuando se activa el control de reinicio, las variables del modelo regresan a sus estados iniciales según la lógica de reinicio.
Los estados de fallo y comunicación del lado del navegador se muestran en la Figura 13, Figura 14, Figura 15. La Figura 13 muestra un caso de acceso fallido desde el navegador en el que Caddy no está en ejecución. El navegador intenta acceder a http://localhost:8090/motor pero muestra un mensaje ERR_CONNECTION_REFUSED, lo que indica que el servicio proxy local no está disponible o no está escuchando en el puerto de acceso seleccionado. La Figura 14 muestra un fallo de comunicación RIP POST después de que la página se ha cargado. En este caso, la consola del navegador informa un error 502 Bad Gateway para la solicitud RIP POST, lo que indica que el front end ha alcanzado la dirección del proxy, pero la solicitud no puede reenviarse ni procesarse correctamente por el back end del servicio web RIP. En contraste, la Figura 15 muestra un estado normal de comunicación del lado del navegador. Las herramientas de desarrollo del navegador muestran una carga exitosa de la página, solicitudes RIP POST y una solicitud SSE activa con expId=fan, lo que indica que el front end web se comunica con el RIP WebService a través del proxy Caddy y recibe actualizaciones en tiempo real a través del canal SSE.
En conjunto, los resultados exitosos del ventilador y del motor, junto con los resultados del diagnóstico en el navegador, demuestran que el mismo flujo de trabajo automatizado de generación de interfaz de usuario basado en metadatos puede reproducirse para dos experimentos diferentes en LabVIEW. Estos resultados también proporcionan criterios observables para distinguir la comunicación exitosa de fallos representativos en la implementación, mientras que los procedimientos correspondientes de solución de problemas se analizan en la sección de Discusión.

Figura 1: Estructura general del sistema experimental. El sistema consta del VI de fondo de LabVIEW, el servidor RIP, el proxy Caddy y la interfaz web generada automáticamente. El VI de LabVIEW proporciona las variables del modelo, el servidor RIP lee los metadatos del VI y los valores de las variables, Caddy unifica la ruta de acceso y resuelve el acceso entre orígenes, y la interfaz web genera controles automáticamente. El nombre y el logotipo de Caddy se muestran únicamente para identificar el componente del servidor/proxy web Caddy utilizado en el flujo de trabajo. Haga clic aquí para ver una versión más grande de esta figura.

Figura 2: Panel Frontal del VI del ventilador. El Panel Frontal contiene controles de entrada para Enable, PWM, Load, Tau, KMaxRPM y Disturbance, y medidores de salida para SpeedRPM, SteadyRPM, TimeS, SpeedNorm, CurrentA y PowerW. Esta captura de pantalla se tomó del Panel Frontal de fengshan.vi en LabVIEW 2026 en el entorno experimental local de los autores. No se incluyen datos de usuarios externos ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 3: Diagrama de bloques del VI del ventilador. El modelo del ventilador se implementa con un bucle While, registros de desplazamiento, lógica de habilitación, un nodo de fórmula y los indicadores de salida. Esta captura de pantalla se tomó del diagrama de bloques de fengshan.vi en LabVIEW 2026 en el entorno experimental local propio de los autores. No se incluyen datos de usuarios externos ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 4: Página de configuración de fan.vi. El experimento del ventilador se registra en la Configuración de RIP con el nombre del experimento «fan», la ruta real del VI, información de palabras clave, descripción y frecuencia de muestreo. Esta captura de pantalla se tomó desde la interfaz de Configuración de RIP utilizada con LabVIEW 2026 y RIP WebService en el entorno experimental local de los autores. No se incluyen datos de usuarios externos ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 5: Configuración del ID del experimento y lógica de generación de interfaz de usuario basada en metadatos en los archivos de interfaz XHTML. Las capturas de pantalla del código XHTML se tomaron de Fan_Automatic_UI.xhtml y Motor_Automatic_UI.xhtml abiertos en Visual Studio Code. Las páginas del ventilador y del motor utilizan la misma lógica de lectura de metadatos y generación de controles; solo se modifica el ID del experimento para que coincida con el campo Nombre correspondiente en la Configuración de RIP. Las capturas de pantalla del código XHTML se realizaron desde Fan_Automatic_UI.xhtml y Motor_Automatic_UI.xhtml abiertos en Visual Studio Code en el entorno de desarrollo local de los autores. Los archivos de código fueron preparados por los autores para este protocolo. No se incluyen datos de usuarios de terceros ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 6: Configuración del Caddyfile. El Caddyfile define el puerto de acceso del proxy local, establece el directorio raíz del interfaz frontal, reescribe las rutas /fan y /motor hacia los archivos XHTML correspondientes y realiza proxy inverso de las solicitudes /RIP/SSE* y /RIP* al puerto del WebService LabVIEW/RIP. La captura de pantalla de la configuración del Caddyfile se tomó del archivo Caddyfile abierto en Visual Studio Code, en el entorno de desarrollo local de los autores. El archivo Caddyfile fue preparado por los autores para configurar Caddy como servidor web local y proxy inverso. No se incluyen datos de usuarios externos ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 7: Página de interfaz web de fan.vi. Esta captura de pantalla de la interfaz web se tomó de la página web de ventilador implementada localmente por los autores, utilizando Mozilla Firefox. La página frontal genera automáticamente controles de entrada y visualizaciones de salida basándose en los metadatos de variables devueltos por el servidor RIP. Los controles y campos de salida mostrados se generaron a partir de los metadatos RIP en el entorno experimental local de los autores. No se incluye ningún dato de usuario de terceros ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 8: Panel Frontal del VI del motor. El Panel Frontal contiene controles para Setpoint, Kc, Ti, Td, Perturbación y control de Reinicio, así como indicadores para Posición, Voltaje, Tiempo y Velocidad angular medida. Esta captura de pantalla se tomó del Panel Frontal de Motor.vi en LabVIEW 2026 en el entorno experimental local de los autores. No se incluye ningún dato de usuario de terceros ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 9: Diagrama del modelo de control de posición PID para motor de corriente continua. El diagrama muestra la trayectoria de la señal desde el error del punto de consigna, el control PID, el límite de voltaje, la superposición de perturbaciones, la dinámica eléctrica, la dinámica mecánica y la actualización de la posición hasta la realimentación. Haga clic aquí para ver una versión más grande de esta figura.

Figura 10: Diagrama de bloques del VI del motor. El modelo del motor se implementa con un bucle While, registros de desplazamiento, un nodo de fórmula, lógica de temporización y visualizadores de salida. Esta captura de pantalla se tomó del diagrama de bloques de Motor.vi en LabVIEW 2026 en el entorno experimental local propio de los autores. No se incluye ningún dato de usuario de terceros ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 11: Página de configuración de Motor.vi. El experimento del motor se registra en RIP Configuration con el nombre del experimento Motor, la ruta real del VI, información de palabras clave, descripción y frecuencia de muestreo. Esta captura de pantalla se tomó desde la interfaz de RIP Configuration utilizada con LabVIEW 2026 y RIP WebService en el entorno experimental local de los autores. No se incluye datos de usuarios externos ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 12: Página de interfaz web de Motor.vi. La página frontal genera automáticamente controles de entrada y visualizaciones de salida para el experimento de control de posición PID del motor de corriente continua. Esta captura de pantalla de la interfaz web se tomó de la página web de motor implementada localmente por los autores utilizando Mozilla Firefox. Los controles y campos de salida mostrados se generaron a partir de metadatos RIP en el entorno experimental local de los autores. No se incluyen datos de usuarios de terceros ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 13: Acceso fallido desde el navegador cuando Caddy no está en ejecución. Cuando Caddy no se ha iniciado, no se puede acceder a la dirección local proxy http://localhost:8090/motor y el navegador muestra un mensaje ERR_CONNECTION_REFUSED. Este síntoma de fallo indica que el servicio de proxy local Caddy no está disponible o no está escuchando en el puerto de acceso seleccionado. Esta captura de pantalla del navegador se realizó utilizando Mozilla Firefox en el entorno de pruebas local de los autores y muestra el estado de acceso fallido cuando el proxy local Caddy no estaba en ejecución. No se incluye ningún dato de usuario de terceros ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 14: Fallo de comunicación RIP POST tras la carga de la página. La consola del navegador muestra un error 502 Bad Gateway para la solicitud RIP POST. Este resultado indica que la página web ha alcanzado la dirección del proxy Caddy, pero la solicitud no puede reenviarse ni procesarse correctamente en el servicio web RIP de fondo. Esta captura de pantalla de la consola del navegador se tomó utilizando las herramientas para desarrolladores de Mozilla Firefox en el entorno de implementación local de los autores, y muestra un fallo de comunicación RIP POST 502 Bad Gateway. No se incluye ningún dato de usuario de terceros ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.

Figura 15: Estado de la comunicación del lado del navegador durante el funcionamiento normal. Las herramientas de desarrollo del navegador muestran una carga exitosa de la página, solicitudes POST de RIP y una solicitud SSE activa con expId=fan. Estas solicitudes indican que la interfaz web frontal se comunica con el servicio web RIP a través del proxy Caddy y recibe actualizaciones en tiempo real mediante el canal SSE. Esta captura de pantalla de las herramientas de desarrollo del navegador se tomó utilizando Mozilla Firefox en el entorno de implementación local de los autores y muestra una comunicación normal mediante solicitudes POST de RIP y SSE. No se incluyen datos de usuarios de terceros ni información confidencial. Haga clic aquí para ver una versión ampliada de esta figura.

Figura 16: Observación representativa individual del navegador y del uso de recursos a nivel de proceso para el experimento del ventilador. La captura de pantalla se realizó durante una prueba local del experimento con el ventilador. La consola muestra el tiempo de solicitud y respuesta de los metadatos, la cantidad de variables de metadatos, el tiempo de generación de la interfaz de usuario basado en metadatos, el tiempo de apertura de la conexión SSE y los datos SSE recibidos. La vista del administrador de tareas muestra los valores de CPU y memoria a nivel de proceso para los procesos del navegador y de LabVIEW en el momento de la captura. Estos valores son observaciones descriptivas de esta prueba individual y no representan mediciones de rendimiento replicadas ni una referencia estadística. Esta captura de pantalla se obtuvo utilizando las herramientas de desarrollador de Mozilla Firefox y el administrador de tareas de Windows en el entorno de pruebas local de los autores. Mozilla Firefox se utilizó para registrar la salida de la consola del navegador, y el administrador de tareas de Windows se empleó para observar el uso de CPU y memoria de los procesos del navegador y de LabVIEW. No se incluye ningún dato de usuario de terceros ni información confidencial. Haga clic aquí para ver una versión ampliada de esta figura.

Figura 17: Acceso simultáneo a la misma página web basada en RIP desde un navegador de escritorio y un navegador móvil. La página del experimento del ventilador se abre simultáneamente en dispositivos de PC y móviles, y ambos clientes muestran los controles y variables de salida generados automáticamente. La página web de escritorio se accedió mediante Mozilla Firefox, y la página web móvil se accedió mediante un navegador móvil en el mismo entorno de red local. Las capturas de pantalla se tomaron del entorno de pruebas local de los autores. No se incluyen datos de usuarios externos ni información confidencial. Haga clic aquí para ver una versión más grande de esta figura.
| Nombre de la variable | Tipo de dato | Entrada/Salida | Significado físico | Papel en el modelo | Rango/Ajuste |
| Habilitar | Booleano | Entrada | Interruptor de funcionamiento del ventilador | Controla si el modelo recibe la entrada PWM. Cuando es Verdadero, u = PWM; cuando es Falso, u = 0. | Verdadero / Falso |
| PWM | DBL | Entrada | Entrada de accionamiento | Determina la intensidad básica del accionamiento del ventilador y es la entrada principal utilizada para calcular la velocidad en estado estacionario SteadyRPM. | 0-1, paso 0,01 |
| Carga | DBL | Entrada | Coeficiente de carga | Describe el efecto de debilitamiento de la carga sobre la velocidad en estado estacionario. A medida que aumenta la carga, la velocidad en estado estacionario disminuye. | 0-1, paso 0,01 |
| Tau | DBL | Entrada | Constante de tiempo de respuesta | Determina qué tan rápido se aproxima la velocidad del ventilador a la velocidad en estado estacionario desde el estado anterior. | 0,1-5, paso 0,1 |
| KMaxRPM | DBL | Entrada | Velocidad máxima | Establece la velocidad máxima permitida por el modelo y se utiliza para limitar la velocidad y la normalización. | 500-6000, paso 100 |
| Perturbación | DBL | Entrada | Entrada de perturbación | Representa el efecto de una perturbación externa o fluctuación de carga sobre la velocidad en estado estacionario, la corriente y la potencia. | 0-1, paso 0,1 |
| SpeedRPM | DBL | Salida | Velocidad real | Representa la velocidad de salida actual del ventilador y se actualiza mediante dinámica inercial de primer orden. | Calculado por el modelo |
| SteadyRPM | DBL | Salida | Velocidad en estado estacionario | Representa la velocidad teórica en estado estacionario bajo las condiciones de entrada actuales. | Calculado por el modelo |
| TimeS | DBL | Salida | Tiempo de funcionamiento | Representa el tiempo continuo de funcionamiento del modelo. | Calculado por el modelo |
| SpeedNorm | DBL | Salida | Velocidad normalizada | Representa la relación entre SpeedRPM y KMaxRPM. | 0-1 o calculado por el modelo |
| CurrentA | DBL | Salida | Corriente | Representa la corriente estimada del modelo, que cambia con la entrada de accionamiento y la entrada de perturbación. | Calculado por el modelo |
| PowerW | DBL | Salida | Potencia | Representa la potencia estimada del modelo, calculada a partir de la constante de voltaje y la corriente. | Calculado por el modelo |
| Consigna | DBL | Entrada | Posición deseada | Establece la posición que el motor debe alcanzar y forma el error e con la posición real Position. | -3-3, paso 0,1 |
| Kc | DBL | Entrada | Ganancia proporcional | Ajusta la intensidad de respuesta del controlador PID al error. | 0-10, paso 0,1 |
| Ti | DBL | Entrada | Tiempo integral | Ajusta la acción integral del controlador PID y se utiliza para reducir el error en estado estacionario. | 0-10, paso 0,1 |
| Td | DBL | Entrada | Tiempo derivativo | Ajusta la acción derivativa del controlador PID y se utiliza para suprimir cambios excesivamente rápidos del error y mejorar la respuesta dinámica. | 0-5, paso 0,1 |
| Perturbación | DBL | Entrada | Entrada de perturbación | Representa una perturbación externa superpuesta a la entrada del motor, que actúa sobre el modelo del motor junto con el voltaje de control. | 0-10, paso 0,1 |
| Reiniciar control | Booleano | Entrada | Control de reinicio | Activa la limpieza del estado del modelo para que la posición, la velocidad angular, la corriente, el error y el término integral regresen a sus estados iniciales. | Verdadero / Falso |
| Posición | DBL | Salida | Posición real | Representa la posición angular actual del motor y sirve como variable de retroalimentación para el control PID. | Calculado por el modelo |
| Voltaje | DBL | Salida | Voltaje de control | Representa la salida del controlador PID después del límite de voltaje y actúa sobre la entrada del motor. | Calculado por el modelo; limitado a -24 a 24 V |
| Tiempo | DBL | Salida | Tiempo de funcionamiento | Representa el tiempo continuo de funcionamiento del modelo del motor. | Calculado por el modelo |
| Velocidad angular medida | DBL | Salida | Velocidad angular medida | Representa la velocidad angular actual del motor y es la salida del estado mecánico del motor. | Calculado por el modelo |
Tabla 1: Variables de entrada y salida utilizadas en los ejemplos del ventilador y el motor de corriente continua. La tabla enumera el nombre de cada variable, el tipo de datos, el rol de entrada/salida, el significado físico, el rango recomendado y el tamaño del paso.
| Parámetro | Valor | Significado físico | Papel en el modelo |
| R | 1 | Resistencia del inducido | Representa el término de resistencia en el circuito del inducido del motor y determina la caída de voltaje R × im en la ecuación de corriente. |
| L | 0.5 | Inductancia del inducido | Representa la inductancia del circuito del inducido y determina la tasa de cambio de la corriente. Un valor mayor de L produce una respuesta de corriente más lenta. |
| J | 0.01 | Momento de inercia | Representa la resistencia del rotor del motor a los cambios en la aceleración angular y determina qué tan rápidamente cambia la velocidad angular. |
| b | 0.1 | Coeficiente de amortiguamiento viscoso | Representa el amortiguamiento mecánico y describe el par amortiguador que dificulta el aumento de la velocidad angular durante la rotación. |
| Kt | 0.01 | Constante de par | Representa el coeficiente de proporcionalidad que convierte la corriente del inducido en par electromagnético. |
| Ke | 0.01 | Constante de fuerza electromotriz inversa | Representa el coeficiente de proporcionalidad mediante el cual la velocidad angular genera la fuerza electromotriz inversa y describe el efecto de retroalimentación de la velocidad sobre la corriente. |
| Vmax | 24 | Voltaje de control máximo | Representa el límite del voltaje de salida del controlador y mantiene el voltaje dentro del rango de -24 V a 24 V. |
| dt | 0.001 | Paso de simulación discreto | Representa el intervalo de tiempo para cada actualización de estado basada en bucles y se utiliza para actualizar la corriente, la velocidad angular, la posición y el tiempo de ejecución. |
Tabla 2: Parámetros internos utilizados en el modelo de control de posición PID del motor de corriente continua. La tabla enumera los parámetros eléctricos y mecánicos, símbolos, valores numéricos, unidades y funciones dentro del modelo.
Archivos de código complementarios: archivos completos de origen y configuración para reproducir los ejemplos del ventilador y del motor de corriente continua. Los archivos de código complementarios incluyen el código del nodo de fórmula de LabVIEW, la configuración del proxy inverso Caddy, los archivos XHTML de la interfaz frontal y los archivos fuente VI de LabVIEW utilizados en este protocolo. El archivo Código en LabVIEW Formula Node.docx contiene el código del nodo de fórmula para los modelos de control de posición PID del ventilador y del motor CC. Caddyfile.txt contiene la configuración local del servidor web y del proxy inverso. Fan_Automatic_UI.xhtml y Motor_Automatic_UI.xhtml contienen la lógica de la interfaz frontal web basada en metadatos. fengshan.vi y Motor.vi son los archivos VI de backend de LabVIEW para los experimentos del ventilador y del motor.Haga clic aquí para descargar este archivo.