Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2020/07/IMG_20200630_101157.jpg

Jak sterować PLC za pomocą telefonu? Web serwer w sterownikach S7


Web serwer to świetne narzędzie. Dzięki niemu można dokonać diagnostyki, zebrać dane ze sterownika lub wysterować jakieś wyjścia za pomocą komputera wyposażonego jedynie w przeglądarkę internetową (może to być nawet i smartfon). PLC z rodziny S7-1200 mają bogate możliwości korzystania z web serwera, należy jednak potrafić go skonfigurować. W tym tekście zaprezentuję, jak to robić i jak można sprawić, żeby użytkownik sterował PLC za pomocą telefonu.

Całość zacznę od przedstawienia, jak uruchomić web serwer, następnie przybliżę podstawową konfigurację. W dalszej części omówię (czasem bardziej, czasem mniej) szczegółowo najważniejsze możliwości dostępne w web serwerze, na końcu tego omówienia pokażę podstawy najbardziej zaawansowanego narzędzia, czyli własnych stron pisanych w HTML-u. Na koniec udowodnię, że dzięki połączeniu smartfona z siecią WiFi można zdobyć kieszonkowe centrum kontroli sterownika.

Artykuł jest bardzo długi, więc przygotujcie sobie czas, albo wracajcie do niego kilka razy. Zaczynajmy.

Pierwsze uruchomienie

Aby móc korzystać z web serwera należy go włączyć. Mogę to zrobić, wchodząc w ustawienia (Properties) sterownika w programie TIA Portal.

Wybieram Properties, klikając prawym przyciskiem myszy na nazwę sterownika w projekcie

W Properties szukam opcji Web server i przechodzę do niej.

Web server to sekcja Properties, w której można konfigurować większość potrzebnych parametrów

Pierwsza sekcja opcji Web server to General. Tutaj należy włączyć serwer (pierwsze okno) oraz, jeśli chcemy połączyć się w najprostszy sposób z naszego komputera albo telefonu, odznaczyć drugie okno.

Dalej trafiam na Automatic update. Jest to opcja, która wymusi odświeżanie strony (przydatne, gdy chcę mieć informacje na bieżąco o stanie PLC). Ustawiłem Update interval na 10 sekund, co oznacza odświeżanie strony z interwałem dziesięciu sekund.

Jeśli nie odznaczę Permit access only with HTTPS, próba zalogowania na serwer może się skończyć w ten sposób

Właśnie stworzyłem wstępną konfigurację. Aby móc dostać się do web serwera, należy przesłać ustawienia do sterownika. Aby to zrobić, wybieram opcję Download to device – hardware configuration.

Opcję wgrania hardware’u można znaleźć w tym samym miejscu, gdzie jest Properties

Gotowe, teraz wystarczy, że wprowadzę adres IP sterownika PLC do przeglądarki internetowej.

Skąd wziąć adres IP? Sposobów jest sporo, jednym z nich jest wejście we wcześniej wykorzystane przeze mnie Properties i zaznaczenie okna PROFINET interface. Tutaj przechodzę do Ethernet addresses i odczytuję IP.

Adres IP sterownika można znaleźć w sekcji IP protocol w części IP address

Skoro już znam IP, wpisuję go w pole adresu w przeglądarce internetowej.

UWAGA! Domyślny adres IP sterowników S7-1200 to 192.168.0.1, może się okazać, że jest to też adres konfiguracji naszego routera i zamiast na web serwer trafimy do ustawień sieci domowej. W tym przypadku trzeba zmienić IP PLC na jakiś inny wolny (np. 192.168.0.2) z zachowaniem pierwszych trzech oktetów.

Jeżeli nic w sieci nie ma adresu sterownika, to pojawi się okno startowe.

Tak wygląda okno startowe web serwera

A więc widać, że web serwer został skonfigurowany poprawnie. Mogę zatem przejść do dalszych okien (przycisk ENTER w lewym górnym rogu, pod logiem SIEMENS-a).

Główna strona web serwera, czyli trochę podstawowych informacji

Jak widać, w początkowym ekranie mogę przejrzeć podstawowe informacje na temat mojego PLC, czyli nazwę projektu, wersję TIA Portal, nazwę stacji w projekcie, nazwę modułu i jego typ. Dodatkowo mogę też sprawdzić stan sterownika. Aby to pokazać, ustawiłem sterownik w tryb STOP.

