Strona główna ASTOR

Jak porównywać wartości i wykorzystać wyniki operacji logicznych?
Kurs programowania PLC od podstaw
Odc. 6

Kontakt w sprawie artykułu: Kamil Zajdel - 2020-02-05

Z tego artykułu dowiesz się:

  • Jak działają bloki służące do porównywania wartości?
  • Jakie typy bloków porównywania danych dostępne są w Cscape?
  • Jak poprawnie wykorzystywać porównywanie danych w programie sterującym?

W poprzednim artykule poznałeś/aś zasadę działania timerów oraz dowiedziałeś/aś się jak je konfigurować. W tym artykule poznasz bloki służące do porównywania wartości w języku drabinkowym.

Kurs programowania PLC od podstaw dla automatyków i elektryków

Podstawy programowania sterowników PLC

  • 1. Wprowadzenie. Jak skonfigurować, podłączyć oraz uruchomić sterownik PLC?
  • 2. Jak tworzyć i edytować projekty w oprogramowaniu Cscape?
  • Programowanie sterownika PLC w języku drabinkowym

  • 3. Jak tworzyć oraz konfigurować bazę zmiennych w środowisku Cscape?
  • 4. Jak korzystać ze styków, cewek i bloków operacji arytmetycznych w programie sterującym?
  • 5. Jak odmierzać czas w programie sterującym i jak konfigurować timery?
  • 6. Jak porównywać wartości i wykorzystać wyniki operacji logicznych?
  • 7. Jak zliczać impulsy i konfigurować liczniki?
  • 8. Jak konwertować typy zmiennych i przemieszczać zmienne w programie?
  • 9. Jak sterować wykonywaniem programu logicznego? Instrukcja skoku warunkowego
  • Programowanie zintegrowanego panelu HMI

  • 10. Jak budować ekrany operatorskie z obiektami do wizualizacji i zadawania wartości zmiennych?
  • 11. Jak umożliwić nawigację między ekranami operatorskimi oraz jak korzystać z gotowych obiektów graficznych w środowisku Cscape?
  • 12. Jak wizualizować zmienne analogowe oraz jak modyfikować ich wartości przy pomocy obiektów dostępnych w oprogramowaniu Cscape?
  • 13. Jak korzystać z obiektu menu?
  • 14. Konfiguracja i obsługa alarmów w sterownikach PLC
  • 15. Kontrolka Data Trend
  • Komunikacja sterowników PLC w sieci szeregowej i Ethernet

  • 16. Komunikacja szeregowa Modbus RTU Master i Slave
  • 17. Komunikacja CsCAN
  • 18. Komunikacja Ethernet Modbus TCP
  • 19. Wysyłanie wiadomości Email w sterowniku PLC
  • Zaawansowane funkcje sterownika PLC

  • 20. Regulator PID
  • 21. Składowanie danych: Data logging
  • 22. Składowanie danych: karta MicroSD
  • 23. Trendy historyczne oraz receptury w programie
  • 24. Setpoint, backup i restore danych oraz generowanie raportów z poziomu sterownika
  • 25. Hasła i zabezpieczenia w programie, ustawienia języka oraz edytor dostępny w narzędziu, opcja autodokumentacji / Dodatkowe ustawienia i możliwości edycji
  • Jak działają bloki służące do porównywania wartości?

    Bloki porównywania danych należą do jednych z najczęściej wykorzystywanych funkcji w programach sterujących. Przy ich pomocy możesz sterować sygnałami w zależności od relacji występującej pomiędzy porównywanymi wartościami argumentów.

    Wprowadza to pewien dynamizm i zwiększa możliwości tworzonych aplikacji. Po tej części kursu będziesz mógł/mogła sprawnie pracować z tymi blokami i korzystać z ich operacji.

    Jakie bloki porównywania wartości dostępne są w środowisku Cscape?

    Bloki porównywania pracują z wartościami typu INT, DINT, REAL, UINT, DUINT, LREAL. Argumenty mogą być liczbami stałymi lub rejestrami. Operacja porównania zwraca wartości prawda/fałsz w zależności od wyniku. W przypadku prawdy na wyjściu bloku wystawiany jest sygnał.

    Do programu sterującego bloki te można wstawiać z paska narzędziowego:

    Aby operacje porównywania były dostępne z poziomu paska, należy zaznaczyć tę opcję w Menu -> View -> Toolbars -> Compare Operations:

    Dostępne rodzaje operacji porównywania:

    EQ (Equal) – równe – porównuje dwie wartości i przesyła sygnał, gdy są one sobie równe.

    NE (Not Equal) – różne – porównuje dwie wartości i przesyła sygnał, jeśli wartości te są od siebie różne.

    LT (Less Than) – mniejsze – porównuje dwie wartości i przesyła sygnał, jeżeli wartość IN1 jest mniejsza od IN2.

    GT (Greater Than) – większe – porównuje dwie wartości i przesyła sygnał, jeżeli wartość IN1 jest większa od IN2.

    LE (Less Than or Equal) – mniejsze bądź równe – porównuje dwie wartości i przesyła sygnał, jeśli wartość IN1 jest mniejsza lub równa wartości IN2.

    GE (Greater Than or Equal) – większe bądź równe – porównuje dwie wartości i przesyła sygnał, jeśli wartość IN1 jest większa lub równa wartości IN2.

    LIM (Limes) – blok granicy – porównuje, czy wartość IN mieści się w zadanym zakresie Low i High. Przesyła sygnał, jeśli wartość mieści się w podanym zakresie.

    Programowanie w akcji!

    Wykorzystując poznane bloki porównywania wartości, uzupełnij aplikację o logikę sprawdzającą stan poziomu wody w zbiorniku oraz odpowiednie sterowanie zaworami napełniającymi i opróżniającymi tak, by nie doprowadzić do przepełnienia lub zapowietrzenia zbiorników.

    W tym celu dla każdego zbiornika określ poziom maksymalny – 50 litrów oraz poziom minimalny – 0 litrów, przy których nastąpi zamknięcie odpowiednich zaworów.

    Wykorzystanie porównania wartości da Ci informację, czy poziom wody w zbiorniku nie osiągnął którejś ze skrajnych wartości.

    Krok 1: Dodaj blok porównania poziomu wody do maximum

    Przejdź do stworzonego podprogramu Zbiornik1 i w nowym szczeblu dodaj styk normalnie otwarty. W konfiguracji przypisz do niej zmienną systemową ALWAYS_ON o adresie %S007, która zawsze daje stan wysoki i zapewnia wykonywanie dalszej części kodu szczebla w każdym cyklu.

    Następnie z górnego paska narzędziowego wstaw blok porównania GE (większy lub równy) i klikając w niego dwukrotnie, przejdź do konfiguracji.

    Newsletter Poradnika Automatyka

    Czytaj trendy i inspiracje, podstawy automatyki, automatykę w praktyce

    Please wait...

    Dziękujemy za zapis do newslettera!

    Krok 2: Jak skonfigurować blok porównania?

    Najpierw zmień obsługiwany typ na REAL, by móc dobrać odpowiednie zmienne.

    Kolejno, jako pierwszy argument IN1 przypisz zmienną Zbiornik1 (możesz wybrać z rozwijanej listy), natomiast do argumentu IN2 przypisz wartość 50.

    Blok ten, zgodnie z logiką działania, wystawi na wyjście sygnał, jeśli wartość zmiennej Zbiornik1, będzie większa lub równa 50.

    Ostatnim elementem szczebla będzie cewka resetująca, która zamknie zawór napełniający w momencie, gdy poziom wody będzie równy 50 litrów i większy. W oknie konfiguracji cewki przypisz do niej zmienną Zawor_napelniajacy_ZB1.

    Krok 3: Dodanie bloku porównania poziomu wody do minimum

    Logikę sterowania w celu zamknięcia zaworu opróżniającego w momencie osiągnięcia minimalnego poziomu wody w zbiorniku określisz w ten sam sposób.

    W tym celu ponownie wstaw styk normalnie otwarty i przypisz mu zmienną ALWAYS_ON, a następnie dodaj blok porównania LE (mniejsze bądź równe) i przejdź do jego konfiguracji.

    W pierwszym kroku zmień typ na REAL, następnie do argumentu IN1 przypisz zmienną Zbiornik_1, a do argumentu IN2 – wartość 0.

    Kolejno – za blokiem porównania – wstaw cewkę resetującą, która zamknie zawór opróżniający zbiornik numer 1, w momencie gdy poziom wody w tym zbiorniku osiągnie wartość 0.

    Do cewki resetującej przypisz zmienną Zawor_oprozniajacy_ZB1.

    Krok 4: Jak wykorzystać wyniki operacji porównania?

    Logikę sterowania kontrolującą poziom wody w zbiorniku numer 2 określisz tak samo, jak dla zbiornika numer 1. W tym celu skopiuj stworzone w tej części kursu szczeble i wklej w podprogramie Zbiornik_2 (zobacz poniżej) napisane wcześniej linijki.

    W kolejnym kroku zmienisz przypisane zmienne.

    Dla bloku GE – skonfiguruj argument IN1 jako Zbiornik_2. Podobnie dla bloku LE – argument IN1 również powinien przyjmować wartość zmiennej Zbiornik_2.

    Dla cewki resetującej występującej po bloku GE – ustaw zmienną Napelnianie_Zbiornika_ZB2, natomiast dla poniższej cewki przypisz zmienną Oproznianie_Zbiornika_ZB2.

    Finalnie podprogram powinien wyglądać tak:

    Od teraz, wtedy, gdy poziom wody w zbiorniku numer 2 osiągnie wartość równą 50 litrów lub więcej, jego zawór napełniający zostanie zamknięty. Natomiast w momencie, gdy poziom wody w tym zbiorniku będzie równy 0, jego zawór opróżniający zostanie przesterowany.

    Krok 5: Określ logikę sterowania wykorzystująca bloki porównania dla zbiornika numer 3

    Poziom wody w zbiorniku numer 3 jest zwiększany, gdy otwierasz zawór opróżniający zbiornik numer 1 lub zawór opróżniający zbiornik numer 2.  W związku z tym program sterujący związany z kontrolowaniem wartości poziomu wody i sterowaniem zaworami będzie analogiczny do poprzednich zbiorników, ale dodatkowo rozbudowany.

    W tym celu skopiuj stworzone w dzisiejszej lekcji linijki z podprogramu Zbiornik2 i wklej je w podprogramie Zbiornik3, poniżej napisanego już kodu.

    Następnie w blokach porównywania zmień argument IN1 na Zbiornik_3. Pozostałe parametry nie wymagają zmiany.

    W kolejnym kroku wstawisz dodatkową cewkę resetującą w pierwszej wklejonej linii. Wiąże się to z faktem, iż zbiornik numer 3 napełniany jest w momencie opróżniania zbiornika numer 1 i zbiornika numer 2.

    Kiedy blok porównania wykryje, że poziom wody w zbiorniku numer 3 osiągnął wartość równą 50 lub więcej, wystawi sygnał, który powinien zamknąć zawory opróżniające pozostałe zbiorniki, poprzez cewki resetujące.

    W związku z tym, do pierwszej cewki resetującej przyporządkuj zmienną Zawor_Oprozniajacy_ZB1, natomiast do drugiej, nowo dodanej, przypisz zmienną Zawor_Oprozniajacy_ZB2.

    Do cewki resetującej znajdującej się w poniższym szczeblu, po bloku porównującym LE, przypisz zmienną Zawor_Oprozniajacy_ZB3. Dzięki temu po osiągnięciu minimalnego poziomu wody w zbiorniku numer 3, zamknięty zostanie jego zawór opróżniający.

    Krok 7: Wgraj program do sterownika i przetestuj jego działanie

    Tak przygotowany program sterujący możesz wgrać do sterownika przy pomocy ikony Download to… Upewnij się, że sterownik jest w trybie RUN.

    Dopilnuj, aby na pasku podglądu kodu nie znajdowały się więcej niż 4 otwarte podprogramy – zamknij niepotrzebne z nich. Następnie otwórz okno Data Watch oraz włącz tryb Debug.

    W celu przetestowania działania programu, w oknie Data Watch dodaj następujące zmienne:

    Spora ilość materiału związana z programowaniem w języku drabinkowym już za Tobą! Jest jeszcze kilka istotnych tematów, które wymagają dalszej uwagi i pracy.

    W kolejnym odcinku kursu poznasz bardzo przydatne bloki funkcyjne – liczniki. Najpierw poczytasz o ich możliwościach i zasadach działania, następnie nauczysz się ich konfiguracji i finalnie wykorzystasz je w tworzonej aplikacji.


    W kolejnym artykule z cyklu kurs „Programowanie PLC od podstaw – kurs dla automatyków i elektryków”: Jak zliczać impulsy i konfigurować liczniki?

    • Jak działają bloki funkcyjne służące do zliczania impulsów w sterowniku PLC?
    • Jakie rodzaje liczników dostępne są w oprogramowaniu Cscape?
    • Jak konfigurować liczniki i jak poprawnie wykorzystywać je w programach?

    Czy ten artykuł był dla Ciebie przydatny?

    Średnia ocena artykułu: 4.8 / 5. Ilość ocen: 4

    Ten artykuł nie był jeszcze oceniony.

    Zadaj pytanie

    Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *