ZOSTAŃ PARTNEREM PORTALU

Firma Johnson Controls to światowy lider w zakresie zróżnicowanych technologii i przemysłu świadczący usługi dla klientów w ponad 150 krajach. 170 000 naszych pracowników tworzy wysokiej jakości produkty, usługi i rozwiązania umożliwiające optymalizację wydajności energetycznej oraz obsługowej budynków.

Korporacja Mitsubishi Electric, posiadająca 90 lat doświadczenia w zakresie dostarczania niezawodnych, wysokiej jakości innowacyjnych produktów w dziedzinie automatyki przemysłowej, produkcji, marketingu i sprzedaży urządzeń elektrycznych i elektronicznych. Programowalne sterowniki PLC, rozwiązania napędowe, roboty przemysłowe, panele dotykowe, wycinarki laserowe i sterownie CNC firmy Mitsubishi Electric zaliczają się do produktów najwydajniejszych na rynku i gwarantują sukcesy firmy już od ponad 30 lat.

WAGO jest producentem urządzeń automatyki przemysłowej i budynkowej oraz systemów połączeń dla elektrotechniki i elektroniki. Powstanie w 1951 roku firmy WAGO było wyrazem przekonania o słuszności obranego kierunku i stworzyło podwaliny pod dalszy rozwój technologii. Z czasem stała się ona standardem na całym świecie i teraz nie sposób wyobrazić sobie nowoczesnej instalacji elektrycznej czy systemu automatycznego sterowania bez wyrobów WAGO.

Exact matches only
Szukaj w tytule
Search in content
Szukaj postów i artykułów
Search in pages
Szukaj w katalogu firm

KILKA PORAD PROGRAMOWANIA PLC

KILKA PORAD PROGRAMOWANIA PLC
W tym wpisie chcę podzielić się z Wami zasadami, jakimi kieruję się przy programowaniu sterowników PLC. Bez obaw, nie będę tłumaczył funkcji logicznych ani programowania drabinkowego. Przedstawię kilka porad i trików ułatwiających nie tylko bieżące pisanie programu ale również późniejszą analizę i modernizację.

W swojej karierze miałem do czynienia z wieloma sterownikami różnych producentów. Napotykałem między innymi sterowniki marki Siemens, Allan Bradley, GeFanuc, Horner, Unitronics i inne. Wiele z nich zaprogramowałem od podstaw ale miałem też sporo przypadków, gdzie musiałem zmodernizować program lub go dokładnie przeanalizować. Natknąłem się przy tym na różne style programowania., gdzie jedne budziły podziw i stanowiły inspirację, inne zaś odpychały od monitora. Nie jestem jakimś Guru programowania sterowników PLC jednak nie jeden sterownik, który zaprogramowałem działa do dzisiaj. Pozwól zatem, że podzielę się z Tobą moimi spostrzeżeniami.

#0 Zapoznaj się ze środowiskiem programowania

Nie ważne jaki sterownik PLC zaczynasz programować, w każdym oprogramowaniu, czy to będzie TiaPortal, Simatic Manager – Step 7, RSLogix czy jakikolwiek inny to powinieneś na początku poświęcić trochę czasu na zapoznanie się z tym środowiskiem programowania. Na początku zapoznaj się z możliwościami tego programu, sprawdź jakie sterowniki i moduły możesz nim zaprogramować. Skonfiguruj ustawienie okien i powyciągaj skróty najczęściej używanych funkcji. Wciśnij klawisz F1 i sprawdź jakie są skróty klawiaturowe. Np. w step 7 F2, F3 wstawiają w programie drabinkowym bramki NO i NC. Spisz lub wydrukuj sobie takie skróty, połóż na biurku i korzystaj z nich.

Sprawdź jakie narzędzia udostępnia Twoje oprogramowanie. Przykładowo w TiaPortal i Step 7 są narzędzia do generowania mapy pamięci sterownika „Cross Reference”. Dzięki temu narzędziu można sprawdzić które obszary pamięci są już wykorzystane i uniknąć wykorzystania np. tego samego markera w dwóch różnych operacjach.

Generalnie: nie rozpędzaj się zbyt szybko, poświęć chwilę na zapoznanie się z narzędziami programowania.

ZALETY:

  • Sprawniejsze pisanie programu,
  • Optymalizacja programu dzięki narzędziom oprogramowania,
  • Programowanie PLC staje się mniej uciążliwe dzięki personalizacji środowiska do programowania.

#1 Organizuj pliki programów

