Do Projektu iAutomatyka dołączyli:

Publikacja zgłoszona do 🎁 Konkursu iAutomatyka

Kontrola wersji w świecie automatyki? Bądź GIT!

446 wyświetleń, autor: Przemysław Krupiarz.

Przed starciem z bossem w grze komputerowej robimy quicksavejako kopię zapasową stanu – to samo możemy zrobić z naszym projektem. Pracujemy nad nową funkcją i próbujemy kilku podejść? Wystarczy zapisać i tworzy się punkt przywracania, do którego możemy wrócić w każdej chwili. Osobiście używam tego do zapisu zmian na koniec dnia – a konkretnie używam GIT’a.

GIT to system kontroli wersji umożliwiający współpracę wielu programistów nad jednym projektem, tworząc odgałęzienia i łącząc wiele zmian równolegle, jednak na nasze automatyczne potrzeby w większości wystarczy lokalna historia zmian.

Na potrzeby prezentacji opracowałem praktyczny przykład, zawierający bonus w postaci OPC UA:

  1. Nowy projekt w Automation Studio (B&R) – serwer OPC UA + prosty program.
  2. Instalacja GIT, dodawanie nowego repozytorium.
  3. Zmiany w programie i ich wizualizacja w GIT GUI.
  4. Klient OPC UA napisany w Pythonie (oczywiście z kontrolą wersji GITem).
  5. Symulacja PLC i zapis/odczyt danych poprzez OPC UA.

Automation Studio i OPC UA

OPC UA to otwarty protokół, wdrażany coraz szerzej u producentów takich jak Siemens, Allen-Bradley, Beckhoff, B&R etc. Opiera się o strukturę serwer/klient, gdzie wielu klientów może korzystać z jednego serwera. Serwer posiada standardowo zestaw metod, dzięki którym możemy poznać udostępnione zmienne – ich nazwy, typ etc. Standardowym rozwiązaniem komunikacji jest subskrypcja, klient tworzy połączenie z serwerem i prosi o stworzenie subskrypcji danych, która polega na informowaniu o zmianie wartości. Istnieje możliwość cyklicznej wymiany danych, jednak obciążą ona znacznie łącze i w wypadku subskrypcji serwer informuje klientów jedynie o zmianie, z możliwością przefiltrowania częstotliwości, np. subskrybuj minimalnie co 500 ms.

Aktywacja serwera OPC UA

Po założeniu projektu, żeby aktywować serwer OPC UA należy przejść do konfiguracji CPU i zmienić parametr z OFF na ON.. i gotowe (patrz wyżej).

Dodawanie programu i zmiennych lokalnych

Udostępnimy tagi – zmienne lokalne – programu opcServer w serwerze, aby można było je odczytywać i zmieniać zdalnie. Zmienna ProducedDint będzie służyła do odczytu przez klient OPC, zmienna ConsumeDint będzie służyła do zmiany przez klient (jak status/rozkaz lub input/output).

Prosty kod iterujący zmienną ProducedDint

Powyższy program ma zadanie ciągle zwiększać zmienną, aby zasymulować jakąkolwiek zmianę sygnału.

Aktywacja zmiennych programu opcServer w serwerze OPC UA

Aby klient łączący się z serwerem mógł zobaczyć zmienne, należy je aktywować – można nadawać różne uprawnienia odczytu/zapisu zmiennych.

Podgląd na symulowany program

Wgrany program do symulatora działa bez zarzutu, przejdźmy teraz do kontroli wersji!

GIT

Jeden by wszystkimi rządzić… znaczy jeden obraz wart jest… GIT, system kontroli wersji, jest jednym z najpopularniejszych w świecie IT, nie bez powodu – umożliwia automatyzację łączenia kodu zmienianego równolegle przez wielu programistów, tworząc odgałęzienia itp. Na nasze, automatyków, potrzeby wystarczy żebyśmy mogli lokalnie obserwować zmiany naszego kodu, cofać je, nadzorować rozwój projektu. GIT jest jeden, natomiast jego implementacji na windowsie jest kilka – interfejs użytkownika z którego korzystam widać poniżej:

