Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2020/12/IMG_7491.jpg

Nauka programowania PLC – FAQ i pierwsze kroki na przykładzie TwinCAT3


Poniższy artykuł jest przeznaczony dla wszystkich osób, które chcą zacząć naukę programowania sterowników PLC. Motywacją do jego napisania jest duża liczba postów na grupach na Facebooku oraz tematów na forach, które dotyczą tego jak zacząć naukę.

Postaram się odpowiedzieć na wszystkie pytania, które udało mi się znaleźć w Internecie oraz na te, które przyszły mi do głowy. Chciałbym aby ten artykuł był pewnego rodzaju kompendium wiedzy dla każdego, kto chce zacząć się uczyć programować PLC, tak by swoją treścią obejmował wszystkie pytania, które mogą się pojawić oraz zawierał wszystkie podstawowe informacje, które są potrzebne do tego, aby zacząć programować sterowniki. Jeśli czytając ten tekst zauważysz, że czegoś w nim brakuje to proszę o kontakt – postaram się uzupełnić artykuł.

Należy również wspomnieć o tym, że pisząc korzystałem z informacji dostępnych na stronie na której aktualnie się znajdujemy czyli iAutomatyka oraz grupy na Facebooku „Automatyk Może Więcej:.

Poniższy artykuł różni się nieco od pozostałych, które można znaleźć na tym portalu, ponieważ nie przekazuje typowej wiedzy technicznej. Dany problem dotyczący programowania można rozwiązać na wiele sposobów. Podobnie nie ma jednoznacznej odpowiedzi na pytania takie jak: „Który sterownik PLC jest najlepszy do nauki na start?”. Pisząc postaram się jednak zachować jak największą obiektywność.

FAQ – Pytania często zadawane przez osoby chcące zacząć naukę programowania sterowników PLC

1. Jak najlepiej i najszybciej uczyć się programować PLC?

Na to pytanie można odpowiedzieć skrótowo: praktyka, programowanie sterowników fizycznych lub symulowanych, programowanie obiektów rzeczywistych lub symulowanych, praca w zawodzie programisty PLC. Najbardziej podstawową rzeczą, którą można zrobić to pobrać oprogramowanie z możliwością symulacji pracy sterownika PLC i zacząć programować. Mając dostęp do fizycznego sterownika nie trzeba nawet wykorzystywać symulacji. Mając dostęp do obiektu, który można zaprogramować (urządzenie, maszyna, linia itd.) ma się najlepszy możliwy sposób na naukę programowania PLC. Jeśli takiej możliwości nie ma można wykorzystać oprogramowanie do symulacji. Chyba najpopularniejszym oprogramowaniem tego typu o którym dużo się słyszy jest Factory I/O. Będąc zatrudnionym jako programista PLC ma się problem nauki w zasadzie z głowy – wystarczy skupić się na obowiązkach w pracy. Polecam jednak tak czy inaczej poświęcać trochę czasu na naukę w wolnym czasie – w pracy nie zawsze jest dostatecznie dużo czasu, żeby zrobić wszystko tak jakbyśmy chcieli, żeby przeczytać dokładnie wszystkie dokumentacje, manuale itd.

2. Jaka wiedza teoretyczna jest potrzebna do programowania sterowników? Książki jakich autorów warto kupić? Gdzie w Internecie szukać informacji odnośnie PLC?

Na nasze potrzeby możemy wytyczyć taką umowną granicę na to, co się dzieje wewnątrz PLC i na to co jest na zewnątrz -> tą granicę stanowią sygnały wejściowe i wyjściowe cyfrowe i analogowe oraz protokoły komunikacyjne. Teoretycznie programistę PLC mogłoby interesować tylko to, co się dzieje po stronie i wewnątrz PLC, a odnośnie całego świata zewnętrznego mógłby korzystać z pomocy, elektryków, innych automatyków, mechaników itd. Jednak zdecydowanie nie jest to dobre rozwiązanie i nie polecam go. Swoją drogą jeszcze nie spotkałem się z pracą w której programista PLC miałby się tak dobrze i wygodnie.

W związku z tym odnośnie programowania PLC potrzebna jest wiedza odnośnie podstaw programowania. Pojęcia takie jak: zmienna, Algebra Boole’a, wiedza odnośnie pamięci sterownika, dwójkowy system liczbowy (inne też), zapis zmiennoprzecinkowy, kod źródłowy, kompilator, proces kompilacji to takie minimum potrzebne do tego, żeby zacząć uczyć się programować PLC.

