Interfejs REST API w automatyce przemysłowej

From |

Jesień w branży automatyki zawsze kojarzyła się z mnogością targów, konferencji i innych wydarzeń, na których firmy prezentowały swoje najnowsze rozwiązania techniczne. Chociaż w tym roku większość aktywności przeniosła się do sieci, nie wpłynęło to negatywnie na liczbę prezentowanych nowości i trendów.

Jednym z haseł powtarzanych w odniesieniu do wielu nowych produktów jest „REST API” – i to zagadnienie chciałbym nieco przybliżyć.

Czym jest REST API?

Hasło REST API pojawia się zawsze w kontekście wymiany danych i komunikacji pomiędzy urządzeniami, serwisami lub oprogramowaniem. Należy jednak podkreślić, że REST API nie jest protokołem komunikacyjnym, nie jest też żadnym standardem… więc czym jest? Autor koncepcji – Roy Fielding – w swojej pracy doktorskiej z 2000 roku wprowadzającej pojęcie, zdefiniował REST (Representational State Transfer) jako styl architektury systemów. Aby urządzenie lub system było zgodne z REST musi spełniać sześć reguł opisanych we wspomnianej dysertacji:

  1. Client-Server – architektura systemu musi opierać się o dwie niezależne aplikacje. Klient pobiera lub umieszcza dane na serwerze, ale nie może mieć żadnego wpływu na strukturę serwera, na przykład na to, gdzie i jak takie dane są przechowywane. Analogicznie serwer nie może też w żaden sposób wpływać na funkcjonowanie klienta. Dzięki spełnieniu tej zasady obie odseparowane aplikacje mogą być rozwijane niezależnie.
  2. Stateless – komunikacja musi odbywać się w sposób bezstanowy. Oznacza to, że każde zapytanie od klienta musi zawierać komplet informacji pozwalający na prawidłową interpretację zapytania przez serwer. Żadne dane odnośnie sesji komunikacyjnych nie mogą być przechowywane na serwerze.
  3. Cache – serwer, odpowiadając na zapytanie o dane, oprócz wartości musi również podawać informacje o możliwości i ewentualnym czasie buforowania. Parametry rzadko zmieniające swoją wartość powinny być oznaczane jako cacheable i zapamiętywane przez klienta, co prowadzi do redukcji ilości zapytań obsługiwanych przez serwer.
  4. Uniform Interface – interfejs dostępu do wszystkich zasobów musi być ujednolicony.
  5. Layered System – systemy muszą być zaprojektowane z podziałem na hierarchiczne warstwy. Klient powinien komunikować się i być w stanie zobaczyć tylko tę warstwę, z którą prowadzi interakcję. Takie odseparowanie pozwala na zwiększenie bezpieczeństwa danych.
  6. Code-On-Demand –  jest to reguła opcjonalna. Serwer może w ramach odpowiedzi udostępnić nie tylko czyste dane, ale też skrypt lub aplet, który może takie dane agregować lub interpretować w z góry założony sposób.

System udostępniający dane działający zgodnie z powyższymi zasadami REST możemy nazwać systemem posiadającym interfejs REST API. Taki system umożliwia udostępnienie swoich zasobów w prosty i elastyczny sposób dla wszystkich klientów przy użyciu istniejących protokołów. Opisane powyżej teoretyczne założenia mogą się wydawać nieco enigmatyczne, ale korzystanie z urządzeń lub systemów z zaimplementowanym REST API jest bardzo proste i przyjemne.

Pobieranie danych z urządzenia

Komunikacja z systemami posiadającymi REST API odbywa się najczęściej za pomocą protokołu HTTP. Zapytanie, zgodnie z zasadą stateless, posiada wszystkie informacje wymagane do udzielenia odpowiedzi:

  • metodę HTTP – określa co chcemy zrobić
  • adres URI – czyli ścieżkę dostępu do zasobu
  • opcjonalnie header i/lub body – dodatkowe informacje, np. dotyczące uwierzytelniania klienta

W reakcji na zapytanie serwer udziela odpowiedzi, najczęściej w postaci danych z formacie JSON.

