Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2018/04/Kurs-programowania-PLC-cz1.jpg

Kurs programowania sterowników PLC na przykładzie pompowni w e!COCKPIT cz. 1/5


Artykuł z serii: Kurs programowania PLC na sterowniku WAGO PFC


W tej serii powstałej we współpracy z firmą WAGO, zapoznamy się z podstawami programowania i symulacji sterowników programowalnych w środowisku e!COCKPIT opartym na CODESYS 3. Naszym głównym zadaniem tej serii  będzie napisanie programu dla układu sterowania przepompowni ścieków z dwoma pompami P1 oraz P2.

Nasz pierwszy artykuł będzie poświęcony absolutnym podstawom, w ramach których:

  • Zainstalujemy oprogramowanie narzędziowe.
  • Krótko omówimy możliwości programu e!COCKPIT.
  • Omówimy realizowane w ramach kursu zadanie projektowe.
  • Opiszemy krok po kroku, jak utworzyć nowy projekt.
  • Napiszemy w drabince prosty program w języku LAD.
  • Utworzymy prostą wizualizację.
  • Przeprowadzimy symulację programu i wizualizacji.
  • Na końcu pliki z projektem do pobrania .

Pobranie oprogramowania oraz licencja

Program e!COCKPIT można pobrać ze strony producenta >> TUTAJ. <<

WAGO pozwala na korzystanie z wersji ewaluacyjnej przez 30 dni, w trakcie których jest uruchamiany program. Oznacza to, że nie korzystając z e!COCKPIT nasz limit się nie wyczerpuje, dopóki nie uruchomimy danego dnia oprogramowania.

Po uruchomieniu uruchomi się okienko informujące ile dni nam jeszcze zostało oraz umożliwiające zakup licencji lub wprowadzenie klucza.

Rys. 1. Okno informujące o limicie dni wersji ewaluacyjnej

Krótko o oprogramowaniu e!COCKPIT i sterownikach PFC200

Oprogramowanie narzędziowe e!COCKPIT firmy Wago służy do programowania sterowników PLC serii PFC200.

Bazuje ono na uniwersalnym oprogramowaniu do sterowników PLC Codesys 3. Umożliwia ono między innymi:

  • Programowanie w 6 językach programowania (IL, LAD, FBD, CFC, ST, SFC).
  • Zintegrowany edytor wizualizacji.
  • Programowanie zorientowane obiektowo OOP.
  • Konfigurację Webservera.

Do tych zalet należy dołączyć cechy samego sterownika PFC200, który się wyróżnia:

  • Wysoką gęstością upakowania sygnałów przypadających na moduł rozszerzeń.
  • Dużym wyborem dostępnych protokołów komunikacyjnych, w tym zwłaszcza typowych dla automatyki budynkowej takich jak KNX czy DALI, przez co cieszy się dużą popularnością zwłaszcza w aplikacjach inteligentnych budynków.

Zadanie projektowe – przepompownia ścieków

Naszym zadaniem będzie napisanie programu dla układu sterowania przepompowni ścieków z dwoma pompami P1 oraz P2, takiej jak przedstawionej przez Marcina Faszczewskiego w kursie czytania schematów elektrycznych. Przed przystąpieniem do czytania dalszej części powtórzcie sobie dobrze wspomniany kurs, a zwłaszcza przeanalizujcie pierwszą część oraz dokumentację opisującą algorytm sterowania.

Na potrzeby kursu przyjmiemy następujące założenia upraszczające zadanie:

  • Brak systemu kontroli dostępu oraz sygnalizacji alarmowej dźwiękowej oraz optycznej.
  • Dozwolona praca tylko jednej pompy na raz – sytuacja „z życia wzięta”, zabezpieczenie zainstalowane w szafie licznikowej energetyki było za małe na pracę dwóch pomp jednocześnie.

Sygnały podłączone do sterownika (mogą się delikatnie różnić od tych przedstawionych w dokumentacji analizowanej w kursie czytania schematów):