Jako programista PLC, ale też automatyk potrzebna jest wiedza odnośnie wszystkiego, co się dzieje poza wytyczoną wcześniej umownie granicą, a więc: elektryka, elektronika, mechanika, pneumatyka, hydraulika i wiele innych. Im więcej się wie tym lepiej, ale nie ma też się co przerażać. Każdy kiedyś zaczynał 🙂

Na pytanie o to jakich autorów książki warto kupić użytkownicy z Automatyk Może Więcej odpowiadali:

    • Hans Berger,
    • Bogdan Broel-Plater,
    • Sałat Robert, Korpysz Krzysztof, Obstawski Paweł,
    • Jerzy Kasprzyk,
    • Janusz Kwaśniewski,
    • Tomasz Gilewski,
    • Kazimierz Dzierżek.


Tą pozycję posiadam i mogę polecić.

Osobiście nigdy nie korzystałem z takiej możliwości, ale już kilkakrotnie spotkałem się na grupie z wypowiedzią, że jeśli napisze się do Siemensa prośbę o przesłanie dokumentacji to można ją otrzymać za darmo

Warto też wspomnieć o tym, że do programowania, a w naszym przypadku także programowania sterowników PLC bardzo przydatna jest znajomość języka angielskiego, ponieważ oprogramowanie, dokumentacje, manuale helpy itd. w zdecydowanej większości są po angielsku.


Bardzo dobrym źródłem wiedzy na temat programowanie sterowników PLC różnych producentów jest strona iAutomatyka na której się znajdujemy. Zdecydowana większość środowisk w których programujemy PLC jest wyposażona we wbudowany Help, dlatego jeśli w trakcie programowania natrafimy na jakiś problem to warto umieścić kursor w odpowiednim miejscu i wcisnąć F1. Jeśli nie znajdziemy rozwiązania problemu w Helpie należy zajrzeć do dokumentacji producenta, którą można znaleźć na stronie internetowej. Jeśli dokumentacji nie ma w Internecie to trzeba się zwrócić z zapytaniem bezpośrednio do producenta. Jeśli mamy jakiś bardzo trudny problem, którego nie rozwiązaliśmy w żaden inny sposób to możemy zadzwonić na Pomoc Techniczną danego producenta.

Chciałbym jeszcze wspomnieć o tym, że ze wszystkich dokumentacji z których miałem okazję korzystać najlepiej używało mi się tych od firmy Rockwell, czyli producenta sterowników Allen-Bradley: są pisane jak dla osoby kompletnie nie zaznajomionej z tematem, są dobrze i logicznie uporządkowane, zawierają szerokie informacje, które dość często się dublują – nie ma konieczności przełączania się pomiędzy manualami.

3. Czy warto uczestniczyć w kursach programowania sterowników? Jakie kursy programowania PLC warto polecić?

Gdy takie pytania padają na grupie Automatyk Może Więcej na FB chyba najczęściej wskazywane centra szkoleniowe to: EMT-Systems oraz INTEX. Informacje na temat obu miejsc w tym nawet recenzje kursów można znaleźć w serwisie iAutomatyka. Osobiście byłem na 2 szkoleniach w EMT-Systems i bardzo polecam. Inną możliwością są kursy bezpośrednio u producenta. Byłem na kursie w oddziale Mitsubishi w Balicach i też mogę polecić.

Jest też platforma: Kursy Automatyki by iAutomatyka.pl

Czy warto uczestniczyć w takich kursach i czy można się tam czegoś nauczyć? Na pewno tak. Jednak trzeba się przygotować na to, że po kursie programowania PLC nie będziemy posiadać 100% potrzebnej wiedzy do tego żeby zaprogramować maszynę czy obiekt. Szkolenia dotyczą sterowników PLC i oprogramowania w którym je programujemy. Wychodzi się z nich z wiedzą dotyczącą: działania sterownika PLC, instrukcji za pomocą których programujemy, pamięci PLC i zmiennych itd. Żeby zaprogramować maszynę potrzebne są jeszcze wiedza, umiejętności i doświadczenie dotyczące tego co i w jaki sposób napisać. Samo stworzenie kodu, który poprawnie się skompiluje nie jest wystarczające.

4. Kupować fizyczny sterownik do nauki czy polegać na symulatorach wbudowanych w oprogramowanie?

