Programowanie kontrolera w języku LD. Przygotowanie bloku UDFB. Obsługa Toolchest Drawer
Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8)
Kontakt w sprawie artykułu: Mateusz Leszczyński - 2023-02-20
Z tego artykułu dowiesz się:
- czym jest blok UDFB,
- jak stworzyć własny blok UDFB,
- jakie możliwości daje ToolChest.
Znasz już podstawy programowania w języku LD. W tym odcinku dowiesz się, jak stworzyć swój własny blok UDFB, nauczysz się, jak go używać oraz poznasz, jak działa.
W odcinku 3 poznaliśmy już ToolChest, tutaj zobaczysz jego dodatkowe funkcje. Jednak nim przejdziemy dalej, warto dowiedzieć się, czym tak właściwie jest blok UDFB.
Kurs programowania PACSystems RSTi-EP CPE200
1. Budowa i przeznaczenie kontrolerów PACSystems RSTi-EP.2. Instalacja PAC Machine Edition 10. Przygotowanie karty sieciowej PC do pracy ze sterownikiem PLC.
3. Wygląd, funkcjonalność i dostosowywanie środowiska PAC Machine Edition.
4. Założenie projektu i podsystemu. Backup oraz restore projektu.
5. Konfiguracja sprzętowa kontrolera PACSystems RSTi-EP. Konfiguracja komunikacji w kontrolerze.
6. Wyszukiwanie oraz zmiana IP urządzeń poprzez sieć PROFINET. Konfiguracja węzła oddalonego RSTi-EP.
7. Programowanie kontrolera w języku LD. Przykładowy program ze standardowymi blokami funkcyjnymi.
8. Programowanie kontrolera w języku LD. Przygotowanie bloku UDFB. Obsługa Toolchest Drawer.
9. Programowanie online z wykorzystaniem funkcji Test Mode.
10. Programowanie w języku ST.
11. Najczęściej spotykane błędy podczas programowania w środowisku PAC Machine Edition.
Odcinki dodatkowe:
7.1 Podstawowe funkcje i symboli w języku LD.10.1 Podstawy programowania w języku ST.
Dodatkowe materiały i lekcje dla kursantów:
Komunikacja sterownika CPE100 z HMI QuickPanel+. Stworzenie pierwszej wizualizacji.UDFB, a dokładnie User Defined Function Block, jest to blok funkcyjny stworzony przez użytkownika i używany przez niego w programie. To bardzo efektywny proces tworzenia kodu, który chcemy wielokrotnie wykorzystać w naszym programie sterującym. Dzięki takim blokom zyskujemy dwie istotne korzyści:
- Poprawia się czytelność programu – określamy w jednym bloku skomplikowaną funkcję, którą można wykorzystać w programie kilka razy bez potrzeby pisania kilkukrotnie tego samego kodu.
- Upraszcza się serwis programu – zmiany dokonujemy w jednym miejsc w UDFB i są one automatycznie propagowane na wszystkie instancje bloku w programie sterującym.
Bloki te są obsługiwane w językach LD, ST, FDB oraz IL i składają się ze standardowych instrukcji. Można je łączyć szeregowo z zachowaniem zasady maksymalnie 1 UDFB na szczebel w programie.
Tworzenie bloku funkcyjnego UDFB w LD
Aby utworzyć User Defined Function Blocks musisz stworzyć nowy blok. Można to zrobić z menu kontekstowego po kliknięciu prawym klawiszem myszy pozycji „Program Blocks” w Navigatorze.
Następnie zmień typ utworzonego bloku na Function Block. Pamiętaj, że nie możesz zmienić bloku _MAIN na blok funkcyjny:
Po poprawnym utworzeniu bloku funkcyjnego w drzewku przy jego nazwie pojawi się symbol Function Block.
Wprowadzanie wartości wejściowych oraz wyjściowych do bloku funkcyjnego
Aby zdefiniować zmienne wprowadzone do bloku funkcyjnego, należy kliknąć interesujący Cię blok funkcyjny i przejść do okna Inspector. Następnie wybierz opcję Parameters i kliknij ikonkę z trzema kropkami. Otworzy się pole, w którym można wpisywać wartości Input, Output oraz Members.
Wszystko powinno przebiegać jak pokazujemy poniżej:
Input – wejście. Są to zmienne które ‘wchodzą” do bloku funkcyjnego.
Output – wyjście. Są to zmienne które „wychodzą” z bloku funkcyjnego.
Members – zmienne lokalne. Są to zmienne, których używa się wewnątrz bloku funkcyjnego bez możliwości użycia ich w innym bloku.
W oknie wprowadzamy:
- Name – nazwa wprowadzanej przez użytkownika zmiennej
- Data Type – typ zmiennej
- Length – długość zmiennej
- Pass By – wartość, od której zależy trwałość parametrów wejściowych
- Retentive – podtrzymanie wartości zmiennej
- Initial Value – wartość inicjująca (jest to wartość, z jaką ma uruchomić się blok funkcyjny)
- Description – miejsce na opis dodany przez użytkownika
- Public – informacja, czy zmienna lokalna ma być publiczna.
Tworzenie logiki w bloku oraz jego wywoływanie
Po zdefiniowaniu zmiennych w bloku możesz przejść do pisania w nim logiki. Jeśli podczas tworzenia programu uznasz, że stworzonych zostało za mało zmiennych, możesz cofnąć się do okna z parametrami i dodać ich więcej. Jak zaobserwujesz w kolejnych krokach, wygląd bloku funkcyjnego będzie się zmieniał w zależności od dodanych zmiennych.
Pisanie programu w bloku funkcyjnym odbywa się na tej samej zasadzie jak programowanie w LD. Jedyną zmianą jest fakt, że musi pojawić się w programie zmienna wejściowa oraz zmienna wyjściowa bloku funkcyjnego. W innym wypadku blok nigdy się nie wykona.
Przykładowy blok funkcyjny umieszczony w programie:
Wygląd logiki przykładowego bloku funkcyjnego:
Kiedy masz już poprawną logikę, możesz teraz wywołać blok funkcyjny w swoim programie. Pamiętaj, że kiedy dokonasz zmian w bloku funkcyjnym po jego wywołaniu, musisz wywołać go ponownie. W celu wywołania bloku w programie LD chwyć interesujący Cię blok z drzewka w Navigatorze, a następnie przeciągnij go na pole robocze:
Przykładowy program z blokiem funkcyjnym
W trakcie działania programu można zaobserwować, że sygnał po wejściu do bloku funkcyjnego wykonuje program w nim zawarty, a następnie sygnał z niego wychodzi kończąc działanie bloku.
Używanie Toolchest Drawer
Istnieje możliwość dodania Twojego bloku funkcyjnego do Toolchesta. Na początku stwórz swoją własną zakładkę, a następnie przeciągnij do niej stworzony blok funkcyjny:
Możesz również wysyłać stworzony przez siebie blok do innych użytkowników, którzy mogą dodać go do swojego ToolChesta.
Kiedy masz już dodany swój blok do ToolChesta, kliknij na nim prawym przyciskiem myszy, wybierz opcję Drawer, a następnie kliknij opcję „Export”. Teraz zapisz blok w wybranym przez siebie miejscu:
Kiedy chcesz zaimportować blok stworzony i zapisany przez Ciebie lub otrzymany od innego użytkownika, wystarczy w obszarze ToolChest kliknąć prawym klawiszem myszy, w menu kontekstowym wybrać Drawer, a następnie opcję „Import”. Znajdź zapisany blok i następnie go wgraj:
Używanie bloku funkcyjnego kilka razy w programie
Kiedy masz już swój blok funkcyjny, możesz używać go kilka razy w programie. Jednak jak wspomniano we wstępie – możesz go użyć raz w jednym szczeblu. Możesz uruchamiać go poprzez różne warunki, ale pamiętaj: jeżeli używasz wewnątrz bloku zmiennych publicznych, a nie lokalnych, każda zmiana zmiennej publicznej spowoduje jej zmianę we wszystkich miejscach w programie.
Wywoływanie zmiennej ze środka bloku w programie głównym
Jeżeli chcesz wywołać zmienną, wystarczy że wprowadzisz jej nazwę nad stykiem w _MAIN. Ponieważ nie była to zmienna typu Member, możesz stosować ją w różnych miejscach programu. W takim wypadku, kiedy ta zmienna zmieni swój stan podczas działania wewnątrz bloku funkcyjnego, zmieni go również w innych miejscach w programie. Działa to w obie strony. Jeżeli zmienisz stan zmiennej poza blokiem funkcyjnym, to wtedy jej wartość w bloku również się zmieni.
Podsumowanie
Teraz już wiesz, jak stworzyć oraz używać swój własny blok UDFB. Potrafisz go udostępnić innej osobie, jak również używać bloków przygotowanych przez innych inżynierów.
W kolejnym odcinku: Programowanie online z wykorzystaniem funkcji Test Mode
- czym jest tryb Test Mode w PAC Machine Edition,
- jak wykorzystać go w praktyce.