Pobieranie git for windows

Po zainstalowaniu, dodaniu swojego użytkownika w postaci adresu mailowego (może być fikcyjny), możemy rozpocząć przygodę z GITem.

Dodawanie repozytorium (w skrócie – folderu kontrolowanego przez git)

Wybór folderu

Potwierdzenie stworzenia repozytorium

Po stworzeniu repozytorium i jego otwarciu widzimy interfejs główny, gdzie wyświetlana jest lista plików uznanych jako nowe/zmodyfikowane, listę plików zatwierdzonych, okno wyświetlające zmiany w wybranym pliku i na koniec przyciski do kontroli wraz z miejscem na komentarz/podpis zmian wersji.

Zatwierdzenie kontroli nowych plików

Zmiany można rozpocząć od przycisku Rescan który odświeża listę zmienionych plików, następnie używamy Stage Changed które zatwierdza zmiany i przenosi pliki z listy zmienionych do zatwierdzonych. Kolejnym krokiem może być Sign Off które dodaje podpis, z danymi naszego użytkownika oraz datą, opis zmian nie jest wymagany. Przycisk Commit zatwierdza zmiany i tworzy kolejny punkt w historii wersji. Ostatni przycisk Push służy do wysłania zmian lokalnych do głównego repozytorium (nie jest używane jeżeli korzystamy jedynie z lokalnego repozytorium).

Wprowadzenie zmian w programie

Skoro w poprzednim kroku zatwierdziliśmy wersję (Commit) to należałoby coś zmienić aby przetestować działanie GITa. (dodane zostały linie kodu 14-17).

Dodanie zmian w gicie

Po zmianie kodu programu opcServer widzimy, że GIT wykrył modyfikację pliku i umożliwia wyświetlenie zmian wraz z informacją o zmienionych liniach (tutaj dodanych), wyświetlane są także okoliczne linie aby ułatwić wizualizację. Linie które zostały dodane są wyświetlane kolorem zielonym, usunięte natomiast czerwonym. Zatwierdźmy (Commit) i przejdźmy do wizualizacji historii zmian!

Widok na historię zmian (w poprzednim oknie, zakładka Repository -> Visualize master’s history)

Interfejs zmian zawiera drzewo zmian, użytkownika wprowadzającego zmiany wraz z datą, zmienione linijki kodu oraz pliki. Można tutaj przeglądać wprowadzone zmiany w kolejnych wersjach, jak również przywrócić projekt do wybranego stanu. GIT umożliwia również podgląd nadzorowanych plików:

Widok na pliki i foldery nadzorowane przez git (w głównym oknie, zakładka Repository -> Browse master’s files)

Widać tutaj specyficzny plik .gitignore, który zawiera informacje jakie pliki, foldery lub rozszerzenia mają być pomijane, w tym przykładzie pomijane są foldery /binaries/  i  /temp/  zawierające pliki binarne i tymczasowe, których nadzorować nie potrzebujemy.

VSCode i wąż!