Na pytanie „Czy kupować fizyczny sterownik do nauki?”  użytkownicy  grupy  Automatyk Może Więcej odpowiadali:

    • Tak, ponieważ:
      • Praktyka uczy więcej niż teoria,
      • Są problemy, które pojawiają się dopiero w momencie uruchomienia szafy sterowniczej/maszyny.
    • Nie,  ponieważ:
      • Darmowe symulatory sterowników wbudowane w oprogramowanie i programy takie jak Factory I/O są wystarczające do nauki,
      • Budowa zestawu startowego do nauki PLC składającego się z: czujników, falowników, serwonapędów, enkoderów itd. jest zbyt droga,
      • Nie warto inwestować pieniędzy w zakup sprzętu, jeśli nie jest się na 100% pewnym czy będzie się pracować jako programista PLC

Śmiało można przyjąć, że na grupie przeważa zdanie, że symulator jest wystarczający do nauki. Ja jestem zdania, że mając do dyspozycji oprogramowanie z symulatorem fizyczny sterownik PLC nie jest potrzebny.

Bardzo często ta kwestia jest sprowadzana do: „zakup PLC czy symulacja” tak jakby to była alternatywa rozłączna [XOR], a tymczasem można tą sprawę potraktować jako zwykłą alternatywę [OR] 😛

Myślę, że możliwe jest wykorzystanie symulatora, a jeśli okaże się, że jego możliwości są niewystarczające zakup fizycznego sterownika PLC.

Decydując się na zakup fizycznego sterownika PLC trzeba sobie zadać pytanie czy rzeczywiście chcemy go kupić do nauki czy też jest to taka nasza mała fanaberia – w końcu sterownik PLC bardzo ładnie wygląda na biurku i zwyczajnie fajnie jest go mieć. To trochę tak jak z zakupem profesjonalnych butów do biegania pierwszego dnia po decyzji na trenowanie tej dyscypliny 😛

 


Powyższy film o długości 19 sekund obrazuje jak szybko można zacząć pracę ze sterownikiem PLC. W momencie, gdy mamy już pobrane i zainstalowane środowisko mamy do wyboru 2 drogi:

  • w ciągu około 20 sekund zacząć naukę programowania PLC,
  • poświęcić czas na szukanie odpowiedniego sterownika, pieniądze na jego zakup oraz dalszy czas na oczekiwanie na przesyłkę.

Wybór zostaje po stronie czytelnika.

5. Jaki sterownik kupić do nauki programowania PLC? Jakich sterowników warto się uczyć?

Takie pytania często padają na grupie Automatyk Może Więcej na FB. Poniżej często pojawiające się odpowiedzi oraz uzasadnienie do każdej z nich [zachowano kolejność alfabetyczną producentów]:

    • Beckhoff TwinCAT 3: darmowe oprogramowanie, symulator,
    • CODESYS: darmowe oprogramowanie, symulator, zgodność z IEC 61131-3, możliwość programowania mikrokontrolerów Raspberry Pi niewielkim kosztem,
    • Delta: darmowe oprogramowanie, symulator, korzystne ceny, dobra pomoc techniczna,
    • Eaton Easy E4: wersja trial oprogramowania, symulator, korzystne ceny, przyjazne oprogramowanie,
    • Fatek: darmowe oprogramowanie, symulator, korzystne ceny, przyjazne oprogramowanie,
    • Panasonic: darmowe oprogramowanie, korzystne ceny,
    • Siemens LOGO!: symulator, rozbudowane możliwości (jak na przekaźnik programowalny), przyjazne oprogramowanie,
    • Siemens S7-1200/S7-1500 TIA Portal: wersja trial oprogramowania, symulator, możliwość łatwiej integracji z programem do symulacji Factory I/O, największy udział w rynku sterowników PLC.

Warto dodać, że odnośnie wielu z powyższych sterowników są artykuły zawierające dużo wiedzy na iAutomatyce. Trzeba też powiedzieć, że nie ma czegoś takiego jak najlepszy sterownik. Mimo sporej dominacji Siemensa na rynku sterowniki innych producentów są i będą wybierane, ponieważ mogą konkurować: ceną, możliwościami, specjalizacją, przyjaznym oprogramowaniem itd. Będąc programistą PLC nawet mając swoją specjalizację w sterownikach jednego producenta warto umieć programować także inne sterowniki.

