Obecnie programowalne sterowniki logiczne (PLC) zyskują nowe możliwości związane z technologią informatyczną (IT). Dzięki nim mogą bezpośrednio wymieniać informacje z innymi sterownikami i modułami automatyki za pośrednictwem sieci Internet, co tworzy nowe możliwości dla realizacji funkcji i systemów automatyki oraz informatyki.
Już od kilku dziesięcioleci podstawowe funkcje i cechy charakterystyczne programowalnych sterowników logicznych (PLC) koncentrowały się na szybkim i skutecznym rozwiązywaniu za- dań sterowania i funkcji logicznych związanych z automatyką przemysłową. Te podstawowe cechy sterowników PLC nadal pozostają niezmienne, jednak nie oznacza to, że użytkownicy końcowi powinni koncentrować się tylko na nich. Sterowniki PLC zyskały bowiem w ostatnich latach wiele nowych, zaawansowanych możliwości, z których część umożliwia aktywne wsparcie samych użytkowników końcowych i realizowanych przez nich aplikacji.
Z punktu widzenia akwizycji i organizacji danych sterowniki PLC zasadniczo były ograniczone do danych, które były dla nich dostępne za pośrednictwem pod- łączonych przewodowo punktów wejść/ wyjść i zdalnych, rozproszonych urządzeń sieciowych. Jednak dzięki otwarciu na interfejs sieci Internet dostępne jest dla nich obecnie całe bogactwo informacji, które mogą być wykorzystane przez użytkowników końcowych za pomocą przeglądarek i aplikacji sieciowych. Wiele stron internetowych oferuje metody programowego dostarczania tych informacji, tak więc sterowniki PLC mogą je wykorzystać do otrzymywania danych i realizacji na ich podstawie odpowiednich działań.
Dlaczego jednak sterownik PLC miałby wymagać podłączenia do Internetu? Jakiego rodzaju informacje mogą w tak istotnym stopniu wspierać zadania i funkcje realizowane tradycyjnie w sterownikach PLC? Jedną z przyczyn jest to, że wiele popularnych aplikacji wymaga informacji na temat obecnego i prognozowanego stanu pogody. Na przykład automatyka sterująca nawadnianiem czy pracą chłodni kominowych może otrzymywać obecne i prognozowane dane lokalne na temat temperatury i opadów i w oparciu o nie dostosowywać algorytmy sterowania obsługiwanych urządzeń.
Innym przykładem może być instalacja solarna, która pobiera informacje dotyczące azymutu i wysokości n.p.m. dla danej lokalizacji z odpowiedniej strony internetowej i wykorzystuje je do optymalizacji położenia ruchomego, nadążnego panelu solarnego PV. Informacje uzyskane ze stron internetowych nie muszą być wymagane do bezpośredniego sterowania, jednak mogą być użyteczne dla operatorów. Na przykład fabryka przewodów i kabli może pobierać codziennie informacje na temat kursu cen miedzi z giełdowej strony internetowej, co pozwoli na wyświetlanie na ekranie interfejsu operatorskiego (HMI), w czasie zbliżonym do rzeczywistego, informacji na temat marży zysku dla firmy.
Aby sterownik PLC mógł być podłączony do Internetu w ten sposób, wymaga narzędzi do obsługi protokołu HTTP (hypertext transfer protocol) oraz obsługi tekstowego formatu wymiany danych JSON (JavaScript object notation). Sterowniki PLC za pomocą tych instrukcji mogą zainicjować komunikację ze stronami internetowymi, otrzymując z nich dane za pośrednictwem odpowiednich interfejsów programowania aplikacji (application programming interfaces – API) i parsując (odpowiednio przetwarzając) te dane na wymagane informacje.