A. Wejścia cyfrowe:

  1. Przycisk „Start P1”.
  2. Przycisk „Stop P1”.
  3. Potwierdzenie pracy P1.
  4. Awaria P1.
  5. Tryb pracy P1 – ręczny.
  6. Tryb pracy P1 – automatyczny.
  7. Przycisk „Start P2”.
  8. Przycisk „Stop P2”.
  9. Potwierdzenie pracy P2.
  10. Awaria P2.
  11. Tryb pracy P2 – ręczny.
  12. Tryb pracy P2 – automatyczny.
  13. Stop bezpieczeństwa.
  14. Czujnik pływakowy poziomu – suchobieg.
  15. Czujnik pływakowy poziomu – maksymalny.

B. Wejścia analogowe:

  1. Pomiar poziomu lustra ścieków w studni.

C. Wyjścia cyfrowe:

  1. Załącz P1.
  2. Załącz P2.

Utworzenie projektu

Przejdźmy do naszego pierwszego kroku, czyli utworzenia naszego pierwszego projektu. Po uruchomieniu e!COCKPIT oraz zamknięciu okna z rys. 1. na ekranie powinien się ukazać taki widok.

Rys. 2. Utworzenie projektu – wybór szablonu oraz sterownika.

Chcąc utworzyć nowy projekt mamy możliwość utworzyć zarówno kompletnie pusty projekt, jak i wybrać któryś z predefiniowanych szablonów. My wybierzemy „Product Series 750” (pole nr 1). Szablon zawiera wybrany sterownik dodany do konfiguracji sprzętowej, program PLC_PRG, skonfigurowane zadanie oraz dodane podstawowe biblioteki (pole nr 2). Z listy rozwijanej wybierzemy nasz sterownik, który będziemy programować (pole nr 3). Mój wybór padł na pierwszy z brzegu sterownik PFC100 CS 2ETH ECO (numer katalogowy  750-8100) wyposażony w dwa porty ethernetowe.

Rys. 3. Utworzenie projektu – wybór języka.

Po wybraniu interesującego nas urządzenia oraz przewinięciu na dół ukaże się nam lista rozwijana, w której możemy wybrać język prekonfigurowanego programu „PLC_PRG” (pole nr 1). Należy przy tym pamiętać, że oznacza to tylko tyle, że to POU będzie miało wybrany taki język programowania – po utworzeniu projektu przyciskiem „Create projekt” (pole nr 2) będziemy mogli definiować inne POU’y w dowolnych językach, a także po prostu skasować „PLC_PRG”.

Rys. 4. Ekran konfiguracji sieciowej i sprzętowej

Po wybraniu przycisku „Create project” ukaże się nam ekran naszego projektu, a dokładniej ekran konfiguracji sieciowej i sprzętowej. W głównym oknie zobaczymy dodany przez nas sterownik (pole nr 1). Po prawej stronie znajduje się katalog produktów (pole nr 2), z którego możemy wybrać moduły rozszerzeń dla naszego sterownika, takie jak wejścia/wyjścia cyfrowe/analogowe, komunikacyjne czy też bardziej specjalizowane, a także panele HMI i inne sterowniki PLC. W tym artykule nic więcej nie będzie potrzebne z tego widoku, więc przejdziemy od razu do programowania. Klikamy więc w menu „Device” -> „Programming” (pole nr 3).

Konfiguracja aplikacji

Po kliknięciu przycisku „Programming” otworzy się nam następujący ekran.

 

Rys. 5. Widok ogólny ekranu programowania

Zaczniemy od krótkiego opisu tego, co widzimy w tym widoku. Wstążka (pole nr 1) zawiera następujące pola:

  • „Connection” – Nawiązywanie połączenia ze sterwonikiem.
  • „Online” – Praca ze sterownikiem w trybie online, czyli uruchomienie symulacji, jeśli nie nawiązaliśmy połączenia z fizycznym sterownikiem, start/stop aplikacji na sterowniku/symulatorze oraz jej resetowanie.
  • „Functions” – Funkcje służące do wgrywania programu, bootowalnej aplikacji oraz kodu źródłowego.
  • „Source download” – Funkcje związane z kompilacją i zarządzaniem kodem źródłowym.
  • „Search” – Wyszukiwanie zmiennych oraz listy powiązań.
  • „Import/Export” – Importowanie i eksportowanie z/do innych formatów.

Okno „Progam structure” (pole nr 2) zawiera całą strukturę naszego programu. To w niej się znajduje nasza aplikacja („APP_Podstawy”), program („P_SterKontrolki”) oraz wszystkie inne elementy programu. Omówimy je dokładniej dalej. Zwróćmy uwagę jeszcze na pasek w prawym dolnym rogu (pole nr 3). W nim znajdziemy informację o stanie naszego połączenia oraz o numerze aktualnej kompilacji, na której pracujemy.

