Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2017/10/pfc200-tło2.jpg

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


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


W czwartym odcinku po pracach przygotowawczych w dwóch poprzednich odcinkach przyszedł czas na crème de la crème pisania programu na sterowniki – algorytm sterowania. Coś, co stanowi serce programu, a dzięki czemu maszyna pracuje zgodnie z zamysłem programisty.

W tym odcinku:

  • Zaprojektujemy i omówimy algorytm sterowania pompownią w trybie automatycznym i ręcznym.
  • Utworzymy blok funkcyjny sterowania pompami napisany w języku tekstowym ST.
  • Przetestujemy symulacyjnie działanie algorytmu sterowania.

Algorytm sterowania pompownią

Pracę nad algorytmem zaczniemy od opisu słownego. Najczęściej w taki sposób  programista sterowników dostaje wytyczne od technologa czy projektanta z innej branży co ma zrobić .

Zasadę działania naszego układu sterowania można streścić w kilku punktach:

  1. Na raz może pracować tylko jedna pompa.
  2. W trybie automatycznym, gdy poziom wody się podniesie powyżej nastawy lub załączy się czujnik pływakowy poziomu maksymalnego, to załącz pompę. Wyłączenie pompy ma nastąpić po opadnięciu poziomu w studni poniżej nastawy poziomu wyłączenia pompy lub załączenia się czujnika pływakowego poziomu suchobiegu.
  3. Pompy mają pracować naprzemiennie – po cyklu załączenia i wyłączenia pompy P1 po ponownym podniesieniu się poziomu w studni ma załączyć się i wyłączyć pompa P2. Potem ponownie P1, P2 itd.
  4. Jeśli jedna pompa jest w trybie ręcznym, to druga pracuje tak, jakby pierwsza była odstawiona.

Przejdźmy teraz do przedstawienia algorytmu sterowania w trybie automatycznym w sposób bliższy programiście, czyli za pomocą schematu sekwencji SFC:

Rys. 1. Graf SFC algorytmu sterowania pompownią w trybie automatycznym.

W kroku S1 obydwie pompy są wyłączone. Jeśli poziom ścieków się podniesie oraz pompa P1 jest dostępna, to przechodzimy do kroku S2. Jeśli poziom ścieków się podniesie, a pompa P1 nie jest dostępna, a jest dostępna P2, to przejdź do kroku S4. Pamiętajmy, że czytając schematy SFC, jeśli nie jest opisane inaczej, w rozgałęzieniach alternatywnych tranzycje sprawdzamy od lewej do prawej, czyli jeśli obydwie tranzycje są prawdziwe, to idziemy do kroku wskazywanego przez tranzycję po lewej stronie.

W kroku S2 załączamy pompę P1, w kroku S4 załączamy pompę P2. W kroku S3 analogicznie do kroku S1 znowu nie załączamy żadnej z pomp, ale tym razem jeśli się poziom wody podniesie, to najpierw mamy spróbować załączyć pompę P2, a jeśli się nie uda, to dopiero wtedy załączamy pompę P1. W ten sposób jest realizowana w sekwencji praca naprzemienna pomp.

Algorytm sterowania pompy w trybie ręcznym sprowadza się do załączenia pompy po naciśnięciu przycisku „Start”. Warto zwrócić uwagę, że pompa ma się załączyć po wykryciu zbocza narastającego sygnału „Start”. Rzecz w tym, że załączenie pompy w trybie ręcznym to musi być świadoma decyzja operatora. Niedopuszczalna jest sytuacja, że pompa wystartuje natychmiast po przełączeniu w tryb ręczny, bo np. ktoś zablokował przycisk „Start” albo jest zwarcie na wejściu cyfrowym.

Instrukcja CASE … OF w języku ST jako sposób implementacji sekwencji

Język tekstu strukturalnego ST (ang. Structured Text) jest jednym z dwóch języków tekstowych opisywanych przez normę IEC-61131 obok listy instrukcji IL. Jest w przeciwieństwie do IL językiem wysokopoziomowym, co oznacza, że pozwala on na wprowadzenie wyższego poziomu abstrakcji. Nie znającym tego języka polecam kurs programowania w ST opublikowany przez WAGO.

W naszym projekcie wykorzystamy instrukcję wyboru CASE … OF. Jej składnia została wyczerpująco opisana w czwartej części wspomnianego już kursu, więc nie będziemy tutaj jej omawiać. W programowaniu sterowników PLC jej popularnym zastosowaniem jest implementacja sekwencji. Schemat tego wzorca implementacji sekwencji jest następujący:

  1. Zaktualizuj wartość kroku aktywnego w tym cyklu.
  2. Sprawdź, który krok jest aktywny.
  3. Sprawdź warunki tranzycji.
  4. Jeśli jest prawdziwa, to zmień krok aktywnego w następnym cyklu.
  5. Wykonaj sterowania w oparciu o aktywny aktualnie krok.

Poniżej zamieściłem prosty przykład, jak to wygląda w programie e!COCKPIT.

Rys. 2. Przykład implementacji sekwencji w języku ST.

W polu zmiennych bloku funkcyjnego znajdują się dwie zmienne „usiAktywKrok” oraz „usiAktywKrok_n” (pole nr 1). Pierwsza oznacza krok aktywny w tym cyklu wykonania programu, zaś druga krok aktywny w następnej pętli programowej. Istotna jest inicjalizacja tych zmiennych – w pierwszym cyklu programu graf jest nieaktywny, a aktywny się staje dopiero w następnym cyklu.

W kodzie programu następują po sobie kolejne elementy zgodnie z przedstawionym powyżej schematem, czy aktualizujemy aktywny krok w tym cyklu (pole nr 2), sprawdzamy, który krok jest aktywny (pole nr 3), sprawdzamy warunek przejścia (pole nr 4), jeśli jest prawdziwy, to zmieniamy krok aktywny w następnym cyklu (pole nr 5), oraz wykonujemy sterowanie (pole nr 6).

Na samym końcu znajduje się instrukcja wykonania sterowań. Ich wykonanie jest uzależnione od aktualnie aktywnego kroku, którym jest zmienna „usiAktywKrok” będąca warunkiem wyboru dla instrukcji CASE … OF. W przykładzie ustawiam tylko zmienną „xZalUrz1” na „TRUE”, jeśli aktywny jest drugi krok, ale równie dobrze wynikiem wykonania sterowania może być wywołanie funkcji, bloku funkcyjnego lub np. akcji. Warunek wykonania sterowania może być też bardziej rozbudowany i uzależniony nie tylko od aktywnego kroku sekwencji, ale także od np. innej zmiennej w złożonym warunku logicznym.

Implementacja algorytmu sterowania

Na powyższym rysunku wrzuciłem implementację algorytmu sterowania w trybie automatycznym wykonaną zgodnie z opisem metody w poprzednim punkcie. Skupię się na kilku sprawach, nad którymi warto się zatrzymać.

Rys. 3. Blok funkcyjny sterowania pompami – implementacja sekwencji algorytmu sterowania w trybie automatycznym.

Formatowanie kodu źródłowego. Używając tabulatur tekst układa się w logiczne kolumny, co ułatwia jego czytanie oraz analizowanie. Warunku przejścia w poszczególnych IF-ach układałem tak, że każdy składnik warunku, niezależnie czy warunek jest typu „x_1 AND x_2 AND …. AND x_n” czy też „x_1 OR x_2 OR …. OR x_n”, zaczyna się w nowej linii, chyba że w warunku danego typu mamy do czynienia z drugą operacją logiczną, jak np. w sprawdzeniu, czy poziom w studni opadł, gdzie w kaskadzie OR’ów mamy warunek typu AND (pole nr 1).

Warunki tranzycji są zwięzłe, czytelne i powtarzalne dzięki zastosowaniu zmiennych generowanych przez blok kontroli pompy, jak np. flaga dostępności pompy w trybie automatycznym (pole nr 2). Spróbujcie sobie wyobrazić, że wszystkie składniki warunku tej zmiennej są wpisywane do warunków przejścia w każdym miejscu, gdzie używamy zbiorczej flagi.

Każdy krok opisuję komentarzem (pole nr 3). Zapisuję w nim numer kroku oraz przypisaną akcję, a nad warunkami przejścia piszę aktualny krok oraz krok docelowy. Ułatwia do później rozczytywanie kodu algorytmu bez spoglądania do grafu SFC.

Rys. 4. Blok funkcyjny sterowania pompami – wykonanie sterowań.

W drugiej części bloku funkcyjnego znajduje się wykonanie sterowań. Do ich użycia użyłem bloków funkcyjnych przerzutników RS (pole nr 1). Wywołując blok funkcyjny w ST w nawiasie umieszczamy zmienne wejściowe i wyjściowe bloku – wejściowe są oznaczane za pomocą znaku „:=”(pole nr 2), a wyjściowe „=>”(pole nr 3) .

Pierwszą zmienną wejściową jest „S”, czyli warunek załączenia pompy. W nim mamy dwa składniki, czyli sprawdzenie aktywnego kroku w trybie automatycznym oraz naciśnięcie przycisku start w trybie ręcznym.

Drugim jest „R”, czyli warunek wyłączenia pompy. Na niego składa się nie tylko sprawdzenie stanu algorytmu w stanie automatycznym, ale także wszystkie pozostałe sytuacje, w których pompa powinna zostać wyłączona, czyli wciśnięty przycisk „Stop” w trybie ręcznym, stan odstawienia pompy czy też praca drugiej pompy.

Ostatnia zmienna to zmienna wyjścia „Q”, która ustawia sygnał załączenia pompy.