Przechodzę w tryb STOP za pomocą przycisku w TIA Portal, żeby sprawdzić, czy aktualny stan sterownika będzie widoczny na web serwerze


Na zrzucie głównego ekranu widać zieloną diodę, która oznacza tryb RUN sterownika. W tym przypadku (po przejściu w STOP) dioda zmieni się w żółtą, tak samo jak w rzeczywistym PLC.

Dioda rzeczywiście zmieniła się na żółtą, jest to graficzna reprezentacja tego, że sterownik przeszedł w tryb STOP

Jak widać na powyższym zrzucie, dioda zmieniła kolor na żółty, informując o zmianie trybu pracy. Widać to również w zakładce Operating Mode.

Podstawowa konfiguracja zakończyła się powodzeniem, web serwer działa. Teraz czas na dodanie funkcjonalności. Wracam do ekranu Properties w TIA Portal. Przechodzę znowu do Web server a tam do podsekcji User management. W tym oknie mogę tworzyć profile osób upoważnionych do różnych opcji web serwera. Domyślnie jest tylko jeden użytkownik – Everyone, za pomocą niego ustawiam, co może zrobić każdy.

Domyślne opcje dla użytkownika Everyone

Jak widać, Access level domyślnie jest pusty, ale to dobrze, chyba nikt nie chce, żeby ktoś bez uprawnień mógł grzebać w ustawieniach sterownika, prawda?

Aby móc skorzystać z pełnej mocy web serwera, tworzę użytkownika Admin.

Zaczynam tworzenie nowego użytkownika

Następnie dodaję mu hasło, za pomocą którego zaloguję się na konto Admin

Aby Admin miał pełne możliwości administratora, trzeba mu jeszcze umożliwić dostęp do wszystkich opcji. Przechodzę zatem do Access level i nadaję mu wszystkie ustawienia. Część jest niedostępna (zszarzała), zależy to od modelu sterownika.

Ustawiam wszystkie opcje, aby Admin miał maksimum możliwości

Jak widać, TIA Portal od razu oznaczyła Access level Admina jako Administrative

Po takich operacjach muszę znowu wgrać hardware do PLC. Teraz mogę cieszyć się możliwościami administratora, pora sprawdzić je w praktyce.

Przechodzę znowu do strony początkowej w przeglądarce i loguję się, podając dane w lewym górnym rogu (dane to oczywiście Name użytkownika i Password, który ustawiłem w TIA Portal).

Loguję się za pomocą nazwy i hasła, które przydzieliłem Adminowi w projekcie

Po wprowadzeniu poprawnych danych i kliknięciu  Login pojawia się zupełnie nowy świat możliwości Web serwera.

Przy wyłączonej opcji połączenia przez https, wyskakuje komunikat o bezpieczeństwie. Teraz trzeba ufnie założyć, że połączenie z moim sterownikiem jest bezpieczne i pominąć to wyskakujące okno.

Możliwy komunikat o błędzie podczas logowania

Po zalogowaniu się jako Admin, mogę się cieszyć szerokim zakresem możliwości, są one wypisane z lewej strony ekranu

Skoro wstępna konfiguracja zakończyła się powodzeniem, mogę omówić poszczególne punkty, do których mój Admin ma dostęp.


Diagnostyka

Diagnostyka to pierwszy punkt w web serwerze, który znajduje się na liście. Przyjrzyjmy się mu bliżej.

Pierwszą częścią diagnostyki jest zakładka Identification. Tutaj mogę znaleźć podstawowe informacje o sterowniku.

Pierwsza część diagnostyki, czyli podstawowe informacje o sterowniku

Kolejna zakładka to Program protection. Tutaj mam podgląd zabezpieczeń, które ustawiłem w projekcie. W trakcie tworzenia tego artykułu nie zmieniałem tych opcji, więc w moim web serwerze widać domyślne ustawienia zabezpieczeń.

Wykorzystane przez użytkownika metody ochrony projektu

Ostatnia zakładka służy do przedstawienia wykorzystania pamięci w badanym sterowniku.

Podgląd wykorzystanej pamięci

Jak widać, strona Diagnostics pozwala na przejrzenie podstawowych informacji związanych z PLC.

Bufor diagnostyczny

Bufor diagnostyczny to narzędzie, które przedstawia komunikaty diagnostyczne w formie listy wyposażonej w daty wystąpień oraz etykiety. Bufor można znaleźć zarówno w TIA Portal jak i w web serwerze.

Tak wygląda bufor diagnostyczny w TIA Portal

