Un abonnement JoVE est requis pour visualiser ce contenu. Connectez-vous ou commencez votre période d'essai gratuite.

Article de méthode

Un protocole pour la génération automatique d'interfaces Web pour les applications LabVIEW utilisant le protocole d'interopérabilité à distance

189 vues

⸱

DOI :

10.3791/72765

⸱

14 août 2026

Dans cet article

Résumé

Cette étude valide une génération automatique d'interface utilisateur Web fondée sur un protocole d'interopérabilité à distance (RIP) à l'aide de deux systèmes LabVIEW distincts — un modèle de ventilateur et un modèle de commande de position de moteur à courant continu — et fournit une procédure reproductible pour la construction, l'enregistrement, le déploiement et les tests des deux exemples.

Résumé

Les plates-formes expérimentales à distance permettent d'accéder à des modèles de simulation locaux ou à des dispositifs physiques via un réseau, mais les interfaces Web classiques nécessitent généralement une page distincte, une disposition des commandes et une logique de communication de données spécifiques à chaque expérience, ce qui augmente les coûts de développement. Ce travail valide un flux de travail établi permettant de générer automatiquement une interface utilisateur (IU) Web à partir d'instruments virtuels LabVIEW (VIs) en utilisant le protocole d'interopérabilité à distance (RIP) et fournit un protocole reproductible pour sa mise en œuvre. Le flux de travail construit des VIs LabVIEW qui définissent des commandes d'entrée et des indicateurs de sortie sur le panneau avant, enregistre chaque VI dans la configuration du serveur RIP, lit les métadonnées de variables résultantes et génère les commandes Web et affichages de sortie correspondants. Caddy est utilisé comme serveur mandataire inverse afin d'unifier le chemin d'accès aux fichiers statiques de l'interface frontale et le chemin des requêtes vers l'interface de programmation d'applications (API) RIP. Le flux de travail est évalué à l'aide de deux systèmes distincts : un modèle de vitesse de ventilateur et un modèle de commande de position proportionnelle-intégrale-dérivée (PID) pour un moteur à courant continu (CC). Dans les deux cas, la page Web identifie les variables exposées, écrit les entrées utilisateur vers le module LabVIEW central, lit les sorties du modèle et génère l'interface à partir des métadonnées RIP. Ces résultats valident le même processus de génération automatique d'IU sur deux systèmes dynamiques différents et documentent les étapes nécessaires pour le reproduire.

Introduction

Avec le développement des expériences à distance, de l'enseignement en ligne et des technologies de l'Internet des objets, la mise à disposition d'un accès Web à des modèles de simulation locaux ou à des dispositifs expérimentaux est devenue une direction importante dans le développement des plateformes expérimentales1,2,3,4. Des travaux récents ont davantage intégré des laboratoires équipés de l'Internet des objets à des apprentissages par projets et à des accès locaux ou distants, démontrant ainsi l'évolution continue vers des plateformes expérimentales flexibles et interconnectées dans l'enseignement du génie5. Pour les expériences sur les systèmes de contrôle, les utilisateurs doivent généralement ajuster les paramètres d'entrée via un navigateur et observer les états de sortie en temps réel6,7. Les méthodes classiques exigent habituellement une page Web distincte, une logique de liaison de commande et une interface de communication de données pour chaque objet expérimental8,9. Lorsque les variables du modèle en arrière-plan changent, la page frontale doit souvent être modifiée en conséquence, ce qui entraîne des travaux de développement répétitifs importants et limite l'expansion rapide de la plateforme expérimentale.

Le protocole d'interopérabilité à distance (RIP) fournit une couche intermédiaire entre les modèles expérimentaux en aval et les interfaces Web en amont10,11. Dans l'approche de génération automatique d'interface utilisateur fondée sur le RIP décrite dans des travaux antérieurs, le serveur RIP fournit des métadonnées pour chaque expérience, notamment les noms des variables, les attributs d'entrée/sortie, les types de données, les valeurs minimales, les valeurs maximales, la précision, les descriptions, ainsi que les méthodes de lecture/écriture disponibles11. Un client Web peut ensuite utiliser ces métadonnées pour créer les éléments HTML correspondants, tels que des libellés, des champs numériques, des curseurs, des commandes booléennes et des affichages de sortie, lors du chargement ou de l'actualisation de la page11. Le présent protocole ne réimplémente ni ne redéfinit pas la spécification RIP. Il s'appuie plutôt sur le service RIP open source existant et sur la logique de génération d'interface utilisateur HTML à partir des métadonnées basée sur le RIP comme fondement pour la communication et la création d'interfaces, en mettant l'accent sur la construction reproductible, l'enregistrement, le déploiement par proxy et la vérification de deux exemples de VI LabVIEW.