Moim zdaniem najlepszym środowiskiem na start (zwłaszcza jeśli nie chce się inwestować pieniędzy) jest CODESYS, a dokładnie TwinCAT 3 Beckhoffa, ponieważ:

    • zyskujemy umiejętności programowania sterowników PLC wielu producentów takich jak: Festo, Lenze, IFM, Schneider Electric, Wago, ABB, Rexroth Bosch i wielu innych (do sprawdzenia tutaj: devices.codesys.com),
    • oprogramowanie jest darmowe,
    • oprogramowanie ma symulator,
    • zgodność z IEC 61131-3, możliwość wstawek OOP (Programowanie obiektowe), możliwość wstawania kodu w C++,
    • dostęp do wszystkich najważniejszych języków programowania PLC: CFC, FBD, LD, SFC, ST, SC,
    • moim zdaniem środowisko jest najbardziej przyjazne dla informatyków i osób z IT ze względu na integrację z Visual Studio,
    • łatwa do zaimplementowania multiprotokołowość: EtherCAT, Profinet, EtherNet/IP,
    • w łatwy sposób można symulować działanie napędów,
    • dynamiczny rozwój firmy Beckhoff.

6. Gdzie mogę kupić zestaw startowy do nauki programowania PLC?

Tutaj możliwości jest naprawdę dużo: allektro.plGrupa na FB, Automatyk Może Więcej na FB, inne serwisy.
Warto nie tylko przeglądać aktualne ogłoszenia, ale również pytać o to czy ktoś nie ma zestawu startowego na sprzedaż – może się okazać, że nagle znajdzie się kilka osób, które chciałoby sprzedać swoje PLC.

W tym miejscu warto się również pomyśleć o tym, że kupując sterownik PLC dostajemy sprzęt, który będzie tracił na wartości. Sprzedając sterownik po tym jak zakończymy etap nauki programowania (w najgorszym przypadku ani razu nie używając zakupionego PLC) tracimy pieniądze. Używając symulacji PLC nie mamy takich problemów 😉

7. Jaki sprzęt oprócz sterownika może się przydać do nauki programowania PLC? Jakie projekty mogę wykonać na moim PLC? Jakie przykłady robić?

Najlepiej uczyć się programować na realnych obiektach, więc wszystko co znajduje się „na maszynie” czy też w szafie sterowniczej może się przydać. To jakiego sprzętu się użyje zależy tylko i wyłącznie od tego do czego ma się dostęp i jakimi funduszami się dysponuje. Jeśli ktoś ma dostęp do: czujników, przycisków, przełączników, lampek, silników, falowników, panelu HMI i innych i może taki sprzęt wypożyczyć lub kupić to super – praca na takim zestawie startowym na pewno będzie bardzo rozwijająca. Jednak moim zdaniem na początek wystarczający jest symulator PLC i jeśli ktoś ma w zasadzie tylko laptopa to również nie ma problemu i może się w ten sposób uczyć.
Na pytanie o przykłady i projekty użytkownicy z grupy Automatyk Może Więcej odpowiadali:

    • Zadania z Egzaminów Zawodowych z Mechatroniki dostępne w sieci,
    • Zadania z Mistrzostw Polski Programistów PLC dostępne w sieci

8. Którego języka programowania sterowników PLC uczyć się najpierw?

Odpowiedź sprowadza się w zasadzie do dwóch opcji: LD lub ST, jednak ciężko wskazać, który z tych języków jest lepszy na start. Patrząc historycznie język drabinkowy rozwijał się wcześniej niż ST. Sterowniki PLC kojarzą się z programowaniem ich w Ladderze, ponieważ jest to język graficzny przyjazdy dla osób zaznajomionych z elektryką. Język Structured Text obecnie zyskuje na popularności ze względu na zbliżanie się Automatyki i IT. Również w dokumentacji Siemensa możemy znaleźć wypowiedź wskazującą na ST(SCL) jako właściwy język do programowania PLC odsyłam -> tutaj: 4.1.3 Programming.

Ciężko wskazać jednoznacznie który z tych języków będzie lepszy na początek. Myślę, że odpowiedź na to pytanie lepiej pozostawić po stronie czytelnika i jeśli bliżej mu do elektryki to prawdopodobnie łatwiejszy będzie LD, a jeśli bliżej do Informatyki to bardziej przyjazny może się wydawać ST.

Ważne jest to, aby używać odpowiedniego języka do odpowiednich zadań i problemów oraz aby dbać o dobrą czytelność tworzonych programów.


9. Jakie oprogramowanie może być przydatne dla programisty PLC?

