Osadzanie zewnętrznych interfejsów HMI
Wiele maszyn przemysłowych udostępnia własny HMI (Human-Machine Interface) przez lokalny serwer webowy. Ten przewodnik pokazuje, jak udostępnić te interfejsy HMI z poziomu interfejsu IronFlock, używając widgetu Osadź, nginx reverse proxy i tuneli zdalnego dostępu.
Podstawowy przykład: pojedyncza maszyna
Najprostszy przypadek to pojedyncza maszyna CNC (lub PLC, kamera itp.), której serwer webowy HMI jest dostępny z sieci lokalnej urządzenia brzegowego — na przykład pod adresem 192.168.1.50:8080.
1. Skonfiguruj adres maszyny jako parametr aplikacji
Użyj parametru aplikacji, aby umożliwić użytkownikowi konfigurację lokalnego adresu HMI maszyny (np. 192.168.1.50:8080). W ten sposób adres nie jest wpisany na sztywno i może być ustawiony osobno dla każdej instalacji na urządzeniu.
2. Dodaj nginx reverse proxy w kodzie brzegowym
W konfiguracji Docker swojej aplikacji dołącz prosty kontener nginx, który odczytuje skonfigurowany adres maszyny i przekazuje go do stałego portu na urządzeniu brzegowym — na przykład localhost:3000. Kod brzegowy odczytuje parametr aplikacji i odpowiednio konfiguruje nginx.
3. Zdefiniuj stały port w szablonie portów
W swoim szablonie portów zadeklaruj port, na którym nasłuchuje nginx:
# .ironflock/port-template.yml
ports:
- name: CNC Machine HMI
port: 3000
main: falsePort musi być stały (nie przydzielany dynamicznie), ponieważ portów zdalnego dostępu nie można dodawać w czasie wykonywania — są definiowane w czasie wydania i konfigurowane dla każdej instalacji.
Dzięki zadeklarowaniu portu w port-template.yml aplikacja oferuje zdalny dostęp do maszyny CNC. Zainstalowanie aplikacji na urządzeniu produkcyjnym włącza ten tunel. Pozostaje on prywatny — mogą go otworzyć tylko użytkownicy zalogowani do IronFlock, którzy mają dostęp do urządzenia — a użytkownicy z uprawnieniem Sieć mogą go wyłączyć w ustawieniach aplikacji.
Zdalny dostęp jest tu potrzebny, ponieważ użytkownik korzystający z HMI pracuje na swoim lokalnym laptopie, a nie w sieci urządzenia brzegowego. Technologia tuneli IronFlock tworzy bezpieczne połączenie z przeglądarki użytkownika aż do przekazywanego portu urządzenia brzegowego.
4. Dodaj widget Osadź do panelu
W UI Builder dodaj widget Osadź wskazujący na adres tunelu zdalnego dostępu urządzenia na porcie 3000. Oryginalny HMI maszyny CNC pojawia się teraz bezpośrednio w panelu IronFlock.
Ta podstawowa konfiguracja zapewnia zdalny dostęp do HMI pojedynczej maszyny per urządzenie — bez VPN, bez zmian w firewallu.
Zaawansowane: wiele maszyn per urządzenie
Gdy urządzenie brzegowe jest połączone z kilkoma maszynami, możesz rozszerzyć wzorzec, aby obsługiwać wszystkie ich interfejsy HMI przez jeden przekazywany port, używając routingu opartego na ścieżkach.
1. Przechowuj adresy maszyn w tabeli backendu danych
Dodaj tabelę do swojego backendu danych, która śledzi szczegóły każdej maszyny, w tym adres lokalnego serwera webowego i przekierowaną ścieżkę:
# .ironflock/data-template.yml
data:
tables:
- tablename: machines
maintainLatestFlagFor: ['machine_id']
columns:
- id: tsp
dataType: timestamp
- id: machine_id
dataType: string
- id: name
dataType: string
- id: local_hmi_address
dataType: string
- id: forwarded_hmi_path
dataType: string2. Routuj wiele maszyn przez nginx
Skonfiguruj nginx tak, aby działał jako reverse proxy dla każdej maszyny na oddzielnej ścieżce pod tym samym stałym portem. Na przykład przekieruj 192.168.1.50:8080 do localhost:3000/cnc1/ i 192.168.1.51:8080 do localhost:3000/cnc2/. Zapisz te przekierowane ścieżki z powrotem w tabeli machines, aby panel wiedział, gdzie znaleźć każdy HMI.
Obowiązuje ten sam stały port i ten sam szablon portów co w podstawowym przykładzie — jeden port obsługuje wszystkie maszyny przez różne ścieżki.
3. Dodaj widgety Osadź z nawigacją opartą na stronach
W UI Builder utwórz oddzielną stronę panelu dla HMI każdej maszyny i na każdej stronie dodaj widget Osadź, który odczytuje forwarded_hmi_path z tabeli machines i używa go jako adresu URL osadzenia.
Aby umożliwić użytkownikom przełączanie między HMI, użyj funkcji Strony i nawigacja. Dodaj widget Nawigacja boczna, który wyświetla wszystkie podłączone maszyny jako pionowe menu paska bocznego. Elementy paska bocznego mogą być generowane dynamicznie z tabeli machines, dzięki czemu nowe maszyny pojawiają się automatycznie. Gdy użytkownik kliknie nazwę maszyny, panel przechodzi do odpowiedniej strony, a widget Osadź na tej stronie ładuje właściwy HMI.
Wynik
Użytkownicy mogą przeglądać wszystkie podłączone maszyny w panelu, wybrać jedną i wchodzić w interakcję z jej oryginalnym HMI bezpośrednio w IronFlock — bez VPN, bez osobnej karty przeglądarki, bez konfiguracji firewalla. Widget Osadź, backend danych i tunel zdalnego dostępu współpracują ze sobą, tworząc spójny i bezpieczny interfejs sterowania całą flotą maszyn.