Subskrypcja JoVE jest wymagana do oglądania tego materiału. Zaloguj się lub rozpocznij bezpłatny okres próbny.

Artykuł metodologiczny

Protokół automatycznego generowania interfejsów internetowych dla aplikacji LabVIEW z wykorzystaniem protokołu zdalnej interoperacyjności

189 wyświetleń

⸱

DOI:

10.3791/72765

⸱

14 sierpnia 2026

W tym artykule

Podsumowanie

Niniejsze badanie waliduje automatyczne generowanie interfejsu użytkownika w sieci w oparciu o protokół zdalnej interoperacyjności (RIP) z wykorzystaniem dwóch odrębnych systemów LabVIEW — modelu wentylatora oraz modelu sterowania pozycją silnika prądu stałego — i dostarcza odtwarzalną procedurę konstruowania, rejestrowania, wdrażania i testowania obu przykładów.

Streszczenie

Zdalne platformy eksperymentalne umożliwiają dostęp do lokalnych modeli symulacyjnych lub urządzeń fizycznych poprzez sieć, jednak konwencjonalne interfejsy WWW zazwyczaj wymagają osobnej strony, układu sterowania i logiki komunikacji danych dla każdego eksperymentu, co zwiększa koszty rozwoju. Niniejsza praca waliduje ustanowiony schemat automatycznego generowania interfejsu użytkownika (UI) WWW z wirtualnych instrumentów (VI) LabVIEW przy użyciu protokołu zdalnej interoperacyjności (RIP) i dostarcza odtwarzalny protokół jego implementacji. Schemat ten polega na budowie instrumentów LabVIEW VI, które definiują sterowniki wejściowe i wskaźniki wyjściowe na panelu przednim (Front Panel), rejestracji każdego VI w konfiguracji serwera RIP, odczycie wynikowych metadanych zmiennych oraz generowaniu odpowiadających im sterowników i wyświetlaczy wyjściowych w wersji WWW. Caddy jest wykorzystywany jako odwrotny proxy w celu ujednolicenia ścieżki do statycznych plików front-endu oraz ścieżki zapytań do interfejsu programistycznego (API) RIP. Schemat został oceniony na dwóch różnych systemach: modelu prędkości wentylatora oraz modelu proporcjonalno-całkująco-różniczkowego (PID) sterowania pozycją silnika prądu stałego (DC). W obu przypadkach strona WWW identyfikuje udostępnione zmienne, zapisuje dane wejściowe użytkownika w backendzie LabVIEW, odczytuje wyjścia modelu i generuje interfejs na podstawie metadanych RIP. Wyniki te potwierdzają poprawność tego samego procesu automatycznego generowania UI w dwóch różnych systemach dynamicznych i dokumentują kroki niezbędne do jego odtworzenia.

Wprowadzenie

Wraz z rozwojem zdalnych eksperymentów, nauczania online oraz technologii Internetu Rzeczy, zapewnienie dostępu przez sieć do lokalnych modeli symulacyjnych lub urządzeń doświadczalnych stało się ważnym kierunkiem rozwoju platform eksperymentalnych1,2,3,4. Niedawne prace doprowadziły do dalszej integracji laboratoriów wyposażonych w Internet Rzeczy z nauczaniem opartym na projektach oraz dostępem lokalnym lub zdalnym, co dowodzi ciągłego rozwoju elastycznych i sieciowych platform eksperymentalnych w edukacji inżynieryjnej5. W przypadku eksperymentów z systemami sterowania użytkownicy zazwyczaj muszą dostosowywać parametry wejściowe w przeglądarce i obserwować stany wyjściowe w czasie rzeczywistym6,7. Konwencjonalne metody zazwyczaj wymagają oddzielnej strony internetowej, logiki wiązania sterowania i interfejsu komunikacji danych dla każdego obiektu eksperymentalnego8,9. Gdy zmieniają się zmienne w modelu zaplecza (back-end), strona front-end często musi zostać odpowiednio zmodyfikowana, co powoduje znaczny powtarzalny nakład pracy programistycznej i ogranicza szybką rozbudowę platformy eksperymentalnej.

Protokół zdalnej interoperacyjności (Remote interoperability protocol, RIP) zapewnia warstwę pośrednią (middleware) pomiędzy eksperymentalnymi modelami backendowymi a front-endami WWW10,11. W podejściu do automatycznego generowania interfejsu użytkownika (UI) w oparciu o RIP, opisanym w poprzednich pracach, serwer RIP dostarcza metadane dla każdego eksperymentu, obejmujące nazwy zmiennych, atrybuty wejścia/wyjścia, typy danych, wartości minimalne i maksymalne, precyzję, opisy oraz dostępne metody odczytu i zapisu11. Klient WWW może następnie wykorzystać te metadane do utworzenia odpowiadających im elementów HTML, takich jak etykiety, numeryczne pola wprowadzania, suwaki, przełączniki logiczne oraz wyświetlacze wyjściowe, podczas ładowania lub odświeżania strony11. Niniejszy protokół nie implementuje ponownie ani nie redefiniuje specyfikacji RIP. Zamiast tego wykorzystuje istniejącą usługę RIP o otwartym kodzie źródłowym oraz logikę generowania UI HTML na podstawie metadanych RIP jako fundament do komunikacji i generowania interfejsów, skupiając się na powtarzalnej konstrukcji, rejestracji, wdrożeniu proxy i weryfikacji dwóch przykładów VI w środowisku LabVIEW.

