Do Projektu iAutomatyka dołączyli:

Publikacja zgłoszona do 🎁 Konkursu iAutomatyka

IIoT z Raspberry – bramka do świata IT

804 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.


Poniedziałek 1 czerwca o 18:00 – LIVE Q&A o falownikach <- LINK DO FACEBOOK

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ę:


Poniedziałek 1 czerwca o 18:00 – LIVE Q&A o falownikach <- LINK DO FACEBOOK

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<

Pierwsza na świecie inteligentna kamera dla przemysłu z technologią głębokiego uczenia

Pierwsza na świecie inteligentna kamera dla przemysłu z technologią głębokiego uczenia

>KLIKNIJ<

Obsługa przemysłowych routerów i modemów GSM odc. 1: Co to jest router przemysłowy GSM i jak go podłączyć do sieci GSM?

Obsługa przemysłowych routerów i modemów GSM odc. 1: Co to jest router przemysłowy GSM i jak go podłączyć do sieci GSM?

>KLIKNIJ<

Pierwsze kroki z przekaźnikiem programowalnym akYtec PR200

Pierwsze kroki z przekaźnikiem programowalnym akYtec PR200

>KLIKNIJ<

Jak działa NOWOCZESNY TARTAK? – Fabryki w Polsce

Jak działa NOWOCZESNY TARTAK? – Fabryki w Polsce

>KLIKNIJ<

Przemysł 4.0:  Zbieranie danych na przykładzie obrabiarki – część 2

Przemysł 4.0:  Zbieranie danych na przykładzie obrabiarki – część 2

>KLIKNIJ<

Programowanie paneli HMI – kurs dla automatyków (wygraj panel HMI 7″!)

Programowanie paneli HMI – kurs dla automatyków (wygraj panel HMI 7″!)

>KLIKNIJ<

Serwer VNC i FTP na przykładzie panelu HMI DOP-100

Serwer VNC i FTP na przykładzie panelu HMI DOP-100

>KLIKNIJ<

[Webinar] Laserowe czujniki pomiarowe – zastosowanie w przemyśle

[Webinar] Laserowe czujniki pomiarowe – zastosowanie w przemyśle

>KLIKNIJ<

Jak wygląda praca programisty robotów? Wywiad z Sebastianem Kilichowskim

Jak wygląda praca programisty robotów? Wywiad z Sebastianem Kilichowskim

>KLIKNIJ<

Dlaczego Twój silnik lub instalacja trójfazowa potrzebuje przekaźnika kontroli napięcia?

Dlaczego Twój silnik lub instalacja trójfazowa potrzebuje przekaźnika kontroli napięcia?

>KLIKNIJ<

Przemysł też może działać zdalnie

Przemysł też może działać zdalnie

>KLIKNIJ<

Jak powstają WINDY? – Fabryki w Polsce

Jak powstają WINDY? – Fabryki w Polsce

>KLIKNIJ<

Otwarte webinarium SCADA od Elmark Automatyka

Otwarte webinarium SCADA od Elmark Automatyka

>KLIKNIJ<

Miniaturowy fotoprzekaźnik laserowy wykrywający obiekty również przez otwory

Miniaturowy fotoprzekaźnik laserowy wykrywający obiekty również przez otwory

>KLIKNIJ<

[Zapis webinaru] Odkrywamy tajniki znakowania laserem

[Zapis webinaru] Odkrywamy tajniki znakowania laserem

>KLIKNIJ<

IMScompact: system prowadzenia i pomiarów, który nie wymaga dodatkowego miejsca

IMScompact: system prowadzenia i pomiarów, który nie wymaga dodatkowego miejsca

>KLIKNIJ<

Bosch Rexroth utrzymuje w 2019 roku rekordowy poziom obrotów z poprzedniego roku

Bosch Rexroth utrzymuje w 2019 roku rekordowy poziom obrotów z poprzedniego roku

>KLIKNIJ<

Serwis chłodziarek przemysłowych – podstawa sukcesu!

Serwis chłodziarek przemysłowych – podstawa sukcesu!

>KLIKNIJ<

Automatycy APA Group rewolucjonizują linię produkcyjną światowego giganta

Automatycy APA Group rewolucjonizują linię produkcyjną światowego giganta

>KLIKNIJ<

Jak dobrać szafę sterowniczą do aplikacji? Testujemy RiCS

Jak dobrać szafę sterowniczą do aplikacji? Testujemy RiCS





MOŻESZ SIĘ TYM ZAINTERESOWAĆ

  • Sterowniki  z serii SIMATIC S7-1200 oferują szeroki zakres funkcjonalności i zintegrowane wejścia/wyjścia zamknięte w kompaktowej obudowie. Są doskonałym narzędziem do realizacji standardowych projektów i zadań automatyki, a jednostki S7-12...
  • 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...
  • Wysokowydajny sterownik Saia PCD3.M6893 oferuje maksymalne cyberbezpieczeństwo oraz możliwość programowania obiektowego w języku wysokiego poziomu. Ponadto jest kompatybilny z modułami I/O i komunikacyjnymi serii PCD3. Zastosowany w PCD3.M6...
  • 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...
  • Rozwiązania wizyjne nadają się idealnie do zautomatyzowanych zadań kontrolnych i pomiarowych. Kamery wizyjne 2D i 3D firmy SICK sprawdzają się w ogromnej ilości aplikacji, polegających na pomiarze, lokalizacji, kontroli i identyfikacji. Nas...
  • 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ł...



KATEGORIE ARTYKUŁÓW
POLECANE ARTYKUŁY
Wydarzenia