$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Na voltooiing van de hierboven beschreven workflow kan zowel het ventilator-experiment als het DC-motor PID-positiecontrole-experiment worden benaderd via de automatisch gegenereerde web-frontend. Een succesvol resultaat wordt gekenmerkt door drie waarnemingen. Ten eerste genereert de webpagina automatisch invoerregelaars en uitvoerweergavevelden op basis van de variabelenmetadata die door de RIP-server worden teruggestuurd. Ten tweede, wanneer de gebruiker een invoervariabele op de webpagina wijzigt, wordt de gewijzigde waarde via de RIP-interface naar de LabVIEW back-end VI geschreven. Ten derde worden de uitvoervariabelen die door de back-end VI zijn berekend via RIP teruggestuurd en in realtime op de webpagina bijgewerkt. Voor het ventilator-experiment worden, na het invoeren van http://localhost:8090/fan in een browser, de invoerregelaars en uitvoervelden automatisch gegenereerd vanuit de RIP-metadata, zoals weergegeven in Figuur 7. De invoerkant bevat Enable, PWM, Load, Tau, KMaxRPM, en Disturbance, terwijl de uitvoerkant SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA, en PowerW weergeeft. Tijdens normale werking neemt TimeS continu toe, wat aangeeft dat de back-end fengshan.vi wordt uitgevoerd. Wanneer PWM wordt verhoogd, nemen SpeedRPM en SteadyRPM dienovereenkomstig toe. Wanneer Load wordt verhoogd, neemt de ventilatorsnelheid af omdat de load de stationaire bedrijfssnelheid verlaagt. Wanneer Disturbance wordt aangepast, kunnen overeenkomstige veranderingen worden waargenomen in SpeedRPM, CurrentA en PowerW. Deze waarnemingen bevestigen dat de invoer aan de webzijde correct wordt overgebracht naar de LabVIEW back-end en dat de berekende uitvoeren via RIP naar de front-end worden teruggestuurd.
Voor het experiment met de PID-positiebesturing van de DC-motor genereert de pagina, na het invoeren van http://localhost:8090/motor in een browser, automatisch de overeenkomstige bedieningselementen en uitvoervelden vanuit de RIP-metagegevens, zoals weergegeven in Figuur 12. De invoervariabelen omvatten Setpoint, Kc, Ti, Td, Disturbance en de Reset-besturing, en de uitvoervariabelen omvatten Position, Voltage, Time en Measured angular velocity. Wanneer het Setpoint wordt gewijzigd, reageert de Position op de nieuwe doelwaarde. Wanneer de PID-parameters Kc, Ti en Td worden aangepast, veranderen de respons van de uitvoer, de besturingsspanning (voltage) en de measured angular velocity dienovereenkomstig, wat aangeeft dat de op de webpagina ingevoerde parameterwaarden correct naar het LabVIEW back-endmodel worden geschreven en deelnemen aan de besturingsberekening. Wanneer de Reset-besturing wordt geactiveerd, keren de modelvariabelen terug naar hun beginstaten volgens de reset-logica.
Fouten aan de browserzijde en communicatiestatussen worden weergegeven in Figuur 13, Figuur 14, Figuur 15. Figuur 13 toont een geval van mislukte browseraanroep waarin Caddy niet is opgestart. De browser probeert http://localhost:8090/motor te openen, maar vertoont een ERR_CONNECTION_REFUSED-melding, wat aangeeft dat de lokale proxyservice niet beschikbaar is of niet luistert op de geselecteerde toegangspoort. Figuur 14 toont een RIP POST-communicatiefout nadat de pagina is geladen. In dit geval rapporteert de browserconsole een 502 Bad Gateway-fout voor het RIP POST-verzoek, wat aangeeft dat de front-end het proxyadres heeft bereikt, maar dat het verzoek niet succesvol kan worden doorgestuurd naar, of verwerkt door, de RIP WebService back-end. In tegenstelling hiermee toont Figuur 15 een normale communicatiestatus aan de browserzijde. De ontwikkelaarstools van de browser tonen een succesvolle paginalading, RIP POST-verzoeken en een actief SSE-verzoek met expId=fan, wat aangeeft dat de Web front-end communiceert met de RIP WebService via de Caddy-proxy en real-time updates ontvangt via het SSE-kanaal.
Samen tonen de succesvolle resultaten van de ventilator en de motor, evenals de diagnostische resultaten aan de browserzijde, aan dat dezelfde workflow voor automatische UI-generatie op basis van metadata kan worden gereproduceerd voor twee verschillende LabVIEW-experimenten. Deze resultaten bieden tevens waarneembare criteria om succesvolle communicatie te onderscheiden van representatieve implementatiefouten, terwijl de bijbehorende procedures voor probleemoplossing worden besproken in de sectie Discussie.

