2,10,30

ZAPISZ SIĘ DO NEWSLETTERA SERWISU AUTOMATYKAONLINE.PL I POBIERZ DARMOWY NUMER "AUTOMATYKI"!

okładka Automatyka

*Wyrażam zgodę na przetwarzanie moich danych osobowych przez Przemysłowy Instytut Automatyki i Pomiarów PIAP, z siedzibą w Warszawie przy ul. Al. Jerozolimskie 202, 02-486 Warszawa, w celach marketingowych, w tym marketingu bezpośredniego. Oświadczam, że zostałem poinformowany/a o prawie do wglądu, modyfikacji oraz usuwania moich danych osobowych.

*Wyrażam zgodę na przesyłanie mi informacji handlowej (w tym informacji handlowej partnerów portalu AutomatykaOnline.pl) za pomocą środków komunikacji elektronicznej w rozumieniu ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną (Dz.U. 2002 nr 144, poz. 1204).

*Wyrażam zgodę na używanie przez Przemysłowy Instytut Automatyki i Pomiarów PIAP, z siedzibą w Warszawie przy ul. Al. Jerozolimskie 202, 02-486 Warszawa, telekomunikacyjnych urządzeń końcowych, których jestem użytkownikiem, dla celów marketingu bezpośredniego zgodnie z art. 172 ustawy z dnia 16 lipca 2004 r. Prawo telekomunikacyjne (Dz.U. 2004 nr 171 poz. 1800).

*Akceptuję regulamin portalu AutomatykaOnline.pl oraz politykę prywatności serwisu.




ZAMKNIJ OKNO

Dziękujemy!

Prawie gotowe ... Musimy potwierdzić Twój adres email. Aby zakończyć proces subskrypcji, należy kliknąć link w mailu, który właśnie wysłaliśmy do Ciebie.

Po akceptacji zapisu na newsletter zostanie przesłany do Ciebie numer promocyjny miesięcznika Automatyka.

ZAMKNIJ OKNO

Dziękujemy za próbę ponownego zapisu na nasz newsletter.

Twój mail już jest w naszej bazie!

W przypadku pytań, prosimy o kontakt:
redakcja@automatykaonline.pl

ZAMKNIJ OKNO

W celu zapewnienia najwyższej jakości usług strona używa plików cookies. Szczegóły w polityce prywatności serwisu. Zamknij

POL ENG
a a a
Search
  • Login
  • Sign up
Site map Site map
AutomatykaOnline.pl
  • Home page
  • News
  • Interviews
  • Application
  • Articles
  • Events
  • Companies
  • Products
Search
Automatyka 7-8/2022

Automation7-8/2022

In this issue:
  • Interview with Paweł Hoerner de Roithberger and Paweł Reszel, National Instruments
  • Cybersecurity of industrial control systems
  • Signaling columns
  • Magazine
  • Subscription
  • Contact
  • Advertisement
Articles
  • Building Automation
  • Safety
  • Druk 3D
  • Electrics
  • Energy
  • Energia
  • Communication
  • Computers and HMI
  • Building Automation
  • Assembly and Conveyance
  • Software
  • Pneumatics
  • Measurements
  • Prawo i normy
  • Przemysł 4.0
  • Robotics
  • Control
  • Visions Systems
  • Drives
  • Technika łożyskowa
  • Technologia obróbki
  • Services
  • Others
Expand all
  • Home page
  • Articles
  • Control

Język drabinkowy LD. Kurs programowania w Codesys odc. 3

Rafał Pilch (ASTOR) print

Tuesday April 06 2021
Język drabinkowy LD. Kurs programowania w Codesys odc. 3
Tweet

Po zapoznaniu się z podstawami tworzenia programu i komunikacji ze sterownikiem PLC, przyjrzyj się bliżej językom programowania, jakie oferuje Codesys. W tym odcinku poznasz język drabinkowy. Dowiesz się, jak tworzyć program przy jego pomocy, a także jakie ma możliwości. Zaczynajmy!

Kurs programowania w Codesys