Można wyróżnić:
– środowiska do programowania sterowników PLC (np. TIA Portal),
– oprogramowanie do konfiguracji napędów (np. SEW MOVITOOLS®),
– oprogramowanie do konfiguracji przekaźników bezpieczeństwa (np. SICK Flexi Soft Designer),
– oprogramowanie do konfiguracji innych urządzeń (np. Turck Service Tool),
– oprogramowanie do zdalnego dostępu (np. eCatcher),
– oprogramowanie do sterownia komunikacji (np. Hercules),
– oprogramowanie do zarządzania wersjami kodu (np. versiondog),
– inne w zależności od projektu.
Inne przydatne dla Automatyka programy są wymienione w artykule poniżej:
https://iautomatyka.pl/oprogramowanie-narzedzia-przydatne-dla-automatykow-10-programow/

10. Podczas nauki programowania PLC napotkałem na problem – gdzie mogę szukać pomocy w jego rozwiązaniu?

Jest sporo miejsc w sieci dotyczących Automatyki, ale myślę, że najszybszą pomoc można otrzymać na grupie Automatyk Może Więcej. Forma grupy na FB i 18 tys. członków robi swoje. I nie piszę tego w ramach „podlizywania się” – taki jest fakt, że odpowiedzi na tej grupie są zazwyczaj bardzo szybkie 😛 Jest też Klub Automatyka, ale tutaj ruch jest już mniejszy.

Generalnie jeśli czas nie nagli, a pomysły jeszcze się nie wyczerpały to zawsze lepiej jest starać się rozwiązywać problem samemu. Nawet jeśli przeglądając pomoc podstępną pod F1 czy też dokumentację nie natrafimy od razu na odpowiedź to i tak jej poszukiwanie będzie dla nas rozwijające.

11. Gdzie można znaleźć pracę jako programista PLC?

Myślę, że można wyróżnić pracę jako programista PLC:
– w UR na zakładzie,
– w firmie zajmującej się budową maszyn,
– w firmie integratorskiej,
– w firmie z branży AKPiA,
– w firmie zajmującej się BMS – choć to już trochę co innego.

12. Dla kogo jest praca jako programista PLC? Jakie cechy najlepiej posiadać?

Myślę, że profil programisty PLC w większości pokrywa się z profilem programisty z IT, a na ten temat można znaleźć w sieci bardzo dużo informacji. Napiszę tylko, że programista PLC powinien się wykazywać dużą dozą cierpliwości, samozaparcia, dokładności, umiejętnością logicznego myślenia, umiejętnością rozbijania większych problemów na mniejsze itd.

Można wskazać różnice względem pracy jako programista w IT: praca jest zapewne ciekawsza ze względu na obcowanie z realnym obiektem, co jest trochę „mieczem obosiecznym”, ponieważ z tego względu praca wiąże się z większą odpowiedzialnością – można spowodować bardzo duże szkody materialne i na zdrowiu i życiu innych osób. W zależności od tematu zdarza się pracować w ciężkich warunkach (temperatura, szkodliwe związki chemiczne i inne typowe czynniki obecne na zakładach przemysłowych). Praca wiąże się z częstymi wyjazdami i delegacjami, ponieważ jak coś zaprogramujemy offline to trzeba to później uruchomić online na miejscu. Myślę, że praca programisty PLC jest bardziej stresująca niż praca programisty w IT.

13. Jakich porad można udzielić początkującym programistom PLC?

Porady, które mi przychodzą do głowy to:

  • nie kopiować kodu innych bezmyślnie, bez zastanowienia – lepiej zrozumieć kopiowany kod lub napisać własny,
  • uważać na rzeczy, które dzieją się w PLC przez krótki czas (1 cykl sterownika PLC) – ze względu szybkość wykonania ciężko jest diagnozować taki kod,
  • jeśli dane urządzenie niepoprawnie funkcjonuje zaktualizować Firmware,
  • jeśli mamy problem dotyczący sprzętu z którym nie potrafimy sobie sami poradzić, nie jesteśmy w stanie znaleźć rozwiązania w dokumentacji to warto zadzwonić do Wsparcia Technicznego,
  • w programach trzeba uwzględniać to, że mamy do czynienia z rzeczywistymi, fizycznymi obiektami. Z tego względu trzeba uwzględniać zjawiska takie jak drgania styków, histereza, filtrować sygnały wejściowe, „brać poprawkę” na mechanikę itd.,
  • automatyka jest szeroką dziedziną (elektryka, elektronika, mechanika, pneumatyka, hydraulika, informatyka) – z tego względu jeśli mamy do czynienia z problemem, którego nie jesteśmy w stanie rozwiązać od dłuższego czasu to warto zatrzymać się i spojrzeć na problem z szerszej perspektywy, pomyśleć nieszablonowo – bardzo możliwe, że rozwiązanie jest proste, ale zwyczajnie go nie dostrzegamy.

14. Gdzie można znaleźć przykładowy kod na którym można się wzorować?

Jest kilka takich miejsc w Internecie:
– Biblioteki w TIA Portal (Siemens),
– Sample Code Library(Allen-Bradley).
– Application Composer Examples (Codesys).

Pierwsze kroki w TwinCAT 3 – środowisku opartym o CODESYS

Na wstępie chciałbym wspomnieć o tym, że w serwisie iAutomatyka jest już bardzo dobry artykuł poświęcony temu jak zacząć programować sterowniki Beckhoff w TwinCAT 2 (oraz TwinCAT 3).

Jak zacząć pracę ze sterownikami PLC Beckhoff czyli Hello World w TwinCAT2

Powyższy artykuł bardzo dokładnie opisuje podstawową i bardzo często pierwszą rzecz, którą chcemy zrobić ze sterownikiem – uzyskać „kontakt ze światem zewnętrznym” poprzez wystawienie fizycznego wyjścia cyfrowego czy też zapalenie lampki na wizualizacji. To odpowiednik wyświetlenie tekstu „Hello World” w konsoli.

Projekt, który zostanie omówiony w tym tekście można traktować jako kontynuację i rozwinięcie względem ww. artykułu. Temat, który omówimy będzie bardziej złożony i w ciekawy sposób zaprezentuje możliwości programu TwinCAT 3.

Wykonamy zadanie znajdujące się w CODESYS Online Help:

Your First CODESYS Program

Zadanie przedstawione w tym temacie helpa jest przeznaczone do wykonania w środowisku Codesys. My wykonamy je w oprogramowaniu TwinCAT 3, a dzięki temu każdy będzie mógł zobaczyć jak duże podobieństwo występuje pomiędzy programami za pomocą których tworzymy soft na sterowniki PLC programowalne w Codesys (Beckhoff, Lenze, Wago i wielu innych producentów). Od pewnego momentu będziemy widzieć elementy środowiska 1:1 takie jak w Codesys.

Temat przedstawionego przykładu to: „Sterowanie lodówki”. Może i jest mało przemysłowo, ale jest to zagadnienie, które każdy zna i miał z nim do czynienia, a więc dobre na start. Fajną rzeczą w projekcie, który wykonamy jest to, że pomimo niewielkich rozmiarów występują w nim 3 języki programowania PLC: LD, ST oraz CFC. Dzięki użyciu kilku języków będzie można zobaczyć do jakich celów najlepiej sprawdza się każdy z nich. Artykuł jest uzupełnieniem tematu z helpa w którym moim zdaniem jest za mało ilustracji, przez co może być nieprzyjazny dla początkujących – lepiej wykonuje się przykłady z obrazami czy też przedstawione w formie filmu. Zainteresowani mogą zapoznać się również z treścią ww. tematu, co będzie dobrym uzupełnieniem wiedzy.

Jeśli ktoś chciałby otrzymać kod przykładu wykonanego w tym artykule to zapraszam do kontaktu.

Zaczynamy od otwarcia środowiska klikając na ikonę TwinCAT XAE Shell

Zamiast nazwy TwinCAT 3 mamy skrót skrót XAE, który rozwija się do TwinCAT – eXtended Automation Engineering.

Wybieramy: File -> New -> Project …

Po otwarciu programu może się pojawić ekran startowy, który można zignorować/zamknąć.

Tworzymy nowy projekt

Z listy po lewej stronie wybieramy TwinCAT Projects, a następnie TwinCAT XAE Project (XML format). Wpisujemy nazwę, wybieramy lokalizację do zapisu katalogu z projektem, a następnie zatwierdzamy przyciskiem OK.

Tworzymy Standardowy Projekt PLC

Klikamy PPM na PLC z listy po lewej stronie, a następnie Add New Item … Wybieramy nazwę i potwierdzamy przyciskiem „Add”.

Edycja obiektów w Solution Explorer

Możemy schować zbędne obiekty klikając na nie PPM, a następnie „Hide…”. Obiekty które nie będą potrzebne to: MOTION, SAFETY, C++, ANALYTICS.