Afbeelding 1: Algemene structuur van het experimentele systeem. Het systeem bestaat uit de LabVIEW back-end VI, RIP-server, Caddy-proxy en de automatisch gegenereerde web-UI. De LabVIEW VI levert modelvariabelen, de RIP-server leest VI-metadata en variabelenwaarden, Caddy uniformiseert het toegangspad en lost cross-origin-toegang op, en de web-UI genereert automatisch de bedieningselementen. De Caddy-naam en het logo worden uitsluitend getoond om de Caddy-webserver/proxy-component te identificeren die in de workflow wordt gebruikt. Klik hier om een grotere versie van deze afbeelding te bekijken.

Figuur 2: Front Panel van de ventilator VI. Het Front Panel bevat invoerregelaars voor Enable, PWM, Load, Tau, KMaxRPM en Disturbance, en uitvoerindicatoren voor SpeedRPM, SteadyRPM, TimeS, SpeedNorm, CurrentA en PowerW. Deze screenshot is gemaakt van het Front Panel van fengshan.vi in LabVIEW 2026 in de eigen lokale experimentele omgeving van de auteurs. Er zijn geen gebruikersgegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 3: Blokschema van de ventilator-VI. Het ventilatormodel is geïmplementeerd met een While Loop, Shift Registers, Enable-logica, een Formula Node en output-indicatoren. Deze screenshot is gemaakt van het blokschema van fengshan.vi in LabVIEW 2026 in de eigen lokale experimentele omgeving van de auteurs. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 4: Configuratiepagina van fan.vi. Het ventilator-experiment is geregistreerd in RIP Configuration met de experimentnaam fan, het werkelijke VI-pad, trefwoordinformatie, een beschrijving en de bemonsteringsfrequentie. Dit screenshot is gemaakt vanuit de RIP Configuration-interface die gebruikt is met LabVIEW 2026 en RIP WebService in de eigen lokale experimentele omgeving van de auteurs. Er zijn geen gebruikersgegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 5: Instellingen voor experiment-ID en op metadata gebaseerde UI-generatielogica in de XHTML front-end bestanden. De screenshots van de XHTML-code zijn gemaakt van Fan_Automatic_UI.xhtml en Motor_Automatic_UI.xhtml geopend in Visual Studio Code. De ventilator- en motorpagina's maken gebruik van dezelfde logica voor het lezen van metadata en het genereren van besturingen; alleen het experiment-ID is gewijzigd om overeen te komen met het bijbehorende veld 'Name' in de RIP Configuration. De screenshots van de XHTML-code zijn gemaakt van Fan_Automatic_UI.xhtml en Motor_Automatic_UI.xhtml geopend in Visual Studio Code in de eigen lokale ontwikkelomgeving van de auteurs. De codebestanden zijn door de auteurs voorbereid voor dit protocol. Er zijn geen gebruikersgegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 6: Caddyfile-configuratie. De Caddyfile definieert de lokale proxy-toegangspoort, stelt de rootmap van de front-end in, herschrijft de /fan- en /motor-routes naar de overeenkomstige XHTML-bestanden en fungeert als reverse proxy voor /RIP/SSE* en /RIP*-verzoeken naar de LabVIEW/RIP WebService-poort. Het screenshot van de Caddyfile-configuratie is gemaakt van de Caddyfile geopend in Visual Studio Code in de eigen lokale ontwikkelomgeving van de auteurs. De Caddyfile is door de auteurs opgesteld om Caddy te configureren als de lokale webserver en reverse proxy. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 7: Web UI-pagina van fan.vi. Deze screenshot van de webinterface is gemaakt van de lokaal geïmplementeerde ventilator-webpagina van de auteurs met behulp van Mozilla Firefox. De front-endpagina genereert automatisch invoerregelaars en uitgaveweergaven op basis van de variabelenmetadata die door de RIP-server worden teruggestuurd. Deze screenshot van de webinterface is gemaakt van de lokaal geïmplementeerde ventilator-webpagina van de auteurs met behulp van Mozilla Firefox. De weergegeven regelaars en uitgavevelden zijn gegenereerd vanuit RIP-metadata in de lokale experimentele omgeving van de auteurs. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 8: Front Panel van de motor VI. Het Front Panel bevat bedieningselementen voor Setpoint, Kc, Ti, Td, Disturbance en Reset, en indicatoren voor Position, Voltage, Time en Measured angular velocity. Deze screenshot is gemaakt van het Front Panel van Motor.vi in LabVIEW 2026 in de eigen lokale experimentele omgeving van de auteurs. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 9: Diagram van het PID-positieregelsysteem voor een DC-motor. Het diagram toont het signaalpad van de afwijking van het ingestelde punt, PID-regeling, spanningsbegrenzing, superpositie van storingen, elektrische dynamica, mechanische dynamica en positie-update naar de feedback. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 10: Blokdiagram van de motor-VI. Het motormodel is geïmplementeerd met een While-loop, shift-registers, een formuleknooppunt, timinglogica en outputindicatoren. Dit screenshot is gemaakt van het blokdiagram van Motor.vi in LabVIEW 2026 in de eigen lokale experimentele omgeving van de auteurs. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 11: Configuratiepagina van Motor.vi. Het motorexperiment is geregistreerd in RIP Configuration met de experimentnaam Motor, het feitelijke VI-pad, trefwoordinformatie, beschrijving en bemonsteringsfrequentie. Dit screenshot is gemaakt van de RIP Configuration-interface gebruikt met LabVIEW 2026 en RIP WebService in de eigen lokale experimentele omgeving van de auteurs. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 12: Web UI-pagina van Motor.vi. De front-end pagina genereert automatisch invoerregelaars en output-weergaven voor het experiment voor PID-positiebesturing van de DC-motor. Dit screenshot van de webinterface is vastgelegd vanaf de lokaal geïmplementeerde motor-webpagina van de auteurs met behulp van Mozilla Firefox. De weergegeven regelaars en outputvelden zijn gegenereerd vanuit RIP-metadata in de lokale experimentele omgeving van de auteurs. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 13: Mislukte browsertoegang wanneer Caddy niet is gestart. Wanneer Caddy niet is gestart, kan het geproxiede lokale adres http://localhost:8090/motor niet worden bereikt en geeft de browser een ERR_CONNECTION_REFUSED-melding weer. Dit symptoom van falen geeft aan dat de lokale Caddy-proxyservice niet beschikbaar is of niet luistert op de geselecteerde toegangspoort. Deze screenshot van de browser is gemaakt met Mozilla Firefox in de eigen lokale testomgeving van de auteurs en toont de status van de mislukte toegang wanneer de lokale Caddy-proxy niet draaide. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 14: RIP POST communicatiefout na het laden van de pagina. De browserconsole toont een 502 Bad Gateway-fout voor het RIP POST-verzoek. Dit resultaat geeft aan dat de webpagina het Caddy proxy-adres heeft bereikt, maar dat het verzoek niet succesvol kan worden doorgestuurd naar, of verwerkt door, de RIP WebService back-end. Dit screenshot van de browserconsole is vastgelegd met Mozilla Firefox Developer Tools in de eigen lokale implementatieomgeving van de auteurs en toont een RIP POST 502 Bad Gateway communicatiefout. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 15: Communicatiestatus aan de browserzijde onder normale werking. De ontwikkelaarstools van de browser tonen het succesvol laden van de pagina, RIP POST-verzoeken en een actief SSE-verzoek met expId=fan. Deze verzoeken geven aan dat de Web front-end communiceert met de RIP WebService via de Caddy-proxy en real-time updates ontvangt via het SSE-kanaal. Dit screenshot van de ontwikkelaarstools van de browser is vastgelegd met Mozilla Firefox in de eigen lokale implementatieomgeving van de auteurs en toont normale RIP POST- en SSE-communicatie. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 16: Enkele representatieve browserconsole- en procesniveau-resource-observaties voor het ventilator-experiment. Het screenshot is vastgelegd tijdens een lokale test van het ventilator-experiment. De console toont de verzoek-/responstijd van metadata, het aantal metadata-variabelen, de tijd voor metadata-gebaseerde UI-generatie, de openingstijd van de SSE-verbinding en de ontvangen SSE-gegevens. De weergave van de taakbeheerder toont de CPU- en geheugenwaarden op procesniveau voor de browser- en LabVIEW-processen op het moment van vastlegging. Deze waarden zijn beschrijvende observaties van deze individuele test en zijn geen gerepliceerde prestatiemetingen of een statistische benchmark. Dit screenshot is gemaakt met Mozilla Firefox Developer Tools en Windows Taakbeheer in de eigen lokale testomgeving van de auteurs. Mozilla Firefox werd gebruikt om de output van de browserconsole vast te leggen, en Windows Taakbeheer werd gebruikt om het CPU- en geheugengebruik voor de browser- en LabVIEW-processen te observeren. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.