Część I – Podstawowe funkcjonalności środowiska Codesys
  • 1. Pierwsze kroki w Codesys. Jak stworzyć program? | Kurs programowania w Codesys odc. 1
  • 2. Pierwsze podłączenie i przygotowanie Codesys do pracy ze sterownikiem PLC | Kurs programowania w Codesys odc. 2
  • 3. Język drabinkowy (LD) | Kurs programowania w Codesys odc. 3
  • 4. Typy danych w Codesys, rodzaje zmiennych, sposoby ich tworzenia | Kurs programowania w Codesys odc. 4
  • 5. Język schematów blokowych (FBD) | Kurs programowania w Codesys odc. 5
  • 6. Tworzenie podstawowej wizualizacji HMI | Kurs programowania w Codesys odc. 6
  • 7. Język strukturalny (ST) | Kurs programowania w Codesys odc. 7
  • 8. Diagnostyka w Codesys – jak sprawdzać działanie oprogramowania i sterownika? | Kurs programowania w Codesys odc. 8
  • 9. Język bloków funkcyjnych (CFC) | Kurs programowania w Codesys odc. 9
  • 10. Funkcja, blok funkcyjny, program – zmodyfikuj program w Codesys dla lepszej funkcjonalności | Kurs programowania w Codesys odc. 10
Część II – Zaawansowane funkcje i możliwości środowiska Codesys
    • 11. Komunikacja EtherCAT – konfiguracja i przykładowa aplikacja | Kurs programowania w Codesys odc. 11
    • 12. Softmotion – synchronizacja serwonapędów przy pomocy sterownika PLC| Kurs programowania w Codesys odc. 12
    • 13. Komunikacja Modbus RTU i TCP/IP – jak skonfigurować najpopularniejszy protokół komunikacyjny w Codesys? | Kurs programowania w Codesys odc. 13
    • 14. Tworzenie projektów w Codesys ze sterownikami bezpieczeństwa Safety | Kurs programowania w Codesys odc. 14
    • 15. Konfiguracja maszyny CNC z wykorzystaniem sterownika PLC – obsługa G-Code | Kurs programowania w Codesys odc. 15
    • 16. Integracja sterownika PLC z systemem SCADA w Codesys| Kurs programowania w Codesys odc. 16
    • 17. Połączenie i skomunikowanie sterownika PLC z robotem Kawasaki w Codesys| Kurs programowania w Codesys odc. 17
      Banner-Astraada-One

Język drabinkowy – LD

Na początek trochę teorii. Język drabinkowy, często określany skrótem LD z ang. Ladder Diagram, jest jednym z pierwszych języków szeroko stosowanych w sterownikach PLC. Z tego też powodu aktualnie wciąż jest jednym z najpopularniejszych. Ma on postać zbliżoną do schematów elektrycznych, w których obwody zamykają się pomiędzy dwiema liniami zasilania, tworząc szczeble od których wziął swoją nazwę.

Skąd taka forma? Początki sterowników PLC są mocno związane z elektryką. Dawniej automatyka realizowana była przez pokaźne szafy sterownicze, w których można było znaleźć gąszcz przekaźników, cewek, styczników i innych prostych elementów elektryki. Wprowadzenie sterowników programowalnych zrewolucjonizowało podejście do automatyki, zastępując całe szafy jednym niewielkim urządzeniem. Problem był jednak taki, że za podłączanie i automatyzację wciąż byli odpowiedzialni elektrycy, którzy jeszcze niedawno montowali tuziny przekaźników zgodnie ze schematami. W związku z tym o programowaniu nowo wprowadzonych sterowników nie było wręcz mowy.

Sterowniki Astraada One z obsługa języka LD, źródło: ASTOR

Sterowniki Astraada One z obsługa języka LD, źródło: ASTOR

Producenci PLC, mając na uwadze fakt, że muszą przekonać elektryków do korzystania ze sterownika, postanowili wyjść im naprzeciw i stworzyć specjalny graficzny język programowania, który będzie przypominał schematy elektryczne, a jego logika będzie wprost nawiązywała do działania obwodów elektrycznych.

W taki sposób powstał właśnie język drabinkowy, który pogodził potrzebę programowania, z łatwym i przystępnym interfejsem dla elektryków. Z czasem język ten stał się światowym standardem i jest jasno określony w normie IEC 61131-3.

Język LD w Codesys

Tyle z ogólnej teorii, przejdźmy już do samego oprogramowania. Dowiesz się, jakie możliwości daje Ci Codesys jeżeli chodzi o wykorzystanie języka drabinkowego. Przykład zrealizujesz na symulatorze.

Chcesz dowiedzieć się, jak szybko i prosto przekonwertować program z symulatora na fizyczny sterownik? Sprawdź sekcję Tips&Tricks przeznaczoną dla subskrybentów kursu.

