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 Embed, nginx reverse proxy i tuneli dostępu zdalnego.
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 zahardkodowany i może być ustawiony per instalacja urządzenia.
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 konfiguruje nginx odpowiednio.
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 dostępu zdalnego nie można dodawać w czasie wykonywania — są definiowane w czasie wydania i konfigurowane per instalacja.
4. Dodaj widget Embed do panelu
W UI Builder dodaj widget Embed wskazujący na adres tunelu dostępu zdalnego 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 do reverse-proxy 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/.
3. Dodaj widgety Embed z nawigacją opartą na stronach
W UI Builder utwórz oddzielną stronę panelu dla HMI każdej maszyny i dodaj widget Embed na każdej stronie, który odczytuje forwarded_hmi_path z tabeli machines i używa go jako URL osadzenia.
Aby umożliwić użytkownikom przełączanie między HMI, użyj funkcji Strony i nawigacja. Dodaj widget Nawigacja boczna wylistowujący wszystkie podłączone maszyny jako pionowe menu paska bocznego.
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.