W TIA Portal podgląd bufora jest dostępny w sekcji Online access. Widać tutaj różne komunikaty związane z funkcjonowaniem PLC. Na moim zrzucie ekranu są to informacji o zmianach trybu pracy, restarcie urządzenia oraz logowaniu się do web serwera.

Sprawdzę teraz, jak prezentuje się bufor dostępny na serwerze.

Tak wygląda bufor diagnostyczny na web serwerze

Widać więc, że bufor w serwerze jest wierną reprezentacją buforu w środowisku programistycznym. Jedyne różnice pojawiły się w godzinach, wynika to z faktu, że sterownik ma ustawioną inną godzinę, niż komputer, na którym uruchomiłem web serwer.


Informacje o module

W tym przypadku nazwa strony jest całkiem niezłym opisem zawartości. Module Information to po prostu zbiór różnych danych na temat użytego sprzętu.

Początkowy widok informacji o module

Aby przejrzeć dane na temat użytego sterownika, należy wejść w zalinkowaną nazwę modułu.

Zbliżam się do coraz bardziej szczegółowych informacji

W module, który wybrałem, znajdują się urządzenia podpięte do projektu wgranego do sterownika. W trakcie tworzenia artykułu użyłem tylko jednego urządzenia – kompaktowego sterownika nazwanego PLC_1.

Przejrzę teraz informacje zawarte w dolnych zakładkach. W części Identification widzę podstawowe wiadomości, czyli twórcę sprzętu, wersję firmware’u czy model urządzenia.

Podgląd sekcji Identification

W części Firmware mam możliwość wgrania nowego Firmware’u z pliku na komputerze, którym przeglądam web serwer.

Pierwsza część sekcji Firmware

Druga część sekcji Firmware

Dodatkowe informacje można uzyskać, wchodząc w nazwę urządzenia (u mnie klikając w PLC_1).

Przy przejściu do części poświęconej konkretnemu urządzeniu pojawia się spis wszystkich jego komponentów

Każdy wymieniony komponent ma też dodatkowe detale, które można przejrzeć

Spośród wszystkich komponentów wymienionych w tej sekcji, wyróżnia się jeden – PROFINET interface 1. Po przejściu do niego (kliknięcie podlinkowanej nazwy) mogę uzyskać dokładniejsze informacje na temat połączenia PROFINET.

Mój sterownik ma tylko jeden port Ethernetowy, widać to przy przejściu do części poświęconej PROFINET

Komunikacja

Panel komunikacji umożliwia mi przejrzenie wszelkich parametrów związanych z przesyłaniem danych między sterownikiem a innymi urządzeniami. W moim przypadku użyłem PLC z jednym portem Ethernetowym (oznaczonym jako X1). Jego parametry są widoczne w sekcji Parameter. Widać tu elementy związane z połączeniem (numer MAC oraz nazwę urządzenia), a także z protokołem IP (adres, maskę podsieci, numer routera i sposób ustawień IP). Dalej, w Physical properties, znajdują się informacje fizyczne (u mnie tylko o porcie X1, ponieważ mój PLC posiada wyłącznie jeden port Ethernet).

Część dotycząca parametrów komunikacji

Sekcja Statisics dostarcza informacji na temat statystyk połączenia (ogólnie oraz szczegółowo dla każdego portu PLC). Widać tutaj, ile danych było wysyłanych oraz ile z nich zostało obarczone błędem podczas transportu.

W tej części widać szczegółowe statystyki przesyłanych danych

Kolejną podsekcją jest Connection resources. Jest to przydatna opcja, gdy chcemy sprawdzić, ile można jeszcze przyłączyć urządzeń zewnętrznych do naszego sterownika. Jak widać na zrzucie ekranu, użyty przeze mnie S7-1211 może obsłużyć do 128 połączeń. Widzimy tutaj także, jakie poszczególne typy komunikacji mają zarezerwowane miejsca oraz jakie są w użyciu.

Podział na typy komunikacji może okazać się przydatny przy diagnostyce awarii rozproszonego systemu sterowania

Ostatnią sekcją jest Connection status, czyli możliwość przejrzenia tego, jakie połączenia są używane przez PLC oraz obejrzenie ich statusów i parametrów.

Status tagów

W trakcie pracy sterownika istotne są wszystkie zmiany związane z wykorzystanymi zmiennymi, w końcu tam może być jakiś błąd. Do takiego zastosowania przydatna jest strona Tag status.

