Do Projektu iAutomatyka dołączyli:

Publikacja zgłoszona do 🎁 Konkursu iAutomatyka

IIoT z Raspberry – bramka do świata IT

745 wyświetleń, autor: dawleg.

Autor przybliżył nam w tym artykule ideę IIoT oraz w przystępny sposób przedstawił możliwości Raspberry Pi. Postanowiłem podzielić się z Wami moim projektem oraz przedstawić praktyczne wykorzystanie tej koncepcji w połączeniu z sterownikiem firmy Beckhoff i systemem Twincat 2. Zachęcam gorąco do przeczytania wspomnianego wcześniej artykułu, a następnie do zapoznania się z poniższym tekstem opisującym zbliżony projekt.

Zobacz artykuł… Raspberry Pi w warunkach przemysłowych?

Koncepcja:

  1.  Warstwa PLC.
  2.  Raspberry Pi jako bramka IIoT.
  3.  Prywatny serwer do gromadzenia oraz wizualizacji danych.

O możliwościach sterowników PLC zapewne większość z czytelników miała okazję przekonać się lub wykorzystywać je w praktyce. Na potrzeby projektu wykonano prosty program z licznikiem inkrementującym swoją wartość co sekundę.

Następnie, wartość tę odczytano przy pomocy skryptu działającego na Raspberry oraz zapisano wartość na prywatnym wirtualnym serwerze w bazie danych MySQL. Komunikacja pomiędzy Raspberry Pi a sterownikiem PLC odbywa się w ramach lokalnej sieci.

Na serwerze uruchomiono aplikację z poziomu której możliwe jest wyświetlanie oraz resetowanie wartości licznika.

Raspberry oraz VPS (Virtual Private Server) komunikują się w ramach sieci VPN (Virtual Private Network). Aplikacja wizualizacyjna dostępna jest z poziomu dowolnego urządzenia obsługującego przeglądarkę internetową oraz z dostępem do Internetu.

Reklama


Koncepcję przedstawiono na poniższej grafice:

Założenia projektowe:

  1.  Inkrementacja wartości INT w sterowniku PLC.
  2.  Odczyt aktualnej wartości i zapis do bazy danych MySQL.
  3.  Podgląd aktualnej wartości licznika z poziomu przeglądarki internetowej.
  4.  Możliwość resetowania licznika z poziomu przeglądarki internetowej.

Warstwa PLC

Pracę nad projektem rozpoczęto od napisania programu. Na poniższych zrzutach ekranu przedstawiono funkcję MAIN oraz wykorzystane zmienne globalne.

W pierwszym Networku przygotowano wyjście Timera do inkrementacji licznika. W drugim Networku przygotowano resetowanie licznika w oparciu o wartość licznika (100), a także zmianę stanu flagi F_0_1. W Networku 3 przygotowano licznik i przepisano wartość aktualną do zmiennej globalnej.

Następnie przystąpiono do przygotowania konfiguracji w Twincat System Manager oraz załadowania programu do sterownika. Warto w tym miejscu wspomnieć, że w celu wykorzystania interfejsu ADS do komunikacji Raspberry<->PLC należy dodać trasę komunikacyjną dla sterownika. Przykładową konfigurację pokazano na poniższym zrzucie ekranu.

W pole AmsNetId należy wpisać adres IP Raspberry rozszerzony o .1.1

Konfiguracja VPS

Przed przystąpieniem do konfiguracji Raspberry należało przygotować konfigurację oraz oprogramowanie wirtualnego serwera.

Do uruchomienia aplikacji wykorzystano Apache HTTP serwer oraz MySQL jako serwer baz danych. Osoby zainteresowane materiałami pomocnymi w zainstalowaniu zestawu LAMP (Linux, Apache, MySQL, PHP) mogą zajrzeć pod linki: ang, pl.

Na serwerze uruchomiono aplikację do wizualizacji danych napisaną z wykorzystaniem micro framework’a Slim

Poniżej przedstawiono kilka zrzutów ekranu z telefonu, gdzie otworzono aplikację:

Reklama


Następnie przygotowano dwie tablice dla zmiennych. Jedna dla zmiennych typu Bool, druga dla wartości liczbowych. W tym celu wykorzystano narzędzie phpmyadmin, a przykładowe wypełnienie pól dla zmiennych logicznych pokazano na poniższym zrzucie ekranu.

W podobny sposób przygotowano drugą tablicę gdzie zapisywano wartości licznika.

Konfiguracja Raspberry Pi

Mając przygotowaną warstwę sprzętową (PLC), oraz warstwę „Internetową” (VPS) przystąpiono do przygotowania „łącznika” obu warstw – do programowania Raspberry Pi.

Do zrealizowania programowego były trzy zadania:

  •  odczyt danych ze sterownika,
  •  zapis odczytanych danych w tablicy MySQL,
  •  Sprawdzenie wartości przycisku resetującego i wykonanie określonych działań w zależności od wartości.