Par rapport au développement traditionnel d'interfaces Web personnalisées, la génération automatique d'interfaces utilisateur basée sur RIP réduit la nécessité de mettre en œuvre des agencements de commandes, une logique de liaison de variables et des fonctions de communication de base lorsque plusieurs expériences LabVIEW exposent des variables d'entrée et de sortie scalaires comparables8,9,10,11. Une fois qu'une nouvelle VI est enregistrée et que ses variables sont accessibles au serveur RIP, la même logique de lecture des métadonnées et de génération de commandes peut être réutilisée pour construire l'interface Web de base10,11. Cette fonctionnalité est utile pour un déploiement rapide, des démonstrations pédagogiques et des plateformes de laboratoires à distance nécessitant un accès cohérent à plusieurs expériences similaires3,8,9. Toutefois, l'interface générée automatiquement présente également des limitations. Elle n'infère pas entièrement les relations physiques entre les variables, ne détermine pas automatiquement les affectations des graphiques, ni ne conçoit des visualisations ou des interactions de sécurité spécifiques au domaine11. Par conséquent, le développement manuel d'interfaces Web reste préférable lorsque l'expérience requiert des graphiques fortement personnalisés, des flux de travail utilisateurs complexes, une visualisation avancée, des verrouillages de sécurité matériels ou une arbitrage d'écriture multiutilisateurs.

Le flux de travail global du protocole est résumé dans la Figure 1. Dans ce flux de travail, un VI LabVIEW définit d'abord les commandes d'entrée et les indicateurs de sortie requis sur le panneau frontal. Le VI est ensuite enregistré dans la configuration du serveur RIP en spécifiant le nom de l'expérience et le chemin d'accès du VI. Après l'enregistrement, le serveur RIP lit les métadonnées de l'expérience sélectionnée et fournit un accès en lecture/écriture aux variables disponibles. La page Web XHTML utilise les métadonnées retournées pour générer automatiquement les commandes d'entrée et les affichages de sortie correspondants, tandis que Caddy fournit un chemin d'accès unifié pour la page Web statique et les routes de communication RIP. Les modèles de ventilateur et de moteur à courant continu sont utilisés dans cette étude comme deux implémentations du même flux de travail. Pour d'autres expériences LabVIEW fournissant des variables scalaires, numériques et booléennes compatibles, les développeurs peuvent suivre le même flux de travail de création-enregistrement-déploiement-vérification afin de créer une interface Web générée automatiquement, tout en ajoutant, si nécessaire, une visualisation propre à l'expérience, une logique de sécurité ou une gestion complexe des données.

Cet article ne propose pas une nouvelle architecture RIP ni n'étend la gamme des types de données déjà pris en charge par RIP. Il utilise plutôt RIP comme mécanisme établi de communication et de génération d'interface utilisateur basée sur des métadonnées, en se concentrant sur la validation de ce même processus avec deux systèmes LabVIEW différents, tout en documentant un protocole de mise en œuvre reproductible. Des travaux antérieurs ont présenté une méthode de base pour la génération automatique d'une interface Web basée sur les métadonnées RIP, en utilisant une expérience en ligne sur un moteur servo comme étude de cas11. Des architectures de laboratoires distants accessibles via le Web, combinant des interfaces interactives avec des logiciels d'ingénierie et LabVIEW, ont également été décrites dans des études antérieures9,12. Toutefois, lors de la reproduction pratique, certains modèles LabVIEW du cas initial ont été affectés par des problèmes de compatibilité entre versions logicielles et modules, ce qui les rend difficilement utilisables directement dans un environnement plus récent. Ce travail reconstruit donc deux VIs compatibles en backend — un modèle de ventilateur et un modèle de contrôle de position proportionnel-intégral-dérivé (PID) pour un moteur à courant continu (DC) — et applique à chacun le même processus de génération d'interface utilisateur piloté par les métadonnées. La contribution réside dans la validation croisée du flux de travail RIP établi et dans un protocole détaillé permettant de reproduire ce processus, plutôt que dans une extension de la généralité de RIP.

Les utilisateurs visés par ce protocole sont des chercheurs, des enseignants et des développeurs de laboratoires qui utilisent déjà des VIs LabVIEW et qui ont besoin d'exposer des modèles de simulation ou des systèmes expérimentaux à faible risque via un navigateur Web, sans devoir mettre en œuvre indépendamment une interface personnalisée complète pour chaque modèle. Ce protocole convient particulièrement aux expériences utilisant des variables numériques et booléennes standard, l'ajustement de paramètres et la surveillance en temps réel de l'état du système10,11. Il est moins adapté comme solution autonome pour des expériences nécessitant des structures de données complexes, des visualisations spécialisées, des interverrouillages stricts de sécurité matérielle ou une arbitrage d'écriture multiutilisateurs11. L'objectif de ce travail est de valider la génération automatique d'une interface Web basée sur RIP à l'aide de deux systèmes LabVIEW différents, et de fournir un protocole complet et reproductible, allant de la construction du VI en backend jusqu'à l'interaction via un navigateur. Le protocole comprend la définition des variables d'entrée et de sortie, l'enregistrement de l'expérience sur le serveur RIP, la génération d'interface utilisateur basée sur les métadonnées, le déploiement d'un proxy Caddy, ainsi que la vérification des accès distants en lecture/écriture. L'application de ce même flux de travail aux modèles de ventilateur et de moteur à courant continu démontre que le processus établi peut être reproduit sans avoir à réécrire manuellement une interface Web complète pour chaque exemple9,10,11.

