Programowanie PLC od podstaw – kurs dla automatyków i elektryków odc.4 – Jak korzystać ze styków, cewek i bloków operacji arytmetycznych w programie sterującym?
Przyszedł moment na jeden z najciekawszych momentów kursu, szczególnie jeśli nie miałeś/aś okazji programować w języku LAD. Stworzysz teraz pierwszy rozbudowany program logiczny wykorzystujący podstawowe elementy języka drabinkowego.
Programowanie PLC od podstaw – kurs 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
- 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 korzystać z przycisków, lampek i pól danych w tworzeniu ekranu operatorskiego?
- 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. Obiekt Menu
- 14. Alarmy i Data trend
Komunikacja sterowników PLC w sieci szeregowej i Ethernet
- 15. Komunikacja szeregowa Modbus RTU Master i Slave
- 16. Komunikacja CsCAN
- 17. Komunikacja Ethernet Modbus TCP i Email
Zaawansowane funkcje sterownika PLC
- 18. Regulator PID
- 19. Składowanie danych: Data logging oraz karta MicroSD
- 20. Trendy historyczne oraz receptury w programie
- 21. Setpoint, backup i restore danych oraz generowanie raportów z poziomu sterownika
- 22. 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
Na przykładzie sterowania zaworami zbiorników nauczysz się tworzyć logikę programu oraz symulację procesów używając styków, cewek oraz bloków operacji arytmetycznych. Zapraszamy więc do zgłębienia tej wiedzy i zdobycia kolejnych umiejętności!
Krok 1: Jakie są podstawowe elementy języka drabinkowego?
Styki – służą do sprawdzania stanu logicznego bitów im przypisanych
- Styk normalnie otwarty – przesyła sygnał, jeżeli związana z nim zmienna ma wartość 1 (ON).
- Styk normalnie zamknięty – przesyła sygnał, jeżeli związana z nim zmienna ma wartość 0 (OFF).
Przekaźniki (cewki) – służą do ustawiania stanów bitów im przypisany
- Przekaźnik chwilowy o stykach otwartych – ustawia wartość przypisanej mu zmiennej na 1 w momencie doprowadzenia do niego sygnału.
- Przekaźnik chwilowy o stykach zamkniętych – ustawia wartość przypisanej mu zmiennej na 0 w momencie doprowadzenia do niego sygnału.
- Przekaźnik uaktywniany zboczem narastającym sygnału – zmiana stanu sygnału z 0 na 1 powoduje ustawienie zmiennej powiązanej z przekaźnikiem na 1 na okres jednego cyklu wykonywania programu sterującego. (Zbocze narastające – zmiana stanu sygnału z 0 na 1. )
- Przekaźnik uaktywniany zboczem opadającym sygnału – zmiana stanu sygnału z 1 na 0 powoduje ustawienie zmiennej powiązanej z przekaźnikiem na 1 na okres jednego cyklu wykonywania programu sterującego. (Zbocze opadające– zmiana stanu sygnału z 1 na 0.)
- Przekaźnik – zatrzask SET – doprowadzenie sygnału do tego przekaźnika powoduje ustawienie wartości związanej z nim zmiennej na 1. Zmienna zachowuje tę wartość do momentu jej zmiany za pomocą przekaźnika Reset.
- Przekaźnik – zatrzask RESET – doprowadzenie sygnału do tego przekaźnika powoduje ustawienie wartości związanej z nim zmiennej na 0. Zmienna zachowuje tę wartość do momentu jej zmiany za pomocą przekaźnika Set.
Bloki operacji arytmetycznych – realizują funkcje matematyczne parametrów
- Blok funkcyjny dodawania Add – dodaje parametr IN1 i IN2, a wynik zapisuje jako parametr Q:
Q = IN1 + IN2
- Blok funkcyjny odejmowania Sub – odejmuje parametr IN2 od parametru IN1 i wynik zapisuje do parametru Q:
Q = IN1 – IN2
- Blok funkcyjny mnożenia Mul – mnoży parametry IN1 i IN2, a wynik zapisuje do parametru Q:
Q = IN1 * IN2
- Blok funkcyjny dzielenia Div – dzieli parametr IN1 przez IN2, a wynik zapisuje do parametru Q:
Q = IN1 / IN2
W przypadku wartości INT i DINT, część ułamkowa wyniku jest odrzucana.
- Blok funkcyjny modulo (MOD) – dzieli parametr IN1 przez IN2, a resztę z dzielenia zapisuje do parametru Q:
Q = część ułamkowa (IN1/IN2)
- Blok funkcyjny pierwiastek kwadratowy – oblicza pierwiastek kwadratowy z parametru IN1, a wynik zapisuje do parametru Q.
Q = pierwiastek kwadratowy (IN1)
Argumentami tego bloku powinny być zwykle wartości typu REAL, tak by wynik mógł być liczbą zmiennoprzecinkową. Jako argument możesz podać wartość typu INT lub DINT, ale w przypadku, gdy w wyniku działania otrzymasz wartość niecałkowitą, część ułamkowa będzie odrzucona, gdyż wartość Q jest wtedy również liczbą całkowitą.
- Blok funkcyjny wartość bezwzględna (ABS) – odrzuca znak parametru IN1 i wynik zapisuje do parametru Q. Wynik działania jest więc zawsze liczbą dodatnią.
Q = wartość bezwzględna (IN1)
Krok 2: Jakie zadanie będzie realizowała tworzona aplikacja?
Architekturę programu sterowania prezentuje poniższy schemat:
Aplikacja będzie składała się z 3 zbiorników oraz z 5 zaworów – 2 napełniających oraz 3 opróżniających. Funkcje arytmetyczne wykorzystasz do symulacji napełniania i opróżniania zbiorników. Dodawanie i odejmowanie wartości do/od rejestrów przypisanych odpowiednim zbiornikom będzie realizowane w określonych interwałach czasowych.
Stan zaworów będzie kontrolowany przez odpowiednie styki. Otwarcie zaworu będzie następowało po wykryciu przez styk wartości zmiennej równiej 1. Zawór będzie natomiast zamknięty, jeśli wartość zmiennej badanej przez styk będzie równa 0.
Przepływ cieczy do zbiornika (dodawanie i odejmowanie wartości rejestru zbiornika) będzie sterowane przez zawory (styki).
Aby zwiększyć czytelność programu, logikę dotyczącą poszczególnych zbiorników będziesz umieszczać w osobnych podprogramach.
Krok 3: Jak utworzyć nowy podprogram w środowisku Cscape?
Aby utworzyć nowy podprogram, kliknij prawym klawiszem myszy na Main Loop Modules i z menu kontekstowego wybierz New Enhanced Ladder Logic Block, a następnie skonfiguruj jego nazwę jako Zbiornik_1:
Krok 4: Stworzenie programu sterującego napełnianiem i opróżnianiem zbiorników
Napiszemy teraz kod sterujący napełnianiem i opróżnianiem tego zbiornika. W tym celu wstaw kolejno dwa styki normalnie otwarte i blok dodawania.
Do pierwszego styku przypisz zmienną Impuls_100ms a do drugiego Zawor_napelniajacy_ZB1.
Klikając dwukrotnie na bloczek dodawania, uzupełnij parametry operacji dodawania. Pierwszym krokiem jest zmiana typu na REAL, gdyż zmienne, na których blok będzie operował, mają właśnie taki typ.
Kolejno, do parametru IN1 przypisz Zbiornik_1, do parametru IN2 przypisz wartość 0.1 oraz do parametru wyjściowego również przypisz zmienną Zbiornik_1.
W ten sposób po otwarciu zaworu napełniającego zawartość zbiornika będzie zwiększana co 100 ms o wartość 0.1.
Kolejnym krokiem jest napisanie logiki związanej z opróżnianiem zbiornika.
Ponownie wstaw dwa styki normalnie otwarte oraz blok odejmowania.
Do pierwszego styku przypisz zmienną Impuls_100ms a do drugiego Zawor_oprozniajacy_ZB1.
Klikając dwukrotnie na blok odejmowania, uzupełnij parametry. Najważniejsza jest zmiana typu na REAL, a następnie przypisanie zmiennych: do parametru IN1 przypisz Zbiornik_1, do parametru IN2 przypisz wartość 0.1 oraz do parametru wyjściowego również zmienną Zbiornik_1.
W ten sposób po otwarciu zaworu opróżniającego zawartość zbiornika będzie zmniejszana co 100 ms o wartość 0.1.
Krok 5: Stworzenie kodu dla kolejnych zbiorników. Jak kopiować i przenosić poszczególne fragmenty drabinki?
Przejdźmy do stworzenia analogicznej logiki dla kolejnych zbiorników.
Stwórz nowy podprogram o nazwie Zbiornik_2.
Z uwagi na fakt, że podprogram dla tego zbiornika różni się tylko zmiennymi i rejestrami, na których pracuje, można kod napisany dla zbiornika 1 skopiować i wkleić, a następnie zmienić odpowiednie parametry. W tym celu przejdź do podprogramu Zbiornik_1, zaznacz stworzony kod i skopiuj go skrótem klawiszowym Ctrl+C lub wybierając z menu kontekstowego opcję Copy.
Następnie w podprogramie Zbiornik_2 wklej kod, używając skrótu klawiszowego Ctrl+V lub opcji z menu kontekstowego Paste oraz wybierz miejsce na szarym tle, od którego kod ma zostać wklejany.
Zmienną Zawor_napelniajacy_ZB1 zmień na Zawor_napelniajacy_ZB2 oraz Zawor_oprozniajacy_ZB1 na Zawor_oprozniajacy_ZB2. W blokach dodawania i odejmowania zamień rejestr Zbiornik_1 na Zbiornik_2. Finalnie otrzymasz:
Chcesz nauczyć się programować sterowniki PLC?
Wszystkie odcinki kursu, bezpłatne oprogramowanie oraz dodatkowe materiały znajdziesz na stronie: Kurs - programowanie PLC od podstaw
Sprawdź pozostałe bezpłatne kursy i poradniki na Poradniku Automatyka.
source: ASTOR
Keywords
ASTOR, automatyka, plc, Poradnik Automatyka, programowanie plc, sterownik PLC