$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Po zakończeniu opisanego powyżej procesu przepływu pracy, zarówno eksperyment z wentylatorem, jak i eksperyment sterowania położeniem silnika DC za pomocą regulatora PID są dostępne poprzez automatycznie generowany interfejs WWW. O pomyślnym wyniku świadczą trzy obserwacje. Po pierwsze, strona WWW automatycznie generuje elementy sterujące wejściem i pola wyświetlania wyjść zgodnie z metadanymi zmiennych zwróconymi przez serwer RIP. Po drugie, gdy użytkownik zmienia zmienną wejściową na stronie WWW, zmodyfikowana wartość jest zapisywana w programie VI w module back-end LabVIEW poprzez interfejs RIP. Po trzecie, zmienne wyjściowe obliczone przez program VI w module back-end są zwracane przez RIP i odświeżane na stronie WWW w czasie rzeczywistym. W przypadku eksperymentu z wentylatorem, po wpisaniu adresu http://localhost:8090/fan w przeglądarce, strona automatycznie generuje elementy sterujące wejściem i pola wyjściowe na podstawie metadanych RIP, jak pokazano na Rysunku 7. Strona wejściowa obejmuje Enable, PWM, Load, Tau, KMaxRPM, oraz Disturbance, natomiast strona wyjściowa wyświetla SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA, oraz PowerW. Podczas normalnej pracy wartość TimeS zwiększa się w sposób ciągły, co wskazuje, że program back-end fengshan.vi jest wykonywany. Gdy wartość PWM zostaje zwiększona, SpeedRPM oraz SteadyRPM odpowiednio rosną. Gdy zwiększono Load, prędkość wentylatora spada, ponieważ load redukuje stabilną prędkość pracy. Po dostrojeniu Disturbance można zaobserwować odpowiednie zmiany w SpeedRPM, CurrentA, oraz PowerW. Obserwacje te potwierdzają, że wejścia ze strony WWW są prawidłowo przesyłane do modułu back-end LabVIEW, a obliczone wyjścia są zwracane do front-endu za pośrednictwem RIP.
W przypadku eksperymentu dotyczącego regulacji położenia silnika prądu stałego za pomocą regulatora PID, po wprowadzeniu adresu http://localhost:8090/motor w przeglądarce, strona automatycznie generuje odpowiednie elementy sterujące i pola wyjściowe na podstawie metadanych RIP, co przedstawiono na Ryc. 12. Zmienne wejściowe obejmują Setpoint, Kc, Ti, Td, Disturbance oraz sterowanie Reset, a zmienne wyjściowe obejmują Position, Voltage, Time oraz Measured angular velocity. Po zmianie wartości Setpoint, Position reaguje na nową wartość docelową. Po dostrojeniu parametrów PID Kc, Ti oraz Td, odpowiednio zmieniają się odpowiedź wyjściowa, voltage sterowania oraz measured angular velocity, co wskazuje, że wartości parametrów wprowadzone na stronie internetowej są poprawnie zapisywane w modelu zaplecza LabVIEW i biorą udział w obliczeniach sterowania. Po aktywacji sterowania Reset zmienne modelu wracają do swoich stanów początkowych zgodnie z logiką resetowania.
Błędy po stronie przeglądarki oraz stany komunikacji przedstawiono na Rysunku 13, Rysunku 14, Rysunku 15. Rysunek 13 przedstawia przypadek nieudanego dostępu z poziomu przeglądarki, w którym program Caddy nie jest uruchomiony. Przeglądarka próbuje uzyskać dostęp do adresu http://localhost:8090/motor, ale wyświetla komunikat ERR_CONNECTION_REFUSED, co wskazuje, że lokalna usługa proxy jest niedostępna lub nie nasłuchuje na wybranym porcie dostępu. Rysunek 14 pokazuje błąd komunikacji RIP POST po załadowaniu strony. W tym przypadku konsola przeglądarki zgłasza błąd 502 Bad Gateway dla żądania RIP POST, co oznacza, że front-end dotarł do adresu proxy, ale żądanie nie może zostać pomyślnie przekazane do zaplecza RIP WebService lub przez nie przetworzone. W przeciwieństwie do tego, Rysunek 15 przedstawia normalny stan komunikacji po stronie przeglądarki. Narzędzia programistyczne przeglądarki pokazują pomyślne ładowanie strony, żądania RIP POST oraz aktywną żądanie SSE z expId=fan, co wskazuje, że front-end strony internetowej komunikuje się z RIP WebService poprzez proxy Caddy i otrzymuje aktualizacje w czasie rzeczywistym za pośrednictwem kanału SSE.
Łącznie pomyślne wyniki dla wentylatora i silnika oraz wyniki diagnostyki po stronie przeglądarki wykazują, że ten sam przepływ pracy automatycznego generowania interfejsu użytkownika w oparciu o metadane może zostać zreplikowany dla dwóch różnych eksperymentów w LabVIEW. Wyniki te dostarczają również mierzalnych kryteriów pozwalających odróżnić udaną komunikację od reprezentatywnych błędów wdrożenia, natomiast odpowiadające im procedury rozwiązywania problemów zostały omówione w sekcji Dyskusja.

Rysunek 1: Ogólna struktura systemu eksperymentalnego. System składa się z zaplecza w postaci LabVIEW VI, serwera RIP, proxy Caddy oraz automatycznie generowanego interfejsu użytkownika Web UI. LabVIEW VI dostarcza zmienne modelu, serwer RIP odczytuje metadane VI i wartości zmiennych, Caddy ujednolica ścieżkę dostępu i rozwiązuje problem dostępu międzydomenowego, a Web UI automatycznie generuje elementy sterujące. Nazwa i logo Caddy służą wyłącznie do zidentyfikowania komponentu serwera Web/proxy Caddy wykorzystanego w procesie. Kliknij tutaj, aby wyświetlić powiększoną wersję tego rysunku.

Rycina 2: Panel przedni instrumentu VI wentylatora. Panel przedni zawiera elementy sterujące wejściem dla Enable, PWM, Load, Tau, KMaxRPM oraz Disturbance a także wskaźniki wyjściowe dla SpeedRPM, SteadyRPM, TimeS, SpeedNorm, CurrentA oraz PowerW. Zrzut ekranu został wykonany z panelu przedniego fengshan.vi w programie LabVIEW 2026 w lokalnym środowisku eksperymentalnym autorów. Nie zawarto żadnych danych użytkowników zewnętrznych ani informacji poufnych. Kliknij tutaj, aby wyświetlić powiększoną wersję tej ryciny.

Rysunek 3Schemat blokowy VI wentylatora. Model wentylatora zaimplementowano z wykorzystaniem pętli While oraz rejestrów przesuwnych, Włącz logikę, węzeł formuły (Formula Node) oraz wskaźniki wyjściowe. Zrzut ekranu ten został wykonany z diagramu blokowego pliku fengshan.vi w programie LabVIEW 2026 w lokalnym środowisku eksperymentalnym autorów. Nie zawarto w nim żadnych danych użytkowników stron trzecich ani informacji poufnych. Kliknij tutaj, aby wyświetlić powiększoną wersję tej ryciny.

Rycina 4: Strona konfiguracyjna fan.vi. Eksperyment z wentylatorem jest zarejestrowany w RIP Configuration pod nazwą eksperymentu fan, z podaniem rzeczywistej ścieżki VI, informacji słownikowych, opisu oraz częstotliwości próbkowania. Zrzut ekranu został wykonany z interfejsu RIP Configuration używanego z LabVIEW 2026 i RIP WebService w lokalnym środowisku eksperymentalnym autorów. Nie zawarto danych użytkowników zewnętrznych ani informacji poufnych. Kliknij tutaj, aby wyświetlić powiększoną wersję tej ryciny.

Rysunek 5: Ustawienia identyfikatora eksperymentu oraz logika generowania interfejsu użytkownika na podstawie metadanych w plikach front-endu XHTML. Zrzuty ekranu kodu XHTML zostały wykonane z plików Fan_Automatic_UI.xhtml i Motor_Automatic_UI.xhtml otwartych w programie Visual Studio Code. Strony dotyczące wentylatora i silnika wykorzystują tę samą logikę odczytywania metadanych i generowania sterowania; zmieniono jedynie identyfikator eksperymentu, aby odpowiadał odpowiedniemu polu Name w konfiguracji RIP. Zrzuty ekranu kodu XHTML zostały wykonane z plików Fan_Automatic_UI.xhtml i Motor_Automatic_UI.xhtml otwartych w programie Visual Studio Code w lokalnym środowisku programistycznym autorów. Pliki kodu zostały przygotowane przez autorów na potrzeby niniejszego protokołu. Nie zawarto w nich żadnych danych użytkowników stron trzecich ani informacji poufnych. Kliknij tutaj, aby wyświetlić powiększoną wersję tego rysunku.