W porównaniu z konwencjonalnym tworzeniem niestandardowych interfejsów WWW, automatyczne generowanie interfejsu użytkownika (UI) w oparciu o RIP ogranicza konieczność implementowania układów sterowania, logiki wiązania zmiennych oraz podstawowych funkcji komunikacyjnych w sytuacjach, gdy wiele eksperymentów w LabVIEW wykorzystuje porównywalne skalarne zmienne wejściowe i wyjściowe8,9,10,11. Po zarejestrowaniu nowego VI i udostępnieniu jego zmiennych serwerowi RIP, ta sama logika odczytywania metadanych i generowania elementów sterujących może zostać ponownie wykorzystana do budowy podstawowego interfejsu WWW10,11. Funkcja ta jest przydatna przy szybkim wdrażaniu, pokazach dydaktycznych oraz w platformach laboratoriów zdalnych, które wymagają spójnego dostępu do kilku podobnych eksperymentów3,8,9. Jednak automatycznie generowany interfejs posiada również ograniczenia. Nie wnioskuje on w pełni o relacjach fizycznych między zmiennymi, nie określa automatycznie mapowań wykresów ani nie projektuje specyficznych dla danej dziedziny wizualizacji i interakcji bezpieczeństwa11. Dlatego ręczne tworzenie interfejsu WWW pozostaje preferowane, gdy eksperyment wymaga wysoce spersonalizowanej grafiki, złożonych przepływów pracy użytkownika, zaawansowanej wizualizacji, sprzętowych blokad bezpieczeństwa lub arbitrażu zapisu dla wielu użytkowników.

Ogólny schemat procedury przedstawiono na Rysunku 1. W tym schemacie instrument wirtualny (VI) LabVIEW definiuje najpierw wymagane sterowniki wejściowe i wskaźniki wyjściowe na Panelu Przednim. Następnie VI jest rejestrowany w Konfiguracji Serwera RIP poprzez określenie nazwy eksperymentu i ścieżki do VI. Po rejestracji Serwer RIP odczytuje metadane wybranego eksperymentu i zapewnia dostęp do odczytu/zapisu dla dostępnych zmiennych. Strona internetowa XHTML wykorzystuje zwrócone metadane do automatycznego generowania odpowiednich sterowników wejściowych i wyświetlaczy wyjściowych, natomiast Caddy zapewnia ujednoliconą ścieżkę dostępu dla statycznej strony internetowej oraz tras komunikacyjnych RIP. Modele wentylatora i silnika prądu stałego zostały wykorzystane w niniejszej pracy jako dwie implementacje tego samego schematu działań. W przypadku innych eksperymentów w LabVIEW, które dostarczają kompatybilne zmienne skalarne, numeryczne i booleowskie, programiści mogą stosować ten sam schemat budowania-rejestracji-wdrażania-weryfikacji w celu stworzenia automatycznie generowanego interfejsu internetowego, dodając przy tym specyficzną dla danego eksperymentu wizualizację, logikę bezpieczeństwa lub złożoną obsługę danych, jeśli jest to wymagane.

Niniejszy artykuł nie proponuje nowej architektury RIP ani nie rozszerza zakresu typów danych obsługiwanych już przez RIP. Zamiast tego wykorzystuje RIP jako uznany mechanizm komunikacji i generowania interfejsu użytkownika (UI) w oparciu o metadane, koncentrując się na walidacji tego procesu w dwóch różnych systemach LabVIEW przy jednoczesnym udokumentowaniu odtwarzalnego protokołu implementacji. Wcześniejsze prace przedstawiły podstawową metodę automatycznego generowania interfejsu Web UI na podstawie metadanych RIP, wykorzystując w ramach studium przypadku eksperyment z serwomotorem online11. W poprzednich badaniach opisano również architektury zdalnych laboratoriów z dostępem przez sieć WWW, łączące interaktywne interfejsy z oprogramowaniem inżynieryjnym i LabVIEW9,12. Jednak podczas praktycznej reprodukcji niektóre modele LabVIEW w pierwotnym przypadku badawczym były obarczone problemami związanymi z wersją oprogramowania i kompatybilnością modułów, co utrudniało ich bezpośrednie zastosowanie w nowszym środowisku. Niniejsza praca rekonstruuje zatem dwa kompatybilne instrumenty wirtualne (VI) back-endu — model wentylatora oraz model sterowania położeniem silnika prądu stałego (DC) za pomocą regulatora proporcjonalno-całkująco-różniczkującego (PID) — i stosuje ten sam proces generowania UI sterowany metadanymi w obu przypadkach. Wkładem pracy jest walidacja uznanego przepływu pracy RIP w różnych systemach oraz szczegółowy protokół reprodukcji tego procesu, a nie rozszerzenie ogólności RIP.

Zamierzonymi użytkownikami niniejszego protokołu są badacze, instruktorzy i twórcy systemów laboratoryjnych, którzy korzystają już z VI LabVIEW i potrzebują udostępnić modele symulacyjne lub niskoryzykowe systemy eksperymentalne za pośrednictwem przeglądarki internetowej, bez konieczności niezależnego wdrażania pełnego, niestandardowego interfejsu front-end dla każdego modelu. Protokół jest szczególnie odpowiedni dla eksperymentów wykorzystujących standardowe zmienne numeryczne i logiczne, regulację parametrów oraz monitorowanie stanu w czasie rzeczywistym10,11. Jest on mniej odpowiedni jako samodzielne rozwiązanie dla eksperymentów wymagających złożonych struktur danych, specjalistycznej wizualizacji, rygorystycznych blokad bezpieczeństwa sprzętowego lub arbitrażu zapisu wieloużytkownikowego11. Celem niniejszej pracy jest walidacja automatycznego generowania interfejsu Web w oparciu o RIP przy użyciu dwóch różnych systemów LabVIEW oraz dostarczenie kompletnego, reprodukowalnego protokołu – od konstrukcji VI back-end po interakcję w przeglądarce. Protokół obejmuje definicję zmiennych wejściowych i wyjściowych, rejestrację eksperymentu w serwerze RIP, generowanie interfejsu użytkownika na podstawie metadanych, wdrożenie serwera proxy Caddy oraz weryfikację zdalnego odczytu i zapisu. Zastosowanie tego samego przepływu pracy dla modeli wentylatora i silnika DC wykazuje, że ustalony proces może zostać zreprodukowany bez konieczności ręcznego przepisywania pełnego front-endu Web dla każdego przykładu9,10,11.

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Protokół

Wykonaj następujące kroki, aby zbudować, zarejestrować, wdrożyć i zweryfikować dwa eksperymenty LabVIEW dostępne przez RIP, zgodnie z przebiegiem prac przedstawionym na Rysunku 1. Wszystkie narzędzia i platformy wykorzystane w tej procedurze są wymienione w Tabeli materiałów.

1. Budowa i uruchomienie eksperymentu z modelem wentylatora

  1. Zbuduj model wentylatora VI.
    1. Uruchom program LabVIEW, utwórz nowy program VI i zapisz plik jako fengshan.vi. Zapisz program VI w dowolnym katalogu dostępnym dla procesu RIP WebService. Folder Private służy jedynie jako katalog przykładowy i nie jest na stałe wpisany w kod RIP. Podczas rejestracji eksperymentu w RIP podaj faktyczną ścieżkę do wybranego programu VI.
    2. Na panelu przednim dodaj sterowniki wejściowe dla modelu wentylatora. W tym przykładzie nazwij sterowniki wejściowe Włącz, PWM (modulacja szerokości impulsu), Obciążenie, Tau, Maksymalna prędkość obrotowa (KMaxRPM), i ZaburzenieUstawić Włącz jako kontrolę logiczną (Boolean) oraz ustawić PWM, obciążenie, tau, KMaxRPMi Zaburzenie jako numeryczne elementy sterujące typu double-precision floating-point (DBL). Patrz Tabela uzupełniająca 1 dotyczące fizycznego znaczenia i roli modelowej zmiennych wentylatora.
    3. Dodaj wskaźniki wyjściowe dla modelu wentylatora. W tym przykładzie nazwij wskaźniki wyjściowe PrędkośćRPM, StałaPrędkośćRPM, CzasS, PrędkośćZnormalizowana, PrądA, i PowerWUstaw wszystkie wskaźniki wyjściowe jako wskaźniki DBL.
      ​UWAGA: Tabela 1 opisuje fizyczne znaczenie i rolę w modelu tych zmiennych wyjściowych. Gotowy przedni panel wentylatora przedstawiono na Rycina 2Nazwy zmiennych, zakresy i wielkości kroków przedstawione w Tabela 1 Opisano dwa przykłady zaimplementowane w niniejszym protokole. Nie stanowią one sztywnych wymagań systemu RIP. W przypadku innych eksperymentów w środowisku LabVIEW programiści mogą zdefiniować inne nazwy zmiennych na panelu przednim (Front Panel) oraz inne właściwości numeryczne. Serwer RIP odczytuje rzeczywiste nazwy zmiennych, typy danych, atrybuty wejścia/wyjścia oraz dostępne właściwości numeryczne z metadanych VI, a strona internetowa generuje odpowiadające im elementy sterujące i wyświetlacze na podstawie zwróconych metadanych.
    4. Dodaj pętlę While do diagramu blokowego. Dodaj dwa rejestry przesuwne w celu przechowywania prędkość_poprzednia i czas_poprzednioraz zainicjuj obie wartości do 0.
    5. Dodaj węzeł formuły (Formula Node) wewnątrz pętli While. Połącz Włącz, PWM, Obciążenie, Tau, KMaxRPM, Zakłócenie, prędkość_poprz., i czas_poprzedni do lewych terminali wejściowych węzła Formula Node i ustaw SteadyRPM, speed_next, SpeedNorm, CurrentA, PowerW, i następny czas jako prawostronne terminale wyjściowe.
    6. Zbuduj Włącz logikę sterującą poza węzłem formuły. Użyj Włącz jako sygnał wyboru, tak aby u = PWM kiedy Włącz jest prawdziwe i u = 0 kiedy Włącz jest fałszywe.
    7. Wprowadź kod modelu wentylatora w węźle formuły. Użyj tego kodu do obliczenia prędkości stanu ustalonego, prędkości rzeczywistej, prędkości znormalizowanej, natężenia prądu, mocy oraz czasu pracy; pełny kod znajduje się w Uzupełniającym Pliku Kodowania 1.
    8. Podłącz przyspiesz_dalej wyjście węzła Formula Node do Prędkość RPM wskaźnik i podłączyć przyspieszenie_dalej powrót do prawego rejestru przesuwności dla prędkość_poprzedniaPodłącz StałeRPM do SteadyRPM wskaźnik
    9. Połącz następny_czas do TimeS wskaźnik i podłączyć następny_czas powrót do prawego rejestru przesuwnego dla czas_poprzedniPołącz SpeedNorm, CurrentA, i PowerW do odpowiednich wskaźników wyjściowych.
    10. Dodaj funkcję Wait (oczekiwanie) wewnątrz pętli While i ustaw czas oczekiwania na 50 ms. Dodaj przycisk Stop Local i podłącz go do terminala warunkowego pętli While.
    11. Zapisz plik fengshan.vi. Ukończony schemat blokowy wentylatora przedstawiono na Rycina 3.
      PRZERWA: Po zapisaniu ukończonego VI dla wentylatora pracę można przerwać. Należy ją wznowić później, ponownie otwierając zapisane VI i upewniając się, że wszystkie elementy sterujące, wskaźniki na panelu przednim (Front Panel) oraz połączenia na schemacie blokowym (Block Diagram) są nadal obecne.
  2. Zarejestruj eksperyment z wentylatorem w serwerze RIP.
    1. Otwórz plik RIPWebService.lvproj w Eksploratorze Projektów LabVIEW (LabVIEW Project Explorer)
      .
    2. Otwórz plik Configuration.vi z drzewa projektu i zlokalizuj tabelę konfiguracji eksperymentu.
    3. Dodaj nowy wiersz eksperymentu. W polu Name wpisz fan. W polu pełnej ścieżki wskaż zapisaną plik fengshan.vi. Pola rejestracyjne dla eksperymentu fan są przedstawione w Rycina 4.
    4. Uzupełnij pozostałe pola konfiguracji. W polu Authors wpisz autora eksperymentu, w polu Keywords wpisz Fan, w polu Description wpisz fan speed model, a w polu Sampling Freq wpisz 200.
    5. W menu programu LabVIEW wybierz Edytuj > Ustaw aktualne wartości jako domyślneZapiszKonfigurację.vi.
    6. Zrestartuj usługę sieciową (WebService) RIP i potwierdź, że eksperyment z wentylatorem nadal widnieje w interfejsie konfiguracyjnym (Configuration) po ponownym uruchomieniu.
      UWAGA: Nazwa eksperymentu rozróżnia wielkość liter. Wartość fan w konfiguracji RIP (RIP Configuration) musi być dokładnie zgodna z identyfikatorem eksperymentu (experiment ID) użytym w pliku XHTML front-endu. Aby wdrożyć inny instrument LabVIEW VI z tą samą logiką automatycznego generowania interfejsu użytkownika, należy dodać nowy wpis eksperymentu w konfiguracji RIP (RIP Configuration), ustawić nową wartość Name oraz wskazać Path do odpowiedniego pliku VI. Następnie należy użyć tej samej wartości Name jako identyfikatora eksperymentu w pliku XHTML. Strona front-endu nie wymaga ponownego pisania dla każdej zmiennej.
      ​PUNKT ZATRZYMANIA: Po zapisaniu pliku Configuration.vi i ustawieniu aktualnych wartości jako domyślne, można przerwać proces. Należy go wznowić później, restartując RIP WebService i potwierdzając, że eksperyment z wentylatorem jest nadal zarejestrowany.
  3. Przygotuj stronę front-endową do eksperymentu z wentylatorem.
    1. Umieść plik Fan_Automatic_UI.xhtml w katalogu Client, który służy jako główny katalog front-endu.
    2. Otwórz plik Fan_Automatic_UI.xhtml za pomocą edytora tekstu.
    3. Zlokalizuj zmienną identyfikatora eksperymentu (experiment ID) w sekcji skryptu i ustaw jej wartość na fan.
      UWAGA: Wartość ta musi być identyczna z wartością w polu Name eksperymentu typu „fan” w konfiguracji RIP (RIP Configuration). Ustawienia identyfikatora eksperymentu oraz wspólna logika generowania interfejsu użytkownika w oparciu o metadane dla plików XHTML front-endu są przedstawione w Rysunek 5.
    4. Upewnij się, że strona pobiera aktualne źródło dostępu za pomocą window.location.origin i przesyła żądanie o metadane eksperymentu poprzez rip.info()i przekazuje zwrócone metadane do autobuildUI().
      UWAGA: Strona nie powinna zawierać ręcznie wpisanych nazw zmiennych wentylatora, zakresów ani wielkości kroków. Zamiast tego zmienne zapisywalne są generowane z lista.zapisywalnych.meta, generowane są czytelne zmienne z lista.czytelnych.meta, a atrybuty numeryczne, takie jak min, max i step, są pobierane z metadanych zwróconych przez serwer RIP.
    5. Zapisz plik Fan_Automatic_UI.xhtml.
      ​UWAGA: Aby zastosować tę samą logikę generowania front-endu dla innego VI w środowisku LabVIEW, należy ustawić nowy identyfikator eksperymentu (experiment ID) w pliku XHTML oraz zarejestrować odpowiadającą mu nazwę eksperymentu (experiment Name) i ścieżkę do VI (VI Path) w konfiguracji RIP. Elementy sterujące stroną internetową oraz wyświetlacze wyjściowe są generowane zgodnie z metadanymi zwróconymi przez wybrany eksperyment.
  4. Skonfiguruj ścieżkę dostępu Caddy dla eksperymentu z wentylatorem.
    1. Otwórz plik Caddyfile za pomocą edytora tekstu.
    2. Ustaw główny katalog front-endu na katalog Client zawierający plik Fan_Automatic_UI.xhtml.
    3. Wybierz nieużywany lokalny port dla serwera Caddy, aby umożliwić dostęp przez przeglądarkę do strony internetowej oraz tras RIP. W niniejszym protokole jako przykładowy port dostępu proxy wykorzystano port 8090.
      UWAGA: Port 8090 nie jest wymagany przez RIP ani Caddy. Jeśli port 8090 jest zajęty, należy zastąpić go innym niewykorzystanym portem lokalnym i użyć tego samego portu w adresie przeglądarki.
    4. Dodaj trasę, która przekierowuje /fan na Fan_Automatic_UI.xhtml.
    5. Zidentyfikuj port usługi sieciowej RIP (RIP WebService) skonfigurowany w programie LabVIEW. W niniejszym protokole jako adres usługi sieciowej RIP wykorzystano http://localhost:8001.
      UWAGA: Port 8001 jest portem zaplecza (back-end) usługi LabVIEW/RIP WebService stosowanym w środowisku testowym. Można go zmienić w konfiguracji LabVIEW/RIP WebService. Jeśli używany jest inny port, należy zastąpić adres http://localhost:8001 w pliku Caddyfile odpowiednim adresem usługi RIP WebService.
    6. Dodaj regułę odwrotnego proxy, która przekierowuje żądania /RIP/SSE* pod adres usługi internetowej RIP WebService, na przykład http://localhost:8001.
    7. Dodaj regułę odwrotnego proxy (reverse proxy), która przekierowuje żądania /RIP* na adres usługi sieciowej RIP WebService, na przykład http://localhost:8001. Konfiguracja pliku Caddyfile przedstawiona jest w Rysunek 6.
    8. Otwórz Wiersz poleceń w systemie Windows. Przejdź do lokalnego katalogu pobierania lub instalacji programu Caddy, wpisując następujące polecenie:
      cd /d D:\caddy
      UWAGA: W niniejszym protokole ścieżka D:\caddy jest lokalną ścieżką pobierania lub instalacji programu Caddy wykorzystaną w środowisku testowym. Jeśli program Caddy znajduje się w innym katalogu, należy zastąpić D:\caddy odpowiednią ścieżką lokalną.
    9. Uruchom program Caddy z określonym plikiem Caddyfile, wpisując następującą komendę:
      caddy.exe run --config Caddyfile
    10. Upewnij się, że program Caddy uruchamia się bez zgłaszania błędu konfiguracji. Otwórz adres http://localhost:8090/fan w przeglądarce internetowej i zweryfikuj, czy interfejs użytkownika (Web UI) aplikacji fan został wygenerowany, zgodnie z przedstawionym w Rysunek 7.
      ​UWAGA: Jeśli przeglądarka zwróci błąd 502, należy potwierdzić, że usługa RIP WebService jest uruchomiona, że port usługi RIP WebService w programie LabVIEW jest zgodny z adresem odwrotnego proxy w pliku Caddyfile oraz że wybrany port dostępu Caddy nie jest zajęty.
  5. Zweryfikuj wyniki działania eksperymentu z wentylatorem.
    1. Zweryfikuj, czy strona front-end automatycznie generuje Włącz, PWM, obciążenie, tau, maksymalna prędkość obrotowa (KMaxRPM), i Zakłócenie kontrole wejściowe
    2. Zweryfikuj, czy strona front-end wyświetla PrędkośćRPM, StałeRPM, CzasS, PrędkośćNorm, PrądA, i PowerW zmienne wyjściowe
    3. Dostosuj PWM (Modulacja szerokości impulsu) i zaobserwuj, czy Prędkość RPM wraz ze wzrostem Modulacja szerokości impulsu (PWM) rośnie i maleje w miarę jak PWM (modulacja szerokości impulsu) spada.
    4. Dostosuj obciążenie i zaobserwuj, czy SteadyRPM i Prędkość (RPM) spada wraz ze wzrostem obciążenia.
    5. Dostosuj zakłócenie i zaobserwuj, czy PrędkośćRPM, PrądA, i PowerW zmiana w odpowiedzi na sygnał zakłócający.
    6. Zweryfikuj, czy TimeS nadal wzrasta, co potwierdza, że tylny wentylator VI pracuje w trybie ciągłym.