Przy pierwszym wejściu do Tag status nie widać żadnej zmiennej, należy wpisać adresy zmiennych do obserwowania

Kiedy wejdę do niej po raz pierwszy, znajdę same puste pola. Muszę do nich wpisać adres zmiennej, którą chcę obserwować.

Aby mieć co obserwować, powinienem mieć jakiś program. Dlatego przygotowałem prosty, prezentacyjny kod.

Prosty program, który posłuży mi do prezentacji części możliwości web serwera

Czego użyłem? Do portów I0.0 oraz I0.1 podpiąłem dwa przyciski NC. W kodzie służą one do sterowania licznikiem CTU, który wyzwala wyjście Q0.0 po 10 wciśnięciach przycisku przy I0.0. Aktualna liczba wciśnięć jest przechowywana w części pamięci o adresie MW20. Aby ten krótki kod miał bardziej profesjonalny charakter, nadałem nazwy tagów, które mogą się pojawić w warunkach przemysłowych.

Użyte przeze mnie adresy muszą zostać wpisane do kolumny Address w Tag status.

Po wprowadzeniu adresu serwer od razu zaczyna monitorowanie stanu zmiennych

Po wpisaniu adresów zmiennych mogę przeglądać ich wartości oraz je modyfikować. Warto tu zaznaczyć, że nie jestem skazany na przegląd tylko wartości binarnych, Tag status obsługuje wszystkie typy wyświetlania danych.

Widać, że gdy zacząłem obserwację, przycisk został już wciśnięty dwa razy. I0.0 jest podłączone do przycisku normalnie zamkniętego, a więc przez większość czasu otrzymuje wartość logiczną 1.

W dalszej części obserwacji zacząłem naciskanie i puszczanie przycisku.

Kiedy wykonałem dziesiąte naciśnięcie, wyjście Q0.0 przyjęło wartość true, wszystko zgodnie z moim programem

Dane w Tag status aktualizują się automatycznie, jeśli tak ustawiłem w Properties sterownika. Jeśli czas odświeżania jest za długi, można je wymusić, wciskając Refresh.

W dalszej części obserwacji nacisnąłem przycisk podpięty do I0.1, co poskutkowało resetem licznika oraz wyjścia Q0.0. Wszystkie te czynności były ciągle widoczne na stronie Tag status.

Sytuacja po resecie licznika

Tag status umożliwia mi także modyfikacje zmiennych. Ma to jednak pewne ograniczenia, na przykład, nie mogę w ten sposób wymusić stałej wartości na Q0.0, która będzie sprzeczna z kodem. Jeżeli stan licznika (MW20) będzie niższy niż 10, a ja wymuszę 1 na Q0.0. sterownik i tak po jednym obiegu pętli programu (czyli kilku milisekundach) znowu sprowadzi Q0.0 do wartości false.

Modyfikacja zmiennych w Tag status polega na wpisaniu nowej wartości i zatwierdzenia jej za pomocą kliknięcia Go

Mogę jednak wpływać na logikę, która nie stoi w sprzeczności z kodem. Aby to zademonstrować, dodałem kolejny network, z którego wynika zależność: Q0.1:= M10.0. W takim przypadku mogę modyfikować wartość M10.0  i będę w ten sposób sterować wartością Q0.1.

Nowy network, dzięki niemu mogę testować możliwości modyfikacji zmiennych w Tag status

Modyfikacja zmiennej „Sym_przycisk” wywołuje zmiany wyjścia „Alarm”, wszystkie te zmiany są widoczne w Tag status

Watch tables

Korzystanie ze strony Tag status jest wygodne, ale ma też dwie istotne wady. Po pierwsze – zakładamy, że użytkownik web serwera zna adresy zmiennych, które chce podglądać. Po drugie – nie mamy dostępu do nazw zmiennych (co jest znaczące, gdy zmiennych w programie nie jest 5, a 1000). Tych wad nie uświadczymy, korzystając z Watch tables.

Tablice watch to narzędzie, które umożliwia podgląd różnych zmiennych w sterowniku podpiętym do komputera z uruchomionym środowiskiem TIA Portal. Dzięki zastosowaniu web serwera można przenieść takie tablice z TIA Portal do serwera.

Aby korzystać z tych tablic, przy pomocy web serwera, należy je wgrać w TIA Portal. Jeśli tego nie zrobię, strona Watch tables będzie pusta.

Nie wgrałem żadnych tablic, więc strona jest pusta