Accès restreint. Veuillez vous connecter ou commencer un essai pour afficher ce contenu.

Protocole

Effectuez les étapes suivantes pour créer, enregistrer, déployer et vérifier deux expériences LabVIEW accessibles via RIP selon le flux de travail résumé dans la Figure 1. Tous les outils et plateformes utilisés dans cette étude sont répertoriés dans le Tableau des matériaux.

1. Construire et déployer l'expérience du modèle d'éventail

  1. Construire le VI du modèle de ventilateur.
    1. Ouvrir LabVIEW, créer un nouveau VI et enregistrer le fichier sous le nom fengshan.vi. Enregistrer le VI dans un répertoire accessible par le processus RIP WebService. Le dossier Private est utilisé uniquement comme exemple de répertoire et n'est pas codé en dur dans RIP. Entrer le chemin réel du VI sélectionné lors de l'inscription de l'expérience RIP.
    2. Sur le panneau avant, ajouter les commandes d'entrée pour le modèle de ventilateur. Dans cet exemple, nommer les commandes d'entrée Enable, PWM, Load, Tau, KMaxRPM et Disturbance. Définir Enable comme commande booléenne, et définir PWM, Load, Tau, KMaxRPM et Disturbance comme commandes numériques à virgule flottante double précision (DBL). Voir Tableau supplémentaire 1 pour la signification physique et le rôle dans le modèle des variables du ventilateur.
    3. Ajouter les indicateurs de sortie pour le modèle de ventilateur. Dans cet exemple, nommer les indicateurs de sortie SpeedRPM, SteadyRPM, TimeS, SpeedNorm, CurrentA et PowerW. Définir tous les indicateurs de sortie comme indicateurs DBL.
      ​REMARQUE : Le Tableau 1 décrit la signification physique et le rôle dans le modèle de ces variables de sortie. Le panneau avant complet du ventilateur est illustré dans la Figure 2. Les noms de variables, plages et pas indiqués dans le Tableau 1 décrivent les deux exemples mis en œuvre dans ce protocole. Ils ne sont pas des exigences codées en dur dans RIP. Pour d'autres expériences LabVIEW, les développeurs peuvent définir d'autres noms de variables et propriétés numériques sur le panneau avant. Le serveur RIP lit les noms de variables réels, les types de données, les attributs entrée/sortie et les propriétés numériques disponibles à partir des métadonnées du VI, et la page Web génère les commandes et affichages correspondants à partir des métadonnées retournées.
    4. Ajouter une boucle While au diagramme bloc. Ajouter deux registres à décalage pour stocker speed_prev et time_prev, et initialiser les deux valeurs à 0.
    5. Ajouter un nœud de formule à l'intérieur de la boucle While. Connecter Enable, PWM, Load, Tau, KMaxRPM, Disturbance, speed_prev et time_prev aux bornes d'entrée gauche du nœud de formule, et définir SteadyRPM, speed_next, SpeedNorm, CurrentA, PowerW et time_next comme bornes de sortie droite.
    6. Construire la logique de commande Enable à l'extérieur du nœud de formule. Utiliser Enable comme signal de sélection de sorte que u = PWM lorsque Enable est Vrai et u = 0 lorsque Enable est Faux.
    7. Saisir le code du modèle de ventilateur dans le nœud de formule. Utiliser ce code pour calculer la vitesse en régime permanent, la vitesse réelle, la vitesse normalisée, le courant, la puissance et le temps d'exécution ; voir le fichier de code supplémentaire 1 pour le code complet.
    8. Connecter la sortie speed_next du nœud de formule à l'indicateur SpeedRPM, et reconnecter speed_next au registre à décalage droit pour speed_prev. Connecter SteadyRPM à l'indicateur SteadyRPM.
    9. Connecter time_next à l'indicateur TimeS, et reconnecter time_next au registre à décalage droit pour time_prev. Connecter SpeedNorm, CurrentA et PowerW aux indicateurs de sortie correspondants.
    10. Ajouter une fonction d'attente à l'intérieur de la boucle While et régler le temps d'attente à 50 ms. Ajouter un bouton d'arrêt local et le connecter à la borne conditionnelle de la boucle While.
    11. Enregistrer fengshan.vi. Le diagramme bloc complet du ventilateur est illustré dans la Figure 3.
      POINT DE PAUSE : Après avoir enregistré le VI du ventilateur terminé, le flux de travail peut être interrompu. Reprendre ultérieurement en rouvrant le VI enregistré et en confirmant que toutes les commandes, indicateurs du panneau avant et connexions du diagramme bloc sont toujours présents.
  2. Inscrire l'expérience du ventilateur sur le serveur RIP.
    1. Ouvrir RIPWebService.lvproj dans l'explorateur de projet LabVIEW
      .
    2. Ouvrir Configuration.vi depuis l'arborescence du projet et localiser le tableau de configuration de l'expérience.
    3. Ajouter une nouvelle ligne d'expérience. Définir le nom sur fan. Indiquer le chemin complet vers le fichier fengshan.vi enregistré. Les champs d'inscription pour l'expérience du ventilateur sont illustrés dans la Figure 4.
    4. Remplir les champs de configuration restants. Définir Authors comme l'auteur de l'expérience, Keywords comme Fan, Description comme modèle de vitesse de ventilateur, et Sampling Freq comme 200.
    5. Dans le menu LabVIEW, sélectionner Éditer > Définir les valeurs actuelles comme valeurs par défaut. Enregistrer Configuration.vi.
    6. Redémarrer RIP WebService et confirmer que l'expérience du ventilateur reste listée dans l'interface de configuration après redémarrage.
      REMARQUE : Le nom de l'expérience respecte la casse. La valeur fan dans la configuration RIP doit correspondre exactement à l'ID d'expérience utilisé dans le fichier XHTML frontal. Pour déployer un autre VI LabVIEW avec la même logique de génération automatique d'interface utilisateur, ajouter une nouvelle entrée d'expérience dans la configuration RIP, définir une nouvelle valeur de nom, et définir Path vers le fichier VI correspondant. Ensuite, utiliser la même valeur de nom comme ID d'expérience dans le fichier XHTML. La page frontale n'a pas besoin d'être réécrite pour chaque variable.
      ​POINT DE PAUSE : Après avoir enregistré Configuration.vi et défini les valeurs actuelles comme valeurs par défaut, le flux de travail peut être interrompu. Reprendre ultérieurement en redémarrant RIP WebService et en confirmant que l'expérience du ventilateur est toujours inscrite.
  3. Préparer la page frontale pour l'expérience du ventilateur.
    1. Placer Fan_Automatic_UI.xhtml dans le répertoire Client utilisé comme répertoire racine frontal.
    2. Ouvrir Fan_Automatic_UI.xhtml avec un éditeur de texte.
    3. Localiser la variable d'ID d'expérience dans la section de script et la définir sur fan.
      REMARQUE : Cette valeur doit correspondre exactement au champ Nom de l'expérience du ventilateur dans la configuration RIP. Les paramètres d'ID d'expérience et la logique de génération d'interface utilisateur partagée basée sur les métadonnées pour les fichiers XHTML frontaux sont illustrés dans la Figure 5.
    4. Vérifier que la page obtient l'origine d'accès actuelle via window.location.origin, demande les métadonnées de l'expérience via rip.info(), et transmet les métadonnées retournées à autobuildUI().
      REMARQUE : La page ne doit pas coder manuellement les noms, plages ou pas des variables du ventilateur. Au lieu de cela, les variables modifiables sont générées à partir de meta.writables.list, les variables lisibles à partir de meta.readables.list, et les attributs numériques tels que min, max et step sont obtenus à partir des métadonnées retournées par le serveur RIP.
    5. Enregistrer Fan_Automatic_UI.xhtml.
      ​REMARQUE : Pour utiliser la même logique de génération frontale pour un autre VI LabVIEW, définir un nouvel ID d'expérience dans le fichier XHTML et inscrire le nom d'expérience correspondant et le chemin du VI dans la configuration RIP. Les commandes Web et affichages de sortie sont générés selon les métadonnées retournées par l'expérience sélectionnée.
  4. Configurer le chemin d'accès Caddy pour l'expérience du ventilateur.
    1. Ouvrir le Caddyfile avec un éditeur de texte.
    2. Définir le répertoire racine frontal comme le répertoire Client contenant Fan_Automatic_UI.xhtml.
    3. Sélectionner un port local inutilisé pour que Caddy permette l'accès via navigateur à la page Web et aux routes RIP. Dans ce protocole, le port 8090 est utilisé comme exemple de port d'accès proxy.
      REMARQUE : Le port 8090 n'est pas requis par RIP ou Caddy. Si le port 8090 est occupé, le remplacer par un autre port local inutilisé et utiliser le même port dans l'adresse du navigateur.
    4. Ajouter une route qui réécrit /fan en Fan_Automatic_UI.xhtml.
    5. Identifier le port du service Web RIP configuré dans LabVIEW. Dans ce protocole, http://localhost:8001 est utilisé comme adresse du service Web RIP.
      REMARQUE : Le port 8001 est le port arrière de LabVIEW/RIP WebService utilisé dans l'environnement de test. Il peut être modifié dans la configuration de LabVIEW/RIP WebService. Si un port différent est utilisé, remplacer http://localhost:8001 dans le Caddyfile par l'adresse correspondante du service Web RIP.
    6. Ajouter une règle de proxy inverse qui envoie les requêtes /RIP/SSE* à l'adresse du service Web RIP, par exemple http://localhost:8001.
    7. Ajouter une règle de proxy inverse qui envoie les requêtes /RIP* à l'adresse du service Web RIP, par exemple http://localhost:8001. La configuration du Caddyfile est illustrée dans la Figure 6.
    8. Ouvrir l'invite de commandes sous Windows. Accéder au répertoire local de téléchargement ou d'installation de Caddy en entrant la commande suivante :
      cd /d D:\caddy
      REMARQUE : Dans ce protocole, D:\caddy est le chemin local de téléchargement ou d'installation de Caddy utilisé dans l'environnement de test. Si Caddy est stocké dans un autre répertoire, remplacer D:\caddy par le chemin local correspondant.
    9. Démarrer Caddy avec le Caddyfile spécifié en entrant la commande suivante :
      caddy.exe run --config Caddyfile
    10. Confirmer que Caddy démarre sans erreur de configuration. Ouvrir http://localhost:8090/fan dans un navigateur Web et vérifier que l'interface utilisateur Web du ventilateur est générée, comme illustré dans la Figure 7.
      ​REMARQUE : Si le navigateur renvoie une erreur 502, vérifier que RIP WebService est en cours d'exécution, que le port du service Web RIP dans LabVIEW correspond à l'adresse du proxy inverse dans le Caddyfile, et que le port d'accès Caddy sélectionné n'est pas occupé.
  5. Vérifier les résultats de fonctionnement de l'expérience du ventilateur.
    1. Vérifier que la page frontale génère automatiquement les commandes d'entrée Enable, PWM, Load, Tau, KMaxRPM et Disturbance.
    2. Vérifier que la page frontale affiche les variables de sortie SpeedRPM, SteadyRPM, TimeS, SpeedNorm, CurrentA et PowerW.
    3. Régler PWM et observer si SpeedRPM augmente lorsque PWM augmente et diminue lorsque PWM diminue.
    4. Régler Load et observer si SteadyRPM et SpeedRPM diminuent lorsque la charge augmente.
    5. Régler la perturbation et observer si SpeedRPM, CurrentA et PowerW changent en réponse à l'entrée de perturbation.
    6. Vérifier que TimeS continue d'augmenter, confirmant ainsi que le VI du ventilateur en arrière-plan s'exécute en continu.