Figuur 17: Gelijktijdige toegang tot dezelfde RIP-gebaseerde webpagina via een desktopbrowser en een mobiele browser. De pagina voor het ventilatorexperiment is gelijktijdig geopend op PC- en mobiele apparaten, waarbij beide clients de automatisch gegenereerde bedieningselementen en outputvariabelen weergeven. De desktop-webpagina werd benaderd via Mozilla Firefox, en de mobiele webpagina werd benaderd via een mobiele browser in dezelfde lokale netwerkomgeving. De screenshots zijn gemaakt vanuit de eigen lokale testomgeving van de auteurs. Er zijn geen gegevens van derden of vertrouwelijke informatie opgenomen. Klik hier om een grotere versie van deze figuur te bekijken.
| Variabelnaam | Gegevenstype | Invoer/Uitvoer | Fysische betekenis | Rol in het model | Bereik/Instelling |
| Enable | Boolean | Invoer | Schakelaar ventilatorbedrijf | Bepaalt of het model de PWM-invoer ontvangt. Wanneer True is u = PWM; wanneer False is u = 0. | True / False |
| PWM | DBL | Invoer | Aansturingsinvoer | Bepaalt de basisintensiteit van de ventilatorenaansturing en is de belangrijkste invoer die wordt gebruikt om de stationaire snelheid SteadyRPM te berekenen. | 0-1, stap 0,01 |
| Load | DBL | Invoer | Belastingscoëfficiënt | Beschrijft het verzwakkende effect van de belasting op de stationaire snelheid. Naarmate Load toeneemt, neemt de stationaire snelheid af. | 0-1, stap 0,01 |
| Tau | DBL | Invoer | Tijdsconstante van de respons | Bepaalt hoe snel de ventilatorsnelheid vanuit de vorige toestand de stationaire snelheid benadert. | 0,1-5, stap 0,1 |
| KMaxRPM | DBL | Invoer | Maximumsnelheid | Stelt de maximumsnelheid in die door het model is toegestaan en wordt gebruikt voor snelheidsbegrenzing en normalisatie. | 500-6000, stap 100 |
| Disturbance | DBL | Invoer | Storend signaal | Representeert het effect van externe verstoringen of belastingsschommelingen op de stationaire snelheid, stroom en vermogen. | 0-1, stap 0,1 |
| SpeedRPM | DBL | Uitvoer | Actuele snelheid | Representeert de huidige outputsnelheid van de ventilator en wordt bijgewerkt via traagheidsdynamiek van de eerste orde. | Berekend door het model |
| SteadyRPM | DBL | Uitvoer | Stationaire snelheid | Representeert de theoretische stationaire snelheid onder de huidige invoercondities. | Berekend door het model |
| TimeS | DBL | Uitvoer | Looptijd | Representeert de continue looptijd van het model. | Berekend door het model |
| SpeedNorm | DBL | Uitvoer | Genormaliseerde snelheid | Representeert de verhouding tussen SpeedRPM en KMaxRPM. | 0-1 of berekend door het model |
| CurrentA | DBL | Uitvoer | Stroom | Representeert de geschatte modelstroom, die verandert met de aansturingsinvoer en de storende invoer. | Berekend door het model |
| PowerW | DBL | Uitvoer | Vermogen | Representeert het geschatte modelvermogen, berekend uit de spanningsconstante en de stroom. | Berekend door het model |
| Setpoint | DBL | Invoer | Gewenste positie | Stelt de positie in die de motor moet bereiken en vormt samen met de actuele positie Position de fout e. | -3-3, stap 0,1 |
| Kc | DBL | Invoer | Proportionele versterking | Past de responssterkte van de PID-regelaar op de fout aan. | 0-10, stap 0,1 |
| Ti | DBL | Invoer | Integraaltijd | Past de integraalwerking van de PID-regelaar aan en wordt gebruikt om de stationaire fout te verminderen. | 0-10, stap 0,1 |
| Td | DBL | Invoer | Differentiaaltijd | Past de differentiaalwerking van de PID-regelaar aan en wordt gebruikt om te snelle foutveranderingen te onderdrukken en de dynamische respons te verbeteren. | 0-5, stap 0,1 |
| Disturbance | DBL | Invoer | Storend signaal | Representeert een externe verstoring die wordt opgeteld bij de motorinvoer en samen met de regelspanning inwerkt op het motormodel. | 0-10, stap 0,1 |
| Reset control | Boolean | Invoer | Resetregeling | Activeert het wissen van de modeltoestand, zodat positie, hoeksnelheid, stroom, fout en integraalterm terugkeren naar hun beginwaarden. | True / False |
| Position | DBL | Uitvoer | Actuele positie | Representeert de huidige hoekpositie van de motor en dient als feedbackvariabele voor de PID-regeling. | Berekend door het model |
| Voltage | DBL | Uitvoer | Regelspanning | Representeert de uitvoer van de PID-regelaar na spanningsbegrenzing en werkt in op de motorinvoer. | Berekend door het model; beperkt tot -24 tot 24 V |
| Time | DBL | Uitvoer | Looptijd | Representeert de continue looptijd van het motormodel. | Berekend door het model |
| Measured angular velocity | DBL | Uitvoer | Gemeten hoeksnelheid | Representeert de huidige hoeksnelheid van de motor en is de mechanische toestandsuitvoer van de motor. | Berekend door het model |
Tabel 1: Invoer- en uitvoervariabelen gebruikt in de voorbeelden van de ventilator en de DC-motor. De tabel vermeldt elke variabelenaam, het datatype, de rol als invoer/uitvoer, de fysische betekenis, het aanbevolen bereik en de stapgrootte.
| Parameter | Waarde | Fysische betekenis | Rol in het model |
| R | 1 | Ankerweerstand | staat voor de weerstandsterm in het ankercircuit van de motor en bepaalt de spanningsval R × im in de stroomvergelijking. |
| L | 0.5 | Ankerinductie | Stelt de inductie van het ankercircuit voor en bepaalt de snelheid van de stroomwijziging. Een grotere L resulteert in een tragere stroomrespons. |
| J | 0.01 | Traagheidsmoment | Stelt de weerstand van de motorrotor tegen veranderingen in de hoekversnelling voor en bepaalt hoe snel de hoeksnelheid verandert. |
| b | 0.1 | Viskeuze dempingscoëfficiënt | Stelt de mechanische demping voor en beschrijft het dempingsmoment dat de toename van de hoeksnelheid tijdens rotatie belemmert. |
| Kt | 0.01 | Koppelconstante | Stelt de proportionele coëfficiënt voor die de ankerstroom omzet in elektromagnetisch koppel. |
| Ke | 0.01 | Tegenelektromotorische krachtconstante | Stelt de proportionele coëfficiënt voor waarmee hoeksnelheid een tegenelektromotorische kracht genereert en beschrijft het feedbackeffect van snelheid op de stroom. |
| Vmax | 24 | Maximale stuurspanning | Stelt de limiet van de uitgangsspanning van de controller in en houdt de spanning binnen het bereik van -24 V tot 24 V. |
| dt | 0.001 | Discrete simulatiestap | Geeft het tijdsinterval voor elke loop-gebaseerde statusupdate aan en wordt gebruikt voor het bijwerken van de stroom, hoeksnelheid, positie en looptijd. |
Tabel 2: Interne parameters gebruikt in het PID-positiecontrolesysteem van de DC-motor. De tabel bevat de elektrische en mechanische parameters, symbolen, numerieke waarden, eenheden en hun rollen in het model.
Aanvullende coderingsbestanden: Volledige bron- en configuratiebestanden voor het reproduceren van de voorbeelden met de ventilator en de DC-motor. De aanvullende coderingsbestanden omvatten de LabVIEW Formula Node-code, de Caddy reverse-proxy-configuratie, de XHTML front-end-bestanden en de LabVIEW VI-bronbestanden die in dit protocol worden gebruikt. Code in LabVIEW Formula Node.docx bevat de Formula Node-code voor de PID-positiebesturingsmodellen van de ventilator en de DC-motor. Caddyfile.txt bevat de configuratie van de lokale webserver en de reverse-proxy. Fan_Automatic_UI.xhtml en Motor_Automatic_UI.xhtml bevatten de metadata-gebaseerde logica van de web-front-end. fengshan.vi en Motor.vi zijn de LabVIEW back-end VI-bestanden voor de experimenten met de ventilator en de motor.Klik hier om dit bestand te downloaden.