Wypracuj w sobie dobre nawyki. Jednym z nich jest dobra organizacja plików programów PLC. Utwórz swoją własną strukturę folderów, gdzie podzielisz je np. na klientów, pomieszczenia czy maszyny – to już zależy od Twojego charakteru pracy.

Każdą wersję programu zapisuj w nowym pliku/projekcie o nazwie w jednym formacie. Jak dotąd najbardziej odpowiada mi nazwa pliku czy folderu z datą, nazwą i wersją programu:

format: RRRR_MM_DD_NAZWA_WERSJA
np: 2015_07_26_maszyna_do_pakowania_V0.4

Dzięki dacie wiadomo w jakim czasie powstała ostatnia wersja programu, ale też przy wielu projektach wiadomo, kiedy powstała pierwsza wersja, a kiedy ostatnia aktualizacja programu PLC. 

Nazwa określa klienta, miejsce lub rodzaj maszyny w zależności od charakteru projektu.

Wersja programu finalnie nie jest konieczna. Przydaje się w przypadku testowania programu, kiedy tworzymy kilka wersji jednego dnia i kolejno wgrywamy je do sterownika PLC. Taka praktyka jest niezwykle przydatna np. po przypadkowym usunięciu części programu PLC – zawsze można wrócić odo poprzedniej wersji :). Programista docenia to dopiero jak utraci  wielogodzinną pracę na programem PLC.    

Analogicznie można postępować nazywając foldery a w nich umieszczać pliki programu o dowolnej nazwie.

ZALETY:

  • Organizacja plików pozwala na sprawniejsze zarządzanie programami,
  • Wybierając początek nazwy jako RRRR_MM_DD programy będą ustawiać się od najstarszego do najnowszego.

#2 Pisz historię programu PLC

Do każdego projektu PLC możesz utworzyć zwykły plik .txt i umieścić go w głównym folderze z wersjami danego programu PLC. Zapisuj w nim każdą zmianę lub szereg zmian  od momentu finalnej „działającej” wersji programu PLC. Przykład umieściłem na poniższym rysunku:

Organizacja_programow_PLC_Organize

Rys. 1 – Przykład organizacji plików programów PLC i prowadzenia pliku z historią programu

ZALETY:

  • Zarówno Ty jak i każdy inny, komu udostępnisz pliki programu będzie znał historię zmian. Jest to bardzo przydatne w przypadku kilku osób mających dostęp do sterownika PLC – w razie nieprawidłowego działania inna osoba może wgrać poprzednią wersję.
  • Z perspektywy czasu zapominamy jak działa program mimo, że sami go napisaliśmy dlatego im więcej zapiszemy podczas jego tworzenia tym lepiej. 
  • Jedno odpowiednie zdanie z przed roku może przypomnieć bardzo wiele. Bez niego musiałbyś np. analizować na nowo część kodu programu.

#3 Dobrze nazywaj zmienne / symbole w programie

W każdym środowisku programowania zmienne (słowa, bity itp.) można opisywać za pomocą symboli i/lub komentarzy. Małe programy bez szczegółowych komentarzy nie stanowią dużego wyzwania, duże programy bez dobrych opisów są bardzo trudne do analizy. Dobrze opisany program ułatwia programiście dalszą pracę ale też pozwala innym lepiej ten program eksploatować. Jest kilka szkół opisywania adresów danych, niektóre programy zawierają opisy skrótowe a niektóre bardziej szczegółowe. Dokładne opisywanie zajmuje sporo czasu i stosuje się je programach powtarzalnych np. kiedy firma sprzedaje dużo produktów z oprogramowaniem PLC.

Nazwa symbolu (tag) zmiennej zazwyczaj jest ograniczona do kilku znaków. Często symbol zmiennej jest opisywany skrótowo. Dobrze, jeżeli przez ten symbol jesteśmy w stanie wywnioskować jego znaczenie. Przykładowo czujnik optyczny 11B2 jest zainstalowany na transporterze TRX-11. Symbol  zmiennej odpowiadającej za działanie tego czujnika mógłby nazywać się następująco:

  • OPT_11B2_TRANS_TRX-11

Ważne przy tym jest aby następne czujniki i pozostałe zmienne nazywać analogicznie, zachowując logiczny ciąg. Kolejnego czujnika optycznego 12B6 na transporterze TRX-24 nie powinniśmy nazywać np.:

  • FOTOKOMORKA_12B6_TRX-24
    a reczej:
  • OPT_12B6_TRANS_TRX-24