2. Construire et déployer l'expérience de contrôle de position PID d'un moteur à courant continu

  1. Construire le modèle VI de commande de position PID du moteur à courant continu.
    1. Ouvrez LabVIEW, créez un nouveau VI et enregistrez le fichier sous le nom Motor.vi. Enregistrez le VI dans un répertoire accessible par le processus RIP WebService.
      REMARQUE : Le dossier Private est utilisé uniquement comme exemple de répertoire et n'est pas enregistré en dur dans RIP. Saisissez le chemin réel du VI sélectionné lors de l'enregistrement de l'expérience RIP.
    2. Sur le panneau avant, ajoutez les commandes d'entrée pour le modèle de contrôle de position PID du moteur à courant continu. Dans cet exemple, nommez les commandes d'entrée Consigne, Kc, Ti, Td, Perturbation, et Réinitialiser le contrôle. Régler Consigne, Kc, Ti, Td et Perturbation comme contrôles numériques DBL, et définir le contrôle Reset comme un contrôle booléen.
      REMARQUE : Tableau 1 décrit la signification physique, le rôle dans le modèle et la plage recommandée des variables utilisées dans cet exemple.
    3. Ajouter les indicateurs de sortie pour le modèle de commande PID de position du moteur à courant continu. Dans cet exemple, nommer les indicateurs de sortie Position, Tension, Temps et Vitesse angulaire mesurée. Réglez tous les indicateurs de sortie en tant qu'indicateurs DBL. Tableau 1 décrit la signification physique et le rôle du modèle de ces variables de sortie. Le panneau avant complété pour le moteur est illustré dans Figure 8.
      REMARQUE : Les noms et plages de variables énumérés dans Tableau 1 décrivent les deux exemples mis en œuvre dans ce protocole. Ils ne constituent pas des exigences fixes pour le flux de travail de génération automatique d'interface utilisateur basé sur RIP. Lorsqu'un autre VI LabVIEW est utilisé, RIP lit les noms réels des variables, les types de données, les attributs d'entrée/sortie et les propriétés numériques disponibles à partir des métadonnées du VI. Par conséquent, la logique de génération de l'interface frontale n'a pas besoin d'intégrer en dur les noms des variables, les valeurs maximales, les valeurs minimales ou les pas pour chaque expérience.
    4. Ajouter une boucle While au diagramme bloc. Ajouter six registres à décalage pour stocker theta, omega, im, e_prev, integ et temps, et initialiser les six valeurs à 0.
    5. Ajouter un nœud de formule à l'intérieur de la boucle While. Selon le diagramme du modèle de contrôle de position PID du moteur à courant continu illustré dans Figure 9, utilisez ce nœud de formule comme module de calcul central pour le calcul d'erreur, la commande PID, la limitation de tension, le modèle électrique, le modèle mécanique et la mise à jour de la position.
      REMARQUE : Les paramètres internes du moteur utilisés dans ce modèle, tels que R, L, J, b, Kt, Ke, et Vmax, sont des paramètres normalisés de modèle pédagogique plutôt que des paramètres étalonnés d'un moteur physique spécifique. Ils ont été choisis afin de produire une réponse simulée stable et observable avec le pas de temps et la limite de tension sélectionnés, de manière à ce que les effets de Consigne, Kc, Ti, Td et Perturbation peut être clairement démontré lors d'une opération en ligne.
    6. Réglez sp, theta, omega, im, e_prev, integ, Kc, Ti, Td, perturbation, réinitialisation et dt asont les bornes d'entrée du nœud de formule. Régler theta_suivant, omega_suivant, im_suivant, e_suivant, integ_suivant et tension comme les bornes de sortie du nœud de formule.
    7. Connecter le Consigne contrôle au sp borne d'entrée du nœud formule. Connecter Kc, Ti, Td et Perturbation au Kc, Ti, Td et dperturbation ibornes d'entrée du nœud Formule, respectivement.
    8. Convertir le signal booléen de contrôle Reset en un signal numérique et le connecter à la réinitialiser entrée du nœud formule. Exécuter la réinitialisation de l'état lorsque réinitialiser n'est pas égal à 0, et exécuter la commande PID et la mise à jour de l'état du moteur lorsque réinitialiser est égal à 0.
    9. Ajouter la constante numérique dt et régler sa valeur sur 0,001 s. Connecter le dt au dt entrée du nœud formule et utilisez-la pour la mise à jour du temps.
    10. Définir les paramètres du modèle interne du moteur à courant continu dans le nœud de formule. Voir Tableau supplémentaire 2 pour la signification physique et le rôle du modèle des variables du moteur.
    11. Saisir le code de commande de position PID du moteur à courant continu dans le nœud de formule. Utiliser ce code pour implémenter la logique de réinitialisation, le calcul de l'erreur, le calcul du terme intégral, le calcul du terme dérivé, la commande PID, la limitation de tension, la mise à jour du courant, la mise à jour de la vitesse angulaire et la mise à jour de la position ; consulter les fichiers de code supplémentaires pour obtenir le code complet.
    12. Connecter theta_suivant au Position indicateur, et connecter theta_suivant retour au registre à décalage droit pour theta Connecter omega_next au Indicateur de vitesse angulaire mesurée, et connecter omega_next retour au registre à décalage droit pour omega
    13. Connectez la tension à l'indicateur de tension. Connectez im_next, e_next et integ_next retour aux registres à décalage droits pour im, e_préc, et integ, respectivement.
    14. Utiliser une fonction Add à l'extérieur du nœud de formule pour effectuer le calcul temps_suivant = temps + dt. Connecter temps_suivant au Temps indicateur, et connecter time_next retour au registre à décalage droit pour la durée.
    15. Ajouter une fonction d'attente à l'intérieur de la boucle Tant que et régler le temps d'attente sur 1 ms. Ajouter un bouton Arrêt et le relier au terminal conditionnel de la boucle Tant que.
    16. Enregistrez Motor.vi. Le diagramme des blocs du moteur terminé est illustré dans Figure 10.
      POINT DE PAUSE : Après avoir enregistré le VI moteur terminé, le workflow peut être interrompu. Reprenez ultérieurement en rouvrant le VI enregistré et en vérifiant que tous les contrôles, indicateurs du panneau avant et connexions du diagramme des blocs sont toujours présents.
  2. Enregistrez l'expérience motrice dans le serveur RIP.
    1. Ouvrez RIPWebService.lvproj dans l'Explorateur de projets LabVIEW.
    2. Ouvrez Configuration.vi depuis l'arborescence du projet et localisez le tableau de configuration de l'expérience.
    3. Ajouter une nouvelle ligne d'expérience. Définir le nom sur Moteur. Définir le chemin d'accès au chemin complet du fichier Motor.vi enregistré. Les champs d'inscription de l'expérience moteur sont indiqués dans Figure 11.
    4. Remplissez les champs de configuration restants. Définissez Auteurs sur l'auteur de l'expérience, Mots-clés sur Moteur, Description sur modèle de commande de position du moteur à courant continu, et Fréquence d'échantillonnage sur 200.
    5. Dans le menu LabVIEW, sélectionnez Modifier > Définir les valeurs actuelles comme valeurs par défaut. Enregistrer Configuration.vi.
    6. Redémarrez le service Web RIP et vérifiez que l'expérience Motor reste répertoriée dans l'interface de configuration après le redémarrage.
      REMARQUE : Le nom de l'expérience respecte la casse. La valeur Motor dans la configuration de RIP doit correspondre exactement à l'identifiant d'expérience utilisé dans Motor_Automatic_UI.xhtml. Pour déployer un autre VI LabVIEW utilisant la même logique de génération automatique d'interface utilisateur, ajoutez une nouvelle entrée d'expérience dans la configuration de RIP, définissez une nouvelle valeur pour Nom et indiquez dans Chemin le fichier VI correspondant. Utilisez ensuite la même valeur de Nom comme identifiant d'expérience dans le fichier XHTML. La page frontale n'a pas besoin d'être réécrite pour chaque variable.
      ​POINT DE PAUSE : Après avoir enregistré Configuration.vi et défini les valeurs actuelles comme valeurs par défaut, le flux de travail peut être interrompu. Reprenez ultérieurement en redémarrant RIP WebService et en confirmant que l'expérience Motor est toujours enregistrée.
  3. Préparer la page d'accueil pour l'expérience sur le moteur.
    1. Placer le fichier Motor_Automatic_UI.xhtml dans le répertoire Client utilisé comme répertoire racine de l'interface.
    2. Ouvrir Motor_Automatic_UI.xhtml avec un éditeur de texte.
    3. Localisez la variable d'identifiant d'expérience dans la section de script et définissez-la sur Motor. Cette valeur doit correspondre exactement au champ Nom de l'expérience moteur dans la configuration de RIP. La page frontale du moteur utilise la même logique de génération d'interface utilisateur basée sur les métadonnées illustrée dans Figure 5; seul l'identifiant de l'expérience est modifié pour correspondre à l'entrée Motor dans la configuration de RIP.
    4. Vérifiez que la page contient la logique de lecture des métadonnées RIP, la logique de génération des contrôles HTML, la fonction d'écriture RIP et la fonction de mise à jour de la sortie.
      REMARQUE : La page ne doit pas encoder manuellement les noms des variables moteur, leurs plages ou leurs pas. Ces propriétés sont obtenues à partir des métadonnées renvoyées par le serveur RIP, conformément au mécanisme décrit précédemment de génération de HTML à partir des métadonnées basé sur RIP.11.
    5. Enregistrer Motor_Automatic_UI.xhtml.
      ​REMARQUE : Pour utiliser la même logique de génération frontale avec un autre VI LabVIEW, définissez un nouvel identifiant d'expérience dans le fichier XHTML et enregistrez le nom de l'expérience correspondant ainsi que le chemin du VI dans la configuration de RIP. Les contrôles web et les affichages de sortie sont générés selon les métadonnées renvoyées par l'expérience sélectionnée.
  4. Configurer le chemin d'accès Caddy pour l'expérience sur le moteur.
    1. Ouvrez le fichier Caddyfile avec un éditeur de texte.
    2. Définir le répertoire racine frontal sur le répertoire Client contenant Motor_Automatic_UI.xhtml.
    3. Sélectionnez un port local inutilisé pour Caddy afin de permettre l'accès via navigateur à la page web et aux routes RIP. Dans ce protocole, le port 8090 est utilisé comme exemple de port d'accès proxy.
      REMARQUE : Le port 8090 n'est pas requis par RIP ou Caddy. Si le port 8090 est occupé, remplacez-le par un autre port local inutilisé et utilisez ce même port dans l'adresse du navigateur.
    4. Ajouter une route qui réécrit /motor vers Motor_Automatic_UI.xhtml.
    5. Identifier le port du service Web RIP configuré dans LabVIEW. Dans ce protocole, l'adresse http://localhost:8001 est utilisée comme adresse du service Web RIP.
      REMARQUE : Le port 8001 est le port backend du service Web LabVIEW/RIP utilisé dans l'environnement de test. Il peut être modifié dans la configuration du service Web LabVIEW/RIP. Si un port différent est utilisé, remplacez http://localhost:8001 dans le fichier Caddyfile par l'adresse correspondante du service Web RIP.
    6. Ajouter une règle de proxy inverse qui envoie les requêtes /RIP/SSE* vers l'adresse du service Web RIP, par exemple http://localhost:8001.
    7. Ajouter une règle de proxy inverse qui envoie les requêtes /RIP* à l'adresse du service Web RIP, par exemple http://localhost:8001. La configuration du fichier Caddy est illustrée à la Figure 6.
    8. Ouvrez l'invite de commandes sous Windows. Accédez au répertoire local de téléchargement ou d'installation de Caddy en saisissant la commande suivante :
      cd /d D:\caddy
      REMARQUE : Dans ce protocole, D:\caddy correspond au chemin local de téléchargement ou d'installation de Caddy utilisé dans l'environnement de test. Si Caddy est stocké dans un autre répertoire, remplacer D:\caddy par le chemin local correspondant.
    9. Lancez Caddy avec le fichier Caddy spécifié en entrant la commande suivante :
      caddy.exe run --config Caddyfile
    10. Vérifiez que Caddy démarre sans signaler d'erreur de configuration. Ouvrez http://localhost:8090/motor dans un navigateur Web et vérifiez que l'interface utilisateur Web du moteur est générée, comme illustré dans Figure 12.
      ​REMARQUE : Si la page web du moteur se charge mais que les valeurs de sortie ne se mettent pas à jour, vérifiez que le service web RIP est en cours d'exécution, que le VI du moteur est en cours d'exécution, que le port du service web RIP dans LabVIEW correspond à l'adresse du proxy inverse dans le Caddyfile, et que le chemin /RIP/SSE* est correctement transféré par proxy.
  5. Vérifier les résultats de fonctionnement de l'expérience sur le moteur.
    1. Vérifiez que la page frontale génère automatiquement le Consigne, Kc, Ti, Td, Perturbation, et Réinitialiser contrôles d'entrée de contrôle.
    2. Vérifiez que la page frontale s'affiche correctement Position, Tension, Temps, et Vitesse angulaire mesurée variables de sortie
    3. Ajuster Consigne et observer si la position répond au changement de la position souhaitée.
    4. Ajuster Kc, Ti, et Td et observer si Tension, Position, et Vitesse angulaire mesurée changement
    5. Ajuster la perturbation et observer si la position, la tension de commande ou la vitesse angulaire mesurée est affecté par le perturbation entrée.
    6. Cliquez sur le contrôle Réinitialiser et observez si Position, Tension, Vitesse angulaire mesurée, et les états internes associés reviennent à leurs états initiaux selon la logique de réinitialisation.