Podstawowe informacje na temat przeglądarek internetowych
Co się dzieje, gdy przeglądarka wykorzystywana jest do nawigowania po Internecie? Po pierwsze ciąg znaków, wpisany w pasek adresu w celu wejścia na daną stronę internetową, nazywany adresem URL (uniform resource locator, ujednolicony format adresowania), wskazuje na konkretną domenę i stronę internetową. Ciąg ten może być ręcznie poprzedzony ciągiem „http://” lub przeglądarka doda go sama w przypadku pominięcia. Zabezpieczone strony internetowe mają adres zaczynający się od „https://” i taki też ciąg zostanie dodany.
Protokół HTTP definiuje strukturę do komunikowania się aplikacji sterowników PLC ze stronami WWW. Konkretnie określa on sposób formatowania, przesyłania i wykorzystywania komunikatów oraz odpowiadania na nie.
Wpisanie adresu URL do przeglądarki generuje żądanie HTTP dla serwera webowego, zaś odpowiedź HTTP jest wykorzystywana do wypełnienia okna przeglądarki. Żądanie i odpowiedź HTTP są lekkimi plikami tekstowymi, które są możliwe do odczytania przez człowieka oraz łatwe do stworzenia i przetworzenia przez oprogramowanie.
Pokrótce w taki oto sposób człowiek wykorzystuje przeglądarkę do wymiany danych ze stronami internetowymi, jednak w przypadku sterowników PLC pro- ces ten jest nieco inny.
Wykorzystanie interfejsów API przez sterowniki PLC
Wiele stron internetowych oferuje interfejsy API, które mogą być wykorzystane przez sterowniki PLC do wymiany pewnych danych. Z punktu widzenia PLC bardziej interesujące są strony oferujące taki rodzaj twardych danych, który może być użyteczny dla zautomatyzowanych maszyn, sprzętu i systemów. Oczywiście sterownik PLC, aby łączyć się ze stronami oferującymi interfejsy API, musi posiadać odpowiedni interfejs i dostęp do Internetu. Pobierane informacje mogą dotyczyć bieżących i prognozowanych warunków pogodowych, położenia Słońca, bieżącej ceny towarów czy energii albo wielu innych możliwych i interesujących firmę tematów.
Wyniki wyszukiwania w Internecie pokażą, które strony oferują interfejsy API do uzyskiwania dostępu do pożądanych informacji. Niektóre interfejsy są darmowe, w innych zaś użytkownik ma liczbę wywołań ograniczoną do kilku dziennie. Dostawcy API z bardziej wartościowymi informacjami mogą żądać wykupienia subskrypcji.
Gdy oprogramowanie sterownika PLC lub inne inicjuje żądanie HTTP w zdefiniowanym formacie, wywołana strona WWW zwróci odpowiedź w formacie JSON. Użytkownik może przetworzyć tę odpowiedź tak, aby otrzymać konkretne dane.
Rozpoczynając projekt połączenia sterownika PLC z webowym interfejsem HMI lub usiłując realizować jakąkolwiek formę komunikacji ethernetowej niskiego poziomu, programista powinien posiadać kilka istniejących pomocnych narzędzi. Jednym z nich jest Wireshark, oprogramowanie typu sniffer z otwartym kodem źródłowym (open source), które wysyła żądanie HTTP i odbiera pakiety odpowiedzi. Innym narzędziem jest edytor tekstowy, który ułatwia oglądanie odpowiedzi JSON. Może to być dowolny edytor, jednak istnieje wiele darmowych, które bardzo ułatwiają użytkownikom pracę dzięki rozbudowanemu wyświetlaniu treści w formacie JSON.

Praca z plikami JSON
Odpowiedzi w formacie JSON są odbierane jako kompaktowy ciąg znaków ASCII, który w swojej nieprzetworzonej
postaci nie jest łatwy do odczytania przez człowieka (rys. 1). Przeglądanie ciągu JSON w kompatybilnym edytorze tekstowym ujawnia warstwową i zagnieżdżoną naturę obiektów informatycznych zawartych w pliku JSON (rys. 2).
Potrzebne informacje są często zagnieżdżone kilka warstw poniżej i muszą być systematycznie parsowane oraz wydobywane. W przykładzie pokazanym na rysunku 2 konieczne jest przebicie się przez Warstwę 0 (Layer 0), następnie dojście do obiektu „Temperatura” („Temperature”) w Warstwie 2 (Layer 2) i na koniec uzyskanie „Wartości” („Value”) równej 44 dla temperatury wyrażonej w stopniach Fahrenheita (czyli 6,7°C).
Każdy sterownik PLC jest inny, jednak każdy będzie wymagał możliwości obsługi kilku podstawowych funkcji, takich jak żądania HTTP i przetwarzanie odpowiedzi JSON.
Po pierwsze urządzenie PLC musi mieć port ethernetowy, skonfigurowany do współpracy z siecią w fabryce, mającą zastosowanie domyślną bramę sieciową, DNS, adres IP oraz maskę podsieci. Ponadto port ethernetowy wykorzystywany do tego celu musi mieć możliwość łączenia się z siecią Internet za pośrednictwem sieci zakładowej.
Po drugie urządzenie PLC musi być konfigurowalne tak, aby działało jako klient TCP. Jest to równoznaczne z otwarciem kanału logicznego w sterowniku PLC, tak że instrukcje HTTP mogą zainicjować żądania API połączeń ze stronami internetowymi za pomocą portu ethernetowego.
Po trzecie programowanie sterownika PLC musi wykorzystywać instrukcję HTTP do zdefiniowania nazwy docelowego serwera API (URL) oraz inne szczegóły (rys. 3). Ta konfiguracja będzie obejmowała ciąg żądania oraz miejsce, w którym będą umieszczane informacje pochodzące z odpowiedzi.
Na koniec oprogramowanie do programowania sterownika PLC musi mieć instrukcję obsługującą protokół JSON, która potrafi parsować warstwy obiektów tak, aby otrzymać potrzebne dane (rys. 4). Ze względu na zagnieżdżenie warstw w pliku JSON ta operacja parsowania może obejmować kilka kroków.