Wybieramy folder GVLs -> Add -> Global Variable List

W tym miejscu znajdą się zmienne globalne (dostępne w każdym miejscu) używane w projekcie.

Wybieramy nazwę i potwierdzamy przyciskiem Open

Ciekawostka: W tym miejscu widzimy interfejs nie zmieniony względem CODESYS – tam element środowiska przedstawiony na screenie powyżej wygląda dokładnie tak samo.

Tworzymy potrzebne zmienne globalne

Uwaga: wybór trybu wyświetlania zmiennych znajduje się w prawym górnym rogu (ikony z tekstem oraz tabelką obok siebie). Wybieramy wyświetlanie i edytowanie tekstowe.

Zmienne są tworzone według szablonu:

Nazwa : Typ := Wartość początkowa; // Komentarz

Poniżej wklejam kod do skopiowania.

{attribute ‚qualified_only’}
VAR_GLOBAL
rTempActual : REAL := 1.0; //Actual temperature
rTempSet : REAL := 8.0; //Set temperature
xDoorOpen : BOOL := FALSE; //Status OF door
timAlarmThreshold : TIME := T#30S; //TIME after compressor runs that a signal sounds
timDoorOpenThreshold : TIME := T#10S; //TIME after opening the door that a signal sounds
xCompressor : BOOL := FALSE; //Control signal
xSignal : BOOL := FALSE; //Control signal
xLamp : BOOL := FALSE; //Status message
END_VAR

Tworzymy nowy POU

Klikamy PPM POUs -> Add -> POU.., aby utworzyć nowy POU.

Uwaga: Aktualny krok i kilka kolejnych będą się powtarzać w dalszej części tekstu, więc jeśli będziesz miał z wykonaniem tych instrukcji to wróć do tego miejsca.

Tworzymy nowy program „CoolingControl”

Wybieramy nazwę, typ POU jako „Program” oraz język implementacji jako „CFC”. Potwierdzamy przyciskiem „Open”.

Uwaga: Jeśli otworzy nam się pusta karta bez instrukcji do wyboru po prawej to naciskamy:

View -> Toolbox LUB Ctrl + Alt + X

Tworzymy zmienne lokalne programu CoolingControl

Kod do skopiowania:

PROGRAM CoolingControl
VAR
rHysteresis : REAL := 1; // Histereza
SR_0 : Tc2_Standard.SR ; // Instancja bloku Set-Reset
END_VAR

Tworzymy logikę programu CoolingControl

W tym celu wykorzystujemy elementy: Input, Box oraz Output z Toolboxa po prawej stronie.

Wpisując tekst w elementy Input oraz Output możemy odwołać się do utworzonych wcześniej zmiennych.

Wpisując tekst w elementy Box możemy zamienić ten w element w dowolną instrukcję.

Tworzymy i uzupełniamy wszystkie bloki

Należy utworzyć bloki jak na screenie powyżej oraz uzupełnić wszystkie bloki pamiętając o tym aby: dla zmiennych globalnych pamiętać o podaniu najpierw nazwy Global Variable List, dla instrukcji SR dopisać nazwę instancji („SR_0”).

Tworzymy nowy program „Signals”

Wybieramy nazwę, typ POU jako „Signals” oraz język implementacji jako „LD”. Potwierdzamy przyciskiem „Open”.

Dodajemy bibliotekę do projektu

Klikamy: References -> Add library…

Dodajemy bibliotekę „Util”

Wyszukujemy „Util” i potwierdzamy przyciskiem OK.

Tworzymy zmienne lokalne programu Signals

Kod do skopiowania:

PROGRAM Signals
VAR
TON_0 : Tc2_Standard.TON;
TON_1 : Tc2_Standard.TON;
BLINK_0 : Blink;
timSignalTime : TIME := T#1S;
xBlinkSignal : BOOL;
END_VAR

Tworzymy 2 nowe networki

Przeciągamy „Network” z Toolboxa w miejsce strzałek.

Tworzymy dalszą część logiki

Tworzymy dalszą część logiki przeciągając instrukcje z Toolboxa do networków.

Do zaprogramowania tego programu będą potrzebne następujące instrukcje:

  • Contact
  • TON
  • Coil
  • Jump (Patrz niżej)
  • Label (Patrz niżej)
  • Box

Aby odszukać instrukcji można użyć wyszukiwarki („Search Toolbox”).