Zadania należy wykonywać cyklicznie. W tym celu wykorzystano program napisany w języku Python.

Komentarz do zamieszczonego powyżej kodu (pogrubionym tekstem opisano numery linii kodu):

  • 1-5 – import modułów,
  •  8 oraz 43 – fragment pozwalający wykonywać program w ciągłem pętli z interwałem czasowym 500ms,
  •  9, 35, 37 – obsługa błędów i wyjątków. W pierwszej kolejności wykonywany jest program w ramach klauzuli try. W przypadku gdy nie udało wykonać się kodu zawartego w try program przerywa wykonanie klauzuli, a następnie wykonywana jest obsługa błędów zawarta w except. W except zwracany jest komunikat o nieudanej próbie odczytu danych z bazy danych oraz komunikat błędu. Klauzula finally wykonywana jest niezależnie od tego, czy udało się wykonać klauzulę try czy została ona przerwana w jakiś sposób,
  •  10-13 – zdefiniowano parametry połączenia oraz połączono się z bazą danych podając adres IP hosta, nazwę bazy danych oraz dane autoryzacyjne,
  •  17-18 – odczytano i wykonano formatowanie odczytanych danych ze sterownika przez przesunięcie bitowe. Dane odczytano przy pomocy skompilowanego programu C++ readValueInt.bin. W celu nawiązania połączenia ze sterownikiem i odczytania danych wykorzystano biblioteki udostępnione przez firmę Beckhoff z tego repozytorium,
  •  19-21 – wykonano zapis wartości licznika do tablicy,
  •  22-28 – odczytano wartość przycisku. W tym celu wykorzystano przygotowaną w linijce 15 instrukcję MySQL,
  •  30-33 – wykonano zmianę wartości zmiennej typu Bool poprzez wywołanie wcześniej skompilowanego programu oraz zmieniono wartość przycisku na 0.

Poniżej zamieszczono wykorzystany kod do zbudowania plików readValueInt.bin oraz writeValueBool.bin.

1. Zrzut pierwszy przedstawia główną funkcję, w której wywołano funkcję zamieszczoną na drugim zrzucie oraz w której uwzględniono obsługę wyjątków.

2. Zrzut drugi przedstawia funkcję runExample, w której wykonano pożądane instrukcje:

  •  40-41 – zdefiniowano adres AmsNetID oraz adres IP sterownika PLC,
  •  44 – zdefiniowano adres AmsNetID dla lokalnej maszyny – Raspberry,
  •  47-50 – dodano połączenie do sterownika,
  •  53-57 – otwarto połączenie ze sterownikiem,
  •  59 – zdefiniowano handler dla połączenia,
  •  61 – wywołano polecenie zmiany wartości bitowej pod wskazanym adresem,
  •  63-67 – zamknięto połączenie.

3. Zrzut trzeci oraz zrzut czwarty przedstawia wykorzystane funkcje odczytu oraz zapisu zmiennych w sterowniku PLC.

Rezultat

Uruchomieniu skryptu napisanego w pythonie pozwala na przetestowanie działania wizualizacji oraz możliwości resetowania licznika.

Postarałem się pokazać to na poniższych zrzutach ekranu gdzie w prawym dolnym rogu pokazałem podgląd online wartości licznika:

Podsumowanie

Mam nadzieję, że opisując powyższy projekt udało mi się pokazać, jak świat automatyki może stopniowo zmierzać w kierunku świata IT. Być może, w niedalekiej przyszłości, będziemy w sytuacji gdzie do standardu należeć będzie programowanie sterowników PLC w języku wysokiego poziomu? Być może producenci popularnych sterowników PLC pójdą w kierunku integracji swoich urządzeń z bramkami IIoT, a typowym zadaniem inżyniera automatyki będzie integrowanie urządzeń z systemami uruchomionymi w chmurach obliczeniowych?

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Listopad 2019

Nagrodę Stripax + zestaw gadżetów dostarcza ambasador konkursu, firma Weidmüller

.

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!

Zapoznałem się i akceptuję klauzulę informacyjną.
28 listopada 2019 / Kategoria: , , ,

Reklama

NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

>KLIKNIJ<

Poznaj funkcje SEE Electrical, które przyspieszają rysowanie schematów elektrycznych

Poznaj funkcje SEE Electrical, które przyspieszają rysowanie schematów elektrycznych

>KLIKNIJ<

Implementacja wymiany danych przy pomocy JSON API na przykładzie przekaźnika easyE4

Implementacja wymiany danych przy pomocy JSON API na przykładzie przekaźnika easyE4

>KLIKNIJ<

Publikuj artykuły razem z iAutomatyka.pl – Integrujemy Ludzi z Automatyką!

Publikuj artykuły razem z iAutomatyka.pl – Integrujemy Ludzi z Automatyką!