Rys. 6. Struktura oraz elementy programu.

Przyjrzymy się teraz bliżej elementom składowym aplikacji. W celu dodania nowego elementu klikamy prawym przyciskiem myszy na folder naszej aplikacji (symbolizowany przez kółko zębate). Otworzy się nam menu z listą rozwijaną elementów, które możemy dodać do naszej aplikacji (pole nr 1). Wszystkich nie będziemy omawiać, ponieważ bogactwo wyboru elementów w oprogramowaniu e!COCKPIT bazujące na Codesys 3 jest tak duże, że jego wyczerpujące omówienie wymagałoby co najmniej kilku artykułów.

W naszym programie znajdują się następujące elementy:

  • Jednostki organizacyjne programu POU <ang. Program Organization Unit> (pole nr 2). U nas będą to w tej części kursu program „P_ProgGlowny” (pole nr 6).
  • Ekran wizualizacji (pole nr 3), u nas pod nazwą V_EkranGlowny (pole nr 7).
  • Globalna lista zmiennych <ang. Global variable list> „gvlStud1” (pole nr 4), będąca formą struktury zawierającej zmienne globalne. Należy zwrócić uwagę, że w Codesys 3 nie funkcjonuje coś takiego jak „samodzielna zmienna globalna” – musi ona być przypisana do GVL.
  • Pula obrazów <ang. Image pool> (pole nr 5).

 

Rys. 7. Globalna lista zmiennych.

Najpierw zaczniemy od dodania zmiennych globalnych, których będziemy używać w programie. W tym celu otwieramy utworzoną wcześniej globalną listę zmiennych „gvlAp”. Otworzy się nam edytor z tabelą zawierającą zmienne. Znaczenie jej kolejnych kolumn:

  1.  „Scope” – zasięg zmiennej (pole nr 1).
  2. „Name” – nazwa (pole nr 2).
  3. „Adress” – adres w pamięci sterownika (pole nr 3)
  4. „Data type” – typ zmiennej (pole nr 4).
  5. „Initialization” – wartość, która ma zostać nadana zmiennej po uruchomieniu programu przed wykonaniem pierwszego cyklu (pole nr 5).
  6. „Comment” – komentarz opisujący zmienną (pole nr 6).
  7. „Attributes” – atrybuty (pole nr 7).

Na ten moment dodamy tylko trzy zmienne, które będą nam potrzebne w tym momencie do napisania prostego programu w drabince – czujniki pływakowe poziomu suchobiegu oraz maksymalnego oraz alarm o ich błędnym działaniu.

Zwróćcie uwagę na nazwę zmiennych oraz komentarz:

  • Prefiks „x” oznacza, że zmienna jest typu BOOL, co pozwala na łatwiejsze czytanie programu. Jest to zgodne z popularną metodyką posługiwania się prefiksami do podkreślenia istotnej informacji o zmiennej (np. „c_” oznacza zmienną typu CONSTANT, „usi” oznacza UNSIGNED SCHORT INTEGER itd. – jedynie BOOL jest oznaczony nieoczywistym „x”, ponieważ „b” jest zarezerwowane dla typu BYTE).
  • Nazwa zmiennej informuje nas skrótowo o jej funkcji. Istotne jest, żeby nie była ona zbyt długa, bo prowadzi to później do mniejszej czytelności kodu. Lepiej szczegółowe informacje zawrzeć w komentarzu.
  • W komentarzu szczegółowo informujemy o funkcji zmiennej. Dla zmiennych boolowskich w nawiasie zawsze piszę informacje o znaczeniu logicznego „0” i „1”, dzięki czemu nie muszę się potem zastanawiać, czy sygnał funkcjonuje w logice dodatniej czy ujemnej.

Rys. 8. Pula obrazów.

Kolejny edytor to pula obrazów „IP_loga”. Pula obrazków sjest obiektem, w którym przechowujemy obrazy wykorzystywane przez nas później w wizualizacji. Składają się na niego następujące kolumny:

  1. „ID” – nazwa obrazu, którą się będziemy posługiwać chcąc ją użyć w wizualizacji.
  2. „File name” – nazwa pliku obrazu.
  3. „Image” – kolumna zawierająca miniaturkę obrazu.
  4. „Link type” – typ powiązania obrazu z projektem.