Aby dodać tablicę, zaczynam od stworzenia jej w TIA Portal.

Watch table można stworzyć w folderze Watch and force tables w projekcie w TIA Portal

watch table wpisałem część używanych przeze mnie zmiennych

Kiedy tablica zostanie przygotowana, muszę wgrać ją do web serwera. Przechodzę zatem do Properties sterownika i zakładki Web server. Tutaj szukam podsekcji Watch tables.

W tym miejscu należy wybrać tablicę z listy dostępnych

Kolejnym krokiem jest odnalezienie i wybranie tablicy z listy.

Lista zawiera zawartość folderu Watch and force tables

Tablice watch mają możliwość podglądu i zmiany wartości zmiennych. Gdy wgrywam tablicę do web serwera, muszę ustawić, czy użytkownik ma mieć możliwość wykonywania zmian w parametrach (Read/Write), czy może ma mieć możliwość tylko wglądu do zmiennych (Read).

Tutaj wybieram rodzaj dostępu

Gdy ustawienia zostaną skończone, należy wgrać hardware i software do PLC. Na tym etapie mam już dostęp do tablicy Watch z poziomu web serwera.

Jak widać, Watch tables ma podobne możliwości do Tag status

Jak można zobaczyć, mam tutaj opcje podobne do Tag status z dodatkiem nazwy taga. Działanie tego jest analogiczne do działania Tag status. Różnicą jest tu brak możliwości dodania obserwowanych zmiennych. Jest to ciekawa opcja, można, na przykład, przygotować oddzielne tablice zmiennych dla każdego operatora procesu przemysłowego.

Jeżeli chodzi o możliwości modyfikacji wartości zmiennych, to są one takie same jak w Tag status.


Online backup

Online backup to strona, za pomocą której można stworzyć kopię zapasową projektu (Create online backup) i wgrać do sterownika wcześniej wykonaną kopię (Restore PLC).

Strona Online backup ma tylko dwie opcje

Pobieranie danych

Czasami, w trakcie pracy sterownika, może zajść potrzeba ściągnięcia niektórych wartości zmiennych procesowych (na przykład w celu ich obróbki w arkuszu kalkulacyjnym). Web serwer umożliwia takie działanie. Pokażę, jak można szybko zgrać jedną daną. Będę pobierać różne wartości aktualnego stanu licznika (wykorzystywałem go w części poświęconej Tag status).

Do pobierania danych wykorzystuję sekcję DataLogs

Ze strony File Browser należy przejść do DataLogs. W moim przypadku nie ma nic do pobrania, ponieważ nie przygotowałem żadnych danych.

Folder jest na razie pusty, ale dołożenie do niego zawartości nie jest trudne

Dane do pobrania przygotowuje się w TIA Portal. Aby można było je pobrać, trzeba przygotować obsługę dziennika danych w kodzie programu.

TIA Portal ma szeroką bibliotekę umożliwiającą obsługę dzienników danych

Opiszę tutaj najprostszy sposób logowania danych na serwerze, a więc nie wykorzystam wszystkich predefiniowanych bloków funkcyjnych.

Przed dodaniem bloków do kodu przygotowałem blok danych, do którego wprowadziłem parametry logowania danych.

W moim DB znajduje się nazwa pliku, na który będę logował dane oraz ID dziennika

Aby móc logować dane, muszę stworzyć dziennik. Robię to za pomocą bloku DataLogCreate.

Stworzenie dziennika to wstęp do czynności związanych z pobieraniem danych

Blok jest wyposażony w wiele wejść i wyjść, przybliżę najważniejsze z nich.

  • REQ – uruchomienie bloku. Zbocze narastające na tym wejściu wywoła stworzenie dziennika danych.
  • RECORDS – liczba możliwych danych w pliku, pokażę jego działanie w praktyce poniżej.
  • NAME – nazwa pliku do pobrania.
  • DATA – zmienna, która ma być zapisywana.
  • DONE – flaga przyjmująca wartość 1 po udanym zapisie.

Stworzenie dziennika danych to dopiero pierwsza część pracy. Muszę przygotować jeszcze system zapisywania danych do tego dziennika. Najprostsza metoda to: otwarcie pliku, dopisanie danej, zamknięcie pliku.

Aby całość zadziałała bez przeszkód, przygotowałem bit pomocniczy, który jest ustawiony, jeśli utworzono dziennik danych. Zrobiłem to w celu uniknięcia próby otwarcia nieistniejącego dziennika.

