Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2019/10/zdjecie-wyroznione-git-automatyka-iautomayka.pl-1200-628.jpg

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


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.



Utworzono: / Kategoria: , , , ,

Reklama



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY
  • Pomiar odległości to jedna z podstawowych dziedzin w technologii czujników. Do określania położenia w różnorodnych zastosowaniach wykorzystywana jest szeroka gama procesów. Firma Pepperl+Fuchs już teraz – w odróżnieniu od konkurencji ...
  • Czym jest PRRT? PRRT oznacza Power Remote Reset Technology, opatentowaną funkcję, którą posiadają wybrane switche przemysłowe PoE i media konwertery firmy Antaira. Prezentowana funkcja umożliwia łatwe zresetowanie zasilanego urządzenia w zd...
  • PR200 to uniwersalne i łatwe w obsłudze urządzenie zaprojektowane w plastikowej obudowie do montażu na szynie DIN jako alternatywa dla PLC. Przekaźnik jest dostępny w kilku wersjach dla napięcia stałego i przemiennego. Jest wyposażony w cyf...
  • 1,000 PLN
    Zdobądź wiedzę i bądź pewny, że nic Cię nie zaskoczy. Nie musisz przekopywać się przez tony katalogów i instrukcji. Oferujemy Ci kompleksowy system szkoleń, który sprawi, że najpierw zbudujesz fundamenty swojej wiedzy, a później pod okiem n...
    Czas trwania: 7h - 14 h
    Link: Terminy
  • Monitorowanie obciążenia i rozdział potencjałów w jednym kompletnym rozwiązaniu To innowacyjny system dystrybucji napięcia 24 V DC zapewniający monitorowanie obciążenia i dystrybucję potencjałów w jednym kompletnym rozwiązaniu. Bezawaryjna ...
  • Przeznaczony do pracy na wolnym powietrzu EMC / ekranowany Zakres zastosowania Budowa instalacji przemysłowychBudowa maszynTechnika grzewcza i klimatyzacyjnaElektrownie Dla przemiennika częstotliwości zasilającego 3 – fazowe silniki A...