Program

Teraz jesteśmy gotowi, żeby napisać nasz pierwszy program.

Rys. 9. Edytor LADDER

Najpierw kilka słów o edytorze LAD w e!COCKPIT. Na samej górze edytora mamy tabelę zmiennych funkcji. Wygląd i znaczenie kolumn tabeli jest identyczne jak w globalnej liście zmiennych. Jedyna różnica to etykiety zasięgu zmiennych (pole nr 1) – tutaj możemy zadecydować o tym, czy jest to zmienna lokalna dla POU’a, wejściowa, wyjściowa czy też wejściowo-wyjściowa.

Przejdźmy do okna kodu. Na górze każdej gałęzi można zamieścić tytuł gałęzi oraz komentarz (pole nr 2), pozwalające na dokumentowanie kodu programu. Gałęzi nadałem tytuł będący kopią komentarza do zmiennej, którą będziemy sterować, bez informacji o rodzaju logiki zmiennej. W przypadku tak prostej gałęzi drabinki nie widzę powodu na dodanie bardziej rozbudowanego komentarza – nie jest najlepszą praktyką w komentarzu gałęzi pisać to, co wprost wynika z kodu albo z dokumentacji zmiennej lub wywoływanego POU’a, lepiej pisać to, co nie jest oczywiste i nie wynika z pierwszego rzutu oka na kod lub dokumentację. Z kolei sam tytuł  jest o tyle istotny, że po zminimalizowaniu gałęzi tylko on będzie widoczny, więc warto opisać w nim kilku słowach, co się dzieje w gałęzi, ponieważ to ułatwi późniejsze poruszanie się po POU’le.

Kod jest na tyle prosty i na tyle dobrze udokumentowany poprzez tytuł gałęzi oraz nazwy zmiennych czy ich komentarze, że nie wymaga dłuższych wyjaśnień. Jest to klasyczna realizacja logicznej funkcji AND w języku drabinkowym przy użyciu pary styków NO (pole nr 3) oraz cewki NO (pole nr 4). Alarm w praktyce służy do wykrywania na etapie rozruchu czy serwisu, czy sygnały z czujników pływakowych zostały dobrze wpięte  – jeśli nie, bo np. zostały zamienione miejscami na listwie przyłączeniowej lub też pomylono styki NO z NC, to natychmiast się o tym dowiemy, ponieważ nie możemy mieć równocześnie mieć poziomu w studni powyżej poziomu maksymalnego oraz poniżej poziomu suchobiegu.

Po prawej stronie znajduje się przybornik (pole nr 5), z którego możemy dodawać elementy do naszej drabinki – styki, cewki, timery, bloki funkcyjne itd.

Wizualizacja

Przejdźmy teraz do wizualizacji.

Rys. 10. Edytor wizualizacji.

Tworzyć ją będziemy w ekranie wizualizacji „V_EkranGlowny”. Po prawej stronie mamy przybornik z elementami wizualizacji (pole nr 1), z którego możemy wybrać różnego rodzaju lampki, przyciski, obrazki okna alarmów oraz inne elementy wizualizacji. Bliżej środka umieściłem ekran właściwości wybranego elementu wizualizacji (pole nr 2), takie jak wyświetlany tekst, kolor itd. Każdy element posiada swoją pulę właściwości.

Na naszym ekranie znajdą się dwa takie elementy – pierwszy to pole tekstowe (pole nr 3)  zmieniające kolor tła w zależności od zmiennej alarmu „gvlStud1.xAlBladCzPoz” przypisanej do właściwości „Colorvariables : Toggle color” (pole nr 4)

Drugi element to umieszczony na górze ekranu obrazek z logo WAGO (pole nr 5), który wcześniej dodaliśmy w IP_PulaObrazow.

Uruchomienie oraz testowanie

Aby uruchomić symulację, należy przejść do okna „Debugg”  (pole nr 1), a następnie w poli „Execute” (pole nr 2) wybrać „Start simulation”, dzięki czemu uruchomimy symulację sterownika wraz z wgraniem naszego projektu, a następnie „Start” w celu przejścia w tryb „RUN”. W tym momencie nasza symulacja będzie już działać.

