Uruchomienie wizualizacji webowej sterownika PLC w trybie kiosk w systemie Linux (Ubuntu / LXDE)
Kontakt w sprawie artykułu: Wojciech Talik - 2026-11-10

Artykuł przedstawia konfigurację komputera przemysłowego jako stanowiska operatorskiego wyświetlającego wizualizację ze sterownika PLC. Opisane kroki wykonano na komputerze przemysłowym z systemem Ubuntu i środowiskiem graficznym LXDE.
Konfiguracja obejmuje cztery etapy: nadanie adresu IP, utworzenie skryptu uruchomieniowego, jego przetestowanie oraz włączenie autostartu.
Uwaga:
Wszystkie polecenia podano dla konta root, na którym wykonano opisywaną konfigurację, dlatego ścieżki prowadzą do katalogu /root. Instrukcja działa również na koncie zwykłego użytkownika, wówczas ścieżki należy zastąpić katalogiem domowym tego konta.
Przed konfiguracją stanowiska należy potwierdzić, że sterownik faktycznie udostępnia wizualizację. Adres otwiera się w zwykłej przeglądarce na komputerze:
http://<IP_sterownika>:8080/webvisu.htm
WebVisu jest udostępniane wyłącznie wtedy, gdy aplikacja w sterowniku pracuje w trybie Run. Przy zatrzymanej aplikacji adres pozostaje nieosiągalny mimo poprawnie działającej sieci. Aplikację w sterowniku warto zapisać jako boot application, aby uruchamiała się automatycznie po zaniku zasilania.
Krok 1. Sprawdzenie połączenia sieciowego
Komputer i sterownik muszą znajdować się w tej samej podsieci. Kabel należy podłączyć do portu Ethernet sterownika (skonfigurowanego jako Static), nie do portu EtherCAT, który służy wyłącznie do komunikacji z modułami rozszerzeń i napędami.
Sprawdzenie nazwy interfejsu i przypisanego adresu w komputerze:
ip -br addrInterfejs przewodowy nosi zwykle nazwę eth0. Jeżeli w wierszu widnieje wyłącznie adres inet6, oznacza to brak adresu IPv4, więc komputer nie nawiąże wówczas połączenia ze sterownikiem.
Krok 2. Nadanie adresu IP
Adresy podane w przykładach pochodzą z opisywanego stanowiska testowego i należy je zastąpić adresami z własnej instalacji. Sterownik ma adres ustawiony fabrycznie lub skonfigurowany w webserverze, natomiast komputerowi nadaje się dowolny wolny adres z tej samej podsieci, czyli np. o zgodnych trzech pierwszych członach przy masce 255.255.255.0.
Usunięcie poprzedniej konfiguracji
Jeżeli interfejs ma już przypisany adres z innej podsieci, należy go usunąć przed nadaniem nowego. Polecenie ip addr add dodaje kolejny adres, nie zastępuje istniejącego, co prowadzi do sytuacji, w której interfejs ma dwa adresy jednocześnie, a system wybiera trasę w sposób nieprzewidywalny.
sudo ip addr flush dev eth0Jeżeli po chwili poprzedni adres powraca, przywraca go profil NetworkManagera. Aktywne profile sprawdza się poleceniem:
nmcli con show –activea wyłącza poleceniem:
sudo nmcli con down <nazwa>Zmiany adresacji wykonuje się lokalnie na stanowisku, nie przez SSH, ponieważ wyczyszczenie adresu na karcie obsługującej sesję zdalną zrywa połączenie. Jeśli chcemy usunąć dane profile, używamy polecenia:
nmcli -f NAME,UUID,DEVICE con showBy usunąć wszystkie jednocześnie po nazwie, używamy:
sudo nmcli con delete sterownikBy usunąć wszystkie jednocześnie po UUID, używamy:
sudo nmcli con delete UUID(w miejsce UUID wprowadzamy kod, który uzyskaliśmy za pomocą pierwszego polecenia w kroku 1.
Adres tymczasowy (do testów)
Aby nadać adres tymczasowy, używamy komendy:
sudo ip addr add 192.168.1.101/24 dev eth0Adres nadany w ten sposób zostanie utracony po ponownym uruchomieniu komputera. Rozwiązanie jest odpowiednie do testów, ponieważ nie modyfikuje konfiguracji systemu.
Adres stały (do pracy docelowej)
Jeżeli siecią zarządza NetworkManager, należy utworzyć profil połączenia:
sudo nmcli con add type ethernet ifname eth0 con-name sterownik ip4 192.168.1.101/24
sudo nmcli con up sterownikCelowo nie podaje się bramy ani serwera DNS, ponieważ stanowisko operatorskie ma komunikować się wyłącznie ze sterownikiem, bez dostępu do sieci zewnętrznej.
Aby usunąć profil i przywrócić stan poprzedni, wykonujemy (opisane wcześniej) polecenie:
sudo nmcli con delete sterownikWeryfikacja
Aby zweryfikować połączenie, używamy:
ping -c 3 192.168.1.10Odpowiedź sterownika oznacza poprawnie skonfigurowane połączenie. Należy pingować adres portu danego sterownika.
Krok 3. Utworzenie skryptu uruchomieniowego
Wpisanie poniższego kodu zapisze skrypt w pliku kiosk.sh. Zapisane zostaną wszystkie wpisywane linie, aż do napotkania linii zawierającej EOF:
cat > /root/kiosk.sh << 'EOF'
#!/bin/bash
sleep 15
rm -f /root/.config/chromium/Singleton*
URL="http://192.168.1.10:8080/webvisu.htm"
chromium --no-sandbox --kiosk "$URL"
EOFZnaczenie poszczególnych elementów:
#!/bin/bash – informacja dla systemu, jakim interpreterem wykonać plik.
sleep – opóźnienie startu przeglądarki. Po podaniu zasilania sterownik potrzebuje czasu na uruchomienie serwera WWW, bez opóźnienia przeglądarka wyświetliłaby błąd.
rm – ta komenda usuwa pliki, które mogły błędnie pozostać niewyczyszczone po poprzedniej sesji, w szczególności błędnie zamkniętej.
URL – adres wizualizacji złożony z adresu IP sterownika, portu serwera WWW oraz nazwy pliku startowego. Port i nazwa pliku wynikają z ustawień obiektu WebVisu w projekcie (czyli zamiast 192.168.1.10 wpisujemy adres sterownika, a 8080 jest to zazwyczaj domyślny adres wizualizacji).
chromium – uruchomienie przeglądarki Chromium.
Opcja –kiosk – tryb pełnoekranowy. Wychodzimy klawiszem F11
Opcja –no-sandbox – wyłączenie mechanizmu izolacji procesów przeglądarki. Ten tryb jest konieczny wyłącznie przy uruchamianiu na koncie root, ponieważ Chromium domyślnie odmawia startu z uprawnieniami administratora. Na koncie zwykłego użytkownika należy go pominąć.
W efekcie powstanie plik kiosk.sh o zawartości:
#!/bin/bash
sleep 15
rm -f /root/.config/chromium/Singleton*
URL="http://192.168.1.10:8080/webvisu.htm"
chromium --no-sandbox --kiosk "$URL"Należy nadać mu prawa do wykonania:
chmod +x /root/kiosk.shAby sprawdzić zawartość zapisanego pliku, wpisujemy:
cat /root/kiosk.shKrok 4. Test uruchomienia
Skrypt uruchamiamy poleceniem:
/root/kiosk.shPo odczekaniu czasu określonego w skrypcie na ekranie powinna pojawić się wizualizacja w trybie pełnoekranowym. Jeśli wybraliśmy tryb –start-fullscreen, można wyjść klawiszem F11, jeśli wybraliśmy —kiosk to musimy zrestartować komputer.
Krok 5. Włączenie autostartu
Środowisko LXDE odczytuje listę programów uruchamianych po starcie sesji z pliku autostart w katalogu konfiguracyjnym użytkownika. Poniższe polecenia dodadzą do tego pliku nasz skrypt kiosk.sh:
mkdir -p /root/.config/lxsession/LXDE
echo "@/root/kiosk.sh" >> /root/.config/lxsession/LXDE/autostartPolecenie mkdir (UWAGA: za –p jest spacja) tworzy katalog konfiguracyjny wraz z katalogami nadrzędnymi, jeżeli jeszcze nie istnieją.
Znak @ na początku linii powoduje, że środowisko ponownie uruchomi program w przypadku jego nieoczekiwanego zamknięcia. Jest to zachowanie pożądane na stanowisku operatorskim, utrudnia jednak wprowadzanie zmian, ponieważ po zabiciu procesu przeglądarka natychmiast startuje ponownie.
W komendzie stosuje się raczej „>>”, nie „>”. Plik autostartu w katalogu użytkownika jest kopią pliku globalnego /etc/xdg/lxsession/LXDE/autostart i zastępuje go przy starcie sesji, a nie uzupełnia. Zawiera wpisy uruchamiające pasek zadań, pulpit z ikonami i wygaszacz. Zapisanie pojedynczym > usuwa je, przez co po restarcie pozostaje samo tło – bez paska i bez menu kontekstowego. Więc jeśli jesteśmy pewni, że nie chcemy mieć dostępu do początkowej konfiguracji, można zastosować > zamiast >>.
Odtworzenie pliku początkowej konfiguracji po nadpisaniu:
cp /etc/xdg/lxsession/LXDE/autostart /root/.config/lxsession/LXDE/autostartPoprawność zapisu warto sprawdzić poleceniem:
cat /root/.config/lxsession/LXDE/autostartW pliku powinna widnieć pełna ścieżka do skryptu. Po skończonej konfiguracji restartujemy panel.
Wyłączenie autostartu (jeszcze przed restartem jeśli mamy dostęp do terminala):
sed -i '/kiosk.sh/d' /root/.config/lxsession/LXDE/autostartWyjście z trybu kiosk
Tryb kiosk celowo uniemożliwia operatorowi opuszczenie wizualizacji i uzyskanie dostępu do systemu operacyjnego. Ta sama właściwość utrudnia jednak pracę osobie konfigurującej stanowisko. Kontrolę nad systemem odzyskuje się w poniższy sposób.
Procedura:
1. Kliknąć klawisz F11, będąc już w naszej wizualizacji.
2. Kliknąć prawym przyciskiem myszy na obszarze ekranu. Środowisko LXDE wyświetli menu kontekstowe, w którym pierwszą pozycją jest otwarcie Terminal emulator lub terminal, jeśli nie nadpisaliśmy plików autostartu.
3. W otwartym terminalu wyłączyć autostart, a następnie zresetować komputer:
pkill -f chromium
cp /etc/xdg/lxsession/LXDE/autostart /root/.config/lxsession/LXDE/autostart
rm -f /root/kiosk.sh
rm -rf /root/.config/chromiumKolejność poleceń ma znaczenie. Dwie ostatnie linijki wpisujemy wtedy kiedy chcemy usunąć na stałe naszą konfigurację i zacząć od nowa. Restartujemy następnie komputer.
Po wprowadzeniu poprawek autostart przywraca się poleceniem z kroku 5.
Uwagi wdrożeniowe
Dostęp zdalny należy skonfigurować przed włączeniem autostartu. Uruchomienie trybu kiosk bez zapewnionej możliwości połączenia zdalnego oraz bez znajomości hasła do konta użytkownika może uniemożliwić wprowadzanie dalszych zmian w konfiguracji.
Praca na koncie root nie jest zalecana. Stanowisko operatorskie powinno docelowo działać na koncie zwykłego użytkownika o ograniczonych uprawnieniach. Lecz opisywaną konfigurację podczas testów wykonano na koncie root, co znajduje odzwierciedlenie w ścieżkach podanych w poleceniach.
Adres IP musi być zapisany na stałe. Przy adresie nadanym tymczasowo poleceniem ip addr add konfiguracja przestanie działać po pierwszym zaniku zasilania.
Czas opóźnienia należy dobrać do sprzętu. Zbyt krótka wartość powoduje, że przeglądarka startuje przed serwerem WWW sterownika i wyświetla błąd połączenia. Efekt ten ujawnia się zwłaszcza po całkowitym wyłączeniu i ponownym załączeniu zasilania stanowiska.
Autor artykułu:
Bartosz Leśniak
Praktykant ASTOR
Student kierunku Automatyka i robotyka na Akademii Górniczo-Hutniczej w Krakowie
Współpraca i wsparcie merytoryczne: Wojciech Talik