Niektóre oprogramowania PLC nie tolerują spacji i np. polskich znaków w nazwach symboli. Miałem taki przypadek: Musiałem zaprogramować i skomunikować sterownik PLC S7-1200 Siemens i panel dotykowy firmy WEINTEK. W sterowniku PLC S7-1200  używałem w nazwach symboli polskich znaków bez problemu. Dopiero gdy skorzystałem z opcji importowania zmiennych z S7-1200 do WEINTEKA zaczęły się problemy. Zmienne bez polskich znaków były odczytywane i wyświetlane prawidłowo a te z polskimi znakami już nie :).

Do zmiennych w niektórych oprogramowaniach można dodawać komentarze, które nie są widoczne bezpośrednio w kodzie programu a dopiero np. po najechaniu myszką na daną zmienną. Nie tyle dla programisty PLC ale do późniejszego analizowania programu przez inne osoby jest to niezwykle pomocne. Komentarz do naszego czujnika optycznego 11B2 mógłby być następujący:

  • „11B2 – wejście I2.6 – Czujnik optyczny NO na wjeździe transportera TRX-11”

Poniżej zamieszczam przykład ze środowiska TiaPortal Siemensa:

Rys. 2. Przykład ze szczegółowym komentarzem zmiennej w programie PLC

Rys. 2. Przykład ze szczegółowym komentarzem zmiennej w programie PLC

Osobiście uważam, że opisywanie zmiennych co najmniej symbolami w programach PLC jest konieczne. Pominięcie tego obowiązku powinno być karane komisyjną chłostą programisty 🙂

ZALETY:

  • Im więcej opisów zmiennych tym program jest czytelniejszy,
  • Gdy powracamy do programu z przed kilku miesięcy czy nawet lat doceniamy nasz wysiłek włożony w dokładne opisywanie!
  • Program jest czytelny osobom trzecim np. w diagnostyce nieprawidłowego zachowania układu sterowania

#4 Opisuj program PLC

Jeżeli mamy sporo czasu na pisanie programu PLC to warto pokusić się o szczegółowe opisy linijek kodu. Zwłaszcza w przypadku dużych i/lub skomplikowanych programów. Myślę, że każdy network powinien zawierać chociaż tytuł. Niektóre środowiska programowania pozwalają na dodawanie szczegółowych komentarzy do każdego network’a. Przykład w TiaPortal:

Rys. 3. Komentarz do Network'a w programie PLC

Rys. 3. Komentarz do Network’a w programie PLC

ZALETY:

  • Im więcej opisów zmiennych tym program jest czytelniejszy,
  • Gdy powracamy do programu z przed kilku miesięcy doceniamy nasz wysiłek włożony w dokładne opisywanie!
  • Program jest czytelny osobom trzecim np. w diagnostyce nieprawidłowego zachowania układu sterowania

#5 Organizuj przestrzeń pamięci bitowej

Jeżeli w sterowniku nie można organizować pamięci w tablicach to przed przystąpieniem do pisania programu PLC postaraj się chociaż wstępnie rozpisać zapotrzebowanie na obszar pamięci sterownika. Spróbuj oszacować ile słów (rejestrów) będzie wykorzystywane w programie i podziel je funkcjonalnie.

Przykładowo, jeżeli  mamy układ składający się z 10 urządzeń pomiarowych, z których otrzymujemy po jednym pomiarze. Chcemy je zapisywać do rejestrów 32 bitowych typu REAL (float). Nasze pomiary są konfigurowalne z poziomu panela operatorskiego i każde urządzenie pomiarowe wymaga jednej nastawy (parametr nastawialny).  Programujemy sterownik firmy Siemens.

Możemy zatem przyjąć taktykę, że nasze wartości pomiarowe zaczynają się od adresu pamięci MD100:

  • MD100 – pomiar 1
  • MD104 – pomiar 2
  • MD108 – pomiar 3
  • MD112 – pomiar 4
  • ….
  • MD136 – pomiar 10

Nie przewidujemy więcej urządzeń pomiarowych w naszym układzie ale przezornie zostawiamy kilka rejestrów rezerwowych na przyszłe pomiary. Dalej możemy definiować rejestry z nastawami np.:

  • MD160 – nastawa 1
  • MD164 – nastawa 2
  • MD168 – nastawa 3
  • MD172 – nastawa 4
  • ….
  • MD196 – nastawa 10