Rys. 11. Symulacja

W naszym przypadku na potrzeby przetestowania układu otworzymy trzy poniższe okna:

  • „P_ProgGlowny” (pole nr 3) zawierający program w drabince.
  • „gvlStud1” (pole nr 4) zawierające globalną listę zmiennych.
  • „V_EkranGlowny” (pole nr 5) zawierający ekran wizualizacji.

W celu przetestowania działania programu będziemy manipulować wartościami zmiennych „gvlStud1.xCzPozSuch” oraz „gvlStud1.xCzPozMaks”. W tym celu należy wpisać – lub też ewentualnie wyklikać w przypadku zmiennych typu BOOL – pożądaną wartość w kolumnie „Prepared value” (pole nr 6) , a następnie potwierdzić jej zapis za pomocą przycisku „Write” (pole nr 7). Aktualną wartość zmiennych będziemy mogli obserwować w kolumnie „Value” (pole nr 8).

Zmianę wartości będziemy też widzieć w ekranie drabinki. Logiczna jedynka jest reprezentowana przez podświetlenie na kolor niebieski. Symulując różne wartości sygnałów czujników pływakowych sprawdzimy poprawność działania naszego programu. W oknie drabinki widzimy, jak styki oraz cewka się podświetla w stanie wysokim, dzięki czemu wyraźnie widać, czy program działa poprawnie. Zwróćcie uwagę, że wpisanie wartości w „gvlStud1.xAlBladCzPoz” nic nie da – wartość zostanie natychmiast nadpisana przez tą wynikającą z programu.

Analogicznie powinniśmy widzieć w wizualizacji efekt naszych działań – pole tekstowe zmienia kolor na czerwony, gdy przypisana do niej flaga alarmu zmieni stan na wysoki.

DO POBRANIA

Program e!COCKPIT można pobrać ze strony producenta >> TUTAJ. <<

Projekt programu z tej części kursu: Program PLC do e!COCKPIT

Podsumowanie

W tym odcinku przedstawiłem Wam krok po kroku, jak utworzyć projekt, napisać prosty program oraz wizualizację oraz jak uruchomić symulację programu.

W następnym odcinku przejdziemy do bardziej zaawansowanych tematów – utworzymy strukturę pompy oraz blok funkcyjny kontroli pompy. Aby być na bieżąco zapisz się do newslettera iAutomatyka lub polub i obserwuj fanpage iAutomatyka.pl.

Pozdrawiam, 
Łukasz Kurzawa


Więcej z serii: Kurs programowania PLC na sterowniku WAGO PFC


Utworzono: / Kategoria: ,
  • Autor: Łukasz Kurzawa
  • Jestem absolwentem studiów inżynierskich Automatyki i Robotyki na Wydziale Elektroniki Politechniki Wrocławskiej. Moje zainteresowania zawodowe koncentrują się wokół automatyzacji procesów ciągłych (przemysł chemiczny, gospodarka wodno-ściekowa, HVACR, energetyka). Zapraszam do czytania moich publikacji oraz do kontaktu.
  • Profil Autora

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY
  • Urządzenia firmy FATEK istnieją na rynku polskim od 2004 roku i stały się alternatywą dla już istniejących rozwiązań i urządzeń. Niezawodność, korzystna cena i możliwości sterowników PLC sprawiły, że zyskały one ogromne zainteresowanie prog...
  • 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...
  • Przy użyciu flexROOM® można szybko i łatwo realizować automatykę budynkową na potrzeby biur i budynków administracyjnych, zgodną z obowiązującymi normami i efektywną energetycznie. flexROOM® to szeroki wachlarz rozwiązań dla automatyki budy...
  • 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
  • SIR6W, to nowa seria przekaźników interfejsowych przeznaczonych do separacji wejść/wyjść w aplikacjach PLC oraz do wielu różnych aplikacji jako elementy pośredniczące i wykonawcze. • SIR6W, to przekaźniki o niewielkich wymiarach 88,6 x 6,2 ...
  • Nowe modułowe sterowniki programowalne PLC firmy Eaton umożliwiają producentom maszyn i systemów opracowywanie nowoczesnych koncepcji automatyki, zwłaszcza w połączeniu z systemem XN300 I/O i panelem dotykowym XV300. Modułowy sterownik zape...