Jeżeli uważnie śledzisz kurs, to zapewne wiesz już, jak przygotować program do pracy w oparciu o język drabinkowy. Jeżeli natomiast przegapiłeś/aś wcześniejsze odcinki, zapoznaj się z podstawami w odcinku 1, gdyż dzisiaj rozpoczniesz pracę na w pełni przygotowanym i skonfigurowanym środowisku.

Po utworzeniu projektu otwórz segment przeznaczony do pisania programu, a więc PLC_PRG.

Otwarcie PLC_PRG z drzewka głównego programu Codesys, źródło: ASTOR

Otwarcie PLC_PRG z drzewka głównego programu Codesys, źródło: ASTOR

Poznasz teraz elementy języka drabinkowego, a także bloki funkcyjne, które oferuje Codesys. Po otwarciu PLC_PRG po lewej stronie zobaczysz okno ToolBox. Jeżeli nie widzisz takiego okienka, kliknij w prawym górnym rogu w głównym menu opcję View, a następnie wybierz ToolBox.

Segment ten to Twój przybornik. Znajdziesz w nim wszystkie elementy wykorzystywane podczas programowania. Codesys jest bardzo elastycznym środowiskiem, dlatego też oprócz klasycznych elementów języka drabinkowego, znajdują się tam niektóre bloki funkcyjne wykorzystywane w innych językach graficznych. Bloki wpasowują się w charakter języka drabinkowego, a dodatkowo zaoszczędzają wiele szczebli programu. Zacznijmy w takim razie analizę.

Jak zapewne zdążyłeś/aś zauważyć, elementy programu posegregowane są na kategorie. Pierwszą z nich jest General. W tej grupie znajdziesz najczęściej stosowane elementy, które zostaną omówione przy okazji kolejnych grup.

Grupa General w ToolBox Codesys, źródło: ASTOR

Grupa General w ToolBox Codesys, źródło: ASTOR

Następna grupa to Boolean Operators. W tej sekcji znajdziesz bloczki realizujące podstawowe zadania logiczne na zmiennych Boolowych, a więc 0/1.

AND wystawi stan wysoki na wyjściu tylko i wyłącznie wtedy, gdy na wejściu dwie lub trzy zmienne, w zależności od opcji, są w stanie wysokim.

OR na wyjściu poda stan wysoki w przypadku, gdy na którymkolwiek z wejść pojawi się stan wysoki.

XOR to specjalny wariant OR, w który poda na wyjściu stan wysoki tylko i wyłącznie wtedy, gdy którekolwiek z wejść poda logiczną jedynkę, przy zastrzeżeniu, że nie mogą oba wejścia jednocześnie być w stanie wysokim.

Grupa Boolean Operators Codesys, źródło: ASTOR

Grupa Boolean Operators Codesys, źródło: ASTOR

W grupie Math Operators zawarte są bloczki związane z operacjami matematycznymi. Warto pamiętać, że bloczki te operują na zmiennych rzeczywistych. W związku z tym podanie 1 lub 0 na wejście nie zostanie odczytane jako prawda lub fałsz, a zwyczajnie jako pełnoprawna liczba do obliczeń.

W tej sekcji są dwa typy bloczków: obliczeniowe, a więc ADD, SUB, MUL, DIV, czyli odpowiednio Dodaj, Odejmij, Pomnóż, Podziel, a także porównawcze, EQ, NE, LT, LE, GT, GE, odpowiednio, Równy, Nierówny, Mniejszy, Mniejszy bądź równy, Większy, Większy bądź równy.

Pamiętaj, że o ile bloczki obliczeniowe dają na wyjściu konkretne wyniki, o tyle bloczki porównawcze zwracają wartości logiczne prawda/fałsz czyli 1/0.

Grupa Math Operators Codesys, źródło: ASTOR

Grupa Math Operators Codesys, źródło: ASTOR

Przejdźmy teraz do pierwszej grupy bloków funkcyjnych, a więc Other Operators. Jak sama nazwa mówi, są to specjalne bloczki, które kryją w sobie funkcję działania, a więc często robią więcej niż tylko porównywanie czy dodawania wartości.