Biblioteka wykorzystywana do komunikacji OPC UA to FreeOpcUa (link github: https://github.com/FreeOpcUa/python-opcua). Kod wykorzystany poniżej to przerobiony przykład (examples -> client_example.py), dostosowany do tego co potrzebujemy sprawdzić. Poniższy przykład zawiera jedynie wycinek możliwości tej biblioteki, gorąco polecam tym bardziej, że jest to przyszłościowy kierunek w automatyce.

Kod programu klienta OPC, cz. 1/2

Kod programu, widoczny powyżej, wraz z opisem, składa się po krótce z importu bibliotek, definicji funkcji i inicjalizacji zmiennych.

Kod programu klienta OPC, cz. 2/2. Podgląd na symulację PLC

Powyżej widać część kodu wraz z podglądem na symulacje PLC.

Czytanie wartości zmiennej z serwera OPC UA

Zaznaczone czerwonym kolorem obszary zawierają – wywołanie funkcji odczytu (lewa strona) i podgląd na aktualne wartości (prawa strona), jak widać funkcja read() pobiera wartość zmiennej ProducedDint i wyświetla ją w konsoli.

Zmiana wartości zmiennej na serwerze OPC UA

Analogiczna sytuacja do poprzedniej, lecz tym razem zamiast odczytu przeprowadzamy zapis funkcją write(). Podgląd zmiennych wyświetla, że wartość ConsumedDint to 123, pomimo, że w konsoli wprowadziliśmy wartość ConsumedDint = -123, ta zmiana jest zawarta w kodzie programu (linie 14-17).

Kontroluj albo cierp

Wracasz do projektu nad którym pracował ktoś inny? Nie masz zielonego pojęcia co się zmieniło w między czasie? Programiści IT też stali przed tym problemem i między innymi dlatego powstały systemy kontroli wersji, przede wszystkim zaoszczędza nam to ogrom czasu.. automatyzując!

PS. Niestety nie da się używać gita do TIA Portal (sprawdzane do wersji v15).

 

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Październik 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ą.
24 października 2019 / Kategoria: , , , ,

Reklama

NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

>KLIKNIJ<

Komputer przemysłowy vs sterownik PLC, czy komputer przemysłowy + sterownik PLC?

Komputer przemysłowy vs sterownik PLC, czy komputer przemysłowy + sterownik PLC?

>KLIKNIJ<

Kluczowe aspekty doboru odzieży, czyli krótki poradnik dla osób pracujących z wrażliwą elektroniką

Kluczowe aspekty doboru odzieży, czyli krótki poradnik dla osób pracujących z wrażliwą elektroniką

>KLIKNIJ<

Webinarium online: Kompaktowe rozwiązania dla Automatyki Budynkowej

Webinarium online: Kompaktowe rozwiązania dla Automatyki Budynkowej

>KLIKNIJ<

Aktualizacja Therm od Rittal – obliczanie parametrów doboru klimatyzacji

Aktualizacja Therm od Rittal – obliczanie parametrów doboru klimatyzacji

>KLIKNIJ<

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

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

>KLIKNIJ<

Robot Lutowniczy REECO wygrywa z Mistrzem Polski w Lutowaniu na wydarzeniu Polskiej Wystawy Gospodarczej

Robot Lutowniczy REECO wygrywa z Mistrzem Polski w Lutowaniu na wydarzeniu Polskiej Wystawy Gospodarczej

>KLIKNIJ<

Programowanie PLC od podstaw – kurs dla automatyków i elektryków #2 – Jak tworzyć i edytować projekty w oprogramowaniu Cscape?

Programowanie PLC od podstaw – kurs dla automatyków i elektryków #2 – Jak tworzyć i edytować projekty w oprogramowaniu Cscape?

>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





MOŻESZ SIĘ TYM ZAINTERESOWAĆ

  • 1,740 PLN
    Szkolenie prowadzimy w naszym Autoryzowanym Centrum Szkoleniowym w Warszawie przy ul. Bukowińskiej 22 (lok. 1B, wejście od ul. Pejzażowej). W czasie jego trwania kursanci mają do dyspozycji trzy stanowiska szkoleniowe wyposażone w roboty Un...
    Czas trwania: 2 dni
    Link: Terminy
  • 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ł...
  •   RPC-2A-UNI  przekaźnik czasowy – Działający po zaniku napięcia zasiania, przy załączonym przekaźniku wykonawczym.     Przekaźnik przeznaczony do stosowania w instalacjach niskiego napięcia w automatyce przemysłowej, w automatyce bud...
  • EW1xxBD to panele webowe serii Esaware firmy ESA z wbudowaną przeglądarką internetową obsługującą technologię HTML5. Dostępne w dwóch wersjach – z systemem operacyjnym Android lub Linux (dzięki obsłudze CODESYS Web Visu, urządzenia wyświetl...
  • EPSITRON®ECO & COMPACT Power OSZCZĘDNOŚĆ KOSZTÓW Zasilacze EPSITRON® ECO i COMPACT Power to nie tylko oszczędność przy zakupie, ale również niższe koszty dzięki łatwej obsłudze oraz braku konieczności serwisowania. Są one doskonałym roz...
  • 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...