Jump i Label – instrukcje skoku warunkowego

Dodawanie „Label”

Zmiana nazwy „Label”

Komentarz autora: Generalnie rzecz biorąc jeśli chodzi o programowanie PLC oraz programowanie w IT trend jest taki, że odchodzi się od instrukcji skoku „Jump”. W przypadku tego artykułu użyłem jej, aby zachować zgodność z tematem „Your First CODESYS Program”, który realizujemy. Użycie tej instrukcji można traktować jako antyprzykład – TAK NIE NALEŻY ROBIĆ. Nie wiem dlaczego „ktoś z Codesysu” rozwiązał ten problem w ten sposób.

Z użyciem instrukcji „Jump” w tym przypadku wiąże się też podwójne użycie tej samej zmiennej na wyjściu (Cewka/Coil). To również jest zły przykład.

Logika w tym przykładzie działa poprawnie, ale dało się ten problem rozwiązać inaczej i prościej. Kod byłby zapewne dłuższy, ale łatwiejszy do analizy.

Gotowa logika programu „Signals”

Gotowa logika powinna wyglądać jak screenie powyżej.

Tworzymy nowy program „Simulation”

Wybieramy nazwę, typ POU jako „Simulation” oraz język implementacji jako „ST”. Potwierdzamy przyciskiem „Open”.

Tworzymy zmienne lokalne programu Simulation oraz uzupełniamy kod

Wklejam kod do skopiowania:

PROGRAM Simulation
VAR
TON_1: TON; //The temperature is decreased on a time delay, when the compressor has been activated
P_Cooling: TIME:=T#500MS;
xReduceTemp: BOOL; //Signal for decreasing the temperature
TON_2: TON; //The temperature is increased on a time delay, when the compressor has been activated
P_Environment: TIME:=T#2S; //Delay time when the door is closed
P_EnvironmentDoorOpen: TIME:=T#1S; //Delay time when the door is open
xRaiseTemp: BOOL; //Signal for increasing the temperature
timTemp: TIME; //Delay time
iCounter: INT;
END_VAR

iCounter := iCounter + 1; // No function, just for demonstration purposes.

// After the compressor has been activated due to TempActual being too high, the temperature decreases.
// The temperature is decremented by 0.1°C per cycle after a delay of P_Cooling
IF Glob_VAR.xCompressor THEN
TON_1(IN:= Glob_Var.xCompressor, PT:= P_Cooling, Q=>xReduceTemp);
IF xReduceTemp THEN
Glob_Var.rTempActual := Glob_Var.rTempActual-0.1;
TON_1(IN:=FALSE);
END_IF
END_IF

//If the door is open, the warming occurs faster; SEL selects P_EnvironmentDoorOpen
timTemp:=SEL(Glob_Var.xDoorOpen, P_Environment, P_EnvironmentDoorOpen);

//If the compressor is not in operation, then the cooling chamber becomes warmer.
//The temperature is incremented by 0.1°C per cycle after a delay of tTemp
TON_2(IN:= TRUE, PT:= timTemp, Q=>xRaiseTemp);
IF xRaiseTemp THEN
Glob_Var.rTempActual := Glob_Var.rTempActual + 0.1;
TON_2(IN:=FALSE);
END_IF

Wywołanie programów

Programy możemy wywołać w taki prosty sposób wpisując w głównym programie „MAIN” nazwy programów które chcemy w nim wywołać dodając na końcu „()”.

Aktywacja konfiguracji

Klikamy na pierwszą od lewej ikonę zaznaczoną na czerwono u dołu.

Potwierdzenie aktywacji konfiguracji

Potwierdzamy przyciskiem OK.

Potwierdzamy restart w trybie RUN

Potwierdzamy przyciskiem OK.

Logujemy się na PLC

Wciskamy zielony przycisk po prawej stronie.

Podgląd online programów

Teraz możemy już podglądać aktualne wartości zmiennych w kodzie.

Testowanie programu i edycja wartości zmiennych

Możemy wpisać wartości do okna „Prepared value”, a następnie potwierdzić je w PLC -> Write values.

KONIEC

Ocena artykułu zgłoszonego do Konkursu iAutomatyka 4.0 pisz artykuły, zdobywaj punkty, wymieniaj je na nagrody.

Kryterium 1 2 3 4 5 6 7 8 9 10
Punkty (0-2) 2 1 2 1 2 1 2 2 2 2
Suma zdobytych punktów: 17




Utworzono: / Kategoria:

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