Pierwszym bloczkiem jest SEL, który można określić Selektorem. Posiada on trzy wejścia i działa na takiej zasadzie, że jeżeli na wejściu G pojawi się sygnał wysoki, to na wyjście bloczka przekazywany jest sygnał z wejścia IN1, jeżeli na G pojawi się stan niski, analogicznie odwrotnie.

Następnym bloczkiem jest MUX, który określa się mianem Multipleksu. Działa bardzo podobnie do bloczka SEL, z tym zastrzeżeniem, że na wejście K podaje się liczby całkowite od 0 w górę. Jeżeli na wejściu K pojawi się 0, to na wyjściu bloczka przekazywany jest sygnał z IN0, jeżeli 1 to IN1 i tak dalej.

Limit to bloczek, który ogranicza nam wartość podaną na wejściu IN. Można zdefiniować minimalną i maksymalną granicę wartości. Bloczek MOVE przenosi wartość z jednej zmiennej do drugiej, a bloczek Conversion zmieni typ zmiennej.

Grupa Other Operators Codesys, źródło: ASTOR

Grupa Other Operators Codesys, źródło: ASTOR

Przedostatnia grupa, Function Blocks, stanowi rozwinięcie bloków funkcyjnych. R_TRIG to bloczek reagujący na zbocze narastające, a F_TRIG na zbocze opadające.

Zbocze to określenie na moment przejścia sygnału w inny stan. Ze zboczem opadającym mamy do czynienia w momencie przejścia ze stanu wysokiego w niski, w przypadku narastającego – analogicznie odwrotnie. W związku z tym jest to sygnał impulsowy.

Przy pomocy bloczka SR wystawisz zmienną na stałe w stan wysoki, a dzięki bloczkowi RS zresetujesz tę zmienną ponownie do stanu niskiego.

TON to klasyczny timer dający możliwość opóźnienia załączenia zmiennej w stan wysoki. TOF działa odwrotnie do TON, gdyż po upływie zdefiniowanego czasu wystawi zmienną w stan niski.

Ostatnimi elementami w tym segmencie są liczniki. Liczniki zliczają każde jedno wejście zmiennej w stan wysoki. W przypadku CTU licznik zlicza w górę, natomiast w przypadku CTD – w dół.

Grupa Function Blocks Codesys, źródło: ASTOR

Grupa Function Blocks Codesys, źródło: ASTOR

Ostatnia grupa, Ladder Elements, to podstawowe elementy używane w języku drabinkowym.

Przy pomocy Network możesz rozbudować drabinkę o kolejny pusty szczebel.

Contact to klasyczny styk. Styk w języku drabinkowym podaje sygnał dalej, jeżeli zmienna przypisana do styku jest w stanie wysokim – tym samym zezwala na pracę dalszej części programu. W przeciwnym przypadku dalsza część programu za stykiem nie jest realizowana.

Negated contact to styk zanegowany, a więc działa identycznie jak klasyczny styk, z tym, że przekaże sygnał dalej w momencie, gdy zmienna do niego przypisana jest w stanie niskim, a więc odwrotnie do zwykłego styku. Przy pomocy Parallel contact i Parallel negated contact możesz podłączyć dodatkowy styk równolegle do linii (stworzyć warunek LUB). Coil to element wysterowywany przez linie w języku drabinkowym.

Zmienna przypisana do Coil, tłumaczonej na język polski jako Cewka, zmienia swój stan w zależności od tego, czy sygnał dotarł do cewki, czy też nie. Jeżeli dotarł – zmienna zmieni wartość na stan wysoki, jeżeli nie, będzie w stanie niskim. Przy pomocy Set Coil możesz ustawić zmienną w stan wysoki na stałe, tak więc wystarczy, że sygnał dotrze do cewki tylko raz i zmienna pozostanie już w logicznej 1, niezależnie czy sygnał nadal dociera, czy też nie. Taką zmienną można przywrócić do stanu niskiego wyłącznie przy pomocy Reset Coil.

Jump i Return to specjalne funkcje umożliwiające przeskakiwanie pomiędzy różnymi częściami kodu. Więcej na ich temat dowiesz się w przyszłych odcinkach kursu.

Wybierając Branch stworzysz nowy, równoległy szczebel, a przy pomocy Branch Start/END zakończysz dany szczebel lub rozpoczniesz nowy, niezależny.

Grupa Ladder Elements Codesys, źródło: ASTOR

Grupa Ladder Elements Codesys, źródło: ASTOR

Tworzenie programu w języku drabinkowym