Muszę użyć cewki zatrzaskowej, ponieważ flaga DONE ma wartość true tylko przez jeden obieg pętli programu

Do otwarcia dziennika danych wykorzystałem blok DataLogOpen.

Blok, który służy do otwierania dziennika danych

Do wejścia EN dołączyłem bit pomocniczy, który uniemożliwia otwarcie nieistniejącego dziennika. I0.0 przy REQ służy do wywoływania całej operacji. NAME oraz ID przyjmują wartości dziennika danych, który ma być otwarty (a więc są tymi samymi, których użyłem w DataLogCreate).

Kolejnym krokiem jest wpis danej do otwartego dziennika. W moim systemie wpis zaczyna się po udanym otwarciu dziennika, a więc wykorzystuję do tego wyjście DONE.

Do wpisania danych wykorzystuję blok DataLogWrite

W tym bloku po raz kolejny wykorzystałem zabezpieczenie w postaci bitu pomocniczego. Do wejścia REQ dołączyłem flagę udanego otwarcia dziennika, dzięki temu wpis danej odbywa się dopiero po otwarciu pliku. Wyjście DONE wykorzystałem do zamykania dziennika.

Blok DataLogClose jest ostatnim elementem mojego systemu logowania danych na serwerze

Po wgraniu zmian w programie jestem w stanie pobierać dane z serwera.

Po nadaniu zbocza narastającego na M11.0 sterownik tworzy dziennik danych. Jest on od razu widoczny z poziomu web serwera.

Plik dziennika danych jest możliwy do pobrania po kliknięciu jego nazwy

Pobrany plik można otworzyć w notatniku albo arkuszu kalkulacyjnym.

Jeżeli tylko stworzyłem dziennik (i jeszcze nic w nim nie wpisałem) to plik nie zawiera w sobie żadnych zapisanych danych.

Plik, przed wpisaniem danych, zawiera w sobie tylko nagłówek

W momencie, w którym zaczynam wciskać przycisk I0.0, dziennik wypełnia się danymi, które mogę pobrać w każdej chwili.

Sytuacja po jednym naciśnięciu przycisku

Przy jednym włączeniu bloku do dyspozycji mam tylko jedną daną. Każde kolejne zbocza narastające na REQ powodują zwiększenie liczby danych w pliku. Pliki na  komputerze same się nie aktualizują, więc za każdym razem muszę pobierać nowy plik z web serwera.

Po dziewięciu naciśnięciach dziennik został wypełniony dziewięcioma zapisanymi danymi

A co w sytuacji, gdy przekroczę moje ustawione 15 w RECORDS? Nadpiszą się wtedy najstarsze dane.

Najstarsze dane (1, 2, 3 i 4) zostały nadpisane przez najnowsze (16, 17, 18 i 19)

Taki sposób umożliwia pobranie wartości jednej zmiennej, ale da się w ten sposób pobierać również więcej danych za pomocą jednego dziennika. Jest to jednak obszerny temat, któremu można poświęcić cały artykuł, więc nie będę się tu nad tym rozwodził (dla chętnych napiszę tylko, że dla wielu zmiennych w logu powinno się użyć własnych typów danych).


Strony definiowane przez użytkownika

Przechodzimy teraz do najpotężniejszego narzędzia dostępnego w web serwerze sterowników z serii S7-1200 i S7-1500. Tematyka własnych stron jest tak potężna, że można o tym pisać nie tyle artykuły, ile spore publikacje (które zresztą zostały napisane przez firmę Siemens, linki na samym dole tekstu). Przedstawię tutaj tylko podstawy własnych stron, które jednak będą wystarczające do sterowania PLC za pomocą telefonu.

Czym są własne strony? To tak naprawdę strony pisane w HTML-u, które mogą służyć do prezentacji danych i modyfikacji ich w dowolny sposób zaplanowany przez programistę.

Kod strony można pisać w dowolnym edytorze tekstu, więc nawet w notatniku (najwygodniejszy jest, moim zdaniem, Notepad++).

W celu pokazania możliwości własnych stron zaprezentuję stronę, w której jest napisana wartość logiczna wejścia z podpiętym przyciskiem (używane przeze mnie wcześniej I0.0) wirtualny przycisk oraz podgląd wyjścia. W ramach wirtualnego przycisku użyję zmiennej M10.0. Zgodnie z kodem jej wartość będzie również wartością wyjścia Q0.1.

Kod mojej strony:

