{"id":15777,"date":"2023-02-20T20:37:00","date_gmt":"2023-02-20T19:37:00","guid":{"rendered":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?p=15777"},"modified":"2023-05-13T13:05:27","modified_gmt":"2023-05-13T11:05:27","slug":"programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8","status":"publish","type":"post","link":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/","title":{"rendered":"Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer | Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8)"},"content":{"rendered":"\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"dowiesz-sie\">\n<h3>Z tego artyku\u0142u dowiesz si\u0119:<\/h3>\n<ul class=\"bulleted\">\n<li>czym jest blok UDFB,<\/li>\n<li>jak stworzy\u0107 w\u0142asny blok UDFB,<\/li>\n<li>jakie mo\u017cliwo\u015bci daje ToolChest.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Znasz ju\u017c podstawy programowania w j\u0119zyku LD. W tym odcinku dowiesz si\u0119, jak stworzy\u0107 sw\u00f3j w\u0142asny blok UDFB, nauczysz si\u0119, jak go u\u017cywa\u0107 oraz poznasz, jak dzia\u0142a.<\/p>\n\n\n\n<p>W <a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wyglad-funkcjonalnosc-i-dostosowywanie-srodowiska-pac-machine-edition-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-3\/\">odcinku 3<\/a> poznali\u015bmy ju\u017c <strong>ToolChest<\/strong>, tutaj zobaczysz jego dodatkowe funkcje. Jednak nim przejdziemy dalej, warto dowiedzie\u0107 si\u0119, czym tak w\u0142a\u015bciwie jest blok UDFB.<\/p>\n\n\n\n<div class=\"dowiesz-sie\" style=\"margin-top:40px; margin-bottom:40px\">\n<h3>Kurs programowania PACSystems RSTi-EP CPE200<\/h3>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/budowa-i-przeznaczenie-kontrolerow-pacsystems-rsti-ep-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-1\/\">1. Budowa i przeznaczenie kontroler\u00f3w PACSystems RSTi-EP.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/instalacja-pac-machine-edition-10-przygotowanie-karty-sieciowej-pc-do-pracy-ze-sterownikiem-plc-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-2\/\">2. Instalacja PAC Machine Edition 10. Przygotowanie karty sieciowej PC do pracy ze sterownikiem PLC.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wyglad-funkcjonalnosc-i-dostosowywanie-srodowiska-pac-machine-edition-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-3\/\">3. Wygl\u0105d, funkcjonalno\u015b\u0107 i dostosowywanie \u015brodowiska PAC Machine Edition.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/zalozenie-projektu-i-podsystemu-backup-oraz-restore-projektu-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-4\/\">4. Za\u0142o\u017cenie projektu i podsystemu. Backup oraz restore projektu.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/konfiguracja-sprzetowa-kontrolera-pacsystems-rsti-ep-konfiguracja-komunikacji-w-kontrolerze-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-5\/\">5. Konfiguracja sprz\u0119towa kontrolera PACSystems RSTi-EP. Konfiguracja komunikacji w kontrolerze.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wyszukiwanie-oraz-zmiana-ip-urzadzen-poprzez-siec-profinet-konfiguracja-wezla-oddalonego-rsti-ep-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-6\/\">6. Wyszukiwanie oraz zmiana IP urz\u0105dze\u0144 poprzez sie\u0107 PROFINET. Konfiguracja w\u0119z\u0142a oddalonego RSTi-EP.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przykladowy-program-ze-standardowymi-blokami-funkcyjnymi-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-7\/\">7. Programowanie kontrolera w j\u0119zyku LD. Przyk\u0142adowy program ze standardowymi blokami funkcyjnymi.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/\">8. Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-online-z-wykorzystaniem-funkcji-test-mode-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-9\/\">9. Programowanie online z wykorzystaniem funkcji Test Mode.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-w-jezyku-st-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-10\/\">10. Programowanie w j\u0119zyku ST.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/najczesciej-spotykane-bledy-podczas-programowania-w-srodowisku-pac-machine-edition-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-11\/\">11. Najcz\u0119\u015bciej spotykane b\u0142\u0119dy podczas programowania w \u015brodowisku PAC Machine Edition.<\/a><br\/>\n<h4 style=\"font-size:20px; margin-top:25px;\">Odcinki dodatkowe:<\/h4>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/podstawowe-funkcje-i-symboli-w-jezyku-ld-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-7-1\/\">7.1 Podstawowe funkcje i symboli w j\u0119zyku LD.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/podstawy-programowania-w-jezyku-st-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-10-1\/\">10.1 Podstawy programowania w j\u0119zyku ST.<\/a><br\/>\n<h4 style=\"font-size:20px; margin-top:25px;\">Dodatkowe materia\u0142y i lekcje dla kursant\u00f3w:<\/h4>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/pacsystems-rsti-ep-odc-6-komunikacja-sterownika-cpe100-z-hmi-quickpanel-stworzenie-pierwszej-wizualizacji\/\">Komunikacja sterownika CPE100 z HMI QuickPanel+. Stworzenie pierwszej wizualizacji.<\/a><br\/>\n<\/div>\n\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>UDFB<\/strong>, a dok\u0142adnie User Defined Function Block, jest to blok funkcyjny stworzony przez u\u017cytkownika i u\u017cywany przez niego w programie. To bardzo efektywny proces tworzenia kodu, kt\u00f3ry chcemy wielokrotnie wykorzysta\u0107 w naszym programie steruj\u0105cym. Dzi\u0119ki takim blokom zyskujemy dwie istotne korzy\u015bci:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Poprawia si\u0119 czytelno\u015b\u0107 programu &#8211; okre\u015blamy w jednym bloku skomplikowan\u0105 funkcj\u0119, kt\u00f3r\u0105 mo\u017cna wykorzysta\u0107 w programie kilka razy bez potrzeby pisania kilkukrotnie tego samego kodu.<\/li>\n\n\n\n<li>Upraszcza si\u0119 serwis programu \u2013 zmiany dokonujemy w jednym miejsc w UDFB i s\u0105 one automatycznie propagowane na wszystkie instancje bloku w programie steruj\u0105cym.<\/li>\n<\/ul>\n\n\n\n<p>Bloki te s\u0105 obs\u0142ugiwane w j\u0119zykach LD, ST, FDB oraz IL i sk\u0142adaj\u0105 si\u0119 ze standardowych instrukcji. Mo\u017cna je \u0142\u0105czy\u0107 szeregowo z zachowaniem zasady maksymalnie 1 UDFB na szczebel w programie.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Tworzenie bloku funkcyjnego UDFB w LD<\/h2>\n\n\n\n<p>Aby utworzy\u0107 User Defined Function Blocks musisz stworzy\u0107 nowy blok. Mo\u017cna to zrobi\u0107 z menu kontekstowego po klikni\u0119ciu prawym klawiszem myszy pozycji &#8222;Program Blocks&#8221; w <strong>Navigatorze<\/strong>.<\/p>\n\n\n\n<p>Nast\u0119pnie zmie\u0144 typ utworzonego bloku na <strong>Function Block<\/strong>. Pami\u0119taj, \u017ce nie mo\u017cesz zmieni\u0107 bloku _MAIN na blok funkcyjny:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/image1-2.png\" alt=\"\" class=\"wp-image-16015\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Po poprawnym utworzeniu bloku funkcyjnego w drzewku przy jego nazwie pojawi si\u0119 symbol Function Block.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Wprowadzanie warto\u015bci wej\u015bciowych oraz wyj\u015bciowych do bloku funkcyjnego<\/h2>\n\n\n\n<p>Aby zdefiniowa\u0107 zmienne wprowadzone do bloku funkcyjnego, nale\u017cy klikn\u0105\u0107 interesuj\u0105cy Ci\u0119 blok funkcyjny i przej\u015b\u0107 do okna <strong>Inspector<\/strong>. Nast\u0119pnie wybierz opcj\u0119 <strong>Parameters<\/strong> i kliknij ikonk\u0119 z trzema kropkami. Otworzy si\u0119 pole, w kt\u00f3rym mo\u017cna wpisywa\u0107 warto\u015bci Input, Output oraz Members.<\/p>\n\n\n\n<p>Wszystko powinno przebiega\u0107 jak pokazujemy poni\u017cej:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/Wprowadzanie-parametrow.gif\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/Wprowadzanie-parametrow.gif\" alt=\"\" class=\"wp-image-16022\"\/><\/a><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Input<\/strong> \u2013 wej\u015bcie. S\u0105 to zmienne kt\u00f3re \u2018wchodz\u0105\u201d do bloku funkcyjnego.<\/p>\n\n\n\n<p><strong>Output<\/strong> \u2013 wyj\u015bcie. S\u0105 to zmienne kt\u00f3re \u201ewychodz\u0105\u201d z bloku funkcyjnego.<\/p>\n\n\n\n<p><strong>Members<\/strong> \u2013 zmienne lokalne. S\u0105 to zmienne, kt\u00f3rych u\u017cywa si\u0119 wewn\u0105trz bloku funkcyjnego bez mo\u017cliwo\u015bci u\u017cycia ich w innym bloku.<\/p>\n\n\n\n<p>W oknie wprowadzamy:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/image4-2.png\" alt=\"\" class=\"wp-image-16016\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Name<\/strong> \u2013 nazwa wprowadzanej przez u\u017cytkownika zmiennej<\/li>\n\n\n\n<li><strong>Data Type<\/strong> \u2013 typ zmiennej<\/li>\n\n\n\n<li><strong>Length<\/strong> \u2013 d\u0142ugo\u015b\u0107 zmiennej<\/li>\n\n\n\n<li><strong>Pass By<\/strong> \u2013 warto\u015b\u0107, od kt\u00f3rej zale\u017cy trwa\u0142o\u015b\u0107 parametr\u00f3w wej\u015bciowych<\/li>\n\n\n\n<li><strong>Retentive<\/strong> \u2013 podtrzymanie warto\u015bci zmiennej<\/li>\n\n\n\n<li><strong>Initial Value<\/strong> \u2013 warto\u015b\u0107 inicjuj\u0105ca (jest to warto\u015b\u0107, z jak\u0105 ma uruchomi\u0107 si\u0119 blok funkcyjny)<\/li>\n\n\n\n<li><strong>Description<\/strong> \u2013 miejsce na opis dodany przez u\u017cytkownika<\/li>\n\n\n\n<li><strong>Public<\/strong> \u2013 informacja, czy zmienna lokalna ma by\u0107 publiczna.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Tworzenie logiki w bloku oraz jego wywo\u0142ywanie<\/h2>\n\n\n\n<p>Po zdefiniowaniu zmiennych w bloku mo\u017cesz przej\u015b\u0107 do pisania w nim logiki. Je\u015bli podczas tworzenia programu uznasz, \u017ce stworzonych zosta\u0142o za ma\u0142o zmiennych, mo\u017cesz cofn\u0105\u0107 si\u0119 do okna z parametrami i doda\u0107 ich wi\u0119cej. Jak zaobserwujesz w kolejnych krokach, wygl\u0105d bloku funkcyjnego b\u0119dzie si\u0119 zmienia\u0142 w zale\u017cno\u015bci od dodanych zmiennych.<\/p>\n\n\n\n<p>Pisanie programu w bloku funkcyjnym odbywa si\u0119 na tej samej zasadzie jak programowanie w LD. Jedyn\u0105 zmian\u0105 jest fakt, \u017ce musi pojawi\u0107 si\u0119 w programie zmienna wej\u015bciowa oraz zmienna wyj\u015bciowa bloku funkcyjnego. W innym wypadku blok nigdy si\u0119 nie wykona.<\/p>\n\n\n\n<p>Przyk\u0142adowy blok funkcyjny umieszczony w programie:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/image5.png\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/image5.png\" alt=\"\" class=\"wp-image-16017\"\/><\/a><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Wygl\u0105d logiki przyk\u0142adowego bloku funkcyjnego:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/image6.png\" alt=\"\" class=\"wp-image-16018\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Kiedy masz ju\u017c poprawn\u0105 logik\u0119, mo\u017cesz teraz wywo\u0142a\u0107 blok funkcyjny w swoim programie. Pami\u0119taj, \u017ce kiedy dokonasz zmian w bloku funkcyjnym po jego wywo\u0142aniu, musisz wywo\u0142a\u0107 go ponownie. W celu wywo\u0142ania bloku w programie LD chwy\u0107 interesuj\u0105cy Ci\u0119 blok z drzewka w <strong>Navigatorze<\/strong>, a nast\u0119pnie przeci\u0105gnij go na pole robocze:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/Wywolywanie-bloku-funkcyjnego.gif\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/Wywolywanie-bloku-funkcyjnego.gif\" alt=\"\" class=\"wp-image-16023\"\/><\/a><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/image7.png\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/image7.png\" alt=\"\" class=\"wp-image-16019\"\/><\/a><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Przyk\u0142adowy program z blokiem funkcyjnym<\/h2>\n\n\n\n<p>W trakcie dzia\u0142ania programu mo\u017cna zaobserwowa\u0107, \u017ce sygna\u0142 po wej\u015bciu do bloku funkcyjnego wykonuje program w nim zawarty, a nast\u0119pnie sygna\u0142 z niego wychodzi ko\u0144cz\u0105c dzia\u0142anie bloku.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/Program-z-uzyciem-bloku-funkcyjnego.gif\" alt=\"\" class=\"wp-image-16024\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">U\u017cywanie Toolchest Drawer<\/h2>\n\n\n\n<p>Istnieje mo\u017cliwo\u015b\u0107 dodania Twojego bloku funkcyjnego do <strong>Toolchesta<\/strong>. Na pocz\u0105tku stw\u00f3rz swoj\u0105 w\u0142asn\u0105 zak\u0142adk\u0119, a nast\u0119pnie przeci\u0105gnij do niej stworzony blok funkcyjny:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/Tworzenie-swojej-zakladki.gif\" alt=\"\" class=\"wp-image-16025\"\/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/Dodawanie-bloku-do-toolchets.gif\" alt=\"\" class=\"wp-image-16026\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Mo\u017cesz r\u00f3wnie\u017c wysy\u0142a\u0107 stworzony przez siebie blok do innych u\u017cytkownik\u00f3w, kt\u00f3rzy mog\u0105 doda\u0107 go do swojego <strong>ToolChesta<\/strong>.<\/p>\n\n\n\n<p>Kiedy masz ju\u017c dodany sw\u00f3j blok do <strong>ToolChesta<\/strong>, kliknij na nim prawym przyciskiem myszy, wybierz opcj\u0119 <strong>Drawer<\/strong>, a nast\u0119pnie kliknij opcj\u0119 \u201eExport\u201d. Teraz zapisz blok w wybranym przez siebie miejscu:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/Wysylanie-bloka.gif\" alt=\"\" class=\"wp-image-16027\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Kiedy chcesz zaimportowa\u0107 blok stworzony i zapisany przez Ciebie lub otrzymany od innego u\u017cytkownika, wystarczy w obszarze <strong>ToolChest<\/strong> klikn\u0105\u0107 prawym klawiszem myszy, w menu kontekstowym wybra\u0107 <strong>Drawer<\/strong>, a nast\u0119pnie opcj\u0119 \u201eImport\u201d. Znajd\u017a zapisany blok i nast\u0119pnie go wgraj:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/Import-bloka.gif\" alt=\"\" class=\"wp-image-16028\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">U\u017cywanie bloku funkcyjnego kilka razy w programie<\/h2>\n\n\n\n<p>Kiedy masz ju\u017c sw\u00f3j blok funkcyjny, mo\u017cesz u\u017cywa\u0107 go kilka razy w programie. Jednak jak wspomniano we wst\u0119pie \u2013 mo\u017cesz go u\u017cy\u0107 raz w jednym szczeblu. Mo\u017cesz uruchamia\u0107 go poprzez r\u00f3\u017cne warunki, ale pami\u0119taj: je\u017celi u\u017cywasz wewn\u0105trz bloku zmiennych publicznych, a nie lokalnych, ka\u017cda zmiana zmiennej publicznej spowoduje jej zmian\u0119 we wszystkich miejscach w programie.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Wywo\u0142ywanie zmiennej ze \u015brodka bloku w programie g\u0142\u00f3wnym<\/h2>\n\n\n\n<p>Je\u017celi chcesz wywo\u0142a\u0107 zmienn\u0105, wystarczy \u017ce wprowadzisz jej nazw\u0119 nad stykiem w _MAIN. Poniewa\u017c nie by\u0142a to zmienna typu Member, mo\u017cesz stosowa\u0107 j\u0105 w r\u00f3\u017cnych miejscach programu. W takim wypadku, kiedy ta zmienna zmieni sw\u00f3j stan podczas dzia\u0142ania wewn\u0105trz bloku funkcyjnego, zmieni go r\u00f3wnie\u017c w innych miejscach w programie. Dzia\u0142a to w obie strony. Je\u017celi zmienisz stan zmiennej poza blokiem funkcyjnym, to wtedy jej warto\u015b\u0107 w bloku r\u00f3wnie\u017c si\u0119 zmieni.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/Wywolanie-wew-zmiennej.gif\"><img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/03\/Wywolanie-wew-zmiennej.gif\" alt=\"\" class=\"wp-image-16029\"\/><\/a><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowanie<\/h2>\n\n\n\n<p>Teraz ju\u017c wiesz, jak stworzy\u0107 oraz u\u017cywa\u0107 sw\u00f3j w\u0142asny blok UDFB. Potrafisz go udost\u0119pni\u0107 innej osobie, jak r\u00f3wnie\u017c u\u017cywa\u0107 blok\u00f3w przygotowanych przez innych in\u017cynier\u00f3w.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"dowiesz-sie\">\n<h3>W kolejnym odcinku: <a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-online-z-wykorzystaniem-funkcji-test-mode-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-9\/\">Programowanie online z wykorzystaniem funkcji Test Mode<\/a><\/h3>\n<ul class=\"bulleted\">\n<li>czym jest tryb Test Mode w PAC Machine Edition,<\/li>\n<li>jak wykorzysta\u0107 go w praktyce.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div style=\"height:80px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n            <div id=\"mailerlite-form_9\" data-temp-id=\"69d41ad121076\">\n                <div class=\"mailerlite-form\">\n                    <form action=\"\" method=\"post\" novalidate>\n                                                    <div class=\"mailerlite-form-title\"><h3>Newsletter Poradnika Automatyka<\/h3><\/div>\n                                                <div class=\"mailerlite-form-description\"><p>Czytaj trendy i inspiracje, podstawy automatyki, automatyk\u0119 w praktyce<\/p>\n<\/div>\n                        <div class=\"mailerlite-form-inputs\">\n                                                                                            <div class=\"mailerlite-form-field\">\n                                    <label for=\"mailerlite-9-field-email\">Email<\/label>\n                                    <input id=\"mailerlite-9-field-email\"\n                                           type=\"email\" required=\"required\"                                            name=\"form_fields[email]\"\n                                           placeholder=\"Email\"\/>\n                                <\/div>\n                                                        <div class=\"mailerlite-form-loader\">Please wait...<\/div>\n                            <div class=\"mailerlite-subscribe-button-container\">\n                                <button class=\"mailerlite-subscribe-submit\" type=\"submit\">\n                                    Zapisz si\u0119                                <\/button>\n                            <\/div>\n                            <input type=\"hidden\" name=\"form_id\" value=\"9\"\/>\n                            <input type=\"hidden\" name=\"action\" value=\"mailerlite_subscribe_form\"\/>\n                            <input type=\"hidden\" name=\"ml_nonce\" value=\"2abf4d132b\"\/>\n                        <\/div>\n                        <div class=\"mailerlite-form-response\">\n                                                            <h4><p>Dzi\u0119kujemy za zapis do newslettera!<\/p>\n<\/h4>\n                                                    <\/div>\n                    <\/form>\n                <\/div>\n            <\/div>\n        <script type=\"text\/javascript\" src='https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/plugins\/official-mailerlite-sign-up-forms\/assets\/js\/localization\/validation-messages.js'><\/script>\n         <script type=\"text\/javascript\"> var selectedLanguage = \"pl\"; var validationMessages = messages[\"en\"]; if(selectedLanguage) { validationMessages = messages[selectedLanguage]; } window.addEventListener(\"load\", function () { var form_container = document.querySelector(`#mailerlite-form_9[data-temp-id=\"69d41ad121076\"] form`); let submitButton = form_container.querySelector('.mailerlite-subscribe-submit'); submitButton.disabled = true; fetch('https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-admin\/admin-ajax.php', { method: 'POST', headers:{ 'Content-Type': 'application\/x-www-form-urlencoded', }, body: new URLSearchParams({ \"action\" : \"ml_create_nonce\", \"ml_nonce\" : form_container.querySelector(\"input[name='ml_nonce']\").value }) }) .then((response) => response.json()) .then((json) => { if(json.success) { form_container.querySelector(\"input[name='ml_nonce']\").value = json.data.ml_nonce; submitButton.disabled = false; } }) .catch((error) => { console.error('Error:', error); }); form_container.addEventListener('submit', (e) => { e.preventDefault(); let data = new URLSearchParams(new FormData(form_container)).toString(); let validationError = false; document.querySelectorAll('.mailerlite-form-error').forEach(el => el.remove()); Array.from(form_container.elements).forEach((input) => { if(input.type !== 'hidden') { if(input.required) { if(input.value == '') { validationError = true; let error = document.createElement(\"span\"); error.className = 'mailerlite-form-error'; error.textContent = validationMessages.required; input.after(error); return false; } } if((input.type == \"email\") && (!validateEmail(input.value))) { validationError = true; let error = document.createElement(\"span\"); error.className = 'mailerlite-form-error'; error.textContent = validationMessages.email; input.after(error); return false; } } }); if(validationError) { return false; } fade.out(form_container.querySelector('.mailerlite-subscribe-button-container'), () => { fade.in(form_container.querySelector('.mailerlite-form-loader')); }); fetch('https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-admin\/admin-ajax.php', { method: 'POST', headers:{ 'Content-Type': 'application\/x-www-form-urlencoded', }, body: data }) .then((response) => { fade.out(form_container.querySelector('.mailerlite-form-inputs'), () => { fade.in(form_container.querySelector('.mailerlite-form-response')); }); }) .catch((error) => { console.error('Error:', error); }); }); }, false); var fade = { out: function(el, fn = false) { var fadeOutEffect = setInterval(function () { if (!el.style.opacity) { el.style.opacity = 1; } if (el.style.opacity > 0) { el.style.opacity -= 0.1; } else { el.style.display = 'none'; clearInterval(fadeOutEffect); } }, 50); if( typeof (fn) == 'function') { fn(); } }, in: function(el) { var fadeInEffect = setInterval(function () { if (!el.style.opacity) { el.style.opacity = 0; } if (el.style.opacity < 1) { el.style.opacity = Number(el.style.opacity) + 0.1; } else { el.style.display = 'block'; clearInterval(fadeInEffect); } }, 50); } }; function validateEmail(email){ if(email.match( \/^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$\/ )) { return true; } return false; } <\/script> \n","protected":false},"excerpt":{"rendered":"<p>Znasz ju\u017c podstawy programowania w j\u0119zyku LD. W tym odcinku dowiesz si\u0119, jak stworzy\u0107 sw\u00f3j w\u0142asny blok UDBF, nauczysz si\u0119, jak go u\u017cywa\u0107 oraz poznasz, jak dzia\u0142a. W odcinku 3 poznali\u015bmy ju\u017c ToolChest, tutaj zobaczysz jego dodatkowe funkcje.<\/p>\n","protected":false},"author":19,"featured_media":17134,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[234],"tags":[263,214,230,82,136],"class_list":["post-15777","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatyka-w-praktyce","tag-cpe200","tag-emerson","tag-pac-machine-editon","tag-pacsystems-rsti-ep","tag-rsti-ep-io"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer | Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8) | Poradnik Automatyka<\/title>\r\n<meta name=\"description\" content=\"W tym odcinku dowiesz si\u0119, jak stworzy\u0107 sw\u00f3j w\u0142asny blok UDBF, nauczysz si\u0119, jak go u\u017cywa\u0107 oraz poznasz, jak dzia\u0142a.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/\" \/>\r\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer | Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8) | Poradnik Automatyka\" \/>\r\n<meta property=\"og:description\" content=\"W tym odcinku dowiesz si\u0119, jak stworzy\u0107 sw\u00f3j w\u0142asny blok UDBF, nauczysz si\u0119, jak go u\u017cywa\u0107 oraz poznasz, jak dzia\u0142a.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Poradnik Automatyka\" \/>\r\n<meta property=\"article:published_time\" content=\"2023-02-20T19:37:00+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2023-05-13T11:05:27+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image6.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"605\" \/>\r\n\t<meta property=\"og:image:height\" content=\"395\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"Mateusz Leszczy\u0144ski\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mateusz Leszczy\u0144ski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minut\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/\"},\"author\":{\"name\":\"Mateusz Leszczy\u0144ski\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/d59e310d8a615aabed9c5498d0aa8e7d\"},\"headline\":\"Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer | Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8)\",\"datePublished\":\"2023-02-20T19:37:00+00:00\",\"dateModified\":\"2023-05-13T11:05:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/\"},\"wordCount\":1065,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image6.png\",\"keywords\":[\"cpe200\",\"Emerson\",\"PAC Machine Editon\",\"PACSystems RSTi-EP\",\"RSTi-EP I\/O\"],\"articleSection\":[\"Automatyka w praktyce\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/\",\"name\":\"Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer | Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8) | Poradnik Automatyka\",\"isPartOf\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image6.png\",\"datePublished\":\"2023-02-20T19:37:00+00:00\",\"dateModified\":\"2023-05-13T11:05:27+00:00\",\"description\":\"W tym odcinku dowiesz si\u0119, jak stworzy\u0107 sw\u00f3j w\u0142asny blok UDBF, nauczysz si\u0119, jak go u\u017cywa\u0107 oraz poznasz, jak dzia\u0142a.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#primaryimage\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image6.png\",\"contentUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image6.png\",\"width\":605,\"height\":395},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Automatyka w praktyce\",\"item\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/category\/automatyka-w-praktyce\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer | Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/\",\"name\":\"Poradnik Automatyka\",\"description\":\"Poradnik Automatyka to przydatne kursy, u\u017cyteczne artyku\u0142y i merytoryczne webinary dla ka\u017cdego automatyka i elektryka.\",\"publisher\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization\",\"name\":\"ASTOR\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png\",\"contentUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png\",\"width\":3322,\"height\":1078,\"caption\":\"ASTOR\"},\"image\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/d59e310d8a615aabed9c5498d0aa8e7d\",\"name\":\"Mateusz Leszczy\u0144ski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/04\/M.-Leszczynski.jpg\",\"contentUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/04\/M.-Leszczynski.jpg\",\"caption\":\"Mateusz Leszczy\u0144ski\"},\"description\":\"Absolwent Akademii G\u00f3rniczo-Hutniczej, wydzia\u0142u In\u017cynierii Mechanicznej i Robotyki (kierunek Mechatronika \u2013 projektowanie mechatroniczne). Specjalista ds. System\u00f3w Sterowania i Automatyki Przemys\u0142owej. Konsultant i trener w zakresie sterownik\u00f3w programowalnych i terminali Astraada One (ECC2000, DC2000, EC1000, ET2000), sterownik\u00f3w Horner, paneli operatorskich Astraada. Posiada techniczne do\u015bwiadczenie w zakresie system\u00f3w sterowania, sieci przemys\u0142owych oraz system\u00f3w typu SCADA.\",\"sameAs\":[\"https:\/\/pl.linkedin.com\/in\/mateusz-leszczyski-a1819475\"],\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/autor\/mateuszle\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer | Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8) | Poradnik Automatyka","description":"W tym odcinku dowiesz si\u0119, jak stworzy\u0107 sw\u00f3j w\u0142asny blok UDBF, nauczysz si\u0119, jak go u\u017cywa\u0107 oraz poznasz, jak dzia\u0142a.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/","og_locale":"pl_PL","og_type":"article","og_title":"Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer | Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8) | Poradnik Automatyka","og_description":"W tym odcinku dowiesz si\u0119, jak stworzy\u0107 sw\u00f3j w\u0142asny blok UDBF, nauczysz si\u0119, jak go u\u017cywa\u0107 oraz poznasz, jak dzia\u0142a.","og_url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/","og_site_name":"Poradnik Automatyka","article_published_time":"2023-02-20T19:37:00+00:00","article_modified_time":"2023-05-13T11:05:27+00:00","og_image":[{"width":605,"height":395,"url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image6.png","type":"image\/png"}],"author":"Mateusz Leszczy\u0144ski","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Mateusz Leszczy\u0144ski","Szacowany czas czytania":"8 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#article","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/"},"author":{"name":"Mateusz Leszczy\u0144ski","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/d59e310d8a615aabed9c5498d0aa8e7d"},"headline":"Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer | Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8)","datePublished":"2023-02-20T19:37:00+00:00","dateModified":"2023-05-13T11:05:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/"},"wordCount":1065,"commentCount":0,"publisher":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image6.png","keywords":["cpe200","Emerson","PAC Machine Editon","PACSystems RSTi-EP","RSTi-EP I\/O"],"articleSection":["Automatyka w praktyce"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/","name":"Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer | Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8) | Poradnik Automatyka","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#primaryimage"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image6.png","datePublished":"2023-02-20T19:37:00+00:00","dateModified":"2023-05-13T11:05:27+00:00","description":"W tym odcinku dowiesz si\u0119, jak stworzy\u0107 sw\u00f3j w\u0142asny blok UDBF, nauczysz si\u0119, jak go u\u017cywa\u0107 oraz poznasz, jak dzia\u0142a.","breadcrumb":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#primaryimage","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image6.png","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image6.png","width":605,"height":395},{"@type":"BreadcrumbList","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-kontrolera-w-jezyku-ld-przygotowanie-bloku-udfb-obsluga-toolchest-drawer-kurs-programowania-pacsystems-rsti-ep-cpe200-odc-8\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Automatyka w praktyce","item":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/category\/automatyka-w-praktyce\/"},{"@type":"ListItem","position":2,"name":"Programowanie kontrolera w j\u0119zyku LD. Przygotowanie bloku UDFB. Obs\u0142uga Toolchest Drawer | Kurs programowania PACSystems RSTi-EP CPE200 (odc. 8)"}]},{"@type":"WebSite","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/","name":"Poradnik Automatyka","description":"Poradnik Automatyka to przydatne kursy, u\u017cyteczne artyku\u0142y i merytoryczne webinary dla ka\u017cdego automatyka i elektryka.","publisher":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization","name":"ASTOR","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png","width":3322,"height":1078,"caption":"ASTOR"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/d59e310d8a615aabed9c5498d0aa8e7d","name":"Mateusz Leszczy\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/image\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/04\/M.-Leszczynski.jpg","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/04\/M.-Leszczynski.jpg","caption":"Mateusz Leszczy\u0144ski"},"description":"Absolwent Akademii G\u00f3rniczo-Hutniczej, wydzia\u0142u In\u017cynierii Mechanicznej i Robotyki (kierunek Mechatronika \u2013 projektowanie mechatroniczne). Specjalista ds. System\u00f3w Sterowania i Automatyki Przemys\u0142owej. Konsultant i trener w zakresie sterownik\u00f3w programowalnych i terminali Astraada One (ECC2000, DC2000, EC1000, ET2000), sterownik\u00f3w Horner, paneli operatorskich Astraada. Posiada techniczne do\u015bwiadczenie w zakresie system\u00f3w sterowania, sieci przemys\u0142owych oraz system\u00f3w typu SCADA.","sameAs":["https:\/\/pl.linkedin.com\/in\/mateusz-leszczyski-a1819475"],"url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/autor\/mateuszle\/"}]}},"_links":{"self":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/15777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/comments?post=15777"}],"version-history":[{"count":3,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/15777\/revisions"}],"predecessor-version":[{"id":17561,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/15777\/revisions\/17561"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media\/17134"}],"wp:attachment":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media?parent=15777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/categories?post=15777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/tags?post=15777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}