Accès restreint. Veuillez vous connecter ou commencer un essai pour afficher ce contenu.

Résultats

Une fois le flux de travail décrit ci-dessus terminé, l'expérience avec le ventilateur et l'expérience de commande de position PID d'un moteur à courant continu peuvent être accessibles via l'interface Web générée automatiquement. Un résultat concluant se manifeste par trois observations. Premièrement, la page Web génère automatiquement des commandes d'entrée et des champs d'affichage de sortie en fonction des métadonnées des variables renvoyées par le serveur RIP. Deuxièmement, lorsque l'utilisateur modifie une variable...

Accès restreint. Veuillez vous connecter ou commencer un essai pour afficher ce contenu.

Discussion

Une étape cruciale de ce protocole est la construction normalisée et l'enregistrement du VI backend LabVIEW. Les commandes et indicateurs du panneau avant doivent utiliser des noms de variables clairs et uniques, et leurs types de données doivent correspondre aux variables attendues par le calcul du modèle et par le processus de lecture/écriture du RIP. Dans les deux exemples utilisés dans ce protocole, des variables numériques scalaires sont définies comme des commandes ou indicateurs DBL, et les variables booléennes so...

Accès restreint. Veuillez vous connecter ou commencer un essai pour afficher ce contenu.

Déclarations de divulgation

