System kontroli wersji oprogramowania

Cześć,
mam pytanie do Was. Czy w automatyce i programowaniu PLC istnieje coś takiego jak systemy kontroli wersji? Jak radzicie sobie z programowaniem w zespole kilku/kilkunasto osobowym, w którym każdy pracuje nad częścią funkcjonalności? Jak wymieniacie się nowymi napisanymi funkcjami? Programowanie wysokopoziomowe i to nazwę to średniopoziomowe jak Python czy C++ ma GITa, SVNa, a PLC?
Ja tu widzę problem chociażby nawet z adresacją pamięci, tak, aby nie zajmować już przez kogoś zarezerwowanej wcześniej.
Czekam na Wasze odpowiedzi !

1 polubienie

Pytałem w firmie o to samo. Niestety kod źródłowy w PLC to nie zawsze jest zwykły tekst. Do drabinki kontroli wersji chyba jeszcze nikt nie wymyślił. Tia Portal coś powoli wprowadza możliwość jednoczesnej pracy kilku programistów, ale jak na razie pod tym względem ciężko.

Codzienny archive projektu z datą YYYYMMDD_HHMMSS i wtedy mamy przynajmniej punkt powrotu.
Automation Studio od B&R ma wbudowaną kontrolę zmian (coś na kształt gita) i jest już łatwiej opanować, ale to wynika z faktu, że Automation Studio jest bliżej do programowania IT niż automatyki

Jeśli o TIA chodzi to jest Multiuser Engineering.
Wersja lokalna działa bez licencji i pozwala na ograniczoną kontrolę wersji, tj. mozemy zachować chyba do 100 wersji programu i jeśli będzie taka potrzeba zrobić rollback do poprzedniej.
Sam soft zapisuje komentarz przy wprowadzaniu zmian i informację o obiektach, które zostały zmienione.
Pełna wersja, tj. z licencją pozwala na zainstalowanie serwera na osobnej maszynie, do której następnie może podłączać się kilka osób. Kazdy zaciąga sobie lokalną wersję projektu i pracuje na niej ale serwer informuje uzytkownikow na biezaco jeśli ktos inny wprowadza modyfikacje do bloków w danym projekcie przez wyswietlenie odpowiednich ikon przy blokach więc wiemy co się dzieje i co kto robi.
Dodatkowo jest comissioning mode który automatycznie wrzuca zmiany na serwer w przypadku rozpoczęcia downloadu projektu do urzadzenia docelowego.
Application Example:
https://support.industry.siemens.com/cs/document/109740141/

Od V15.1 są tez Software Units, gdzie idea jest taka ze kazdy robi swój Software Unit ze swoimi tagami itd. Kazdy moze zaladowac swoj do sterownika niezaleznie i nie ma problemu, wiec rozni integratorzy mogą przygotować rózne kawałki softu na ten sam sterownik.
Problem jest taki ze nie ma jeszcze osobnych namespace dla SU więc nazwy muszą byc unikalne niestety. Ma to być rozwiazane w kolejnych wersjach, ale aktualnie trzeba nazywac zmienne np. SoftwareUnit1_Tag1 zeby uniknac problemow.

3 polubienia

O ile pisząc sam kod w STL można śmiało korzystać z Git lub SVN o tyle brakuje dobrego IDE do obsługi komend, trzeba poznać kontrolę wersji z poziomu command line. Założyć bezpłatne konto i dodawać zmiany do repozytorium na GitHub, Bitbucket czy GitLab czy na lokalnym serwerze.
Nadal jednak nie rozwiązuje to problemu z kodem blokowym FBD. Ale dziś znalazłem całkiem przypadkowo rozwiązanie firmy AUVESY. Nazywa się ono Versiondog.
Jeszcze nie miałem okazji zagłębić się bardziej w jego funkcjonalność, ale chciałbym napisać coś o tym więcej może w osobnym artykule niedługo :slight_smile:

kontrola wersji SVN i GIT będzie w TIA16

4 polubienia

Git jest ekstra, aktualnie pracuję nad programem w Automation Studio (B&R) i kontroluję zmiany Git’em, z użyciem GUI do Windowsa jest już bardzo wygodnie.
Przestrzegam natomiast przed nadmiernym grzebaniem, ponieważ “niechcący” przywróciłem ostatnią zapisaną (commit) wersję i straciłem pracę z całego dnia :face_with_hand_over_mouth:

Dałbyś radę może artykuł/tutorial opracować w klubie na ten temat? :open_mouth:

Pewnie! Może nawet w tym miesiącu :smiley:

2 polubienia

Właśnie to jest najlepsze, że możesz wszystko przywrócić używając konsoli :slight_smile: nawet, te napisane commity. Nie chce tu uchodzić za specjalistę od Gita bo nim nie jestem, ale jest masa artykułów i kursów na internecie i dobrą opcją jest się tego nauczyć :slight_smile: dla własnej wygody. Git raczej nie odejdzie zbyt szybko o ile w ogóle…

1 polubienie