{"id":18949,"date":"2023-08-30T08:22:37","date_gmt":"2023-08-30T06:22:37","guid":{"rendered":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?p=18949"},"modified":"2025-02-17T10:21:55","modified_gmt":"2025-02-17T09:21:55","slug":"przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem","status":"publish","type":"post","link":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/","title":{"rendered":"Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem"},"content":{"rendered":"<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"dowiesz-sie\">\n<h3>Z tego artyku\u0142u dowiesz si\u0119:<\/h3>\n<ul class=\"bulleted\">\n<li>jak wgra\u0107 gotowy program w Codesys,<\/li>\n<li>jak mo\u017ce wygl\u0105da\u0107 wizualizacja przyk\u0142adowego procesu technologicznego (nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w),<\/li>\n<li>na jakiej zasadzie funkcjonuj\u0105 stany alarmowe.<\/li>\n<\/ul>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>W tym artykule prezentujemy gotowy przyk\u0142ad programu, napisanego w \u015brodowisku Codesys, w j\u0119zyku ST oraz LD.<\/p>\n<p>Zanim jednak go wgramy, najpierw musimy przygotowa\u0107 nasze \u015brodowisko programistyczne. Nale\u017cy to wykona\u0107 tak, jak opisali\u015bmy w pierwszym odcinku naszego <strong>kur<\/strong><strong>su programowania w<\/strong><strong> Codesys<\/strong>:<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-poradnik-automatyka wp-block-embed-poradnik-automatyka\">\n<div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"4gufEvwxGk\"><p><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jak-stworzyc-program-pierwsze-kroki-w-codesys-kurs-programowania-w-codesys-odc-1\/\">Pierwsze kroki w Codesys. Jak stworzy\u0107 program? | Kurs programowania w Codesys odc. 1<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8222;Pierwsze kroki w Codesys. Jak stworzy\u0107 program? | Kurs programowania w Codesys odc. 1&#8221; &#8212; Poradnik Automatyka\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jak-stworzyc-program-pierwsze-kroki-w-codesys-kurs-programowania-w-codesys-odc-1\/embed\/#?secret=26wMQNrAcA#?secret=4gufEvwxGk\" data-secret=\"4gufEvwxGk\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div>\n<\/figure>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"link-box d-flex align-items-center\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/themes\/poradnik\/public\/images\/icons\/icon-link.svg\" alt=\"arrow\" class=\"ml-3\"><br \/>\n\t\t\t\t\t\t\t<\/a><\/p>\n<div>\n<p>Plik \u017ar\u00f3d\u0142owy opisywanej w tym artykule aplikacji mo\u017cesz \u015bci\u0105gn\u0105\u0107,<\/p>\n<p><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/Zbiorniki_ST.zip\">korzystaj\u0105c z tego linku<\/a>.<\/p>\n<\/div><\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<h2 class=\"wp-block-heading\">Tworzenie podstawy programu w Codesys z wykorzystaniem symulatora<\/h2>\n<p><strong>Krok 1<\/strong>: tworzymy nowy standardowy projekt <strong>Zbiorniki_ST<\/strong>. Pisany program b\u0119dzie w j\u0119zyku ST, natomiast w tym artykule umieszczony zosta\u0142 r\u00f3wnie\u017c kod w j\u0119zyku drabinkowym LD. Nasz komputer ma by\u0107 wirtualnym sterownikiem, dlatego w polu <strong>Device<\/strong> wybieramy <strong>CODESYS Control Win V3<\/strong>.<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"546\" height=\"312\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image02.png\" alt=\"\" class=\"wp-image-18962\"\/><figcaption class=\"wp-element-caption\"><em>Wybieranie symulatora i j\u0119zyka drabinkowego w Codesys. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p><strong>Krok 2<\/strong>: dodajemy now\u0105 bibliotek\u0119. Za pomoc\u0105 <strong>Library Manager<\/strong> zarz\u0105dzamy dost\u0119pnymi bibliotekami w naszej aplikacji. Standardowo do projektu do\u0142\u0105czane s\u0105 podstawowe biblioteki. Rozszerzamy j\u0105 o now\u0105 bibliotek\u0119 <strong>Util 3.5.17.0<\/strong>. Jest ona konieczna ze wzgl\u0119du na wykorzystanie m.in. gotowego bloku migania <strong>BLINK<\/strong>, kt\u00f3ry zosta\u0142 u\u017cyty w napisanym programie.<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"836\" height=\"543\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image03.gif\" alt=\"\" class=\"wp-image-18965\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image03.gif 836w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image03-768x499.gif 768w\" sizes=\"auto, (max-width: 836px) 100vw, 836px\" \/><figcaption class=\"wp-element-caption\"><em>Dodanie nowych bibliotek. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p><strong>Krok 3<\/strong>: Wprowadzamy kod programu. Zmienne w oknie zmiennych, kod w edytorze programu.<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1364\" height=\"715\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image04.png\" alt=\"\" class=\"wp-image-18966\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image04.png 1364w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image04-840x440.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image04-768x403.png 768w\" sizes=\"auto, (max-width: 1364px) 100vw, 1364px\" \/><figcaption class=\"wp-element-caption\"><em>Ekran \u015brodowiska Codesys <em>(kliknij, aby powi\u0119kszy\u0107)<\/em>. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Nast\u0119pnie kompilujemy program poprzez wybranie z menu kontekstowego <strong>Build -&gt; Generate Code <\/strong>lub wyboru skr\u00f3tu klawiszowego <strong>F11<\/strong>. Je\u017celi uzyskamy poni\u017cszy widok bez \u017cadnych b\u0142\u0119d\u00f3w czy ostrze\u017ce\u0144, oznacza to \u017ce prawid\u0142owo zosta\u0142 on skompilowany.<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"693\" height=\"136\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image05.png\" alt=\"\" class=\"wp-image-18969\"\/><figcaption class=\"wp-element-caption\"><em>Pole komunikat\u00f3w Codesys. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<h2 class=\"wp-block-heading\">Przygotowanie \u015brodowiska wizualizacji do projektu w Codesys<\/h2>\n<p>Spos\u00f3b przygotowania \u015brodowiska r\u00f3wnie\u017c zosta\u0142 opisany w naszym kursie programowania Codesys. Zach\u0119cam do zapoznania si\u0119 z poni\u017cszym artyku\u0142em, gdzie od podstaw jest wyja\u015bniona konfiguracja \u015brodowiska Codesys do tworzenia wizualizacji:<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-poradnik-automatyka wp-block-embed-poradnik-automatyka\">\n<div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"lJOnbb62SO\"><p><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/tworzenie-podstawowej-wizualizacji-hmi-kurs-programowania-w-codesys-odc-6\/\">Tworzenie podstawowej wizualizacji HMI | Kurs programowania w Codesys odc. 6<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8222;Tworzenie podstawowej wizualizacji HMI | Kurs programowania w Codesys odc. 6&#8221; &#8212; Poradnik Automatyka\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/tworzenie-podstawowej-wizualizacji-hmi-kurs-programowania-w-codesys-odc-6\/embed\/#?secret=aI2FMF6wiI#?secret=lJOnbb62SO\" data-secret=\"lJOnbb62SO\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div>\n<\/figure>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Wracaj\u0105c do naszego programu, najpierw dodajemy pole wizualizacji i nazywamy j\u0105 jako <strong>Ekran_1<\/strong>, kt\u00f3ry b\u0119dzie naszym widokiem startowym. Aby doda\u0107 wizualizacj\u0119 do projektu, nale\u017cy w drzewku projektowym klikn\u0105\u0107 prawym klawiszem myszy na <strong>Application<\/strong>, a nast\u0119pnie wybra\u0107<strong> Add Object -&gt; Visualization<\/strong>.<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"487\" height=\"734\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image06-487x734.png\" alt=\"\" class=\"wp-image-18970\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image06-487x734.png 487w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image06.png 640w\" sizes=\"auto, (max-width: 487px) 100vw, 487px\" \/><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"363\" height=\"515\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image07.png\" alt=\"\" class=\"wp-image-18972\"\/><figcaption class=\"wp-element-caption\"><em>Dodawanie ekranu wizualizacji. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Od tego momentu pojawi\u0142y nam si\u0119 nowe zak\u0142adki drzewka projektowego:<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"251\" height=\"284\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image08.png\" alt=\"\" class=\"wp-image-18975\"\/><figcaption class=\"wp-element-caption\"><em>Widok drzewka projektowego. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p><strong>Visualization Manager<\/strong> \u2013 obiekt dodawany automatycznie po dodaniu pierwszej wizualizacji; konfiguracja og\u00f3lnych ustawie\u0144 wizualizacji, takich jak np. u\u017cywany styl obiekt\u00f3w wizualizacji lub zdefiniowanie poziom\u00f3w dost\u0119pu do danych okien wizualizacji.<\/p>\n<p><strong>TargetVisu<\/strong> \u2013 ustawienia dotycz\u0105ce wizualizacji wy\u015bwietlanej na terminalach czy monitorach. Gdy chcemy mie\u0107 sta\u0142\u0105 wielko\u015b\u0107 ekranu, kt\u00f3ry nie zmienia swojej wielko\u015bci, zaznaczamy opcj\u0119 <strong>Use specified visualization size<\/strong> i wpisujemy rzeczywiste wymiary wielko\u015bci ekranu.<\/p>\n<p><strong>WebVisu<\/strong> \u2013 ustawienia dotycz\u0105ce wizualizacji wy\u015bwietlanej w przegl\u0105darce internetowej. W tym przypadku wszystko zale\u017cy od urz\u0105dzenia, na kt\u00f3rym wy\u015bwietlimy nasz\u0105 stron\u0119 internetow\u0105. Mo\u017cemy narzuci\u0107 sta\u0142\u0105 rozdzielczo\u015b\u0107 jak wy\u017cej, ale mo\u017cemy r\u00f3wnie\u017c u\u017cy\u0107 automatycznych skalowa\u0144 (<strong>Use automatic detected visualization size<\/strong><em>)<\/em>.<\/p>\n<p>W Codesys jest r\u00f3wnie\u017c opcja stworzenia aplikacji <em>Responsive Web Design<\/em>, kt\u00f3ra polega na mo\u017cliwo\u015bci stworzenia wielu ekran\u00f3w wizualizacyjnych w r\u00f3\u017cnych rozdzielczo\u015bciach, tak aby uk\u0142ad menu, wielko\u015b\u0107 przycisk\u00f3w, ilo\u015b\u0107 wykres\u00f3w i grafik by\u0142 \u015bci\u015ble dopasowany do wielko\u015bci urz\u0105dzenia, na kt\u00f3rym uruchomiono HMI.<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"300\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image09.gif\" alt=\"\" class=\"wp-image-18976\"\/><figcaption class=\"wp-element-caption\"><em>HMI dopasowane do wielko\u015bci i po\u0142o\u017cenia urz\u0105dzenia. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Po wi\u0119cej informacji na temat <em>Responsive Web Design<\/em>, wraz z instrukcj\u0105 i przyk\u0142adowym programem, zapraszam do naszego informatora technicznego dost\u0119pnego pod adresem <a href=\"https:\/\/www.astor.com.pl\/wsparcie\/dokumentacja-techniczna\/zobacz\/89183\">https:\/\/www.astor.com.pl\/wsparcie\/dokumentacja-techniczna\/zobacz\/89183<\/a><\/p>\n<p>W celu \u0142atwiejszego podgl\u0105du naszego <strong>Ekran_1<\/strong>, wejd\u017amy w jego w\u0142a\u015bciwo\u015bci i ustawmy sta\u0142y rozmiar ekranu na 800&#215;600.<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"447\" height=\"453\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image10.png\" alt=\"\" class=\"wp-image-18978\"\/><figcaption class=\"wp-element-caption\"><em>Okno w\u0142a\u015bciwo\u015bci ekranu. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Chcemy aby nowo stworzona wizualizacja by\u0142a wy\u015bwietlona w przegl\u0105darce internetowej, wi\u0119c najpierw wpisujemy nasz\u0105 nazw\u0119 w polu <strong>Name of .htm file<\/strong>, a nast\u0119pnie wpisujemy w naszej przegl\u0105darce poni\u017csz\u0105 sk\u0142adni\u0119:<\/p>\n<p><strong>localhost:8080\/webvisu.htm<\/strong><\/p>\n<p>UWAGA: Gdy nie chcemy korzysta\u0107 z symulatora CODESYS Win V3, to zamiast <em>localhost<\/em> wpisujemy adres IP sterownika, np.: <strong>192.168.1.6:8080\/webvisu.htm<\/strong><\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"429\" height=\"166\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image11.png\" alt=\"\" class=\"wp-image-18981\"\/><figcaption class=\"wp-element-caption\"><em>Okno w\u0142a\u015bciwo\u015bci WebVisu. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<h2 class=\"wp-block-heading\">Praca z edytorem wizualizacji<\/h2>\n<p>Mamy przygotowane miejsce, gdzie b\u0119dzie wy\u015bwietlona nasza wizualizacja. Teraz czas na stworzenie pierwszego ekranu, w kt\u00f3rym chcemy zademonstrowa\u0107 nasze zbiorniki oraz post\u0119p ich \u0142adowania oraz opr\u00f3\u017cniania. Klikaj\u0105c dwukrotnie&nbsp; w&nbsp; drzewku&nbsp; projektowym&nbsp; na &nbsp;okno&nbsp; wizualizacji,&nbsp; otwiera&nbsp; si\u0119&nbsp; okno,&nbsp; gdzie&nbsp; w centralnym&nbsp; punkcie&nbsp; budujemy&nbsp; wizualizacj\u0119,&nbsp; po&nbsp; prawej&nbsp; stronie&nbsp; z&nbsp; menu&nbsp; narz\u0119dziowego&nbsp; dodajemy elementy wizualizacji:<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1919\" height=\"1042\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image12.png\" alt=\"\" class=\"wp-image-18982\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image12.png 1919w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image12-840x456.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image12-768x417.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image12-1536x834.png 1536w\" sizes=\"auto, (max-width: 1919px) 100vw, 1919px\" \/><figcaption class=\"wp-element-caption\"><em>Widok podczas edycji wizualizacji<em> (kliknij, aby powi\u0119kszy\u0107)<\/em>. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Mo\u017cemy sobie zmieni\u0107 bia\u0142e t\u0142o na jakikolwiek inny kolor, naciskaj\u0105c prawym klawiszem myszy na nasz ekran, nast\u0119pnie wybieraj\u0105c <strong>Background<\/strong> \u2013 w nowym okienku wybieramy kolor, jaki nas interesuje. Ja wybra\u0142em jeden z odcieni szaro\u015bci:<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"858\" height=\"671\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image13.gif\" alt=\"\" class=\"wp-image-18984\"\/><figcaption class=\"wp-element-caption\"><em>Zmiana t\u0142a. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Kolejnym krokiem b\u0119dzie dodanie symulacji naszego zbiornika w postaci paska post\u0119pu (<em>BarDisplayImage<\/em>), oraz przypisanie do niej zmiennej <strong>iZbiorniki1<\/strong> we w\u0142a\u015bciwo\u015bciach grafiki, w polu <strong>Property -&gt; Value<\/strong>:<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1587\" height=\"705\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image14.gif\" alt=\"\" class=\"wp-image-18985\"\/><figcaption class=\"wp-element-caption\"><em>Tworzenie zbiornika i przypisanie zmiennej (kliknij, aby powi\u0119kszy\u0107). \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Musimy r\u00f3wnie\u017c zmieni\u0107 skal\u0119 naszego paska, poniewa\u017c zmienna <strong>Zbiornik<\/strong> jest w zakresie od 0 do 200. W zwi\u0105zku z tym musimy zmieni\u0107 to w polu <strong>Scale<\/strong>. Jako przedzia\u0142k\u0119 ustawimy warto\u015b\u0107 25.<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"385\" height=\"171\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image15.png\" alt=\"\" class=\"wp-image-18990\"\/><figcaption class=\"wp-element-caption\"><em>Okno w\u0142a\u015bciwo\u015bci obiektu. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Dodamy r\u00f3wnie\u017c pole z informacj\u0105 o aktualnym stanie zbiornika. Trzeba tutaj pami\u0119ta\u0107 o specjalnej procedurze wywo\u0142ania tej funkcji, poprzez dodanie <strong>%i<\/strong> w opisie:<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1587\" height=\"705\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image16.gif\" alt=\"\" class=\"wp-image-18991\"\/><figcaption class=\"wp-element-caption\"><em>Dodawanie aktualnego stanu sterownika <em>(kliknij, aby powi\u0119kszy\u0107)<\/em>. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Dodamy te\u017c lampk\u0119, kt\u00f3ra b\u0119dzie nam sygnalizowa\u0107 nape\u0142nianie\/opr\u00f3\u017cnianie zbiornika poprzez przypisanie zmiennej <strong>xLamp1<\/strong>. Dodatkowo zmieni\u0119 jej kolor na zielony:<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1587\" height=\"705\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image17.gif\" alt=\"\" class=\"wp-image-18995\"\/><figcaption class=\"wp-element-caption\"><em>Dodawanie lampki pracy zbiornika <em>(kliknij, aby powi\u0119kszy\u0107)<\/em>. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Tym o to sposobem mamy przedstawione wszystkie najwa\u017cniejsze informacje dla zbiornika nr 1. To samo musimy powt\u00f3rzy\u0107 dla zbiornik\u00f3w nr 2 oraz 3. Dodatkowo na podobnej zasadzie dodajemy prze\u0142\u0105czniki z menu narz\u0119dziowego, kt\u00f3re b\u0119d\u0105 odpowiedzialne za nape\u0142nianie (zmienna <strong>xNapelnianie<\/strong> w polu <strong>Variable<\/strong>) oraz za opr\u00f3\u017cnianie (zmienna <strong>xOproznianie<\/strong> w polu <strong>Variable<\/strong>).<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1116\" height=\"579\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image18.gif\" alt=\"\" class=\"wp-image-18996\"\/><figcaption class=\"wp-element-caption\"><em>Wizualizacja pracy programu <em>(kliknij, aby powi\u0119kszy\u0107)<\/em>. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<h2 class=\"wp-block-heading\">Konfiguracja alarm\u00f3w<\/h2>\n<p>W \u015brodowisku Codesys rozr\u00f3\u017cniamy 2 g\u0142\u00f3wne sk\u0142adowe alarm\u00f3w:<\/p>\n<p><strong>Klasy alarm\u00f3w<\/strong><\/p>\n<p>Alarmy przynale\u017c\u0105 do klas alarmowych. W klasach alarm\u00f3w definiujemy priorytet danej klasy, czy dana klasa alarm\u00f3w ma by\u0107 archiwizowana, spos\u00f3b potwierdzenia alarm\u00f3w, mo\u017cliwo\u015b\u0107 definicji potwierdze\u0144 wywo\u0142ania alarmu z danej klasy oraz kolory wy\u015bwietlania alarm\u00f3w z danej klasy.<\/p>\n<p>Poni\u017cej przedstawi\u0142em metody potwierdzania alarm\u00f3w w poszczeg\u00f3lnych klasach alarmowych:<\/p>\n<p><strong>REP<\/strong> \u2013 alarm staje si\u0119 nieaktywny po usuni\u0119ciu przyczyny.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"240\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/1-1-840x240.png\" alt=\"\" class=\"wp-image-19041\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/1-1-840x240.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/1-1-768x219.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/1-1-1536x439.png 1536w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/1-1-2048x585.png 2048w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/figure>\n<\/div>\n<p><strong>ACK<\/strong> \u2013 alarm jest nieaktywny po zatwierdzeniu zdarzenia.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"240\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/2-840x240.png\" alt=\"\" class=\"wp-image-19042\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/2-840x240.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/2-768x219.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/2-1536x439.png 1536w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/2-2048x585.png 2048w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/figure>\n<\/div>\n<p><strong>REP_ACK<\/strong> \u2013 alarm nieaktywny po usuni\u0119ciu przyczyny i potwierdzeniu.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"240\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/3-840x240.png\" alt=\"\" class=\"wp-image-19043\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/3-840x240.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/3-768x219.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/3-1536x439.png 1536w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/3-2048x585.png 2048w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/figure>\n<\/div>\n<p><strong>ACK_REP<\/strong> \u2013 alarm nieaktywny po przej\u015bciu w tryb normalny oraz po potwierdzeniu + mo\u017cliwo\u015b\u0107 potwierdzenia aktywnego alarmu i w ten spos\u00f3b dezaktywacja go z listy alarm\u00f3w.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"240\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/4-840x240.png\" alt=\"\" class=\"wp-image-19044\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/4-840x240.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/4-768x219.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/4-1536x439.png 1536w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/4-2048x585.png 2048w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/figure>\n<\/div>\n<p><strong>ACK_REP_ACK<\/strong> \u2013 alarm nieaktywny po opcjonalnym potwierdzeniu, \u017ce alarm zosta\u0142 odebrany, poprawieniu przyczyny i potwierdzenie, \u017ce sytuacja alarmowa zosta\u0142a zako\u0144czona.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"240\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/5-840x240.png\" alt=\"\" class=\"wp-image-19046\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/5-840x240.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/5-768x219.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/5-1536x439.png 1536w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/5-2048x585.png 2048w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p><strong>Grupy alarm\u00f3w<\/strong><\/p>\n<p>Grupy alarmowe s\u0142u\u017c\u0105 do definicji alarm\u00f3w. Alarm mo\u017ce by\u0107 przypisany tylko do jednej grupy alarmowej. Istnieje mo\u017cliwo\u015b\u0107 tworzenia wielu grup alarmowych w zale\u017cno\u015bci od potrzeb. Ka\u017cdy alarm ma swoj\u0105 okre\u015blon\u0105 budow\u0119:<\/p>\n<p><strong>ID<\/strong> \u2013 numer identyfikuj\u0105cy alarm.<\/p>\n<p><strong>Observation type<\/strong> \u2013 okre\u015blenie rodzaju alarmu:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Digital<\/strong> \u2013 zmienna cyfrowa,<\/li>\n<li><strong>Upper\/Lower limit<\/strong> \u2013 alarm powy\u017cej\/poni\u017cej pewnej warto\u015bci,<\/li>\n<li><strong>Outside\/Inside range<\/strong> \u2013 alarm gdy warto\u015b\u0107 przekroczy ustalone progi,<\/li>\n<li><strong>Change<\/strong> \u2013 alarm przy zmianie warto\u015bci ustalonej zmiennej.<\/li>\n<li><strong>Event<\/strong> \u2013 w tym przypadku aplikacja wyzwala alarm (alarm zdarzenia), korzystaj\u0105c z funkcji z biblioteki<\/li>\n<\/ul>\n<p>W celu dodania obiektu zarz\u0105dzaj\u0105cego alarmami klikamy prawym klawiszem myszy na <strong>Application<\/strong> w drzewku projektowym i nast\u0119pnie wybieramy <strong>Add Object -&gt; Alarm Configuration<\/strong>:<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"603\" height=\"844\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image24.png\" alt=\"\" class=\"wp-image-19006\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image24.png 603w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image24-524x734.png 524w\" sizes=\"auto, (max-width: 603px) 100vw, 603px\" \/><figcaption class=\"wp-element-caption\"><em>Dodanie obiektu zarz\u0105dzaj\u0105cego alarmami. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Automatycznie w drzewku projektowym pojawia si\u0119 domy\u015blna konfiguracja z klasami alarm\u00f3w oraz opcj\u0105 dla pami\u0119ci alarm\u00f3w.<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"293\" height=\"214\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image25.png\" alt=\"\" class=\"wp-image-19007\"\/><figcaption class=\"wp-element-caption\"><em>Alarmy w drzewku projektowym. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Nast\u0119pnie dodajemy now\u0105 grup\u0119 alarm\u00f3w, nazwijmy j\u0105 <strong>Alarm_Zbiorniki<\/strong>:<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"447\" height=\"426\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image26.png\" alt=\"\" class=\"wp-image-19008\"\/><figcaption class=\"wp-element-caption\"><em>Dodawanie nowej grupy alarm\u00f3w. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>W nowym oknie ustawiamy przyk\u0142adowe stany alarmowe:<\/p>\n<p><strong>Lower limit<\/strong> \u2013 Gdy poziom pierwszego zbiornika b\u0119dzie poni\u017cej 20, pojawi si\u0119 komunikat <em>Error <\/em>z komentarzem NISKI STAN ZB<\/p>\n<p><strong>Upper limit<\/strong> \u2013 Gdy poziom trzeciego zbiornika b\u0119dzie powy\u017cej 180, pojawi si\u0119 komunikat <em>Error <\/em>z komentarzem WYSOKI STAN ZB<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1221\" height=\"290\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image27.png\" alt=\"\" class=\"wp-image-19009\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image27.png 1221w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image27-840x200.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image27-768x182.png 768w\" sizes=\"auto, (max-width: 1221px) 100vw, 1221px\" \/><figcaption class=\"wp-element-caption\"><em>Okno w\u0142a\u015bciwo\u015bci grupy alarmu <em>(kliknij, aby powi\u0119kszy\u0107)<\/em>. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Aby wy\u015bwietli\u0107 stan alarm\u00f3w, musimy stworzy\u0107 nowy ekran, na kt\u00f3rym zostanie przedstawiona tabela alarm\u00f3w:<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1703\" height=\"542\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image28.gif\" alt=\"\" class=\"wp-image-19010\"\/><figcaption class=\"wp-element-caption\"><em>Dodawanie tabeli powiadomie\u0144 alarmu <em>(kliknij, aby powi\u0119kszy\u0107)<\/em>. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Po zasymulowaniu jednego procesu nape\u0142niania i opr\u00f3\u017cniania zbiornik\u00f3w jeste\u015bmy w stanie zobaczy\u0107 nasze zadeklarowane stany alarmowe z niskim lub wysokim poziomem.<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"498\" height=\"292\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image29.png\" alt=\"\" class=\"wp-image-19011\"\/><figcaption class=\"wp-element-caption\"><em>Tabela komunikat\u00f3w alarmu. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<p>Na potrzeby tego artyku\u0142u zagadnienie zosta\u0142o przedstawione na poziomie podstawowym, natomiast jest mo\u017cliwe rozszerzenie funkcjonalno\u015bci alarm\u00f3w np. poprzez rozszerzenie liczby komunikat\u00f3w, archiwizacj\u0119, zmian\u0119 kolor\u00f3w lub czcionki czy dezaktywacj\u0119 wszystkich za pomoc\u0105 jednej zmiennej.<\/p>\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<h2 class=\"wp-block-heading\">Kod programu w j\u0119zyku ST<\/h2>\n<div class=\"link-box d-flex align-items-center\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/themes\/poradnik\/public\/images\/icons\/icon-link.svg\" alt=\"arrow\" class=\"ml-3\"><br \/>\n\t\t\t\t\t\t\t<\/a><\/p>\n<div>\n<p>Plik \u017ar\u00f3d\u0142owy opisywanej w tym artykule aplikacji mo\u017cesz \u015bci\u0105gn\u0105\u0107,<\/p>\n<p><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/Zbiorniki_ST.zip\">korzystaj\u0105c z tego linku<\/a>.<\/p>\n<\/div><\/div>\n<pre class=\"wp-block-code\"><code>\/\/deklaracja zmiennych\n\nPROGRAM Zbiorniki_ST\nVAR\n\txZawor1in: BOOL;\n\tiZbiornik1: INT;\n\txZawor2in: BOOL;\n\tiZbiornik2: INT;\n\txZawor3in: BOOL;\n\tiZbiornik3: INT;\n\txNapelnianie: BOOL;\n\txOproznianie: BOOL;\n\txZawor3out: BOOL;\n\txZawor2out: BOOL;\n\txZawor1out: BOOL;\n\txLamp1, xLamp2, xLamp3 : BOOL;\n\tfbBlink : BLINK;\t\n\txInit: BOOL:=TRUE;\n\tfbLicznik1 : CTU;\n\tfbLicznik2 : CTU;\n\txSerwis : BOOL;\nEND_VAR\n\n\/\/stan poczatkowy - inicjalizacja\nIF xInit THEN\n\txZawor1in:=TRUE;\n\/\/\txZawor3out:=TRUE;\n\tfbBlink.ENABLE:=FALSE;\n\txNapelnianie:=FALSE;\n\txOproznianie:=FALSE;\n\txInit:=FALSE;\nEND_IF\n\n\n\/\/start napelniania\nIF xNapelnianie THEN\n\t\n\/\/napelnianie zbiornik1\n\tIF xZawor1in THEN\n\t\tiZbiornik1:=iZbiornik1+1;\n\t\tIF iZbiornik1=200 THEN\n\t\t\txZawor1in:=FALSE;\n\t\t\txZawor2in:=TRUE;\n\t\tEND_IF\t\t\t\n\tEND_IF\n\/\/napelnianie zbiornik2\t\n\tIF xZawor2in THEN\n\t\tiZbiornik2:=iZbiornik2+1;\n\t\tIF iZbiornik2=200 THEN\n\t\t\txZawor2in:=FALSE;\n\t\t\txZawor3in:=TRUE;\n\t\tEND_IF\n\tEND_IF\n\/\/napelnianie zbiornik3\t\n\tIF xZawor3in THEN\n\t\tiZbiornik3:=iZbiornik3+1;\n\t\tIF iZbiornik3=200 THEN\n\t\t\txZawor3in:=FALSE;\n\t\t\txNapelnianie:=FALSE;\n\t\t\txZawor3out:=TRUE;\n\t\tEND_IF\n\tEND_IF\t\n\n\/\/sygnalizacja lamp1\t\n\tIF xZawor1in AND iZbiornik1&gt;0 AND iZbiornik1&lt;200 THEN\n\t\tfbBlink(ENABLE:=TRUE, TIMELOW:=T#1S, TIMEHIGH:=T#1S);\n\t\txLamp1:=fbBlink.OUT;\n\tELSIF iZbiornik1=200 THEN\n\t\txLamp1:=TRUE;\n\t\tfbBlink.ENABLE:=FALSE;\n\tELSE\n\t\txLamp1:=FALSE;\n\tEND_IF\t\n\t\n\/\/sygnalizacja lamp2\t\n\tIF xZawor2in AND iZbiornik2&gt;0 AND iZbiornik2&lt;200 THEN\n\t\tfbBlink(ENABLE:=TRUE, TIMELOW:=T#1S, TIMEHIGH:=T#1S);\n\t\txLamp2:=fbBlink.OUT;\n\tELSIF iZbiornik2=200 THEN\n\t\txLamp2:=TRUE;\n\t\tfbBlink. (<a href=\"https:\/\/affordableblinds.com\/blog\/xanax-online\/\">https:\/\/affordableblinds.com<\/a>) ENABLE:=FALSE;\n\tELSE\n\t\txLamp2:=FALSE;\n\tEND_IF\t\n\t\n\/\/sygnalizacja lamp3\t\n\tIF xZawor3in AND iZbiornik3&gt;0 AND iZbiornik3&lt;200 THEN\n\t\tfbBlink(ENABLE:=TRUE, TIMELOW:=T#1S, TIMEHIGH:=T#1S);\n\t\txLamp3:=fbBlink.OUT;\n\tELSIF iZbiornik3=200 THEN\n\t\txLamp3:=TRUE;\n\t\tfbBlink.ENABLE:=FALSE;\n\tELSE\n\t\txLamp3:=FALSE;\n\tEND_IF\t\n\t\nEND_IF\n\n\/\/start oproznianie\nIF xOproznianie THEN\n\n\/\/oproznianie zbiornik3\n\tIF xZawor3out THEN\n\t\tiZbiornik3:=iZbiornik3-1;\n\t\tIF iZbiornik3=0 THEN\n\t\t\txZawor3out:=FALSE;\n\t\t\txZawor2out:=TRUE;\n\t\tEND_IF\n\tEND_IF\n\/\/oproznianie zbiornik2\t\n\tIF xZawor2out THEN\n\t\tiZbiornik2:=iZbiornik2-1;\n\t\tIF iZbiornik2=0 THEN\n\t\t\txZawor2out:=FALSE;\n\t\t\txZawor1out:=TRUE;\n\t\tEND_IF\n\tEND_IF\t\n\/\/oproznianie zbiornik1\n\tIF xZawor1out THEN\n\t\tiZbiornik1:=iZbiornik1-1;\n\t\tIF iZbiornik1=0 THEN\n\t\t\txZawor1out:=FALSE;\n\t\t\txOproznianie:=FALSE;\n\t\t\txInit:=TRUE;\n\t\tEND_IF\n\tEND_IF\t\n\t\n\/\/sygnalizacja lamp1\n\tIF xZawor1out AND iZbiornik1&gt;0 AND iZbiornik1&lt;200 THEN\n\t\tfbBlink(ENABLE:=TRUE, TIMELOW:=T#1S, TIMEHIGH:=T#1S);\n\t\txLamp1:=fbBlink.OUT;\n\tELSIF iZbiornik1=0 THEN\n\t\txLamp1:=FALSE;\n\tELSE\n\t\txLamp1:=TRUE;\n\tEND_IF\t\n\t\n\/\/sygnalizacja lamp2\n\tIF xZawor2out AND iZbiornik2&gt;0 AND iZbiornik2&lt;200 THEN\n\t\tfbBlink(ENABLE:=TRUE, TIMELOW:=T#1S, TIMEHIGH:=T#1S);\n\t\txLamp2:=fbBlink.OUT;\n\tELSIF iZbiornik2=0 THEN\n\t\txLamp2:=FALSE;\n\tELSE\n\t\txLamp2:=TRUE;\n\tEND_IF\t\n\t\n\/\/sygnalizacja lamp3\n\tIF xZawor3out AND iZbiornik3&gt;0 AND iZbiornik3&lt;200 THEN\n\t\tfbBlink(ENABLE:=TRUE, TIMELOW:=T#1S, TIMEHIGH:=T#1S);\n\t\txLamp3:=fbBlink.OUT;\n\tELSIF iZbiornik3=0 THEN\n\t\txLamp3:=FALSE;\n\tELSE\n\t\txLamp3:=TRUE;\n\tEND_IF\t\nEND_IF\n\n\/\/ilosc napelnien zbiornikow\nfbLicznik1(CU:=xNapelnianie, RESET:=xSerwis);\n\n\/\/ilosc oproznien zbiornikow\nfbLicznik2(CU:=xOproznianie, RESET:=xSerwis);<\/code><\/pre>\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<h2 class=\"wp-block-heading\"><strong>Kod programu w j\u0119zyku LD<\/strong><\/h2>\n<pre class=\"wp-block-code\"><code>PROGRAM Zbiorniki_LD\nVAR\n\txZawor1in: BOOL;\n\tiZbiornik1: INT;\n\txZawor2in: BOOL;\n\tiZbiornik2: INT;\n\txZawor3in: BOOL;\n\tiZbiornik3: INT;\n\txNapelnianie: BOOL;\n\txOproznianie: BOOL;\n\txZawor3out: BOOL;\n\txZawor2out: BOOL;\n\txZawor1out: BOOL;\n\txLamp1 : BOOL;\n\txLamp2 : BOOL;\n\txLamp3 : BOOL;\n\tfbBlink : BLINK;\t\n\txInit: BOOL:=TRUE;\n\tfbLicznik1 : CTU;\n\tfbLicznik2 : CTU;\n\txSerwis : BOOL;\n\txPom1_1, xPom1_2, xPom1_3: BOOL;\n\txPom2_1, xPom2_2, xPom2_3: BOOL;\nEND_VAR<\/code><\/pre>\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1264\" height=\"620\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image30.png\" alt=\"\" class=\"wp-image-19020\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image30.png 1264w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image30-840x412.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image30-768x377.png 768w\" sizes=\"auto, (max-width: 1264px) 100vw, 1264px\" \/><\/figure>\n<\/div>\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1266\" height=\"675\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image31.png\" alt=\"\" class=\"wp-image-19021\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image31.png 1266w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image31-840x448.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image31-768x409.png 768w\" sizes=\"auto, (max-width: 1266px) 100vw, 1266px\" \/><\/figure>\n<\/div>\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1258\" height=\"569\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image32.png\" alt=\"\" class=\"wp-image-19022\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image32.png 1258w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image32-840x380.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image32-768x347.png 768w\" sizes=\"auto, (max-width: 1258px) 100vw, 1258px\" \/><\/figure>\n<\/div>\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1261\" height=\"420\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image33.png\" alt=\"\" class=\"wp-image-19023\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image33.png 1261w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image33-840x280.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image33-768x256.png 768w\" sizes=\"auto, (max-width: 1261px) 100vw, 1261px\" \/><\/figure>\n<\/div>\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"313\" height=\"268\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/image34.png\" alt=\"\" class=\"wp-image-19024\"\/><\/figure>\n<\/div>\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<div id=\"mailerlite-form_9\" data-temp-id=\"67b2ffa9e205b\">\n<div class=\"mailerlite-form\">\n<form action=\"\" method=\"post\" novalidate>\n<div class=\"mailerlite-form-title\">\n<h3>Newsletter Poradnika Automatyka<\/h3>\n<\/div>\n<div class=\"mailerlite-form-description\">\n<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><br \/>\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&#8230;<\/div>\n<div class=\"mailerlite-subscribe-button-container\">\n                                <button class=\"mailerlite-subscribe-submit\" type=\"submit\"><br \/>\n                                    Zapisz si\u0119                                <\/button>\n                            <\/div>\n<p>                            <input type=\"hidden\" name=\"form_id\" value=\"9\"\/><br \/>\n                            <input type=\"hidden\" name=\"action\" value=\"mailerlite_subscribe_form\"\/><br \/>\n                            <input type=\"hidden\" name=\"ml_nonce\" value=\"54d1e9cae8\"\/>\n                        <\/div>\n<div class=\"mailerlite-form-response\">\n<h4>\n<p>Dzi\u0119kujemy za zapis do newslettera!<\/p>\n<\/h4><\/div>\n<\/p><\/form>\n<\/p><\/div>\n<\/p><\/div>\n<p>        <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><br \/>\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=\"67b2ffa9e205b\"] 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> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule prezentujemy gotowy przyk\u0142ad programu, napisanego w \u015brodowisku Codesys, w j\u0119zyku ST oraz LD.<\/p>\n","protected":false},"author":81,"featured_media":19033,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[234],"tags":[139,142],"class_list":["post-18949","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatyka-w-praktyce","tag-astraada-one","tag-codesys"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\r\n<title>Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem | Poradnik Automatyka<\/title>\r\n<meta name=\"description\" content=\"W tym artykule prezentujemy gotowy przyk\u0142ad programu, napisanego w \u015brodowisku Codesys, w j\u0119zyku ST oraz LD.\" \/>\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\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/\" \/>\r\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem | Poradnik Automatyka\" \/>\r\n<meta property=\"og:description\" content=\"W tym artykule prezentujemy gotowy przyk\u0142ad programu, napisanego w \u015brodowisku Codesys, w j\u0119zyku ST oraz LD.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Poradnik Automatyka\" \/>\r\n<meta property=\"article:published_time\" content=\"2023-08-30T06:22:37+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2025-02-17T09:21:55+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/art-head.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1116\" \/>\r\n\t<meta property=\"og:image:height\" content=\"345\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"Mateusz Pytel\" \/>\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 Pytel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 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\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/\"},\"author\":{\"name\":\"Mateusz Pytel\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#\\\/schema\\\/person\\\/30d3dfd95308f3bba081f0a44bb6b97b\"},\"headline\":\"Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem\",\"datePublished\":\"2023-08-30T06:22:37+00:00\",\"dateModified\":\"2025-02-17T09:21:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/\"},\"wordCount\":1699,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/art-head.jpg\",\"keywords\":[\"Astraada One\",\"Codesys\"],\"articleSection\":[\"Automatyka w praktyce\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/\",\"url\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/\",\"name\":\"Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem | Poradnik Automatyka\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/art-head.jpg\",\"datePublished\":\"2023-08-30T06:22:37+00:00\",\"dateModified\":\"2025-02-17T09:21:55+00:00\",\"description\":\"W tym artykule prezentujemy gotowy przyk\u0142ad programu, napisanego w \u015brodowisku Codesys, w j\u0119zyku ST oraz LD.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/art-head.jpg\",\"contentUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/art-head.jpg\",\"width\":1116,\"height\":345},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\\\/#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\":\"Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem\"}]},{\"@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\\\/30d3dfd95308f3bba081f0a44bb6b97b\",\"name\":\"Mateusz Pytel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/mateusz-pytel.jpg\",\"url\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/mateusz-pytel.jpg\",\"contentUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/mateusz-pytel.jpg\",\"caption\":\"Mateusz Pytel\"},\"description\":\"Mened\u017cer produkt\u00f3w Astraada One i Horner w firmie ASTOR.\",\"url\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/autor\\\/mateuszpytel\\\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem | Poradnik Automatyka","description":"W tym artykule prezentujemy gotowy przyk\u0142ad programu, napisanego w \u015brodowisku Codesys, w j\u0119zyku ST oraz LD.","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\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/","og_locale":"pl_PL","og_type":"article","og_title":"Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem | Poradnik Automatyka","og_description":"W tym artykule prezentujemy gotowy przyk\u0142ad programu, napisanego w \u015brodowisku Codesys, w j\u0119zyku ST oraz LD.","og_url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/","og_site_name":"Poradnik Automatyka","article_published_time":"2023-08-30T06:22:37+00:00","article_modified_time":"2025-02-17T09:21:55+00:00","og_image":[{"width":1116,"height":345,"url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/art-head.jpg","type":"image\/jpeg"}],"author":"Mateusz Pytel","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Mateusz Pytel","Szacowany czas czytania":"17 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/#article","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/"},"author":{"name":"Mateusz Pytel","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/30d3dfd95308f3bba081f0a44bb6b97b"},"headline":"Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem","datePublished":"2023-08-30T06:22:37+00:00","dateModified":"2025-02-17T09:21:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/"},"wordCount":1699,"commentCount":0,"publisher":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/art-head.jpg","keywords":["Astraada One","Codesys"],"articleSection":["Automatyka w praktyce"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/","name":"Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem | Poradnik Automatyka","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/#primaryimage"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/art-head.jpg","datePublished":"2023-08-30T06:22:37+00:00","dateModified":"2025-02-17T09:21:55+00:00","description":"W tym artykule prezentujemy gotowy przyk\u0142ad programu, napisanego w \u015brodowisku Codesys, w j\u0119zyku ST oraz LD.","breadcrumb":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/#primaryimage","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/art-head.jpg","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/art-head.jpg","width":1116,"height":345},{"@type":"BreadcrumbList","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/#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":"Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem"}]},{"@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\/30d3dfd95308f3bba081f0a44bb6b97b","name":"Mateusz Pytel","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/05\/mateusz-pytel.jpg","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/05\/mateusz-pytel.jpg","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/05\/mateusz-pytel.jpg","caption":"Mateusz Pytel"},"description":"Mened\u017cer produkt\u00f3w Astraada One i Horner w firmie ASTOR.","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/autor\/mateuszpytel\/"}]}},"_links":{"self":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/18949","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\/81"}],"replies":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/comments?post=18949"}],"version-history":[{"count":2,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/18949\/revisions"}],"predecessor-version":[{"id":19057,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/18949\/revisions\/19057"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media\/19033"}],"wp:attachment":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media?parent=18949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/categories?post=18949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/tags?post=18949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}