Les auteurs ont utilisé des outils assistés par intelligence artificielle uniquement pour la correction linguistique. L'ensemble du contenu scientifique, des procédures expérimentales, de la mise en œuvre des logiciels, des figures, des résultats, des interprétations et de la rédaction finale a été relu, corrigé et approuvé par les auteurs. Aucun outil d'intelligence artificielle n'a été utilisé pour générer les données expérimentales.

Remerciements

Ce travail a été soutenu par les programmes de formation pour les étudiants en licence axés sur l'innovation de l'Université de Wuhan.

Accès restreint. Veuillez vous connecter ou commencer un essai pour afficher ce contenu.

Matériaux

Liste des matériaux utilisés dans cet article
NomEntrepriseNuméro de catalogueCommentaires
Serveur proxy CaddyCaddyN/AProxy inverse utilisé pour servir l'interface Web et transférer les requêtes /RIP au service Web RIP
Fichier CaddyPréparé par les auteursN/ADéfinit les routes de fichiers statiques et les routes de proxy inverse pour la communication RIP
Fan_Automatic_UI.xhtmlPréparé par les auteursN/AInterface Web frontale basée sur les métadonnées pour l'expérience du ventilateur
LabVIEWNational Instruments2026Logiciel utilisé pour créer et exécuter fengshan.vi et Motor.vi
Système d'exploitation Microsoft WindowsMicrosoftWin11Système d'exploitation utilisé pour exécuter LabVIEW, le service Web RIP, Caddy et le navigateur.
Motor_Automatic_UI.xhtmlPréparé par les auteursN/AInterface Web frontale basée sur les métadonnées pour l'expérience du moteur
Navigateur Mozilla Firefox pour ordinateur de bureauMozilla2026 Navigateur pour ordinateur de bureau utilisé pour accéder à l'interface Web, aux outils de développement, aux observations temporelles et des ressources, ainsi qu'aux captures d'écran du réseau et de la console.
Service Web RIPUNEDLabshttps://github.com/Nebulous-Systems/rip-server_labviewReçoit les requêtes POST RIP et fournit la couche de communication du service Web utilisée par l'interface frontale du navigateur.
Gestionnaire des tâches WindowsMicrosoftIntégré à WindowsUtilisé pour enregistrer les observations au niveau du processus concernant l'UC et la mémoire pour les processus du navigateur et de LabVIEW.

Références

  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.

Accès restreint. Veuillez vous connecter ou commencer un essai pour afficher ce contenu.

Réimpressions et autorisations

Étiquettes

Interface utilisateur webGénération automatique d'interface utilisateurInstruments virtuelsConfiguration du serveur RIPProxy inverseProxy CaddyContrôle de position PIDMétadonnées variables

Cet article a été publié

Vidéo bientôt disponible