Tworzenie programów w językach graficznych w Codesys ma wspólną i bardzo prostą mechanikę na zasadzie przeciągnij i upuść. Łapiąc za dowolny element, zaraz zobaczysz w oknie roboczym miejsca, w których można go podłączyć.

Zacznij od początku, a więc od stworzenia linii. Wybierz z ToolBox -> Ladder Elements element do tworzenia nowego segmentu sieci, a więc Network i przeciągnij go w puste pole robocze. W ten sposób tworzysz nowe pola pod linie kodu.

Tworzenie nowego szczebla języka LD w Codesys, źródło: ASTOR

Tworzenie nowego szczebla języka LD w Codesys, źródło: ASTOR

Następnie złap za styk, czyli blok Contact i przeciągnij w pole robocze. W tym momencie masz do wyboru kilka opcji. Przeciągając na Start here rozpoczniesz linię. Styk jest elementem, który zawsze musi zostać umieszczony na początku linii. W przypadku wybrania strzałki w górę lub w dół, automatycznie utworzy się nowa gałąź powyżej lub poniżej ze stykiem.

Zobacz pełną wersję artykułu na Poradniku Automatyka

www.astor.com.pl

source: ASTOR

Keywords

ASTOR, automatyka, CODESYS, Język drabinkowy LD, programowanie plc

Parts of the series

Jak stworzyć program? Pierwsze kroki w Codesys. Kurs programowania w Codesys odc. 1

Jak stworzyć program? Pierwsze kroki w Codesys. Kurs programowania w Codesys odc. 1

More
Pierwsze podłączenie i przygotowanie Codesys do pracy ze sterownikiem PLC

Pierwsze podłączenie i przygotowanie Codesys do pracy ze sterownikiem PLC

More
Typy danych w Codesys, rodzaje zmiennych, sposoby ich tworzenia. Kurs programowania w Codesys odc. 4

Typy danych w Codesys, rodzaje zmiennych, sposoby ich tworzenia. Kurs programowania w Codesys odc. 4

More
Język schematów blokowych (FBD). Kurs programowania w Codesys odc. 5

Język schematów blokowych (FBD). Kurs programowania w Codesys odc. 5

More
Wizualizacja webowa w sterowniku Astraada One, źródło: ASTOR

Tworzenie podstawowej wizualizacji HMI. Kurs programowania w Codesys odc. 6

More
Język strukturalny (ST). Kurs programowania w Codesys odc. 7

Język strukturalny (ST). Kurs programowania w Codesys odc. 7

More

Related articles

  • User Defined Function Blocks – tworzenie własnych bloków funkcyjnych w oprogramowaniu Cscape
  • Falownik do pompy lub wentylatora – na jakie funkcje zwrócić uwagę?
  • Regulator PID. Kurs programowania PLC od podstaw odc. 20
  • Sterowanie Węzłem Cieplnym w Rabczańskiej Spółdzielni Mieszkaniowej
  • Sterowniki D1 i D3 firmy igus. Szybkie uruchomienie napędów liniowych i obrotowych

Newsletter

Stay up to date with current information.

Comau videos YouTube

Show more videos
Inżynier wie

Events

Show more events
13 Oct Trade fair

Wirtualne stoisko SABUR już otwarte!

Warszawa 13 October 2021 – 13 October 2022
12 Aug Training

Minimalne wymagania dla maszyn w praktyce - ocena ryzyka i dostosowanie do dyrektywy narzędziowej

Rzeszów 12 August 2022 – 12 September 2022
15 Sep Conference

TOP automotive

Zawiercie 15–16 September 2022
15 Sep Training

Dyrektywa maszynowa w szczegółach, czyli jak profesjonalnie zorganizować ocenę zgodności i ocenę ryzyka maszyn?

Katowice 15–16 September 2022
  • facebook
  • Tweeter
  • google+
  • RSS AutomatykaOnline
  • About Us
  • Sales and customer service
  • Privacy Policy
  • Presentation
  • Terms of Use
  • Contact Us
  • Contact form
  • Media cooperation
  • Portal Editorial
  • Automatyka Editorial
  • Advertising
  • Advertising contact
  • Advertising in "Automatyka"
  • Newsletter
AutomatykaOnline.pl

© 2014 by Przemysłowy Instytut Automatyki i Pomiarów PIAP. All rights reserved.
created by: TOMP