Informacje o sposobie budowania zapytań, czyli ustalania adresów URI, dostępnych metodach i innych elementach, które należy przesłać w headerze/body, zostały zawarte w dokumentacji konkretnej implementacji REST API. W przypadku sterowników PLCnext Technology, opis znajdziemy w zakładce Infocenter.

Przykład zapytania i odpowiedzi

W poniższym przykładzie zaprezentuję, w jaki sposób można pobrać dane ze sterownika PLCnext. Dla uproszczenia przykładu wymaganie uwierzytelniania dla REST API zostało wyłączone i wszystkie zapytania są traktowane przez sterownik jako uwierzytelnione.

W programie działającym na sterowniku została przygotowana zmienna o nazwie iSecond, która zawiera aktualną sekundę odczytaną z zegara RTC sterownika. Klient chcący odczytać wartość zmiennej zgodnie z dokumentacją implementacji REST API na PLCnext musi użyć metody GET i jako URI podać ścieżkę zawierającą adres IP sterownika oraz docelową ścieżkę do tej zmiennej. W tym przypadku będzie to: https://192.168.3.15/_pxc_api/api/variables?paths=Arp.Plc.Eclr/MainInstance.iSecond

Jako że metoda GET jest standardową metodą wykorzystywaną przez przeglądarki stron internetowych do wyświetlania ich zawartości, to powyższe URI można wkleić w pasku adresu przeglądarki i w rezultacie otrzymać odpowiedź od serwera REST.

Większość współczesnych przeglądarek potrafi zinterpretować format JSON, więc odpowiedzi od serwera REST API mogą być wyświetlane w czytelnej formie.

REST API w automatyce

Jeśli doczytaliście do tego momentu, to być może zadajecie sobie pytanie: Co to wszystko ma wspólnego z automatyką? Odpowiedź jest wbrew pozorom dość prosta. Dziś, w dobie Przemysłu 4.0, kiedy systemy automatyki coraz mocniej się przeplatają i coraz częściej są integrowane z systemami czysto informatycznymi, gdzie korzystanie z REST API ma wiele zalet.

Uniwersalność rozwiązań

Różnorodne systemy zarządzania i nadzoru mogą pozyskiwać dane w taki sam sposób niezależnie od tego, czy są uruchomione na komputerze, tablecie czy smartfonie.

Aplikacje z systemami REST API są łatwo skalowalne i szybkie w rozbudowie

Klient REST będzie w stanie sprawnie pobierać informacje, niezależnie od tego, czy ich źródłem jest fizyczne zainstalowane urządzenie, serwis chmurowy czy wirtualna aplikacja.

Phoenix Contact oferuje szereg produktów umożliwiających odczyt informacji zgodnie z REST API

Od pojedynczych urządzeń, takich jak mierniki parametrów sieci EMpro (więcej o miernikach) czy system nadzory ochronników przeciwprzepięciowych ImpulseCheck (więcej o monitorowaniu ograniczników przepięć) po sterowniki należące do platformy PLCnext Technology (więcej o sterownikach PLC), które dzięki swojemu zaawansowaniu i budowie opartej o system operacyjny Linux mogą udostępniać swoje dane za pomocą REST API, a nawet zostać zaprogramowane w roli klienta komunikacji czy funkcjonować jako platforma sprzętowa, na której jednocześnie działa i współpracuje wiele serwisów zgodnych z REST API.

Chcesz poznać REST API, a nie posiadasz żadnych urządzeń udostępniających dane w ten sposób?

Możesz skorzystać z jednego z wielu internetowych serwisów, spośród których szczególnie polecam https://swapi.dev/. Tam za pomocą zapytań zgodnych z REST można pobierać dane dotyczące uniwersum Gwiezdnych Wojen i w przystępny sposób zapoznać się ze sposobem budowania zapytań i interpretowania odpowiedzi.

Autor: Konrad Sobczyk– Specjalista ds. Szkoleń i Wsparcia Technicznego
Share

Share

Tell your friends about us!

Contact

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *