Een abonnement op JoVE is vereist om deze inhoud te bekijken. Log in of start vandaag met uw gratis proefperiode.

Methodenartikel

Een protocol voor de automatische generatie van webgebaseerde interfaces voor LabVIEW-applicaties met behulp van het Remote Interoperability Protocol

189 weergaven

⸱

DOI:

10.3791/72765

⸱

14 augustus 2026

In dit artikel

Samenvatting

Deze studie valideert een automatische generatie van een webgebruikersinterface op basis van een remote interoperability protocol (RIP) met twee verschillende LabVIEW-systemen — een ventilatormodel en een positie-regelmodel voor een gelijkstroommotor — en biedt een reproduceerbare procedure voor het construeren, registreren, implementeren en testen van beide voorbeelden.

Samenvatting

Remote experimentele platforms maken het mogelijk om lokale simulatiemodellen of fysieke apparaten via een netwerk te benaderen, maar conventionele web-front-ends vereisen doorgaans een aparte pagina, een lay-out van de bedieningselementen en een logica voor datacommunicatie voor elk experiment, wat de ontwikkelingskosten verhoogt. Dit werk valideert een vastgestelde workflow voor het automatisch genereren van een web-gebruikersinterface (UI) vanuit LabVIEW-virtuele instrumenten (VI's) met behulp van het remote interoperability protocol (RIP) en biedt een reproduceerbaar protocol voor de implementatie hiervan. De workflow construeert LabVIEW-VI's die invoerregelaars en uitvogeindicatoren op het Front Panel definiëren, registreert elke VI in de RIP Server Configuration, leest de resulterende variabele-metadata uit en genereert de overeenkomstige web-bedieningselementen en outputschermen. Caddy wordt gebruikt als reverse proxy om het pad van de statische bestanden van de front-end en het aanvraagpad van de RIP-application programming interface (API) te verenigen. De workflow wordt geëvalueerd met twee verschillende systemen: een ventilator-snelheidsmodel en een proportional-integral-derivative (PID) positie-regelmodel voor een gelijkstroommotor (DC-motor). In beide gevallen identificeert de webpagina de blootgestelde variabelen, schrijft gebruikersinvoeren naar de LabVIEW-back-end, leest modeloutputs uit en genereert de interface op basis van RIP-metadata. Deze resultaten valideren hetzelfde automatische UI-generatieproces over twee verschillende dynamische systemen en documenteren de stappen die nodig zijn om dit te reproduceren.

Inleiding

Met de ontwikkeling van experimenten op afstand, online onderwijs en Internet-of-Things-technologieën is het bieden van webgebaseerde toegang tot lokale simulatiemodellen of experimentele apparatuur een belangrijke richting geworden voor de ontwikkeling van experimentele platforms1,2,3,4. Recent werk heeft laboratoria die zijn uitgerust met Internet-of-Things verder geïntegreerd met projectgebaseerd leren en lokale of remote toegang, wat de voortdurende ontwikkeling van flexibele en genetwerkte experimentele platforms in het technisch onderwijs aantoont5. Voor experimenten met controlesystemen moeten gebruikers doorgaans invoerparameters in een browser aanpassen en outputtoestanden in real-time observeren6,7. Conventionele methoden vereisen doorgaans een aparte webpagina, aansturingslogica en een datacommunicatie-interface voor elk experimenteel object8,9. Wanneer de variabelen in het back-endmodel wijzigen, moet de front-endpagina vaak dienovereenkomstig worden aangepast, wat leidt tot aanzienlijk herhalend ontwikkelingswerk en de snelle uitbreiding van het experimentele platform beperkt.

Het Remote Interoperability Protocol (RIP) biedt een middleware-laag tussen back-end experimentele modellen en Web front-ends10,11. In de op RIP gebaseerde benadering voor automatische UI-generatie, zoals beschreven in eerder werk, levert de RIP-server metadata voor elk experiment, inclusief variabelenamen, input/output-attributen, datatypen, minimumwaarden, maximumwaarden, precisie, beschrijvingen en de beschikbare lees- en schrijfmethode11. Een Web-client kan deze metadata vervolgens gebruiken om tijdens het laden of vernieuwen van de pagina de overeenkomstige HTML-elementen te creëren, zoals labels, numerieke invoervelden, schuifregelaars, Booleaanse bedieningselementen en output-displays11. Het huidige protocol implementeert of definieert de RIP-specificatie niet opnieuw. In plaats daarvan gebruikt het de bestaande open-source RIP-service en de op RIP gebaseerde logica voor metadata-naar-HTML UI-generatie als basis voor communicatie en interfacegeneratie, en richt het zich op de reproduceerbare constructie, registratie, proxy-implementatie en verificatie van twee LabVIEW VI-voorbeelden.

In vergelijking met de conventionele ontwikkeling van op maat gemaakte webinterfaces, vermindert de op RIP gebaseerde automatische generatie van de gebruikersinterface (UI) de noodzaak om control-layouts, variabele-bindingslogica en basiscommunicatiefuncties te implementeren wanneer meerdere LabVIEW-experimenten vergelijkbare scalaire invoer- en uitvoervariabelen vertonen8,9,10,11. Nadat een nieuwe VI is geregistreerd en de variabelen beschikbaar zijn voor de RIP-server, kan dezelfde logica voor het lezen van metadata en het genereren van controls worden hergebruikt om de basis-webinterface te construeren10,11. Deze functie is nuttig voor snelle implementatie, demonstraties in het onderwijs en remote-laboratory-platforms die consistente toegang vereisen tot verschillende soortgelijke experimenten3,8,9. De automatisch gegenereerde interface kent echter ook beperkingen. De fysieke relaties tussen variabelen worden niet volledig afgeleid, grafiekkoppelingen worden niet automatisch bepaald en domeinspecifieke visualisaties en veiligheidsinteracties worden niet ontworpen11. Daarom blijft handmatige ontwikkeling van de webinterface bij voorkeur worden toegepast wanneer een experiment sterk aangepaste graphics, complexe gebruikersworkflows, geavanceerde visualisatie, hardwarematige veiligheidsinterlocks of schrijfarbitrage voor meerdere gebruikers vereist.

De algemene workflow van het protocol is samengevat in Figuur 1. In deze workflow definieert een LabVIEW VI eerst de vereiste invoerregelaars en uitvogeindicatoren op het Front Panel. De VI wordt vervolgens geregistreerd in de RIP Server Configuration door de experimentnaam en het VI-pad op te geven. Na registratie leest de RIP Server de metadata van het geselecteerde experiment en biedt lees-/schrijftoegang tot de beschikbare variabelen. De XHTML-webpagina gebruikt de teruggeleverde metadata om automatisch de bijbehorende invoerregelaars en uitvoerschermen te genereren, terwijl Caddy een uniform toegangspad biedt voor de statische webpagina en de RIP-communicatieroutes. De modellen van de ventilator en de gelijkstroommotor worden in deze studie gebruikt als twee implementaties van dezelfde workflow. Voor andere LabVIEW-experimenten die compatibele scalaire, numerieke en Booleaanse variabelen bieden, kunnen ontwikkelaars dezelfde workflow van bouwen-registreren-implementeren-verifiëren volgen om een automatisch gegenereerde webinterface te maken, waarbij indien nodig experimentspecifieke visualisatie, veiligheidslogica of complexe gegevensverwerking kan worden toegevoegd.

Dit artikel stelt geen nieuwe RIP-architectuur voor en breidt het bereik van de door RIP ondersteunde datatype niet uit. In plaats daarvan wordt RIP gebruikt als het gevestigde mechanisme voor communicatie en metadata-gebaseerde UI-generatie, waarbij de focus ligt op het valideren van dit proces met twee verschillende LabVIEW-systemen, terwijl een reproduceerbaar implementatieprotocol wordt gedocumenteerd. In eerder werk is een basismethode gepresenteerd voor automatische Web UI-generatie op basis van RIP-metadata, waarbij een online servomotorexperiment als casestudy is gebruikt11. Architecturen voor remote laboratoria met webondersteuning, die interactieve interfaces combineren met engineeringsoftware en LabVIEW, zijn ook beschreven in eerdere studies9,12. Tijdens praktische reproductie bleken sommige LabVIEW-modellen in de oorspronkelijke casus echter beïnvloed door softwareversies en modulecompatibiliteit, waardoor ze moeilijk direct te gebruiken waren in een nieuwere omgeving. In het huidige werk worden daarom twee compatibele back-end VIs gereconstrueerd — een ventilatormodel en een proportional-integral-derivative (PID) positie-regelmodel voor een gelijkstroom- (DC) motor — waarbij hetzelfde metadata-gestuurde UI-generatieproces op beide wordt toegepast. De bijdrage bestaat uit de cross-systeemvalidatie van de gevestigde RIP-workflow en een gedetailleerd protocol voor het reproduceren van dit proces, in plaats van een uitbreiding van de generaliteit van RIP.

De beoogde gebruikers van dit protocol zijn onderzoekers, instructeurs en laboratoriumontwikkelaars die reeds LabVIEW VI's gebruiken en simulatiemodellen of experimentele systemen met een laag risico via een webbrowser toegankelijk willen maken, zonder voor elk model onafhankelijk een volledige, op maat gemaakte front-end te implementeren. Het protocol is bijzonder geschikt voor experimenten die gebruikmaken van standaard numerieke en Booleaanse variabelen, parameterinstellingen en real-time statusbewaking10,11. Het is minder geschikt als stand-alone oplossing voor experimenten die complexe datastructuren, gespecialiseerde visualisatie, strikte hardwarematige veiligheidsinterlocks of schrijfarbitrage voor meerdere gebruikers vereisen11. Het doel van dit werk is om RIP-gebaseerde automatische Web UI-generatie te valideren met twee verschillende LabVIEW-systemen en om een volledig, reproduceerbaar protocol te bieden, van de constructie van de back-end VI tot de browsergebaseerde interactie. Het protocol omvat de definitie van in- en uitgangsvariabelen, de registratie van het experiment in de RIP-server, metadata-gebaseerde UI-generatie, de implementatie van de Caddy-proxy en de verificatie van op afstand lezen/schrijven. Door dezelfde workflow toe te passen op de ventilator- en DC-motormodellen wordt aangetoond dat het vastgestelde proces gereproduceerd kan worden zonder voor elk voorbeeld handmatig een volledige Web front-end te herschrijven9,10,11.

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Protocol

Voltooi de volgende stappen om twee RIP-toegankelijke LabVIEW-experimenten te bouwen, te registreren, te implementeren en te verifiëren volgens de workflow die is samengevat in Figuur 1Alle instrumenten en platforms die in deze studie zijn gebruikt, staan vermeld in de Tabel met materialen.

1. Bouw en implementeer het experiment met het ventilatormodel

  1. Bouw het ventilatormodel VI.
    1. Open LabVIEW, maak een nieuwe VI aan en sla het bestand op als fengshan.vi. Sla de VI op in een willekeurige directory die toegankelijk is voor het RIP WebService-proces. De map Private wordt alleen als voorbeeldmap gebruikt en is niet hardcoded in RIP. Voer het daadwerkelijk geselecteerde VI-pad in tijdens de registratie van het RIP-experiment.
    2. Voeg op het voorpaneel de ingangssturingen voor het ventilatormodel toe. Geef in dit voorbeeld de ingangssturingen een naam Inschakelen, PWM, Belasting, Tau, KMaxRPM, en VerstoringStel in Inschakelen als booleaanse controle, en stel PWM, Belasting, Tau, KMaxRPMen Verstoring als numerieke regelaars met dubbele precisie drijvende-kommapuntgetallen (DBL). Zie Aanvullende tabel 1 voor de fysische betekenis en de rol binnen het model van de ventilatorvariabelen.
    3. Voeg de outputindicatoren voor het ventilatormodel toe. Benoem in dit voorbeeld de outputindicatoren SnelheidRPM, ConstanteRPM, TijdS, SnelheidNorm, StroomA, en PowerWStel alle output-indicatoren in als DBL-indicatoren.
      ​OPMERKING: Tabel 1 beschrijft de fysieke betekenis en de rol in het model van deze outputvariabelen. Het voltooide voorpaneel van de ventilator wordt getoond in Figuur 2De variabelenamen, bereiken en stapgroottes die worden weergegeven in Tabel 1 beschrijf de twee voorbeelden die in dit protocol zijn geïmplementeerd. Deze zijn geen hardgecodeerde vereisten van RIP. Voor andere LabVIEW-experimenten kunnen ontwikkelaars verschillende variabelenamen en numerieke eigenschappen voor het Front Panel definiëren. De RIP-server leest de feitelijke variabelenamen, datatypes, invoer/uitvoer-attributen en beschikbare numerieke eigenschappen uit de VI-metadata, waarna de webpagina de overeenkomstige bedieningselementen en weergaven genereert op basis van de teruggegeven metadata.
    4. Voeg een While-loop toe aan het blokdiagram. Voeg twee shift-registers toe om op te slaan snelheid_vorig en tijd_vorige, en initialiseer beide waarden naar 0.
    5. Voeg een Formuleknooppunt (Formula Node) toe binnen de While-loop. Verbind Inschakelen, PWM, Belasting, Tau, KMaxRPM, Verstoring, snelheid_vorig, en vorige_tijd naar de linker ingangsterminals van de Formula Node, en stel... in SteadyRPM, speed_next, SpeedNorm, CurrentA, PowerW, en volgende_tijd als de juiste uitgangsklemmen.
    6. Bouw de Inschakelen besturingslogica buiten de formulanode. Gebruik Inschakelen als selectorsignaal, zodat u = PWM wanneer Inschakelen is waar en u = 0 wanneer Inschakelen is onjuist.
    7. Voer de modelcode van de ventilator in de formulaknoop in. Gebruik deze code om de stationaire snelheid, de werkelijke snelheid, de genormaliseerde snelheid, de stroomsterkte, het vermogen en de looptijd te berekenen; raadpleeg Aanvullend Codebestand 1 voor de volledige code.
    8. Verbind de volgende_snelheid uitvoer van de Formule-node naar de Snelheid RPM indicator en verbinden volgende_snelheid terug naar het juiste schuifregister voor snelheid_vorigVerbind SteadyRPM naar de SteadyRPM indicator
    9. Verbinden volgende_tijd naar de TimeS indicator, en verbinden volgende_tijd terug naar het juiste verschuifregister voor vorige_tijdVerbind SpeedNorm, CurrentA, en PowerW naar de overeenkomstige output-indicatoren.
    10. Voeg een Wait-functie toe binnen de While-loop en stel de wachttijd in op 50 ms. Voeg een Stop Local-knop toe en verbind deze met de conditionele terminal van de While-loop.
    11. Sla fengshan.vi op. Het voltooide blokdiagram van de ventilator wordt getoond in Figuur 3.
      PAUSEERPUCKT: Na het opslaan van de voltooide fan VI kan de workflow worden gestopt. Hervat dit later door de opgeslagen VI opnieuw te openen en te bevestigen dat alle bedieningselementen, indicatoren en Block Diagram-verbindingen op het Front Panel nog steeds aanwezig zijn.
  2. Registreer het ventilator-experiment in de RIP-server.
    1. Open RIPWebService.lvproj in de LabVIEW Project Explorer
      .
    2. Open Configuration.vi vanuit de projectboom en zoek de configuratietabel voor het experiment.
    3. Voeg een nieuwe experimentrij toe. Stel de naam in op fan. Stel het volledige pad in naar het opgeslagen fengshan.vi-bestand. De registratievelden voor het fan-experiment worden getoond in Figuur 4.
    4. Vul de resterende configuratievelden in. Stel Authors in op de auteur van het experiment, Keywords op Fan, Description op fan speed model en Sampling Freq op 200.
    5. Selecteer in het LabVIEW-menu Bewerken > Huidige waarden als standaard instellen. Sla configuratie op.vi.
    6. Start de RIP WebService opnieuw op en bevestig dat het ventilatorexperiment nog steeds vermeld staat in de Configuratie-interface na het opnieuw opstarten.
      OPMERKING: De naam van het experiment is hoofdlettergevoelig. De waarde van fan in de RIP-configuratie moet exact overeenkomen met de experiment-ID die in het front-end XHTML-bestand wordt gebruikt. Om een andere LabVIEW VI te implementeren met dezelfde automatische UI-generatielogica, voegt u een nieuwe experimentinvoer toe in de RIP-configuratie, stelt u een nieuwe waarde in voor Name en stelt u Path in op het bijbehorende VI-bestand. Gebruik vervolgens dezelfde waarde voor Name als de experiment-ID in het XHTML-bestand. De front-endpagina hoeft niet voor elke variabele opnieuw te worden geschreven.
      ​PAUZEERPUCKT: Na het opslaan van Configuration.vi en het instellen van de huidige waarden als standaard, kan de workflow worden gestopt. Hervat dit later door de RIP WebService opnieuw te starten en te bevestigen dat het ventilator-experiment nog steeds is geregistreerd.
  3. Bereid de front-endpagina voor voor het ventilator-experiment.
    1. Plaats Fan_Automatic_UI.xhtml in de Client-directory die als front-end root-directory wordt gebruikt.
    2. Open Fan_Automatic_UI.xhtml met een teksteditor.
    3. Zoek de variabele voor de experiment-ID in de scriptsectie en stel deze in op fan.
      OPMERKING: Deze waarde moet exact overeenkomen met het veld 'Naam' van het waaierexperiment in de RIP-configuratie. De instellingen voor de experiment-ID en de gedeelde, op metadata gebaseerde logica voor de generatie van de gebruikersinterface voor de XHTML-front-endbestanden worden weergegeven in Figuur 5.
    4. Verifieer dat de pagina de huidige toegangsorigine verkrijgt via window.location.origin en experimentmetagegevens opvraagt via rip.info()en geeft de geretourneerde metadata door aan autobuildUI().
      OPMERKING: De pagina mag de variabelenamen, bereiken of stapgroottes van de ventilator niet handmatig hardcoden. In plaats daarvan worden beschrijfbare variabelen gegenereerd vanuit meta.beschrijfbare.lijst, leesbare variabelen worden gegenereerd uit meta.leesbare.lijsten numerieke attributen zoals min, max en stap worden verkregen uit de metadata die door de RIP-server worden teruggegeven.
    5. Sla Fan_Automatic_UI.xhtml op.
      ​OPMERKING: Om dezelfde logica voor de generatie van de front-end te gebruiken voor een andere LabVIEW VI, stelt u een nieuw experiment-ID in het XHTML-bestand in en registreert u de bijbehorende experimentnaam en het VI-pad in de RIP-configuratie. De webbesturingen en outputschermen worden gegenereerd op basis van de metadata die worden geretourneerd door het geselecteerde experiment.
  4. Configureer het toegangspad van de Caddy voor het ventilatorexperiment.
    1. Open het Caddyfile met een teksteditor.
    2. Stel de rootdirectory van de front-end in op de Client-directory die Fan_Automatic_UI.xhtml bevat.
    3. Selecteer een ongebruikte lokale poort voor Caddy om browser toegang te bieden tot de webpagina en RIP-routes. In dit protocol wordt poort 8090 als voorbeeld gebruikt voor de proxy-toegangspoort.
      OPMERKING: Poort 8090 is niet vereist door RIP of Caddy. Als poort 8090 bezet is, vervang deze dan door een andere ongebruikte lokale poort en gebruik dezelfde poort in het browseradres.
    4. Voeg een route toe die /fan herschrijft naar Fan_Automatic_UI.xhtml.
    5. Identificeer de RIP WebService-poort die in LabVIEW is geconfigureerd. In dit protocol wordt http://localhost:8001 gebruikt alsHet RIP WebService-adres.
      OPMERKING: Poort 8001 is de LabVIEW/RIP WebService back-end poort die in de testomgeving wordt gebruikt. Deze kan worden gewijzigd in de LabVIEW/RIP WebService-configuratie. Indien er een andere poort wordt gebruikt, vervang dan http://localhost:8001 in het Caddyfile door het bijbehorende RIP WebService-adres.
    6. Voeg een reverse proxy-regel toe die /RIP/SSE*-verzoeken doorstuurt naar het RIP WebService-adres, zoals http://localhost:8001.
    7. Voeg een reverse proxy-regel toe die /RIP*-verzoeken doorstuurt naar het adres van de RIP WebService, zoals http://localhost:8001. De Caddyfile-configuratie wordt getoond in Figuur 6.
    8. Open de opdrachtprompt op Windows. Ga naar de lokale download- of installatiemap van Caddy door het volgende commando in te voeren:
      cd /d D:\caddy
      OPMERKING: In dit protocol is D:\caddy het lokale download- of installatiepad van Caddy dat in de testomgeving wordt gebruikt. Als Caddy in een andere directory is opgeslagen, vervang D:\caddy dan door het overeenkomstige lokale pad.
    9. Start Caddy met het opgegeven Caddyfile door het volgende commando in te voeren:
      caddy.exe run --config Caddyfile
    10. Bevestig dat Caddy start zonder een configuratiefout te melden. Open http://localhost:8090/fan in een webbrowser en verifieer dat de fan web-UI wordt gegenereerd, zoals weergegeven in Figuur 7.
      ​OPMERKING: Als de browser een 502-fout geeft, controleer dan of de RIP WebService is gestart, of de RIP WebService-poort in LabVIEW overeenkomt met het reverse proxy-adres in het Caddyfile, en of de geselecteerde Caddy-toegangspoort niet bezet is.
  5. Verifieer de bedrijfsresultaten van het ventilatorexperiment.
    1. Verifieer dat de front-end pagina automatisch de Inschakelen, PWM, belasting, tau, KMaxRPM, en Verstoring inputcontroles
    2. Controleer of de front-endpagina de SnelheidRPM, ConstanteRPM, TijdS, SnelheidNorm, StroomA, en PowerW outputvariabelen
    3. Aanpassen PWM en observeer of Snelheid RPM neemt toe naarmate PWM neemt toe en afhankelijk van ... af PWM neemt af.
    4. Pas de belasting aan en observeer of SteadyRPM en SnelheidRPM nemen af naarmate de belasting toeneemt.
    5. Pas de verstoring aan en observeer of SnelheidRPM, StroomA, en PowerW verandering als reactie op de storingsinput.
    6. Verifieer dat TimeS blijft stijgen, wat bevestigt dat de back-end ventilator VI continu draait.

2. Opbouwen en implementeren van het experiment voor PID-positiebesturing van een DC-motor

  1. Bouw het VI-model voor de PID-positiebesturing van de DC-motor.
    1. Open LabVIEW, maak een nieuwe VI aan en sla het bestand op als Motor.vi. Sla de VI op in een willekeurige directory die toegankelijk is voor het RIP WebService-proces.
      OPMERKING: De map 'Private' wordt uitsluitend als voorbeeldmap gebruikt en is niet hardcoded in RIP. Voer het daadwerkelijk geselecteerde VI-pad in tijdens de registratie van het RIP-experiment.
    2. Voeg op het voorpaneel de ingangsregelaars toe voor het PID-positiecontrollmodel van de DC-motor. Geef de ingangsregelaars in dit voorbeeld de volgende namen Stelwaarde, Kc, Ti, Td, Verstoring, en ResetcontroleStel in Sinstelling, Kc, Ti, Td, en Verstoring als numerieke DBL-regelaars, en stel de Reset-regelaar in als een Booleaanse regelaar.
      OPMERKING: Tabel 1 beschrijft de fysieke betekenis, de rol in het model en het aanbevolen bereik van de variabelen die in dit voorbeeld worden gebruikt.
    3. Voeg de output-indicatoren toe voor het PID-positiebesturingsmodel van de DC-motor. Geef in dit voorbeeld de output-indicatoren een naam Positie, Spanning, Tijd, en Gemeten hoeksnelheidStel alle output-indicatoren in als DBL-indicatoren. Tabel 1 beschrijft de fysische betekenis en de rol in het model van deze uitgangsvariabelen. Het voltooide Front Panel voor de motor wordt getoond in Figuur 8.
      OPMERKING: De variabelenamen en bereiken die vermeld staan in Tabel 1 beschrijf de twee voorbeelden die in dit protocol zijn geïmplementeerd. Deze zijn geen vaste vereisten voor de RIP-gebaseerde workflow voor automatische UI-generatie. Wanneer een andere LabVIEW VI wordt gebruikt, leest RIP de feitelijke variabelenamen, datatypes, in- en uitvoerkenmerken en beschikbare numerieke eigenschappen uit de VI-metadata. Daarom is het niet nodig om de variabelenamen, maximumwaarden, minimumwaarden of stapgroottes voor elk experiment hardcoded in de logica voor de generatie van de front-end op te nemen.
    4. Voeg een While-loop toe aan het blokdiagram. Voeg zes verschuifregisters (Shift Registers) toe om op te slaan theta, omega, im, e_prev, integ, en tijd, en initialiseer alle zes waarden naar 0.
    5. Voeg een Formule-knooppunt (Formula Node) toe binnen de While-lus. Volgens het getoonde diagram van het PID-positiecontrolemodel voor de DC-motor in Figuur 9gebruik deze Formula Node als de centrale berekeningsmodule voor de foutberekening, PID-regeling, spanningsbegrenzing, het elektrische model, het mechanische model en de positie-update.
      OPMERKING: De interne motorparameters die in dit model worden gebruikt, zoals R, L, J, b, Kt, Ke, en Vmax, zijn genormaliseerde parameters van een onderwijmodel in plaats van gekalibreerde parameters van een specifieke fysieke motor. Ze zijn geselecteerd om een stabiele en observeerbare gesimuleerde respons te produceren onder de gekozen tijdstap en spanningslimiet, zodat de effecten van Instelwaarde, Kc, Ti, Td, en Verstoring kan duidelijk worden aangetoond tijdens de webgebaseerde bediening.
    6. Setten sp, theta, omega, im, e_prev, integ, Kc, Ti, Td, verstoring, reset, en dt ade ingangsterminals van de Formula Node. Stel theta_volgende, omega_volgende, im_volgende, e_volgende, integ_volgende, en spanning als de uitgangsterminals van de Formula Node.
    7. Verbind de Instelwaarde controle op de sp ingangsterminal van de Formula Node. Verbind Kc, Ti, Td, en Storing naar de Kc, Ti, Td, en dverstoring iingangsterminals van de Formula Node, respectievelijk.
    8. Zet het Reset-besturingsbooleaanse signaal om in een numeriek signaal en verbind dit met de herstellen ingangsterminal van de Formula Node. Voer een reset van de status uit wanneer Hervoorstelt is niet gelijk aan 0, en voer PID-regeling en het bijwerken van de motorstatus uit wanneer herstellen is gelijk aan 0.
    9. Voeg de numerieke constante toe dt en stel de waarde hiervan in op 0,001 s. Verbind de dt naar de dt de invoerterminal van de Formula Node en gebruik deze voor het bijwerken van de tijd.
    10. Stel de interne modelparameters van de DC-motor in de Formula Node in. Zie Aanvullende Tabel 2 voor de fysieke betekenis en de modelrol van de motorvariabelen.
    11. Voer de PID-positiecontrolecode voor de DC-motor in de Formula Node in. Gebruik deze code om de resetlogica, foutberekening, berekening van de integraalterm, berekening van de afgeleideterm, PID-regeling, spanningsbegrenzing, stroombijwerking, hoeksnelheidsbijwerking en positiebijwerking te implementeren; zie de aanvullende codebestanden voor de volledige code.
    12. Verbinden theta_volgende naar de Positie indicator en verbinden theta_volgende terug naar het juiste schuifregister voor theta Verbinden omega_volgende naar de Indicator voor gemeten hoeksnelheid, en verbind omega_volgende terug naar het juiste schuifregister voor omega
    13. Sluit de spanning aan op de spanningsindicator. Sluit aan im_volgend, e_volgend, en integ_volgende terug naar de juiste schuifregisters voor im, e_prev, en integ, respectievelijk.
    14. Gebruik een Add-functie buiten de Formula Node om te berekenen tijd_volgende = tijd + dt. Verbinden volgende_tijd naar de Tijd indicator en verbinden volgende_tijd terug naar het juiste Shift Register voor de tijd.
    15. Voeg een Wait-functie toe binnen de While-lus en stel de wachttijd in op 1 ms. Voeg een Stop-knop toe en verbind deze met de conditionele terminal van de While-lus.
    16. Sla Motor.vi op. Het voltooide blokdiagram van de motor wordt getoond in Figuur 10.
      PAUZEPUNT: Na het opslaan van de voltooide motor-VI kan de workflow worden gestopt. Hervat het proces later door de opgeslagen VI opnieuw te openen en te controleren of alle bedieningselementen, indicatoren en Block Diagram-verbindingen op het Front Panel nog aanwezig zijn.
  2. Registreer het motorexperiment in de RIP Server.
    1. Open RIPWebService.lvproj in de LabVIEW Project Explorer.
    2. Open Configuration.vi vanuit de projectboom en zoek de tabel voor de experimentconfiguratie.
    3. Voeg een nieuwe experimentrij toe. Stel de Naam in op Motor. Stel het Pad in op het volledige pad van het opgeslagen Motor.vi-bestand. De registratievelden voor het motorexperiment worden getoond in Figuur 11.
    4. Vul de resterende configuratievelden in. Stel Auteurs in op de auteur van het experiment, Trefwoorden op Motor, Beschrijving op DC-motor positiebesturingsmodel en Bemonsteringsfreq op 200.
    5. Selecteer in het LabVIEW-menu Bewerken > Stel huidige waarden in als standaard. Sla configuratie op.vi.
    6. Herstart de RIP WebService en bevestig dat het Motor-experiment na het herstarten nog steeds wordt vermeld in de Configuratie-interface.
      OPMERKING: De experimentnaam is hoofdlettergevoelig. De waarde Motor in RIP Configuration moet exact overeenkomen met de experiment-ID die wordt gebruikt in Motor_Automatic_UI.xhtml. Om een andere LabVIEW VI te implementeren met dezelfde automatische UI-generatielogica, voegt u een nieuwe experimentvermelding toe in RIP Configuration, stelt u een nieuwe waarde in bij Name en stelt u Path in op het corresponderende VI-bestand. Gebruik vervolgens dezelfde waarde bij Name als de experiment-ID in het XHTML-bestand. De front-endpagina hoeft niet voor elke variabele opnieuw te worden geschreven.
      ​PAUSEERPUNT: Nadat Configuration.vi is opgeslagen en de huidige waarden als standaard zijn ingesteld, kan de workflow worden gestopt. Hervat dit later door de RIP WebService opnieuw te starten en te bevestigen dat het Motor-experiment nog steeds is geregistreerd.
  3. Bereid de voorpagina voor het motorexperiment voor.
    1. Plaats Motor_Automatic_UI.xhtml in de Client-directory die als front-end-worteldirectory wordt gebruikt.
    2. Open Motor_Automatic_UI.xhtml met een teksteditor.
    3. Zoek de variabele experiment ID in het scriptgedeelte en stel deze in op Motor. Deze waarde moet exact overeenkomen met het veld Name van het motor-experiment in de RIP-configuratie. De front-endpagina voor het motor-experiment maakt gebruik van dezelfde logica voor UI-generatie op basis van metadata als getoond in Figuur 5; alleen het experiment-ID is gewijzigd om overeen te komen met de Motor-vermelding in de RIP-configuratie.
    4. Verifieer of de pagina de logica voor het lezen van RIP-metagegevens, de logica voor het genereren van HTML-besturingselementen, de RIP-schrijffunctie en de functie voor het bijwerken van de output bevat.
      OPMERKING: De pagina mag de variabelenamen, bereiken of stapgroottes van de motoren niet handmatig hardcoderen. Deze eigenschappen worden verkregen uit de metadata die door de RIP-server worden teruggegeven, volgens het eerder beschreven RIP-gebaseerde mechanisme voor de generatie van metadata naar HTML.11.
    5. Sla Motor_Automatic_UI.xhtml op.
      ​OPMERKING: Om dezelfde logica voor de generatie van de front-end te gebruiken voor een andere LabVIEW VI, stelt u een nieuw experiment-ID in het XHTML-bestand in en registreert u de bijbehorende experimentnaam en het VI-pad in de RIP-configuratie. De webbesturingselementen en outputschermen worden gegenereerd op basis van de metadata die door het geselecteerde experiment worden teruggegeven.
  4. Configureer het toegangspad van de Caddy voor het motorexperiment.
    1. Open het Caddyfile met een teksteditor.
    2. Stel de rootdirectory van de front-end in op de Client-directory die Motor_Automatic_UI.xhtml bevat.
    3. Selecteer een ongebruikte lokale poort voor Caddy om browser toegang te bieden tot de webpagina en RIP-routes. In dit protocol wordt poort 8090 als voorbeeld gebruikt voor de proxy-toegangspoort.
      OPMERKING: Poort 8090 is niet vereist voor RIP of Caddy. Als poort 8090 bezet is, vervang deze dan door een andere ongebruikte lokale poort en gebruik dezelfde poort in het browseradres.
    4. Voeg een route toe die /motor herschrijft naar Motor_Automatic_UI.xhtml.
    5. Identificeer de RIP WebService-poort die in LabVIEW is geconfigureerd. In dit protocol wordt http://localhost:8001 gebruikt als het RIP WebService-adres.
      OPMERKING: Poort 8001 is de LabVIEW/RIP WebService back-end poort die in de testomgeving wordt gebruikt. Deze kan worden gewijzigd in de LabVIEW/RIP WebService-configuratie. Als er een andere poort wordt gebruikt, vervang dan http://localhost:8001 in het Caddyfile door het overeenkomstige RIP WebService-adres.
    6. Voeg een reverse proxy-regel toe die /RIP/SSE*-verzoeken doorstuurt naar het RIP WebService-adres, zoals http://localhost:8001.
    7. Voeg een reverse proxy-regel toe die /RIP*-verzoeken doorstuurt naar het adres van de RIP WebService, zoals http://localhost:8001. De configuratie van het Caddyfile is weergegeven in Figuur 6.
    8. Open de opdrachtprompt op Windows. Ga naar de lokale download- of installatiemap van Caddy door het volgende commando in te voeren:
      cd /d D:\caddy
      OPMERKING: In dit protocol is D:\caddy het lokale download- of installatiepad van Caddy dat in de testomgeving wordt gebruikt. Als Caddy in een andere directory is opgeslagen, vervang D:\caddy dan door het overeenkomstige lokale pad.
    9. Start Caddy met het opgegeven Caddyfile door het volgende commando in te voeren:
      caddy.exe run --config Caddyfile
    10. Bevestig dat Caddy start zonder een configuratiefout te rapporteren. Open http://localhost:8090/motor in een webbrowser en verifieer dat de webinterface van de motor wordt gegenereerd, zoals weergegeven in Figuur 12.
      ​OPMERKING: Als de webpagina van de motor wordt geladen maar de outputwaarden niet worden bijgewerkt, controleer dan of de RIP WebService is actief, of de motor VI wordt uitgevoerd, of de RIP WebService-poort in LabVIEW overeenkomt met het reverse proxy-adres in het Caddyfile en of de /RIP/SSE*-route correct is geproxy'd.
  5. Verifieer de bedrijfsresultaten van het motorexperiment.
    1. Verifieer dat de front-endpagina automatisch de Stelwaarde, Kc, Ti, Td, Verstoring, en Herstellen controle-inputcontroles.
    2. Controleer of de front-endpagina de volgende informatie weergeeft: Positie, Spanning, Tijd, en Gemeten hoeksnelheid uitgangsvariabelen
    3. Aanpassen Instelpunt en observeer of de positie reageert op de wijziging van de gewenste positie.
    4. Aanpassen Kc, Ti, en Td en observeer of Spanning, Positie, en Gemeten hoeksnelheid verandering
    5. Afstellen de verstoring en observeer of de positie, de stuurspanning of de gemeten hoeksnelheid wordt beïnvloed door de verstoring U heeft geen brontekst opgegeven om te vertalen. Voer aub de Engelse tekst in die u naar het Nederlands vertaald wilt hebben.
    6. Klik op Reset control en observeer of Positie, spanning, gemeten hoeksnelheid, en de bijbehorende interne toestanden keren terug naar hun begintoestanden volgens de resetlogica.

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Resultaten

Nadat de hierboven beschreven werkvloei is voltooid, zijn zowel het ventilatorexperiment als het experiment voor PID-positieregeling van een gelijkstroommotor toegankelijk via de automatisch gegenereerde webinterface. Een succesvol resultaat wordt aangegeven door drie observaties. Ten eerste genereert de webpagina automatisch invoercontroles en uitvoerweergavevelden op basis van de variabele metagegevens die worden geretourneerd door de RIP-server. Ten tweede wordt, wanneer de gebruiker een invoervariabele op de webpagin...

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Discussie

Een kritische stap in dit protocol is de gestandaardiseerde constructie en registratie van de LabVIEW back-end VI. De regelaars en indicatoren op het Front Panel moeten duidelijke en unieke variabelenamen hebben, en hun datatypen moeten overeenkomen met de variabelen die worden verwacht door de modelberekening en door het RIP lees-/schrijfproces. In de twee voorbeelden die in dit protocol worden gebruikt, zijn scalaire numerieke variabelen gedefinieerd als DBL-regelaars of -indicatoren, en Booleaanse variabelen zijn gede...

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Openbaarmakingen

De auteurs hebben AI-ondersteunde tools uitsluitend gebruikt voor het polijsten van de taal. Alle wetenschappelijke inhoud, experimentele procedures, software-implementaties, figuren, resultaten, interpretaties en de definitieve bewoording zijn door de auteurs gecontroleerd, gecorrigeerd en goedgekeurd. Er is geen AI-tool gebruikt voor het genereren van experimentele gegevens.

Dankbetuigingen

Dit werk werd ondersteund door de Undergraduate Training Programs for Innovation van de Wuhan University.

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Materialen

Lijst van materialen gebruikt in dit artikel
NaamBedrijfCatalogusnummerOpmerkingen
Caddy Proxy ServerCaddyN/AReverse proxy gebruikt om de Web UI te serveren en /RIP-verzoeken door te sturen naar de RIP WebService
CaddyfileVoorbereid door de auteursN/ADefinieert static-file routes en reverse-proxy routes voor RIP-communicatie
Fan_Automatic_UI.xhtmlVoorbereid door de auteursN/AOp metadata gebaseerde Web front end voor het ventilator-experiment
LabVIEWNational Instruments2026Software gebruikt om fengshan.vi en Motor.vi te bouwen en uit te voeren
Microsoft Windows besturingssysteemMicrosoftWin11Besturingssysteem gebruikt om LabVIEW, RIP WebService, Caddy en de browser uit te voeren.
Motor_Automatic_UI.xhtmlVoorbereid door de auteursN/AOp metadata gebaseerde Web front end voor het motor-experiment
Mozilla Firefox desktopbrowserMozilla2026Desktopbrowser gebruikt voor toegang tot de Web UI, ontwikkelaarstools, timing-/resource-observaties en Network/Console-screenshots.
RIP WebServiceUNEDLabshttps://github.com/Nebulous-Systems/rip-server_labviewOntvangt RIP POST-verzoeken en biedt de WebService-communicatielaag die wordt gebruikt door de browser front end.
Windows TaakbeheerMicrosoftIngebouwd in WindowsGebruikt om CPU- en geheugenobservaties op procesniveau vast te leggen voor de browser- en LabVIEW-processen.

Referenties

  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.

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Herprints en machtigingen

Tags

WebgebruikersinterfaceAutomatische UI-generatieVirtuele InstrumentenRIP-serverconfiguratieReverse ProxyCaddy ProxyPID-positiecontroleVariabele Metadata

Dit artikel is gepubliceerd

Video binnenkort beschikbaar