Rycina 6: Konfiguracja Caddyfile. Plik Caddyfile definiuje lokalny port dostępu proxy, ustawia główny katalog front-endu, przekierowuje trasy /fan i /motor do odpowiadających im plików XHTML oraz przesyła zapytania /RIP/SSE* i /RIP* przez odwrotny proxy do portu LabVIEW/RIP WebService. Zrzut ekranu konfiguracji Caddyfile został wykonany z pliku Caddyfile otwartego w Visual Studio Code we własnym lokalnym środowisku programistycznym autorów. Plik Caddyfile został przygotowany przez autorów w celu skonfigurowania Caddy jako lokalnego serwera WWW i odwrotnego proxy. Nie zawarto w nim żadnych danych użytkowników stron trzecich ani informacji poufnych. Kliknij tutaj, aby wyświetlić większą wersję tej ryciny.

Rycina 7: Strona interfejsu WWW fan.vi. Ten zrzut ekranu interfejsu WWW został wykonany z lokalnie wdrożonej przez autorów strony internetowej wentylatora przy użyciu przeglądarki Mozilla Firefox. Strona front-end automatycznie generuje elementy sterujące wejściem i wyświetlacze wyjściowe na podstawie metadanych zmiennych zwróconych przez serwer RIP. Ten zrzut ekranu interfejsu WWW został wykonany z lokalnie wdrożonej przez autorów strony internetowej wentylatora przy użyciu przeglądarki Mozilla Firefox. Wyświetlane sterowniki i pola wyjściowe zostały wygenerowane z metadanych RIP w lokalnym środowisku eksperymentalnym autorów. Nie uwzględniono danych użytkowników zewnętrznych ani informacji poufnych. Kliknij tutaj, aby wyświetlić powiększoną wersję tej ryciny.

Rysunek 8: Panel przedni VI silnika. Panel przedni zawiera sterowniki dla Setpoint, Kc, Ti, Td, Disturbance oraz sterowanie Reset, a także wskaźniki Position, Voltage, Time oraz Measured angular velocity. Zrzut ekranu wykonano z panelu przedniego Motor.vi w programie LabVIEW 2026 w lokalnym środowisku eksperymentalnym autorów. Nie zawarto danych użytkowników osób trzecich ani informacji poufnych. Kliknij tutaj, aby wyświetlić powiększoną wersję tego rysunku.

Rysunek 9: Schemat modelu sterowania położeniem silnika DC za pomocą regulatora PID. Schemat przedstawia ścieżkę sygnału od błędu wartości zadanej, przez sterowanie PID, ograniczanie napięcia, superpozycję zakłóceń, dynamikę elektryczną, dynamikę mechaniczną i aktualizację położenia, aż po sprzężenie zwrotne. Kliknij tutaj, aby wyświetlić powiększoną wersję tego rysunku.

Rysunek 10: Schemat blokowy VI silnika. Model silnika zaimplementowano z wykorzystaniem pętli While, rejestrów przesuwnych, węzła formuły, logiki czasowej oraz wskaźników wyjściowych. Zrzut ekranu wykonano z schematu blokowego Motor.vi w programie LabVIEW 2026 w lokalnym środowisku eksperymentalnym autorów. Nie zawarto danych użytkowników osób trzecich ani informacji poufnych. Kliknij tutaj, aby wyświetlić powiększoną wersję tego rysunku.

Rycina 11: Strona konfiguracji Motor.vi. Eksperyment z silnikiem jest zarejestrowany w Konfiguracji RIP pod nazwą eksperymentu Motor, wraz z rzeczywistą ścieżką VI, informacjami o słowach kluczowych, opisem oraz częstotliwością próbkowania. Zrzut ekranu został wykonany z interfejsu Konfiguracji RIP używanego z LabVIEW 2026 i RIP WebService w lokalnym środowisku eksperymentalnym autorów. Nie zawarto żadnych danych użytkowników zewnętrznych ani informacji poufnych. Kliknij tutaj, aby wyświetlić większą wersję tej ryciny.

Rycina 12: Strona interfejsu Web programu Motor.vi.Strona front-end automatycznie generuje sterowniki wejściowe i wyświetlacze wyjściowe dla eksperymentu sterowania położeniem silnika DC za pomocą regulatora PID. Ten zrzut ekranu interfejsu Web został wykonany z lokalnie wdrożonej przez autorów strony internetowej silnika przy użyciu przeglądarki Mozilla Firefox. Wyświetlone sterowniki i pola wyjściowe zostały wygenerowane z metadanych RIP w lokalnym środowisku eksperymentalnym autorów. Nie zawarto żadnych danych użytkowników zewnętrznych ani informacji poufnych. Kliknij tutaj, aby wyświetlić powiększoną wersję tej ryciny.