Krótkie zadanie dla Was. Przeanalizujcie kod źródłowy powyższego bloku i odpowiedzcie na następujące pytania:

1. Co się dzieje w sytuacji, gdy pomiar poziomu ścieków będzie uszkodzony i będzie przekłamywał albo w ogóle przestanie działać? Czy pompownia dalej będzie pracować? Na podstawie których sygnałów?

2. Co się dzieje, jak w trybie ręcznym jest równocześnie wciśnięty „Start” oraz „Stop” pompy?

Testowanie i symulacja

Na obrazku wrzuciłem tylko fragment podglądu kodu źródłowego bloku funkcyjnego sterowania pompami ze względu na jego objętość oraz oczywiście nasz wirtualny pulpit sterowniczy, który utworzyliśmy w poprzedniej części.

Rys. 5. Symulacja.

Edytor języka ST w Codesys 3 pozwala na dość wygodny podgląd, co się dzieje w trybie online w naszym kodzie. Po symbolach zmiennych wyświetlają się ich aktualne wartości, czyli zgodnie z naszym rysunkiem po zmiennej typu:

  • BOOL wyświetla się wartość „TRUE” na niebieskim tle lub „FALSE” na tle czarnym (pole nr 1). Zwróćcie uwagę, że identyczna kolorystyka jest stosowana w podglądzie online w edytorze LAD.
  • INT i inne typy całkowitoliczbowe w prostokącie na pomarańczowym tle (pole nr 2).
  • REAL na w prostokącie na pomarańczowym tle (pole nr 3). Zwróćcie uwagę, że prostokąt jest dużo dłuższy, co pozawala na lepszą orientację w kodzie. Inną rzeczą wartą uwagi jest wyświetlanie się wartości zmiennej „i_rPozZal”, która miała w momencie wykonania screenshota wartość równą dokładnie 90 i jest wyświetlana bez przecinka, co może mylić co do typu zmiennej.

I teraz to, co najciekawsze – przetestujcie napisany przeze mnie program! W jaki sposób do tego podejść? Wróćcie do opisu słownego, do grafu SFC i sprawdźcie każdy scenariusz. Dzięki wirtualnemu pulpitowi nie będzie to trudne.

Co to znaczy każdy scenariusz? To znaczy, że musicie sprawdzić każdą sytuację przewidzianą przez opis słowny, a także każdą przez nią nieprzewidzianą a możliwą. Sprawdźcie:

  • Pracę naprzemienną pomp – czy załączają się zgodnie z sekwencją.
  • Czy w przypadku błędnego ustawienia poziomów załączenia i wyłączenia pomp lub też nieprawidłowego działania przetwornika sondy hydrostatycznej  czujniki pływakowe mają dominujący wpływ na sterowanie pompami, czy też może nie?
  • Czy blokady działania pomp działają prawidłowo?
  • Czy pompy są sterowane prawidłowo, kiedy obydwie są w trybie automatycznym lub obydwie są w trybie ręcznym? A co w sytuacji, gdy pracują w różnych trybach?

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 kursu zaimplementowaliśmy algorytm sterowania pompownią. Omówiliśmy w tym celu sposób implementacji sekwencji w języku ST, utworzyliśmy blok funkcyjny oraz przetestowaliśmy jego działanie.

W następnym, już ostatnim odcinku serii, rozbudujemy ekran główny wizualizacji.


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
  • Poniższy poradnik jest zbiorem schematów połączeń elektrycznych. W poradniku zapoznamy się z podstawami wprowadzenia do systemów przekaźnikowych, sekwencji przełączeń przekaźników, porównania systemów przekaźnikowych z systemami tradycyjnym...
  • 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...
  • Drukarka i aplikator owijek Wraptor A6500r™ A6500. Automatyzuje proces identyfikacji przewodów i kabli. Wraptor automatycznie drukuje i nakłada etykiety samolaminujących w pięć sekund a tym samym zwiększa wydajność produkcji i oszczę...
  • Zapraszamy do składania zapytań ofertowych o wszystkie produkty EATON w tym sterowniki easyE4 przez portal allektro.pl (Kliknij tutaj) lub przez kontakt e-mail oferty@staport.p&...
  • Autor: Paweł Wiącek, Kierownik Produktu Czujniki Przemysłowe, SICK Sp. Z o.o. SLT – Smart Light Tower, czyli inteligentna optyczna kolumna sygnalizacyjna pracująca po IO-Link   SLT zapewnia elastyczność w wizualizacji przebiegu procesó...
  • Wyświetlacz słupkowy ITP15 jest kompaktowym wskaźnikiem procesowym, który wizualizuje analogowy sygnał wejściowy w zakresie od 0 do 100% z 10 słupkami po 10%. Sygnałem wejściowym może być liniowy sygnał napięciowy 0 (2) -10 V lub sygnał prą...