Głównie chodzi o to, aby zachować analogię i logiczny ciąg parametrów. Nie powinno się mieszać rejestrów pozostawiając je w nieładzie. Im większa powtarzalność Twojego programu tym bardziej jest on czytelny.

ZALETY:

  • Porządek w rejestrach,
  • Czytelność programu poprzez analogię i powtarzalność,
  • Większa kontrola nad pamięcią sterownika.

#6 Korzystaj z bloków danych

Korzystanie z bloków danych (np. w sterownikach Siemens czy Allen Bradley) w znaczny sposób ułatwia organizowanie pamięci sterownika. Rejestry programu mogą być przypisane do odpowiednich bloków ze względu na funkcję, miejsce, struktury, grupy urządzeń itd. Umieszczając rejestry w blokach danych nie musimy przywiązywać zbytnio uwagi na porządek, tak jak  korzystając z pamięci bitowej M ponieważ tablice te są od siebie niezależne.

Przykład 1:

  • DB1 – Przepływomierze (pomiary i nastawy)
  • DB2 – Czujniki ciśnienia (pomiary i nastawy)
  • DB3 – Pompy (pomiary i nastawy)
  • DB4 – Alarmy
  • DB5 – …..

Przykład 2:

  • DB1 – Wartości pomiarowe (przepływomierze, cz. ciśnienia, pompy)
  • DB2 – Nastawy (przepływomierze, cz. ciśnienia, pompy)
  • DB3 – Alarmy
  • DB4 – ….

ZALETY:

  • Większy porządek w rejestrach,
  • Czytelność programu poprzez analogię i powtarzalność,
  • Jeszcze większa kontrola nad pamięcią sterownika.

 

CDN.