>KLIKNIJ<

Firma RENEX odznaczona tytułem Gazeli Biznesu

Firma RENEX odznaczona tytułem Gazeli Biznesu

>KLIKNIJ<

Kompaktowy sterownik z oprogramowaniem TwinCAT 3: większa skalowalność, większe możliwości!

Kompaktowy sterownik z oprogramowaniem TwinCAT 3: większa skalowalność, większe możliwości!

>KLIKNIJ<

Świat według automatyka – wywiad ze sterownikiem easyE4

Świat według automatyka – wywiad ze sterownikiem easyE4

>KLIKNIJ<

Akademia PLC #1 – Sterowniki Unitronics serii UniStream

Akademia PLC #1 – Sterowniki Unitronics serii UniStream

>KLIKNIJ<

5 porad, jak odnieść sukces w branży automatyki przemysłowej na przykładzie firmy MPL Techma

5 porad, jak odnieść sukces w branży automatyki przemysłowej na przykładzie firmy MPL Techma

>KLIKNIJ<

Szkolenia z 75% rabatem od Mitsubishi Electric

Szkolenia z 75% rabatem od Mitsubishi Electric

>KLIKNIJ<

Czym są przekaźniki instalacyjne i jak ich używać?

Czym są przekaźniki instalacyjne i jak ich używać?

>KLIKNIJ<

Cyberbezpieczeństwo i Chmura – bezpłatne seminaria z ELMARK w 6 miastach

Cyberbezpieczeństwo i Chmura – bezpłatne seminaria z ELMARK w 6 miastach

>KLIKNIJ<

Sensory i czujniki w maszynach i obiektach automatyki – wywiad z Pepperl+Fuchs

Sensory i czujniki w maszynach i obiektach automatyki – wywiad z Pepperl+Fuchs

>KLIKNIJ<

Maszyna do napełniania i zamykania z LinMot

Maszyna do napełniania i zamykania z LinMot

>KLIKNIJ<

Meble przemysłowe ESD – przegląd cech dostawcy i produktu

Meble przemysłowe ESD – przegląd cech dostawcy i produktu

>KLIKNIJ<

Pierwsze w pełni zintegrowane rozwiązanie Machine-Centric Robotics – B&R i ABB

Pierwsze w pełni zintegrowane rozwiązanie Machine-Centric Robotics – B&R i ABB

>KLIKNIJ<

Programowanie PLC od podstaw – kurs dla automatyków i elektryków odc.1 – Wprowadzenie

Programowanie PLC od podstaw – kurs dla automatyków i elektryków odc.1 – Wprowadzenie

>KLIKNIJ<

KONKURS IAUTOMATYKA STYCZEŃ 2020

KONKURS IAUTOMATYKA STYCZEŃ 2020

>KLIKNIJ<

Przekaźnik elektromagnetyczny – co to jest i jak działa?

Przekaźnik elektromagnetyczny – co to jest i jak działa?

>KLIKNIJ<

Walka człowieka z robotem lutowniczym REECO na Polskiej Wystawie Gospodarczej

Walka człowieka z robotem lutowniczym REECO na Polskiej Wystawie Gospodarczej

>KLIKNIJ<

Pionierska technologia firmy Matisa

Pionierska technologia firmy Matisa





MOŻESZ SIĘ TYM ZAINTERESOWAĆ

  • Seria EX-Z Czujniki z serii EX-Z to jedne z najmniejszych urządzeń tego typu na świecie. Najcieńszy model posiada grubość jedynie 3 mm co zostało osiągnięte przez zastosowanie nowych półprzewodników i dzięki temu wyeliminowanie przewodów. B...
  • Szybki i bezpieczny dostęp do maszyn i fabryk Usługa u-link gwarantuje szybki i bezpieczny dostęp do maszyn i fabryk, co ułatwia zdalne utrzymanie ruchu, jednocześnie pozwalając na wydajne zarządzanie zakładami produkcyjnymi i stacjami klie...
  • Przy użyciu flexROOM® można szybko i łatwo realizować automatykę budynkową na potrzeby biur i budynków administracyjnych, zgodną z obowiązującymi normami i efektywną energetycznie. flexROOM® to szeroki wachlarz rozwiązań dla automatyki budy...
  • Technologia SmartBridge® od Pepperl+Fuchs stanowi łącznik między czujnikami, a Przemysłem 4.0: Dotychczas dane procesu generowane przez urządzenia będące częścią infrastruktury IO-Link były przetwarzane głównie w obiegu urządzenia. Wartości...
  • 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....
  • System MasterIN firmy Finder składa się z przekaźnikowych modułów sprzęgających z terminalami Push-in. Technologia ta reprezentuje najnowsze osiągnięcia w bezśrubowych ‘sprężynowych’ zaciskach, oferujących szybką instalację. W porównaniu do...