Moja strona jest prosta, dlatego kod nie jest zawiły

Opiszę teraz linijka po linijce, co tutaj napisałem.

Całość rozpoczynam od nagłówka. Dalej znajduje się najważniejszy fragment tego kodu. Każda zmienna, która ma być modyfikowana przez stronę, musi zostać wprowadzona w taką instrukcję. Jako Name należy tu wpisać nazwę taga z TIA Portal. Poniżej jest nagłówek, którym rozpoczynam główną część strony.

„Wartość logiczna przycisku:” to tekst, który w ten sam sposób zostanie wyświetlony na stronie. Dalej, za pomocą instrukcji :=”Przycisk”, prezentowana jest wartość zmiennej o nazwie tagu „Przycisk”. Znacznik „<p” i jego zamknięcie wymuszają napisanie tekstu w nowym paragrafie.

W znaczniku form znajduje się wszystko, co związane z przyciskiem wirtualnym. Mój przycisk polega na wprowadzeniu wartości do pola tekstowego, a następnie zatwierdzenia wyboru kliknięciem. W celu wprowadzenia wartości 0 lub 1 (fałsz lub prawda) wpisałem input type = „number” oraz ustawiłem minimum na 0 i maksimum na 1 (bez tego można by wpisać każdą wartość liczbową do pola).

Przedostatnia linijka znacznika form to konfiguracja przycisku zatwierdzającego wpisaną wartość. Submit oznacza klikany przycisk, value służy do zdefiniowania tekstu, który będzie widoczny na przycisku.

Poniżej „form” napisałem instrukcję, która spowoduje wyświetlenie tekstu „Wyjście Q0.1:” i napisanie wartości zmiennej przypisanej do tagu „Alarm”.

Na końcu pliku znajdują się zakończenia znaczników body i html, które zamykają główne ciało strony oraz kod html.

Aby strona użytkownika mogła działać, należy wprowadzić dodatkowy blok funkcyjny do kodu programu. Mowa tu o bloku WWW, którego funkcją jest synchronizacja stron użytkownika z procesorem sterownika.

Blok synchronizacji strony ze sterownikiem

Do wejścia CTRL_DB wprowadza się wartość 333, jako RET_VAL przyjmuje się #AWP. Z tą wartością jest jednak pewien problem, ponieważ TIA Portal jej nie akceptuje. Aby to naprawić, należy zdefiniować zmienną.

W celu definicji zmiennej klikam w nią prawym przyciskiem myszy i wybieram opcję Define tag…

Przy definicji zostawiam domyślne wartości i klikam Define

Gdy strona jest już całkowicie skonfigurowana, a kod został wzbogacony o blok WWW, muszę wgrać plik .html do web serwera za pomocą Properties mojego PLC.

W ustawieniach web serwera muszę ustalić ścieżkę pliku .html, stronę domyślną (gdyby moja strona składała się z kilku plików html) oraz nazwę mojej aplikacji (będzie ona widoczna w web serwerze)

Po kliknięciu Generate blocks uruchamia się proces tworzenia bloków sieci, program wykorzystuje je do komunikacji z użytkownikiem za pomocą własnych stron.

Generacja danych jest wymagana do wykorzystania własnych stron użytkownika

Po udanej generacji danych zostaje mi tylko wgranie hardware’u i software’u do PLC. Na tym etapie strona jest gotowa do korzystania.

Po wprowadzeniu zmian strona jest dostępna z pozycji User-defined pages

Kliknięcie nazwy strony spowoduje przeniesienie do niej. Moja strona jest naprawdę prosta (ma tylko kilka elementów), jest dodatkowo brzydka (ponieważ w ogóle nie skupiłem się na jej walorach estetycznych), ale działa tak, jak to zaplanowałem.

Moja strona ma w sobie te funkcjonalności, które dla niej zaplanowałem

W takim przypadku, aby ustawić wartość na Q0.1 muszę wpisać 0 albo 1 do pola wejściowego i kliknąć przycisk zatwierdzający.

Strona działa zgodnie z jej kodem

W tej części opisałem tworzenie tylko najbardziej banalnej strony, możliwości tu jest jednak zdecydowanie więcej. Gorąco zachęcam do przeglądania tekstów Siemensa (linki poniżej) oraz własnych eksperymentów z możliwościami html w web serwerze 1200, ponieważ własne strony użytkownika to zdecydowania najpotężniejsze narzędzie dostępne dla programisty web serwera.

