W dzisiejszych czasach połączenie internetowe w urządzeniach automatyki przemysłowej jest już niemalże standardem. Dzięki temu użytkownik może pobierać dane z sieci globalnej, które mogą przydać się mu do sterowania, diagnostyki czy nawet akwizycji danych. Ostatnio, jednym z najpopularniejszych "połączeń" do wymiany danych stał się REST API (REpresentational State Transfer Application Programming Interface). Stało się to m.in. dzięki otwartej architekturze oraz niezależności od stosowanej platformy.
Spis treści
Unitronics w świecie IoT
Nie jest więc niespodzianką, że Unitronics uzwględnił obsługę tego interfejsu w swoich PLC z serii UniStream. Obsługuje zarówno komunikację szyfrowaną (HTTPS) jak i nieszyfrowaną (HTTP). Sposób konfiguracji obu jest niemalże identyczny, więc w poniższej instrukcji przedstawiliśmy HTTPS zamiast metody HTTP.
Praktyczny przykład zastosowania REST API
Wstęp
Dla przykładu została wybrana platforma OpenWeather, obsługująca REpresentational State Transfer API. Po pierwsze, należy założyć tam bezpłatne konto do wygenerowania klucza, które jest niezbędne do pobierania informacji przez sterownik PLC. Po utworzeniu konta i poprawnym zalogowaniu się nasz unikalny klucz znajduje się w zakładce "My API keys":
Dostępne funkcje przy obecnym planie można sprawdzić w zakładce "My services". W instrukcji tej sterownik PLC będzie pobierać aktualną pogodę dla wybranego miasta za pomocą funkcji CurrentWeather. Z tego linka należy zwrócić uwagę na składnię zapytania GET:
api.openweathermap.org/data/2.5/weather?q={city name}&appid={API key}
gdzie część na żółto kończy się przed pierwszym znakiem "/"
część na zielono kończy się przed znakiem "?"
część na niebiesko składa się ze składni key1=value1 oddzielonych znakiem "&".
UniStream PLC jako REST API Client
1. Wstępna konfiguracja UniLogic
Do konfiguracji sterownika PLC należy zaopatrzyć się w najnowszą wersję darmowego oprogramowania UniLogic. Po zainstalowaniu i utworzeniu nowego projektu pierwsze, co należy zrobić to skonfigurować połączenie PLC z Internetem. W tym celu w drzewku projektu po lewej stronie wybieramy "PLC Communications- > Physical -> Panel Ethernet":
Po prawej stronie znajduje się okno z polami, które należy uzupełnić:
W naszym przykładzie zastosujemy DNS'y Google, czyli 8.8.8.8 oraz 8.8.4.4. Adres IP, maskę podsieci oraz bramę domyślną należy ustawić indywidualnie tak, żeby sterownik PLC mógł komunikować się z siecią globalną. Przykładowo może to być:
CPU Ethernet nie jest wymagane do skonfigurowania, ponieważ nie uczestniczy w połączeniu z Internetem oraz REpresentational State Transfer API.
2. Aktywacja i parametryzacja REST API
Kolejnym krokiem będzie konfiguracja samego połączenia z wybranym serwerem. W tym celu z drzewka projektu po lewej stronie wybieramy "REST"
a następnie klikamy w zielony przycisk na środku programu "Add new REST API Server". Po pojawieniu się nowego wiersza możemy zmienić jego nazwę w kolumnie "Name", zmieniamy protokół z HTTP na HTTPS zostawiając numer portu 443. W polu "Base URL" wklejamy api.openweathermap.org z HTTP.
Teraz klikamy w nazwę tego serwera (w przykładzie Server1) i ponownie klikamy zielony przycisk "Add New Request". Obecnie dany zasób bazy danych nie możemy odpytać używając POST PUT, lecz tylko za pomocą metody GET. W polu "Request Method" zostawiamy GET (brak opcji POST) a w polu "End Point Resource" wklejamy /data/2.5/weather z zapytania HTTP.
Należy pamiętać o pominięciu znaku "?" z linku!
Następnie klikamy w nazwę "Request1" i dodajemy dwa parametry do naszego zapytania, które są wymagane przez funkcję "CurrentWeather":
1) q = {nazwa miasta} np. Warsaw,
2) appid = {APPKEY}, czyli nasz unikalny klucz.
Nazwy w polach "Key" muszą być dokładnie takie, jak podano w REST, natomiast wartości "Value" wpisujemy w cudzysłowie poprzedzając jest znakiem "#".
Zalecamy również dodanie 3 parametru units="metric", jeżeli chcemy odczytywać dane metrycznym systemem:
Teraz należy podać parametry REST, które chcemy zapisywać do sterownika a następnie pokazać na jego HMI. W tym celu należy sprawdzić, jak wyglądają odpowiedzi serwera w dokumentacji funkcji "CurrentWeather" w formacie JSON.
My wykorzystamy dwa parametry odpowiedzi HTTP, które chcemy odczytywać: "temp" (temperatura) oraz "pressure" (ciśnienie). W tym celu dodajemy dwa parametry w zakładce "Response Parameters".
W polu "Tag" w pierwszym wierszu, za pomocą kliknięcia w niebieski ołówek, dodajemy nową zmienną do sterownika "Temperatura", typ REAL (liczba FLOAT), natomiast w drugim wierszu zmienna "Ciśnienie", typ UINT16.
Pola "Is Array" oraz "Main Array Index" pozostawiamy bez zmian.
W polu "Path" w wierszu pierwszym dodajemy dwa poziomy ścieżek - pierwsza "main", druga "temp" zgodnie z instrukcją:
natomiast w wierszu drugim poziomy "main" oraz "pressure":
Po wykonaniu tych kroków nasza tabela z "Response Parameters" powinna wyglądać następująco:
Taki sposób wystarcza do poprawnej konfiguracji zakładki REST.
3. Program PLC do obsługi API REST
Czas na napisanie naprawdę krótkiego programu a następnie wyświetlenie danych na panelu HMI do obsługi REST.
W tym celu, najpierw wybieramy z drzewka projektu Ladder -> Module1 -> Function1:
a następnie z listy bloków po prawej stronie wyszukujemy zakładkę REST API i klikamy dwukrotnie na blok funkcyjny "REST API:Get".
Na obszarze roboczym (tzw. "drabince") pojawi się nasz blok, który należy uzupełnić o zmienne wejściowe oraz wyjściowe. Zmienną wejściową wybieramy z listy i tutaj mamy tylko jedną do wyboru, ponieważ skonfigurowaliśmy tylko jedno zapytanie REST API (Request).
Zmienną wyjściową jest status wysłania żądania. Tutaj za pomocą niebieskiego ołówka należy stworzyć nową zmienną np. "Status1". Na koniec dodajemy przed blokiem styk otwarty zmiennej "PobierzDane", a za blokiem cewkę resetującą ten sam bit.
4. Wizualizacja HMI z REST API
Program dla sterownika jest napisany, więc przechodzimy do konfiguracji ekranu. W tym celu w drzewku projektu wybieramy HMI -> Module1 -> Screen1 i za pomocą dostępnych obiektów znajdujących się na liście po prawej stronie konfigurujemy nasz ekran.
Najważniejszym elementem jest przycisk, który będzie odpowiadał za wysłanie zapytania do serwera REpresentational State Transfer Application Programming Interface.
oraz dwa elementy "Numeric", które będą wyświetlać zmienne "Temperatura" oraz "Ciśnienie". Na końcu tej instrukcji znajduje się gotowy przykład do pobrania.
5. Diagnostyka REpresentational State Transfer API
Teraz pozostało tylko wgrać program do sterownika i sprawdzić, czy wszystko zostało poprawnie skonfigurowane z REST. Dobrym narzędziem diagnostycznym jest tryb online (UniLogic automatycznie przechodzi w ten tryb po wgraniu programu) i kliknięcie w REST API Request Struct:
i sprawdzenie stanu zwłaszcza tych dwóch zmiennych REST:
Podsumowanie
Aby zacząć przygodę ze sterownikami z serii UniStream firmy Unitronics oraz REpresentational State Transfer API należy wyposażyć się fizycznie w dany sterownik oraz komputer PC. Z pomocą tutaj przychodzimy my, czyli Elmark Automatyka. Oferujemy możliwość bezpłatnego wypożyczenia dowolnego urządzenia do testów/nauki na okres 2 tygodni oraz pełne wsparcie techniczne. Jest to zdecydowanie lepsze rozwiązanie, ponieważ jesteśmy w stanie sprawdzić rzeczywistą pracę urządzenia a nie "jakiś" nieszczęsny kod w postaci symulatora. Po więcej informacji zapraszamy na naszą stronę: https://www.elmark.com.pl/producenci/view/unitronics lub do kontaktu telefonicznego +22 541 84 60 a także mailowego sterowniki@elmark.com.pl.
Skontaktuj się ze specjalistą Elmark
Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!