13 grudnia 2015 / Kategoria: , ,
  • Autor: Marcin Faszczewski
  • Założyłem blog i portal iAutomatyka.pl aby publikować i szerzyć informacje związane z automatyką. Od artykułów wyjaśniających zasady w świecie automatyki po posty informacyjne z wydarzeniami firm. Zapraszam czytelników do założenia konta i publikowania postów o automatyce razem z nami. Zapraszam też firmy do założenia profilu i umieszczenia swojej działalności w katalogu i na mapie automatyki jak i publikowania postów wśród społeczeństwa automatyków.
  • Więcej wpisów
  • http://iautomatyka.pl/
  • Łukasz Marchewka

    Fajna strona, mam nadzieję, że będzie dalej się rozwijać i zdobędzie więcej czytelników!

    • Cieszę się, że Ci się podoba! Wykładam wszelkie starania aby pisać systematycznie 🙂

  • Adam j.96

    Bardzo ciekawy materiał, jestem na etapie technikum i mam zajęcia z programowania PLC, a takie rady z pewnością przydadzą się na przyszłość 😉

  • Woocash

    Świetna strona, przeczytałem wszystkie artykuły i czekam z niecierpliwością na kolejne! 🙂
    Chciałbym bardzo powiązać swoją przyszłość ze sterownikami PLC, jestem po technikum elektronicznym, niestety studiów nie mogę podjąć, w technikum sterowniki szły mi dosyć dobrze, ale może przez to, że pracowaliśmy na LOGO, które są o wiele łatwiejsze niż te używane w przemyśle. Niestety po technikum przez 1,5 roku pracowałem jako zwykły elektryk w małej firmie jak to w Polsce – na czarno, więc moja wiedza niezbyt się rozwijała w tym kierunku..
    Proszę powiedz mi – czy jest szansa aby z tytułem technika elektronika z uprawnieniami SEP do 1kV dostać pracę początkowo chociażby przy składaniu szaf sterowniczych?

    • Witaj Woocash!
      Myślę, że do składania szaf preferencje masz jak najbardziej wystarczające. W końcu dostajesz gotowy projekt, na bazie którego musisz wykonać połączenia. Potrzeba jedynie umiejętność czytania schematów i rozpoznawania poszczególnych urządzeń – resztę podpatrzysz u pozostałych. Nie ma czym się stresować! Jak masz w okolicy możliwość takiej pracy to ślij CV, bądź pewny siebie i idź na rozmowę! Zarobki na początku może nie są zadowalające ale od czegoś trzeba zacząć.

      Jeżeli chodzi o programowanie PLC na takim stanowisku to może być ciężko się wbić. Ja na Twoim miejscu próbowałbym w firmie gdzie składają szafy ze sterownikami PLC, rozpoznał sytuację i wykorzystywał każdą możliwą okazję aby wykonać coś z PLC – nawet kosztem darmowych nadgodzin i samodzielnej zabawy. W niektórych firmach można brać sprzęt do domu i go testować. Możliwości jest wiele oby się gdzieś załapać! DO DZIEŁA I POWODZENIA!

  • lipek81

    Ale numer 🙂 Skoro niezależnie doszliśmy do podobnych wniosków, to tylko utwierdza mnie, że to co robię, robię dobrze 🙂
    Dobrą metodą na ominięcie pisania komentarzy (czasem czasochłonnego) jest programowanie obiektowe i odpowiednie nazywanie bloków funkcyjnych. Przykładowo – piszę funkcję obsługi transportera (załącz, błąd, sterowanie auto-ręka, sygnał gotowości itp.). Przy wywołaniu funkcji blok danych, na którym ona operuje, nazywam symbolem transportera z layoutu. Wszystkie wywołania funkcji sterujących poszczególnymi urządzeniami zamykam w jednej funkcji np. drives_support. W tym momencie wszystko jest jasne i przejrzyste, która funkcja czym steruje, gdzie się one znajdują, a ile komentarzy do pisania mniej ;).
    Moim zdaniem dobrym zwyczajem jest też pisanie programów w języku angielskim.

  • Łukasz Pepliński

    Kilka uwag:

    foldery i kopie projektow z opisami zmian w plikach txt to zly pomysl moim zdaniem. Takie rzeczy zalatwia system kontroli wersji. Z programami w LAD co prawda diff srednio bedzie wygladal ale jak ktos pisze w ST to git zamyka temat.

    bloki i organizacja pamieci – te kwestie istnieja tylko w przypadku uzywania archaicznego (moim rzecz jasna zdaniem) jezyka drabinkowego i / lub przestarzalego IDE. Pracuje w Automation Studio B&R i zmienne sobie po prostu deklaruje – nie zastanawiajac sie w jakich obszarach pamieci wyladuja.

    • jacek

      Ech, nie zauważyłem i też napisałem o gicie.
      Jak w Automation Studio wygląda komunikacja z innymi urządzeniami jak nie ma komórek pamięci przypisanych do zmiennych? Jak chcę np. napisać jakiś własny soft do monitorowania i gadać przez ModbusTCP alb coś innego? Deklaruje się jakiś stały obszar?

  • jacek

    Do kontroli wersji są znacznie lepsze narzędzia wykorzystywane w programowaniu komputerów. Polecam program o nazwie GIT.
    Co prawda systemy kontroli wersji (VCS) są budowane raczej dla języków tekstowych i nie wspierają śledzenia zmian w plikach binarnych (a takie chyba są głównie w projektach PLC) ale i tak mają kilka przydatnych funkcji.

    Polega to na tym, że tworzysz projekt i repozytorium git dla projektu. POtem jak cokolwiek zmieniasz to robisz „commit” i wpisujesz komentarz. Git sam sobie kopiuje zmienione pliki w repozytorium.
    Zawsze możesz wrócić do poprzedniej wersji (poprzedniego commita) a potem znowu do późniejszej.
    Możesz odgałęziać projekt. Np chcesz coś zmienić i sprawdzić czy będzie lepiej działać. Tworzysz nową gałąź (branch) w bok i tam są „kopiowane” pliki projektu. Jak okaże się, ze chcesz zachować te zmiany to włączasz je do gałęzi głównej (merge) a jak nie to przełączasz się z nowej gałęzi do poprzedniej.

    Generalnie super sprawa. W normalnych językach tekstowych dla PC można także podejrzeć zmiany dokonane w poszczególnych commitach, porównać zmiany między commitami czy gałęziami itp.

    Poszczególne commity dla plików binarnych kopiują tylko zmienione pliki do repozytorium więc jest też oszczędność miejsca.

    Wymaga trochę nauki ale IMHO warto. Są wersje graficzne – TortoiseGit.

  • jacek

    Jeszcze jedno. Po co w nazwie zmiennej piszesz OPT. A jak kiedyś się zmieni z OPT na IND albo POJ? Lepiej chyba nazwać tak jak funckją, którą pełni TRX11_IN_GATE a resztę w komentarzu.

Wszystko stanie się prostsze po zalogowaniu :)

Przypomnij hasło

Nie masz konta? Zarejestruj się

Forgot your password?

Enter your account data and we will send you a link to reset your password.

Close
z

    Przetwarzamy pliki... jeszcze chwilka…