A co ze sterowaniem za pomocą telefonu?

Pora, abym wytłumaczył się z tytułu tego tekstu. Przez cały czas byłem podpięty do serwera za pomocą przewodu Ethernetowego do laptopa. A co w przypadku telefonu? Największą zaletą telefonów komórkowych jest ich mobilność. Czy w takim razie web serwer w telefonie też jest mobilny? Jak najbardziej, wystarczy użyć sieci WiFi.

Aby móc połączyć się z web serwerem za pomocą telefonu, wystarczy podpiąć sterownik do routera. Nie musi to być żaden specjalistyczny sprzęt Siemensa, domowe urządzenie też da radę. Po takim podłączeniu wystarczy wpisać adres IP w przeglądarce telefonu i gotowe, można się cieszyć mobilnym web serwerem.

W celu pokazania, że web serwer działa na różnych sterownikach z serii S7, wziąłem inny PLC, tym razem mój wybór padł na CPU 1215C DC/DC/DC, wgrałem na niego web serwer oraz kod programu i podłączyłem go do mojego domowego routera. Pokazałem to na filmach: web serwer w telefonie i sterowanie PLC przez telefon.

Warto tu jeszcze zaznaczyć kwestie cyberbezpieczeństwa. Takie połączenie jest tylko tak bezpieczne, jak bezpieczne jest połączenie jakiegokolwiek urządzenia z naszym WiFi. Z tego powodu nie polecam takiego układu sieci w warunkach innych niż szkoleniowe/akademickie. W przypadku przemysłowym zachęcam do zapoznania się z fachowym sprzętem od autoryzowanych firm zajmujących się zdalnym sterowaniem.

Podsumowanie i parę innych tekstów

W tym miejscu zakończymy przygodę z poznawaniem web serwera. Mam nadzieję, że udało mi się przekonać niektórych czytelników o szerokich możliwościach tego narzędzia. A teraz, zgodnie z obietnicą, podrzucam link do strony SIEMENS-a, na której znajdują się dużo szersze opracowania tematyki web serwerów.


Ocena artykułu zgłoszonego do Konkursu iAutomatyka 4.0 pisz artykuły, zdobywaj punkty, wymieniaj je na nagrody.

Kryterium 1 2 3 4 5 6 7 8 9 10
Punkty (0-2) 2 1 2 2 2 1 2 0 2 2
Suma zdobytych punktów: 16

+ 5 punktów bonusowych za objętość artykułu i wyczerpanie tematu



Utworzono: / Kategoria: , ,

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY
  • Wyświetlacz słupkowy ITP15 jest kompaktowym wskaźnikiem procesowym, który wizualizuje analogowy sygnał wejściowy w zakresie od 0 do 100% z 10 słupkami po 10%. Sygnałem wejściowym może być liniowy sygnał napięciowy 0 (2) -10 V lub sygnał prą...
  • Zaprojektowane, aby zwiększyć wydajność Sterowniki FX5U/FX5UC zapewniają rodzinie FX wyższą wydajność oraz dodają nowe cechy, które wyznaczają standardy w klasie kompaktowych sterowników PLC. Pozwala to użytkownikom na tworzenie bardziej zł...
  • SICK oferuje całą gamę elektronicznych przetworników pomiarowych ciśnienia i presostatów, które ze względu na inteligentne i wszechstronne możliwości konfiguracji dają się optymalnie dopasować do indywidualnych wymagań klienta. W typowy dla...
  • Ekonomiczne monitorowanie i sterowanie, teraz także dzięki panelom 2 generacji. Dzięki odpowiedniemu doborowi funkcji HMI, panele Basic 2 generacji stanowią doskonałe rozwiązanie przy produkcji maszyn lub w małych aplikacjach przemysłowych....
  • Nowe modułowe sterowniki programowalne PLC firmy Eaton umożliwiają producentom maszyn i systemów opracowywanie nowoczesnych koncepcji automatyki, zwłaszcza w połączeniu z systemem XN300 I/O i panelem dotykowym XV300. Modułowy sterownik zape...
  • 1,000 PLN
    Zdobądź wiedzę i bądź pewny, że nic Cię nie zaskoczy. Nie musisz przekopywać się przez tony katalogów i instrukcji. Oferujemy Ci kompleksowy system szkoleń, który sprawi, że najpierw zbudujesz fundamenty swojej wiedzy, a później pod okiem n...
    Czas trwania: 7h - 14 h
    Link: Terminy