2. Budowa i wdrożenie eksperymentu sterowania położeniem silnika DC za pomocą regulatora PID

  1. Zbuduj model VI sterowania położeniem silnika prądu stałego za pomocą regulatora PID.
    1. Uruchom program LabVIEW, utwórz nowy VI i zapisz plik jako Motor.vi. Zapisz VI w dowolnym katalogu, do którego dostęp ma proces RIP WebService.
      UWAGA: Folder Private służy wyłącznie jako przykładowy katalog i nie jest na stałe zaprogramowany w RIP. Podczas rejestracji eksperymentu RIP należy wprowadzić rzeczywistą ścieżkę wybranego VI.
    2. Na panelu przednim (Front Panel) dodaj sterowniki wejściowe dla modelu regulacji pozycji silnika DC za pomocą regulatora PID. W tym przykładzie nazwij sterowniki wejściowe Wartość zadana, Kc, Ti, Td, Zakłócenieoraz Resetowanie kontroliUstawić Wartość zadana, Kc, Ti, Td, i Zakłócenie jako sterowniki numeryczne DBL, a sterownik Reset ustaw jako sterownik typu Boolean.
      UWAGA: Tabela 1 opisuje znaczenie fizyczne, rolę w modelu oraz zalecany zakres zmiennych wykorzystanych w tym przykładzie.
    3. Dodaj wskaźniki wyjściowe dla modelu sterowania pozycją silnika prądu stałego za pomocą regulatora PID. W tym przykładzie nazwij wskaźniki wyjściowe Położenie, Napięcie, Czas, i Zmierzona prędkość kątowaUstaw wszystkie wskaźniki wyjściowe jako wskaźniki DBL. Tabela 1 opisuje znaczenie fizyczne i rolę modelową tych zmiennych wyjściowych. Kompletny panel przedni (Front Panel) dla silnika przedstawiono na Rysunek 8.
      UWAGA: Nazwy zmiennych i zakresy wymienione w Tabela 1 Opisz dwa przykłady zaimplementowane w niniejszym protokole. Nie stanowią one sztywnych wymagań dla przepływu pracy automatycznego generowania interfejsu użytkownika (UI) opartego na RIP. W przypadku użycia innego VI LabVIEW, RIP odczytuje rzeczywiste nazwy zmiennych, typy danych, atrybuty wejścia/wyjścia oraz dostępne właściwości numeryczne z metadanych VI. W związku z tym logika generowania front-endu nie musi zawierać na sztywno zakodowanych nazw zmiennych, wartości maksymalnych, wartości minimalnych ani kroków dla każdego eksperymentu.
    4. Dodaj pętlę While do diagramu blokowego. Dodaj sześć rejestrów przesuwnych w celu przechowywania theta, omega, im, e_prev, integ, i czas, oraz zainicjuj wszystkie sześć wartości do 0.
    5. Dodaj węzeł formuły (Formula Node) wewnątrz pętli While. Zgodnie ze schematem modelu regulacji położenia silnika DC za pomocą regulatora PID przedstawionym w Rysunek 9wykorzystaj ten węzeł formuły (Formula Node) jako główny moduł obliczeniowy do wyznaczania błędów, sterowania PID, ograniczania napięcia, modelu elektrycznego, modelu mechanicznego oraz aktualizacji pozycji.
      UWAGA: Wewnętrzne parametry silnika wykorzystane w tym modelu, takie jak R, L, J, b, Kt, Ke, i Vmax, są znormalizowanymi parametrami modelu dydaktycznego, a nie parametrami skalibrowanymi konkretnego silnika fizycznego. Zostały one dobrane w celu uzyskania stabilnej i możliwej do zaobserwowania odpowiedzi symulacyjnej przy wybranym kroku czasowym i ograniczeniu napięcia, tak aby efekty Wartość zadana, Kc, Ti, Td, i Zaburzenie można wyraźnie zademonstrować podczas pracy w środowisku internetowym.
    6. Zestaw sp, theta, omega, im, e_prev, integ, Kc, Ti, Td, zakłócenie, reset, i dt aterminale wejściowe węzła Formula Node. Ustaw theta_następne, omega_następne, im_następne, e_następne, integ_następne, i napięcie elektryczne jako terminale wyjściowe węzła formuły (Formula Node).
    7. Podłącz Wartość zadana kontrola do Sposób wykonania (sp) wejście węzła formuły (Formula Node). Połącz Kc, Ti, Td, i Zakłócenie do Kc, Ti, Td, oraz dzaburzenie iodpowiednio wejścia węzła Formuła (Formula Node).
    8. Przekonwertuj logiczny sygnał sterujący Reset na sygnał numeryczny i podłącz go do resetuj wejście terminalne węzła Formuła (Formula Node). Wykonaj reset stanu, gdy reset nie jest równe 0, a następnie wykonaj sterowanie PID i aktualizację stanu silnika, gdy resetuj wynosi 0.
    9. Dodaj stałą numeryczną dt or ustaw jego wartość na 0,001 s. Podłącz dt do dt terminal wejściowy węzła Formula Node i wykorzystaj go do aktualizacji czasu.
    10. Ustaw wewnętrzne parametry modelu silnika prądu stałego w węźle Formula Node. Patrz Tabela uzupełniająca 2 dotyczącą znaczenia fizycznego i roli modelowej zmiennych motorycznych.
    11. Wprowadź kod sterowania pozycją silnika DC za pomocą regulatora PID do węzła Formula Node. Użyj tego kodu do implementacji logiki resetowania, obliczania błędu, obliczania składnika całkującego, obliczania składnika różniczkującego, sterowania PID, ograniczania napięcia, aktualizacji prądu, aktualizacji prędkości kątowej oraz aktualizacji pozycji; pełny kod znajduje się w uzupełniających plikach z kodem.
    12. Połącz theta_następny do Położenie wskaźnik oraz połączyć theta_następna powrót do odpowiedniego rejestru przesuwności dla theta Połącz omega_next do Wskaźnik zmierzonej prędkości kątoweji podłączyć omega_next powrót do prawego rejestru przesuwnika dla omega
    13. Podłącz napięcie do wskaźnika napięcia. Podłącz im_następne, e_następne, i integ_next powrót do prawych rejestrów przesuwnych dla im, e_prev, i integ, odpowiednio.
    14. Użyj funkcji Add poza węzłem Formula Node, aby obliczyć time_next = time + dt. Połącz następny_czas do Czas wskaźnik i podłączyć następny czas powrót do prawego rejestru przesuwnika czasu.
    15. Dodaj funkcję Wait wewnątrz pętli While i ustaw czas oczekiwania na 1 ms. Dodaj przycisk Stop i podłącz go do terminala warunkowego pętli While.
    16. Zapisz plik Motor.vi. Ukończony schemat blokowy silnika przedstawiono w Rysunek 10.
      PUNKT ZATRZYMANIA: Po zapisaniu ukończonego instrumentu wirtualnego (VI) silnika można przerwać procedurę. Aby ją wznowić, należy ponownie otworzyć zapisany VI i upewnić się, że wszystkie elementy sterujące, wskaźniki na Panelu Przednim (Front Panel) oraz połączenia na Diagramie Blokowym (Block Diagram) są nadal obecne.
  2. Zarejestruj eksperyment motoryczny w serwerze RIP.
    1. Otwórz plik RIPWebService.lvproj w Przeglądarce Projektów LabVIEW (LabVIEW Project Explorer).
    2. Otwórz plik Configuration.vi z drzewa projektu i zlokalizuj tabelę konfiguracji eksperymentu.
    3. Dodaj nowy wiersz eksperymentu. W polu Name wprowadź Motor. W polu Path wprowadź pełną ścieżkę do zapisanego pliku Motor.vi. Pola rejestracji eksperymentu silnika przedstawiono w Rycina 11.
    4. Wypełnij pozostałe pola konfiguracji. W polu Autorzy ustaw autora eksperymentu, w polu Słowa kluczowe wpisz Silnik, w polu Opis wpisz Model sterowania położeniem silnika DC, a w polu Częstotliwość próbkowania wartość 200.
    5. W menu LabVIEW wybierz Edytuj > Ustaw aktualne wartości jako domyślne. Save Configuration.vi.
    6. Zrestartuj usługę sieciową (WebService) RIP i potwierdź, że po ponownym uruchomieniu eksperyment Motor nadal znajduje się na liście w interfejsie konfiguracji.
      UWAGA: Nazwa eksperymentu jest rozróżniana ze względu na wielkość liter. Wartość Motor w konfiguracji RIP (RIP Configuration) musi być dokładnie taka sama, jak identyfikator eksperymentu użyty w pliku Motor_Automatic_UI.xhtml. Aby wdrożyć inny program LabVIEW VI z tą samą logiką automatycznego generowania interfejsu użytkownika, należy dodać nowy wpis eksperymentu w konfiguracji RIP, ustawić nową wartość Name oraz wskazać Path do odpowiedniego pliku VI. Następnie należy użyć tej samej wartości Name jako identyfikatora eksperymentu w pliku XHTML. Strona front-end nie musi być przepisywana dla każdej zmiennej.
      ​MOMENT PRZERWANIA: Po zapisaniu pliku Configuration.vi i ustawieniu aktualnych wartości jako domyślne, można przerwać procedurę. Należy ją wznowić później, restartując RIP WebService i potwierdzając, że eksperyment Motor jest nadal zarejestrowany.
  3. Przygotuj stronę główną (front-end) dla eksperymentu motorycznego.
    1. Umieść plik Motor_Automatic_UI.xhtml w katalogu Client, który służy jako główny katalog front-endu.
    2. Otwórz plik Motor_Automatic_UI.xhtml za pomocą edytora tekstu.
    3. Zlokalizuj zmienną identyfikatora eksperymentu (experiment ID) w sekcji skryptu i ustaw jej wartość na Motor. Wartość ta musi być identyczna z polem Name eksperymentu motorowego w konfiguracji RIP (RIP Configuration). Strona front-endowa eksperymentu motorowego wykorzystuje tę samą logikę generowania interfejsu użytkownika w oparciu o metadane, która została przedstawiona w Rysunek 5; zmieniono jedynie identyfikator eksperymentu, aby był zgodny z wpisem Motor w konfiguracji RIP.
    4. Należy sprawdzić, czy strona zawiera logikę odczytu metadanych RIP, logikę generowania elementów sterujących HTML, funkcję zapisu RIP oraz funkcję aktualizacji wyjściowej.
      UWAGA: Strona nie powinna zawierać ręcznie wpisanych nazw zmiennych silnika, zakresów ani wielkości kroków. Właściwości te są pobierane z metadanych zwracanych przez serwer RIP, zgodnie z opisanym wcześniej mechanizmem generowania treści HTML z metadanych w oparciu o RIP11.
    5. Zapisz Motor_Automatic_UI.xhtml.
      ​UWAGA: Aby wykorzystać tę samą logikę generowania front-endu dla innego instrumentu wirtualnego (VI) LabVIEW, należy ustawić nowy identyfikator eksperymentu w pliku XHTML oraz zarejestrować odpowiadającą mu nazwę eksperymentu i ścieżkę do VI w konfiguracji RIP. Elementy sterujące stroną internetową oraz wyświetlacze wyjściowe są generowane zgodnie z metadanymi zwróconymi przez wybrany eksperyment.
  4. Skonfiguruj ścieżkę dostępu Caddy dla eksperymentu motorycznego.
    1. Otwórz plik Caddyfile za pomocą edytora tekstu.
    2. Ustaw katalog główny front-endu na katalog Client, który zawiera plik Motor_Automatic_UI.xhtml.
    3. Wybierz niewykorzystany lokalny port dla Caddy, aby zapewnić dostęp przez przeglądarkę do strony internetowej i tras RIP. W niniejszym protokole w przykładzie wykorzystano port 8090 jako port dostępu do serwera proxy.
      UWAGA: Port 8090 nie jest wymagany przez RIP ani Caddy. Jeśli port 8090 jest zajęty, należy zastąpić go innym niewykorzystanym portem lokalnym i użyć tego samego portu w adresie przeglądarki.
    4. Dodaj trasę, która przekierowuje /motor do Motor_Automatic_UI.xhtml.
    5. Zidentyfikuj port usługi sieciowej RIP (RIP WebService) skonfigurowany w programie LabVIEW. W niniejszym protokole jako adres usługi sieciowej RIP wykorzystano http://localhost:8001.
      UWAGA: Port 8001 jest portem zaplecza (back-end) usługi sieciowej LabVIEW/RIP WebService wykorzystywanym w środowisku testowym. Można go zmienić w konfiguracji LabVIEW/RIP WebService. W przypadku użycia innego portu należy zastąpić adres http://localhost:8001 w pliku Caddyfile odpowiednim adresem RIP WebService.
    6. Dodaj regułę odwrotnego proxy (reverse proxy), która przekierowuje żądania /RIP/SSE* na adres usługi internetowej (WebService) RIP, na przykład http://localhost:8001.
    7. Dodaj regułę odwrotnego proxy, która przekierowuje żądania /RIP* do adresu RIP WebService, na przykład http://localhost:8001. Konfiguracja Caddyfile przedstawiona jest na Rysunku 6.
    8. Otwórz Wiersz poleceń w systemie Windows. Przejdź do lokalnego katalogu pobierania lub instalacji programu Caddy, wpisując następujące polecenie:
      cd /d D:\caddy
      UWAGA: W niniejszym protokole ścieżka D:\caddy jest lokalną ścieżką pobierania lub instalacji programu Caddy użytą w środowisku testowym. Jeśli program Caddy znajduje się w innym katalogu, należy zastąpić D:\caddy odpowiednią ścieżką lokalną.
    9. Uruchom Caddy z określonym plikiem Caddyfile, wprowadzając następujące polecenie:
      caddy.exe run --config Caddyfile
    10. Upewnij się, że program Caddy uruchamia się bez zgłaszania błędu konfiguracji. Otwórz adres http://localhost:8090/motor w przeglądarce internetowej i zweryfikuj, czy interfejs użytkownika (Web UI) silnika został wygenerowany, zgodnie z przedstawionym w Rysunek 12.
      ​UWAGA: Jeśli strona internetowa silnika ładuje się, ale wartości wyjściowe nie są aktualizowane, należy potwierdzić, że usługa RIP WebService jest uruchomiona, motor VI jest w trakcie wykonywania, port RIP WebService w programie LabVIEW jest zgodny z adresem odwrotnego proxy w pliku Caddyfile oraz że trasa /RIP/SSE* jest poprawnie przekierowana przez proxy.
  5. Zweryfikuj wyniki operacyjne eksperymentu z silnikiem.
    1. Upewnij się, że strona front-end automatycznie generuje Wartość zadana, Kc, Ti, Td, Zakłócenie, i Resetuj kontrola wejść sterujących.
    2. Zweryfikuj, czy strona front-end wyświetla Położenie, Napięcie, Czas, i Zmierzona prędkość kątowa zmienne wyjściowe
    3. Dostosuj Wartość zadana oraz zaobserwuj, czy położenie reaguje na zmianę położenia zadanego.
    4. Dostosuj Kc, Ti, i Td i zaobserwować, czy Napięcie, Pozycja, i Zmierzona prędkość kątowa zmiana
    5. Dostosuj zakłócenie i zaobserwowanie, czy pozycja, napięcie sterujące lub zmierzona prędkość kątowa jest pod wpływem zakłócenie Proszę podać tekst źródłowy do tłumaczenia.
    6. Kliknij Reset control i sprawdź, czy Położenie, Napięcie, Pomierzona prędkość kątowa, a powiązane stany wewnętrzne powracają do swoich stanów początkowych zgodnie z logiką resetowania.

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Wyniki

Po zakończeniu opisanego powyżej przepływu pracy, dostęp do eksperymentu z wentylatorem oraz eksperymentu z kontrolą pozycji PID silnika DC można uzyskać za pomocą automatycznie generowanego interfejsu Web. Pomyślny wynik jest wskazywany przez trzy obserwacje. Po pierwsze, strona internetowa automatycznie generuje elementy sterujące wejściem i pola wyświetlania wyjścia zgodnie z metadanymi zmiennych zwróconymi przez serwer RIP. Po drugie, gdy użytkownik zmienia zmienną wejściową na stronie internetowej, zmodyfikowana war...

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Dyskusja

Kluczowym krokiem w tym protokole jest ustandaryzowana konstrukcja i rejestracja instrumentu VI (Virtual Instrument) w programie LabVIEW pełniącym rolę backendu. Elementy sterujące i wskaźniki na panelu przednim (Front Panel) muszą posiadać jasne i unikalne nazwy zmiennych, a ich typy danych muszą być zgodne ze zmiennymi oczekiwanymi przez obliczenia modelu oraz przez proces odczytu/zapisu RIP. W dwóch przykładach wykorzystanych w tym protokole zmienne numeryczne skalarne zdefiniowano jako sterowniki lub wskaźniki typu D...

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Oświadczenia

Autorzy wykorzystali narzędzia wspomagane przez AI wyłącznie do korekty językowej. Cała treść naukowa, procedury eksperymentalne, implementacja oprogramowania, ryciny, wyniki, interpretacje oraz ostateczna redakcja tekstu zostały sprawdzone, poprawione i zatwierdzone przez autorów. Żadne narzędzie AI nie zostało użyte do generowania danych eksperymentalnych.

Podziękowania

Praca ta była wspierana przez Programy Szkoleniowe dla Studentów Studiów Pierwszego Stopnia w zakresie Innowacji Uniwersytetu w Wuhan.

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Materiały

Lista materiałów użytych w tym artykule
NazwaFirmaNumer katalogowyKomentarze
Serwer proxy CaddyCaddyN/AOdwrócony proxy używany do obsługi interfejsu Web UI i przekazywania żądań /RIP do usługi RIP WebService
CaddyfilePrzygotowany przez autorówN/ADefiniuje trasy plików statycznych oraz trasy odwróconego proxy dla komunikacji RIP
Fan_Automatic_UI.xhtmlPrzygotowany przez autorówN/AInterfejs Web front end oparty na metadanych dla eksperymentu z wentylatorem
LabVIEWNational Instruments2026Oprogramowanie używane do konstrukcji i uruchamiania programów fengshan.vi oraz Motor.vi
System operacyjny Microsoft WindowsMicrosoftWin11System operacyjny używany do uruchamiania LabVIEW, RIP WebService, Caddy oraz przeglądarki
Motor_Automatic_UI.xhtmlPrzygotowany przez autorówN/AInterfejs Web front end oparty na metadanych dla eksperymentu z silnikiem
Przeglądarka stacjonarna Mozilla FirefoxMozilla2026Przeglądarka stacjonarna używana do dostępu do Web UI, narzędzi deweloperskich, obserwacji czasu i zasobów oraz wykonywania zrzutów ekranu z sieci i konsoli
RIP WebServiceUNEDLabshttps://github.com/Nebulous-Systems/rip-server_labviewOdbiera żądania RIP POST i zapewnia warstwę komunikacyjną WebService wykorzystywaną przez front end przeglądarki
Menedżer zadań systemu WindowsMicrosoftWbudowany w system WindowsUżywany do rejestrowania obserwacji zużycia procesora i pamięci na poziomie procesów dla przeglądarki i procesów LabVIEW

Bibliografia

  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.

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Przedruki i uprawnienia

Tagi

Interfejs użytkownika w sieciautomatyczne generowanie interfejsu użytkownikainstrumenty wirtualnekonfiguracja serwera RIPodwrotny serwer proxyproxy Caddykontrola pozycji PIDzmienne metadane

Ten artykuł został opublikowany

Film wkrótce dostępny