Rysunek 13: Błąd dostępu w przeglądarce, gdy Caddy nie jest uruchomiony. Gdy Caddy nie jest uruchomiony, lokalny adres proxy http://localhost:8090/motor jest nieosiągalny, a przeglądarka wyświetla komunikat ERR_CONNECTION_REFUSED. Ten objaw błędu wskazuje, że lokalna usługa proxy Caddy jest niedostępna lub nie nasłuchuje na wybranym porcie dostępu. Ten zrzut ekranu z przeglądarki został wykonany przy użyciu programu Mozilla Firefox w lokalnym środowisku testowym autorów i pokazuje stan braku dostępu w sytuacji, gdy lokalne proxy Caddy nie było uruchomione. Nie zawarto żadnych danych użytkowników zewnętrznych ani informacji poufnych. Kliknij tutaj, aby wyświetlić większą wersję tego rysunku.

Rycina 14: Błąd komunikacji RIP POST po załadowaniu strony. Konsola przeglądarki wyświetla błąd 502 Bad Gateway dla żądania RIP POST. Wynik ten wskazuje, że strona internetowa dotarła do adresu proxy Caddy, ale żądanie nie może zostać pomyślnie przekazane do backendu RIP WebService lub nie może zostać przez niego przetworzone. Ten zrzut ekranu z konsoli przeglądarki został wykonany przy użyciu narzędzi Mozilla Firefox Developer Tools w lokalnym środowisku wdrożeniowym autorów i przedstawia błąd komunikacji RIP POST 502 Bad Gateway. Nie zamieszczono żadnych danych użytkowników zewnętrznych ani informacji poufnych. Kliknij tutaj, aby wyświetlić większą wersję tej ryciny.

Rycina 15: Status komunikacji po stronie przeglądarki podczas normalnej pracy. Narzędzia deweloperskie przeglądarki pokazują pomyślne ładowanie strony, żądania RIP POST oraz aktywne żądanie SSE z expId=fan. Żądania te wskazują, że front-end WWW komunikuje się z usługą RIP WebService poprzez serwer proxy Caddy i otrzymuje aktualizacje w czasie rzeczywistym za pośrednictwem kanału SSE. Zrzut ekranu z narzędzi deweloperskich przeglądarki został wykonany przy użyciu przeglądarki Mozilla Firefox w lokalnym środowisku wdrożeniowym autorów i przedstawia prawidłową komunikację RIP POST oraz SSE. Nie zawarto żadnych danych użytkowników zewnętrznych ani informacji poufnych. Kliknij tutaj, aby wyświetlić większą wersję tej ryciny.

Rysunek 16: Pojedyncza reprezentatywna obserwacja zasobów na poziomie konsoli przeglądarki i procesu dla eksperymentu z wentylatorem. Zrzut ekranu został wykonany podczas lokalnego testu eksperymentu z wentylatorem. Konsola pokazuje czas żądania/odpowiedzi metadanych, liczbę zmiennych metadanych, czas generowania interfejsu użytkownika w oparciu o metadane, czas otwarcia połączenia SSE oraz odebrane dane SSE. Widok menedżera zadań pokazuje wartości CPU i pamięci na poziomie procesu dla procesów przeglądarki i LabVIEW w momencie przechwycenia obrazu. Wartości te są opisowymi obserwacjami z tego pojedynczego testu i nie stanowią powtarzalnych pomiarów wydajności ani benchmarku statystycznego. Zrzut ekranu został wykonany za pomocą narzędzi programisty Mozilla Firefox oraz Menedżera zadań systemu Windows w lokalnym środowisku testowym autorów. Do rejestracji wyjścia konsoli przeglądarki użyto przeglądarki Mozilla Firefox, a do obserwacji zużycia CPU i pamięci dla procesów przeglądarki i LabVIEW – Menedżera zadań systemu Windows. Nie dołączono żadnych danych użytkowników zewnętrznych ani informacji poufnych. Kliknij tutaj, aby wyświetlić większą wersję tego rysunku.

Rycina 17: Jednoczesny dostęp do tej samej strony WWW opartej na RIP z przeglądarki komputerowej i mobilnej. Strona eksperymentu z wentylatorem została otwarta równolegle na komputerze PC i urządzeniu mobilnym, a oba klienty wyświetlają automatycznie generowane sterowniki i zmienne wyjściowe. Dostęp do strony WWW na komputerze uzyskano za pomocą przeglądarki Mozilla Firefox, a do strony mobilnej za pomocą przeglądarki mobilnej w tym samym lokalnym środowisku sieciowym. Zrzuty ekranu zostały wykonane we własnym lokalnym środowisku testowym autorów. Nie zawarto żadnych danych użytkowników zewnętrznych ani informacji poufnych. Kliknij tutaj, aby zobaczyć powiększoną wersję tej ryciny.
| Nazwa zmiennej | Typ danych | Wejście/Wyjście | Znaczenie fizyczne | Rola w modelu | Zakres/Ustawienie |
| Enable | Boolean | Wejście | Przełącznik pracy wentylatora | Steruje tym, czy model odbiera sygnał PWM. Gdy True, u = PWM; gdy False, u = 0. | True / False |
| PWM | DBL | Wejście | Sygnał sterujący napędem | Określa podstawową intensywność napędu wentylatora i jest głównym wejściem używanym do obliczania prędkości stanu ustalonego SteadyRPM. | 0-1, krok 0,01 |
| Load | DBL | Wejście | Współczynnik obciążenia | Opisuje efekt osłabiający wpływ obciążenia na prędkość stanu ustalonego. Wraz ze wzrostem Load, prędkość stanu ustalonego maleje. | 0-1, krok 0,01 |
| Tau | DBL | Wejście | Stała czasowa odpowiedzi | Określa, jak szybko prędkość wentylatora zbliża się do prędkości stanu ustalonego ze stanu poprzedniego. | 0,1-5, krok 0,1 |
| KMaxRPM | DBL | Wejście | Prędkość maksymalna | Ustawia maksymalną prędkość dopuszczalną w modelu; służy do ograniczania prędkości i normalizacji. | 500-6000, krok 100 |
| Disturbance | DBL | Wejście | Wejście zakłóceń | Reprezentuje wpływ zakłóceń zewnętrznych lub wahań obciążenia na prędkość stanu ustalonego, prąd i moc. | 0-1, krok 0,1 |
| SpeedRPM | DBL | Wyjście | Prędkość rzeczywista | Reprezentuje aktualną prędkość wyjściową wentylatora, aktualizowaną poprzez dynamikę bezwładności pierwszego rzędu. | Obliczana przez model |
| SteadyRPM | DBL | Wyjście | Prędkość stanu ustalonego | Reprezentuje teoretyczną prędkość stanu ustalonego przy obecnych warunkach wejściowych. | Obliczana przez model |
| TimeS | DBL | Wyjście | Czas pracy | Reprezentuje ciągły czas pracy modelu. | Obliczana przez model |
| SpeedNorm | DBL | Wyjście | Prędkość znormalizowana | Reprezentuje stosunek SpeedRPM do KMaxRPM. | 0-1 lub obliczana przez model |
| CurrentA | DBL | Wyjście | Prąd | Reprezentuje szacowany prąd modelu, który zmienia się wraz z sygnałem sterującym i wejściem zakłóceń. | Obliczana przez model |
| PowerW | DBL | Wyjście | Moc | Reprezentuje szacowaną moc modelu, obliczaną na podstawie stałej napięcia i prądu. | Obliczana przez model |
| Setpoint | DBL | Wejście | Pozycja zadana | Ustawia pozycję, którą powinien osiągnąć silnik; wraz z rzeczywistą pozycją Position tworzy błąd e. | -3-3, krok 0,1 |
| Kc | DBL | Wejście | Wzmocnienie proporcjonalne | Reguluje siłę odpowiedzi regulatora PID na błąd. | 0-10, krok 0,1 |
| Ti | DBL | Wejście | Czas całkowania | Reguluje działanie całkujące regulatora PID i służy do redukcji błędu stanu ustalonego. | 0-10, krok 0,1 |
| Td | DBL | Wejście | Czas różniczkowania | Reguluje działanie różniczkujące regulatora PID; służy do tłumienia zbyt gwałtownych zmian błędu i poprawy odpowiedzi dynamicznej. | 0-5, krok 0,1 |
| Disturbance | DBL | Wejście | Wejście zakłóceń | Reprezentuje zakłócenie zewnętrzne nałożone na wejście silnika, działające na model silnika wraz z napięciem sterującym. | 0-10, krok 0,1 |
| Reset control | Boolean | Wejście | Reset sterowania | Wyzwala czyszczenie stanu modelu, aby pozycja, prędkość kątowa, prąd, błąd i człon całkujący powróciły do stanów początkowych. | True / False |
| Position | DBL | Wyjście | Pozycja rzeczywista | Reprezentuje aktualną pozycję kątową silnika i służy jako zmienna sprzężenia zwrotnego dla sterowania PID. | Obliczana przez model |
| Voltage | DBL | Wyjście | Napięcie sterujące | Reprezentuje wyjście regulatora PID po ograniczeniu napięcia; działa na wejście silnika. | Obliczana przez model; ograniczone do -24 do 24 V |
| Time | DBL | Wyjście | Czas pracy | Reprezentuje ciągły czas pracy modelu silnika. | Obliczana przez model |
| Measured angular velocity | DBL | Wyjście | Zmierzona prędkość kątowa | Reprezentuje aktualną prędkość kątową silnika i stanowi wyjście stanu mechanicznego silnika. | Obliczana przez model |
Tabela 1: Zmienne wejściowe i wyjściowe użyte w przykładach z wentylatorem i silnikiem DC. Tabela zawiera nazwę każdej zmiennej, typ danych, rolę wejścia/wyjścia, znaczenie fizyczne, zalecany zakres oraz wielkość kroku.
| Parametr | Wartość | Znaczenie fizyczne | Rola w modelu |
| R | 1 | Rezystancja stojana | Reprezentuje człon rezystancji w obwodzie induktora silnika i określa spadek napięcia R × im w równaniu prądu. |
| L | 0.5 | Indukcyjność prądu szczotkowego | Reprezentuje indukcyjność obwodu stojana i określa szybkość zmiany prądu. Większa wartość L powoduje wolniejszą odpowiedź prądową. |
| J | 0.01 | Moment bezwładności | Reprezentuje opór rotora silnika przeciwko zmianom przyspieszenia kątowego i określa, jak szybko zmienia się prędkość kątowa. |
| b | 0.1 | Współczynnik tłumienia lepkościowego | Reprezentuje tłumienie mechaniczne i opisuje moment tłumienia, który utrudnia wzrost prędkości kątowej podczas obrotu. |
| Kt | 0.01 | Stała momentu obrotowego | Reprezentuje współczynnik proporcjonalności, który przelicza prąd stojana na moment obrotowy elektromagnetyczny. |
| Ke | 0.01 | Stała przeciwprądu elektromotorycznego | Reprezentuje współczynnik proporcjonalności, z którym prędkość kątowa generuje przeciwemf, i opisuje wpływ prędkości na natężenie prądu w mechanizmie sprzężenia zwrotnego. |
| Vmax | 24 | Maksymalne napięcie sterujące | Reprezentuje limit napięcia wyjściowego kontrolera i utrzymuje napięcie w zakresie od -24 V do 24 V. |
| dt | 0.001 | Dyskretny krok symulacji | Reprezentuje odstęp czasu dla każdej aktualizacji stanu w pętli i jest wykorzystywany do aktualizacji prądu, prędkości kątowej, położenia oraz czasu pracy. |
Tabela 2: Parametry wewnętrzne wykorzystane w modelu regulacji położenia silnika DC za pomocą kontrolera PID. W tabeli wymieniono parametry elektryczne i mechaniczne, symbole, wartości liczbowe, jednostki oraz role w modelu.
Dodatkowe pliki kodu: kompletne pliki źródłowe i konfiguracyjne do odtworzenia przykładów z wentylatorem i silnikiem prądu stałego. Dodatkowe pliki kodu obejmują kod węzła formuły (Formula Node) LabVIEW, konfigurację reverse-proxy Caddy, pliki front-endu XHTML oraz źródłowe pliki VI LabVIEW użyte w tym protokole. Plik Code in LabVIEW Formula Node.docx zawiera kod węzła formuły dla modeli PID sterowania położeniem wentylatora i silnika prądu stałego. Plik Caddyfile.txt zawiera konfigurację lokalnego serwera WWW i reverse-proxy. Pliki Fan_Automatic_UI.xhtml oraz Motor_Automatic_UI.xhtml zawierają logikę front-endu WWW opartą na metadanych. Pliki fengshan.vi oraz Motor.vi to pliki VI back-endu LabVIEW dla eksperymentów z wentylatorem i silnikiem.Kliknij tutaj, aby pobrać ten plik.