Sprawdzanie temperatury powietrza przez Internet
Jedną z najbardziej popularnych aplikacji, która stanowi doskonały przy- kład omawianej w artykule koncepcji, jest użycie sterownika PLC do połączenia się ze stroną internetową dostarczającą informacje o warunkach pogodowych w celu wyznaczenia lokalnej temperatury powietrza – obecnej i prognozowanej. W naszym przykładzie sterownik PLC został skonfigurowany za pomocą odpowiedniego oprogramowania, zawierającego potrzebne instrukcje – HTTPCMD i JSONPARSE.
Na przykład strona AccuWeather pod zakładką „API reference” (dokumentacja API) oferuje interfejs API z wieloma szczegółami. Użytkownicy powinni zawsze konsultować się z docelową stroną inter- netową odnośnie rejestracji, tworzenia aplikacji, opłat oraz innych szczegółów technicznych lub ograniczeń. Po stworzeniu aplikacji zostanie wydany prywatny klucz użytkownika API, który jest niezbędny do zainicjowania komunikacji HTTP. Ten klucz użytkownika API jest nieco podobny do hasła dostępu.
Ten interfejs API oferuje wiele metod otrzymywania danych. Jeśli na przykład sterownik PLC znajduje się w dużym mieście, to temperatura powietrza może być uzyskana z API w jednym kroku. Aby otrzymać większą dokładność, użytkownik może wybrać szerokość/długość geograficzną lub nawet kod pocztowy, aby znaleźć klucz lokalizacji, który jest wykorzystywany do wywoływania dodatkowych metod API. W naszym przykładzie wykorzystamy to drugie podejście.
Przeszukiwanie części lokalizacyjnej dokumentacji API ujawnia metodę „get” (uzyskaj) „wyszukiwania kodu pocztowego”, wyświetlając wszystkie ważne parametry i pozwalając użytkownikowi na stworzenie ważnego łańcucha żądania HTTP. Narzędzie to może być także wykorzystane do realizacji tego żądania oraz obejrzenia, jak wygląda wiadomość zwrotna, payload danych i plik JSON. Zgodnie z regułami API wartość „klucza” zawiera pożądany klucz lokalizacji.
W dalszej kolejności wyszukiwanie „obecnych warunków pogodowych” (cur- rent conditions) w dokumentacji API pokazuje metodę uzyskiwania informacji o „obecnych warunkach pogodowych”. Jeśli ta metoda jest realizowana przy wykorzystaniu klucza API użytkownika oraz nowego klucza lokalizacyjnego, to uzyski- wana jest następna odpowiedź zawierająca informacje o temperaturze.
W fazie deweloperskiej strona AccuWeather może być wykorzystana w ten sposób do eksploracji opcji komunikacyjnych. W rzeczywistym środowisku uruchomieniowym (runtime) sterownik PLC zostanie skonfigurowany tak, aby wydawał polecenia HTTP z właściwymi ciągami żądań. Po otrzymaniu każdej z odpowiedzi sterownik PLC musi umieścić dane w zmiennym ciągu, a następnie wydać kolejne instrukcje parsowania JSON w celu prze- bicia się w dół przez warstwy do pożądanych danych.

Bezpieczeństwo połączeń sterowników PLC z Internetem
Umożliwienie sterownikowi PLC połączenia z Internetem otwiera niezwykle szeroką gamę nowych możliwości, jednak równocześnie stwarza pewne zagrożenia. Użytkownicy muszą zagwarantować bezpieczeństwo połączeń sieciowych w każdym przypadku, gdy urządzenie przemysłowe może łączyć się z Internetem. Ponadto program końcowy musi być wystarczająco stabilny, aby był odporny na każdy rodzaj przerwy w dostępie do Internetu.
W przypadku aplikacji opisanej w arty- kule użytkownik końcowy może zamiast połączenia z Internetem wykorzystać dane z lokalnego, bezprzewodowego czujnika temperatury, co może być lepszym rozwiązaniem. Jednak Internet oferuje wiele użytecznych informacji, które mogą być wykorzystane lokalnie przez oprzyrządowanie w zakładzie. Wystarczy nieco prze- myśleń i pracy nad programowaniem, aby użytkownicy mogli wykorzystywać instrukcje HTTP i JSON dla sterowników PLC w celu dodania nowego poziomu funkcjonalności do aplikacji.
Bill Dehner jest dyrektorem technicznym ds. marketingu w firmie AutomationDirect.