Do Projektu iAutomatyka dołączyli:

Publikacja zgłoszona do 🎁 Konkursu iAutomatyka

Qt C++ do małych wizualizacji danych ze sterowników S7

1508 wyświetleń, autor: mateczek.

W tym artykule postaram się przedstawić w sposób interesujący przykład wykorzystania języka wysokiego poziomu, jakim jest C++ w naszej branży. W tym przykładzie razem z Qt zostanie zaprzęgnięty do wizualizacji danych, pobranych ze sterownika Siemensa. Qt to wieloplatformowy zestaw narzędzi i bibliotek do tworzenia aplikacji z graficznym interfejsem użytkownika. Całość przedstawiłem w trzech filmach umieszczonych w dalszej części artykułu.

Na wstępie artykułu podaje dwa linki:

  • Kod źródłowy biblioteki w Qt C++ do komunikacji ze sterownikiem S7plc;
  • Kod źródłowy prostego programu testowego dla wyżej wymienionej biblioteki;

Na bazie tych linków chciałbym zaprezentować mój sposób na małe wizualizacje pisane w C++. Zdjęcie poniżej przedstawia blok danych do zwizualizowania.

Reklama


1. Objaśnienie kodu źródłowego programu testowego

Program testowy dla biblioteki ma za zadanie odczytywać blok danych ze sterownika PLC i wyświetlić na formatce wartości z poszczególnych jego pól.  W pliku nagłówkowym aplikacji stworzyłem strukturę, która odzwierciedla mapę bloku danych, który to blok będziemy wizualizować.

Konstruktor klasy okna głównego aplikacji:

Funkcja „plcQtLib” (linia nr9) – tworzenie obiektu bibliotecznego PLC. Po odczytaniu danych ze sterownika PLC zgłosi sygnał do aplikacji.

  • „192.168.0.10” –  adres ip sterownika PLC;
  • 1 – numer Bloku danych który chcemy odczytać;
  • sizeof(db) – rozmiar bloku danych;
  • (unsigned char*)&db – przekazanie do biblioteki wskaźnika na strukturę bloku danych;
  • kolejne parametry to Slot (2),  Rak(0). Slot i Rak zależą od sterownika PLC. Parametry te są  do odczytania w konfiguracji hardware (step tiaportal). Dla przykładu S7-300 miało te parametry 2,0 , a S7-1500 1,0. Kolejnym parametrem jest  i odstęp w milisekundach, między kolejnymi zapytaniami do sterownika (w wątku jest funkcja oczekująca „QThread::msleep(sleepTime) „);

Funkcja „connect ” (linijka nr 10):

  • Obiekt biblioteczny „PLC” po prawidłowym odpytaniu sterownika wyemituje sygnał „dataReady”. Ten sygnał łączymy z funkcją „readedData()”.  Funkcja zaktualizuje wizualizacje o nowo pobrane dane. Pamiętać należy, że w S7 bajty są w odwrotnej kolejności niż w PC.  Stąd konieczność wywołania funkcji konwertujących.

Funkcja „connect”  (linijka nr 11):

  • Biblioteka pracuje w wątku, jeśli z jakiegoś powodu zostanie zerwane połączenie, lub wątek się zakończy biblioteka spróbuje ponownie nawiązać połączenie ze sterownikiem.

Funkcja „connect”  (linijka nr12):

  • informacja o zmianie statusu połączenia.  W przypadku braku połączenia z PLC wygasza interface

2. Test biblioteki na Raspberry Pi

Poniżej filmik  pokazujący jak skompilować bibliotekę i program testowy na komputerku Raspberry Pi.

Reklama


3. Test biblioteki na tablet/telefon z Androidem

Kompilacja biblioteki oraz programu testowego na telefon z Androidem.

4. Test biblioteki na komputerze PC z systemem WINDOWS

Krótki Filmik prezentujący test biblioteki na komputerze z Windows.

5. Czy warto pisać wizualizacje w C++?

Czasami, gdy komputer już jest do dyspozycji a liczba danych do zwizualizowania jest niewielka myślę, że można się pokusić o napisanie programu w C++.  Nie sposób również nie docenić elastyczności jaką daje użycie klasycznego pc i języków wysokiego poziomu do programowania wizualizacji.

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

Nagrodę Zasilacz EPSITRON + klucz do szaf + zestaw gadżetów dostarcza ambasador konkursu, firma WAGO.

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!

Zapoznałem się i akceptuję klauzulę informacyjną.
16 lipca 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Ć

  • Bezpieczny, prosty w obsłudze i energooszczędny Seria serwowzmacniaczy Mitsubishi Electric MELSERVO MR-J4 wraz z kompatybilnymi modułami pozycjonującymi oraz zaawansowanymi kontrolerami motion, umożliwia konstruktorom maszyn i urządzeń oraz...
  • Systemy RFID są ekonomiczne, uniwersalne i zapewniają niezawodność procesów, np. w intralogistyce. Zadania związane z identyfikacją stały się teraz łatwiejsze, szczególnie gdy potrzebna jest duża liczba punktów identyfikacji, dzięki  głowic...
  • 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...
  • Seria FX-100 Czujniki z serii FX-100 to najlepsze rozwiązanie pod względem stosunku jakości do ceny. Wyposażone są w funkcje szybkiego uczenia, co pozwala użytkownikom w szybki i prosty sposób przystosować czujnik do pracy z nieskomplikowan...
  • 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ł...
  • W trybie refleksyjnym sygnał ultradźwiękowy jest nieustannie odbijany przez zamontowany na stałe element odbijający wiązkę, tzw. element odniesienia. Jako elementu odbijającego wiązkę można używać odpowiednio ustawionego panelu z plastiku l...