{"id":12696,"date":"2021-07-29T13:43:01","date_gmt":"2021-07-29T11:43:01","guid":{"rendered":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?p=12696"},"modified":"2024-03-12T18:20:27","modified_gmt":"2024-03-12T17:20:27","slug":"jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7","status":"publish","type":"post","link":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/","title":{"rendered":"J\u0119zyk strukturalny (ST) | Kurs programowania w Codesys odc. 7"},"content":{"rendered":"\n<div class=\"dowiesz-sie\">\n<h3>Z tego artyku\u0142u dowiesz si\u0119:<\/h3>\n<ul class=\"bulleted\">\n<li>czym jest j\u0119zyk strukturalny ST,\n<\/li>\n<li>jak tworzy si\u0119 programy z wykorzystanie ST w Codesys,<\/li>\n<li>jak\u0105 sk\u0142adnie posiada ST,<\/li>\n<li>jakie s\u0105 najwa\u017cniejsze jego funkcje i jak je stosowa\u0107.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Witamy w kolejnej cz\u0119\u015bci naszego kursu programowania w Codesys. Ostatnio pozna\u0142e\u015b\/a\u015b podstawy tworzenia wizualizacji. W tym odcinku wracamy do programowania. Poznasz kolejny j\u0119zyk dost\u0119pny w \u015brodowisku Codesys &#8211; j\u0119zyk strukturalny, w skr\u00f3cie ST od ang. <em>Structured Text<\/em>. Jest on odpowiedni dla u\u017cytkownik\u00f3w, kt\u00f3rzy wol\u0105 tworzy\u0107 program przy pomocy tekstu, ni\u017c przeci\u0105gni\u0119\u0107 graficznych element\u00f3w. J\u0119zyk ST to j\u0119zyk pisemny, przypominaj\u0105cy wygl\u0105dem i sk\u0142adni\u0105 takie j\u0119zyki programowania jak C lub Python. Chcesz dowiedzie\u0107 si\u0119 wi\u0119cej? Zapraszamy na kolejny odcinek kursu!<\/p>\n\n\n\n<div class=\"dowiesz-sie\" style=\"margin-top:40px; margin-bottom:40px\">\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/kurs-programowania-w-codesys\/\"><h3>Kurs programowania w Codesys<\/h3><\/a>\n\n<h4 style=\"font-size:20px; margin-top:25px;\">Cz\u0119\u015b\u0107 I \u2013 Podstawowe funkcjonalno\u015bci \u015brodowiska Codesys<\/h4>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jak-stworzyc-program-pierwsze-kroki-w-codesys-kurs-programowania-w-codesys-odc-1\/\">1. Pierwsze kroki w Codesys. Jak stworzy\u0107 program?<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/pierwsze-podlaczenie-i-przygotowanie-codesys-do-pracy-ze-sterownikiem-plc-kurs-programowania-w-codesys-odc-2\/\">2. Pierwsze pod\u0142\u0105czenie i przygotowanie Codesys do pracy ze sterownikiem PLC.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-drabinkowy-ld-kurs-programowania-w-codesys-odc-3\/\">3. J\u0119zyk drabinkowy (LD).<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/typy-danych-w-codesys-rodzaje-zmiennych-sposoby-ich-tworzenia-kurs-programowania-w-codesys-odc-4\/\">4. Typy danych w Codesys, rodzaje zmiennych, sposoby ich tworzenia.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-schematow-blokowych-fbd-kurs-programowania-w-codesys-odc-5\/\">5. J\u0119zyk schemat\u00f3w blokowych (FBD).<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/tworzenie-podstawowej-wizualizacji-hmi-kurs-programowania-w-codesys-odc-6\/\">6. Tworzenie podstawowej wizualizacji HMI.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/\">7. J\u0119zyk strukturalny (ST).<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/diagnostyka-w-codesys-jak-sprawdzac-dzialanie-oprogramowania-i-sterownika-kurs-programowania-w-codesys-odc-8\/\">8. Diagnostyka w Codesys \u2013 jak sprawdza\u0107 dzia\u0142anie oprogramowania i sterownika?<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-blokow-funkcyjnych-cfc-kurs-programowania-w-codesys-odc-9\/\">9. J\u0119zyk blok\u00f3w funkcyjnych (CFC).<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/funkcja-blok-funkcyjny-program-zmodyfikuj-program-w-codesys-dla-lepszej-funkcjonalnosci-kurs-programowania-w-codesys-odc-10\/\">10. Funkcja, blok funkcyjny, program \u2013 zmodyfikuj program w Codesys dla lepszej funkcjonalno\u015bci.<\/a><br\/>\n<h4 style=\"font-size:20px; margin-top:25px;\">Cz\u0119\u015b\u0107 II \u2013 Zaawansowane funkcje i mo\u017cliwo\u015bci \u015brodowiska Codesys<\/h4>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/komunikacja-mqtt-jak-skonfigurowac-w-codesys-kurs-programowania-w-codesys-odc-11\/\">11. Komunikacja MQTT \u2013 jak skonfigurowa\u0107 w Codesys?<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/komunikacja-ethercat-konfiguracja-i-przykladowa-aplikacja-kurs-programowania-w-codesys-odc-12\/\">12. Komunikacja EtherCAT \u2013 konfiguracja i przyk\u0142adowa aplikacja.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/softmotion-synchronizacja-serwonapedow-przy-pomocy-sterownika-plc-kurs-programowania-w-codesys-odc-13\/\">13. Softmotion \u2013 synchronizacja serwonap\u0119d\u00f3w przy pomocy sterownika PLC.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/komunikacja-modbus-rtu-i-tcp-ip-w-srodowisku-codesys-kurs-programowania-w-codesys-odc-14\/\">14. Komunikacja Modbus RTU i TCP\/IP w \u015brodowisku Codesys.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/tworzenie-projektow-w-codesys-ze-sterownikami-bezpieczenstwa-safety-architektura-systemu-bezpieczenstwa-kurs-programowania-w-codesys-odc-15\/\">15. Tworzenie projekt\u00f3w w Codesys ze sterownikami bezpiecze\u0144stwa Safety: architektura systemu bezpiecze\u0144stwa.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/\">16. Programowanie sterownika bezpiecze\u0144stwa w Codesys.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/integracja-sterownika-plc-z-systemem-scada-w-codesys-kurs-programowania-w-codesys-odc-17\/\">17. Integracja sterownika PLC z systemem SCADA w Codesys.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/konfiguracja-maszyny-cnc-z-wykorzystaniem-sterownika-plc-obsluga-g-code-kurs-programowania-w-codesys-odc-18\/\">18. Konfiguracja maszyny CNC z wykorzystaniem sterownika PLC \u2013 obs\u0142uga G-Code.<\/a><br\/>\n\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\/jak-stworzyc-wirtualny-serwonaped-i-przetestowac-jego-dzialanie-w-srodowisku-codesys-pierwsze-kroki\/\" target=\"_blank\" rel=\"noopener\">1. Jak stworzy\u0107 wirtualny serwonap\u0119d w Codesys? Instrukcja krok po kroku.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przykladowa-aplikacja-codesys-w-jezyku-st-i-ld-napelnianie-i-oproznianie-zbiornikow-wraz-z-alarmowaniem\/\" target=\"_blank\" rel=\"noopener\">2. Przyk\u0142adowa aplikacja Codesys w j\u0119zyku ST i LD: nape\u0142nianie i opr\u00f3\u017cnianie zbiornik\u00f3w wraz z alarmowaniem.<\/a><br\/>\n\n<h4 style=\"font-size:20px; margin-top:25px;\">Najcz\u0119\u015bciej zadawane pytania:<\/h4>\n\n<a href=\"https:\/\/www.astor.com.pl\/oferta\/automatyzacja\/sterowanie\/sterowniki-plc\/astraada-one-modular.html#faq\" target=\"_blank\" rel=\"noopener\">Sprawd\u017a odpowiedzi na najcz\u0119\u015bciej zadawane pytania dotycz\u0105ce \u015brodowiska Codesys.<\/a><br\/>\n\n<\/div>\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\">Czym jest i jak dzia\u0142a j\u0119zyk ST?<\/h2>\n\n\n\n<p>J\u0119zyk <em>Structured Text<\/em>, podobnie jak j\u0119zyk drabinkowy, jest zdefiniowany w mi\u0119dzynarodowej normie IEC 61131-3. Wprawdzie <em>Ladder Diagram<\/em> wci\u0105\u017c pozostaje najcz\u0119\u015bciej u\u017cywanym j\u0119zykiem programowania sterownik\u00f3w PLC, jednak j\u0119zyk ST plasuje si\u0119 w notowaniu tu\u017c za nim.<\/p>\n\n\n\n<p>Jak ju\u017c wspomnia\u0142em, j\u0119zyk ST przypomina j\u0119zyki C, Pascal lub Python. Dlatego wi\u0119kszo\u015b\u0107 programist\u00f3w, kt\u00f3rzy posiadaj\u0105 cho\u0107by minimalne do\u015bwiadczenie z tymi j\u0119zykami, korzysta te\u017c z j\u0119zyka strukturalnego. Podobie\u0144stwa polegaj\u0105 g\u0142\u00f3wne na sposobie pisania programu oraz deklaracji zmiennych, u\u017cywanych do jego wykonania. Poniewa\u017c j\u0119zyk strukturalny jest j\u0119zykiem pisemnym, program b\u0119dziesz w ca\u0142o\u015bci zapisywa\u0107 za pomoc\u0105 klawiatury i praktycznie nie spotkasz w nim element\u00f3w graficznych.<\/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\">J\u0119zyk strukturalny czy drabinkowy? Kt\u00f3ry wybra\u0107?<\/h2>\n\n\n\n<p>Ka\u017cda funkcja, kt\u00f3r\u0105 pozna\u0142e\u015b\/a\u015b w odcinku 3 o j\u0119zyku drabinkowym, jest r\u00f3wnie\u017c dost\u0119pna w j\u0119zyku ST. M\u00f3wimy tu o funkcjach logicznych (takich jak <em>AND<\/em>, <em>OR<\/em>, <em>XOR<\/em>), operacjach matematycznych (dodawanie, odejmowanie itd.), a tak\u017ce o blokach funkcyjnych (jak np. zegary i liczniki). W przypadku obu j\u0119zyk\u00f3w, napisany w nich program b\u0119dzie wykonywa\u0142 si\u0119 na takiej samej zasadzie. Pozwoli Ci to w \u0142atwy spos\u00f3b \u0142\u0105czy\u0107 ze sob\u0105 r\u00f3\u017cne funkcje, a nawet ca\u0142e bloki funkcyjne, bez ryzyka pojawienia si\u0119 b\u0142\u0119d\u00f3w, co jest niezwykle przydatne przy tworzeniu zaawansowanych projekt\u00f3w.<\/p>\n\n\n\n<p>To g\u0142\u00f3wne podobie\u0144stwa j\u0119zyka strukturalnego i j\u0119zyka drabinkowego. Jednak trzeba wspomnie\u0107 o znacz\u0105cej r\u00f3\u017cnicy mi\u0119dzy nimi.<\/p>\n\n\n\n<p>J\u0119zyk ST jest bardziej zaawansowany pod wzgl\u0119dem mo\u017cliwo\u015bci. Co to konkretnie oznacza? Ot\u00f3\u017c j\u0119zyk ten wykorzystuje si\u0119 w g\u0142\u00f3wnej mierze do tworzenia zaawansowanych projekt\u00f3w, poniewa\u017c zapewnia wi\u0119cej funkcji, kt\u00f3re mo\u017cna wykorzysta\u0107 podczas programowania. Pozwala to na wykonywanie przez sterownik bardziej skomplikowanych operacji, kt\u00f3re potrzebuj\u0105 du\u017cej mocy obliczeniowej. Natomiast j\u0119zyk LD, ze wzgl\u0119du na swoj\u0105 struktur\u0119 i mniejsz\u0105 dost\u0119pno\u015b\u0107 funkcji, jest u\u017cywany do prostszych projekt\u00f3w. Podczas poznawania sk\u0142adni oraz dost\u0119pnych funkcji j\u0119zyka ST przekonasz si\u0119, dlaczego istnieje taka zale\u017cno\u015b\u0107.<\/p>\n\n\n\n<p>J\u0119zyk strukturalny warto stosowa\u0107 gdy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tworzysz zaawansowany projekt<\/strong> \u2013 przy zaawansowanych programach pisemny j\u0119zyk programowania jest \u0142atwiejszy do zrozumienia.<\/li>\n\n\n\n<li><strong>Projekt ma by\u0107 og\u00f3lnodost\u0119pny<\/strong> \u2013 ze wzgl\u0119du na ma\u0142e r\u00f3\u017cnice w sposobie pisania, program zapisany w j\u0119zyku ST mo\u017cna \u0142atwo przekonwertowa\u0107 do innego \u015brodowiska.<\/li>\n\n\n\n<li><strong>Projektujesz algorytmy i obliczenia matematyczne<\/strong> \u2013 j\u0119zyk ST posiada najprostsz\u0105 struktur\u0119 oblicze\u0144 matematycznych, co u\u0142atwia pisanie algorytm\u00f3w.<\/li>\n\n\n\n<li><strong>Stosujesz du\u017c\u0105 ilo\u015b\u0107 p\u0119tli<\/strong> \u2013 p\u0119tle w j\u0119zyku drabinkowym s\u0105 problematyczne do zaprojektowania, wi\u0119c przy ich du\u017cej ilo\u015bci zaleca si\u0119 stosowanie j\u0119zyka ST.<\/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\">Jak stworzy\u0107 projekt w j\u0119zyku ST w Codesys?<\/h2>\n\n\n\n<p>Przejd\u017amy wi\u0119c do Codesys! Tak samo jak w przypadku j\u0119zyka drabinkowego, poznasz mo\u017cliwo\u015bci dzia\u0142ania oprogramowania Codesys wraz z j\u0119zykiem ST oraz zrealizujesz przyk\u0142ady w symulatorze. Zapewne wiesz ju\u017c jak utworzy\u0107 nowy program. Je\u017celi jednak przegapi\u0142e\u015b\/a\u015b wcze\u015bniejsze odcinki, zapoznaj si\u0119 z podstawami przedstawionymi w odcinku 1.<\/p>\n\n\n\n<p>Przy tworzeniu nowego projektu, musisz zmieni\u0107 j\u0119zyk programowania na <em>Structured Text<\/em> (ST).<\/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 is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"324\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_ZmianaST.gif\" alt=\"\" class=\"wp-image-12705\" style=\"width:557px;height:324px\"\/><figcaption class=\"wp-element-caption\"><em>Zmiana j\u0119zyka na ST, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Aby zacz\u0105\u0107 prac\u0119 nad programem, otw\u00f3rz segment o nazwie <em>PLC_PRG<\/em>. Znajdziesz go w drzewku g\u0142\u00f3wnym, domy\u015blnie znajduj\u0105cym si\u0119 po lewej stronie ekranu.<\/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\"><img loading=\"lazy\" decoding=\"async\" width=\"850\" height=\"500\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_Otwieranie.gif\" alt=\"\" class=\"wp-image-12706\"\/><figcaption class=\"wp-element-caption\"><em>Otwarcie PLC_PRG z drzewka g\u0142\u00f3wnego programu Codesys, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Jak widzisz program wygl\u0105da prawie identycznie, jak w przypadku programowania w j\u0119zyku drabinkowym. Mo\u017cesz jednak zauwa\u017cy\u0107, \u017ce <em>ToolBox<\/em>, kt\u00f3ry ju\u017c pozna\u0142e\u015b\/a\u015b w odcinku 3 jest pusty. (Je\u017celi nie widzisz takiego okienka, kliknij w prawym g\u00f3rnym rogu w g\u0142\u00f3wnym menu opcj\u0119 <em>View<\/em>, a nast\u0119pnie wybierz <em>ToolBox<\/em>.) Dlaczego okno <em>ToolBox<\/em> jest puste? Niestety, przy projektowaniu za pomoc\u0105 j\u0119zyka strukturalnego, Codesys nie posiada \u201eszablon\u00f3w\u201d, takich jak przy stosowaniu j\u0119zyka drabinkowego. Jedynym sposobem na dodanie wybranej struktury jest jej w\u0142asnor\u0119czne wpisanie za pomoc\u0105 klawiatury.<\/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\">Jak zapisa\u0107 algorytm w j\u0119zyku ST? Sk\u0142adnia kodu<\/h2>\n\n\n\n<p>Na pocz\u0105tek musisz si\u0119 zaznajomi\u0107 ze sk\u0142adni\u0105 j\u0119zyka ST. Zaczniemy od trzech podstawowych zasad:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>deklaracja zmiennych i komendy polece\u0144 musz\u0105 by\u0107 zako\u0144czone \u015brednikiem;<\/li>\n\n\n\n<li>kompilator nie widzi r\u00f3\u017cnicy mi\u0119dzy ma\u0142ymi i du\u017cymi literami, wi\u0119c mo\u017cna ich u\u017cywa\u0107 dowolnie;<\/li>\n\n\n\n<li>odst\u0119py nie spe\u0142niaj\u0105 \u017cadnej funkcji, s\u0142u\u017c\u0105 tylko do poprawy kodu.<\/li>\n<\/ul>\n\n\n\n<p>A teraz typy danych. W normie IEC 61131-3 zawarta jest informacja o dw\u00f3ch typach danych: elementarnych oraz pochodnych.<\/p>\n\n\n\n<p>Elementarne typy danych to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>Integer<\/em><\/strong><strong> <\/strong>\u2013 przechowuje warto\u015bci liczbowe. Przyk\u0142adowe pochodne to: <em>int<\/em>, <em>uint<\/em>, <em>sint<\/em>.<\/li>\n\n\n\n<li><strong><em>Float<\/em><\/strong> \u2013 przechowuje zwykle du\u017ce warto\u015bci liczbowe. Pochodne to <em>Real<\/em> i <em>Lreal<\/em><\/li>\n\n\n\n<li><strong><em>Time<\/em><\/strong> \u2013 przechowuje warto\u015bci czasu. Przyk\u0142adowe pochodne to: <em>Time<\/em>, <em>Date<\/em>.<\/li>\n\n\n\n<li><strong><em>String<\/em><\/strong> \u2013 przechowuje ci\u0105g znak\u00f3w lub warto\u015bci bitowe. Przyk\u0142adowe pochodne to: <em>Bool<\/em>, <em>String<\/em>, <em>Byte<\/em>, <em>Word<\/em>.<\/li>\n<\/ul>\n\n\n\n<p>Znasz ju\u017c podstawowe zasady i zmienne, przejd\u017amy wi\u0119c do operator\u00f3w. Operatorem nazywamy konstrukcj\u0119 jedno b\u0105d\u017a wieloargumentow\u0105, zwracaj\u0105c\u0105 warto\u015b\u0107.<\/p>\n\n\n\n<p>Argument to nic innego, jak warto\u015b\u0107 lub jedna z danych, przekazana do parametru funkcji. Wieloargumentowa konstrukcja to taka, kt\u00f3ra korzysta z wi\u0119cej ni\u017c jednego argumentu, aby wykona\u0107 operacj\u0119.<\/p>\n\n\n\n<p>W j\u0119zyku ST mo\u017cemy uwzgl\u0119dni\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>operatory arytmetyczne,<\/li>\n\n\n\n<li>operatory por\u00f3wnania,<\/li>\n\n\n\n<li>operatory operacji logicznych,<\/li>\n\n\n\n<li>operatory operacji bitowych,<\/li>\n\n\n\n<li>operatory przypisania.<\/li>\n<\/ul>\n\n\n\n<p>O wszystkich rodzajach operator\u00f3w dowiesz si\u0119 z dalszej cz\u0119\u015bci tego odcinka.<\/p>\n\n\n\n<p>Funkcja to wydzielona cz\u0119\u015b\u0107 programu, wykonuj\u0105ca okre\u015blone operacje, mo\u017cliwa do wykonania podczas wykonywania programu. Funkcje stosuje si\u0119, aby upro\u015bci\u0107 program g\u0142\u00f3wny i zwi\u0119kszy\u0107 czytelno\u015b\u0107 kodu. Funkcje to np.: zegary oraz liczniki.<\/p>\n\n\n\n<p>W funkcjach najcz\u0119\u015bciej u\u017cywamy zmiennych. Zmienna to konstrukcja, dzi\u0119ki kt\u00f3rej mo\u017cemy przechowywa\u0107 r\u00f3\u017cnego rodzaju dane. Ka\u017cdej zmiennej nadajemy nazw\u0119. U\u017cywamy jej p\u00f3\u017aniej, kiedy odwo\u0142ujemy si\u0119 do miejsca w pami\u0119ci, gdzie schowane s\u0105 dane, kt\u00f3re chcemy wykorzysta\u0107. Ka\u017cda zmienna otrzymuje inny typ danych do przechowywania.<\/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\">Dodawanie komentarzy i deklarowanie zmiennych w j\u0119zyku ST<\/h2>\n\n\n\n<p>W j\u0119zyku ST istnieje mo\u017cliwo\u015b\u0107 dodawania komentarzy do kodu programu. Mo\u017cesz dzi\u0119ki nim zapisa\u0107 pewne obja\u015bnienia lub wskaz\u00f3wki odnosz\u0105ce si\u0119 do linijki kodu lub nawet do ca\u0142ej jego sekcji. Poni\u017cej zobaczysz 3 sposoby tworzenia komentarzy.<\/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 loading=\"lazy\" decoding=\"async\" width=\"369\" height=\"157\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_KOMETARZE.png\" alt=\"\" class=\"wp-image-12707\"\/><figcaption class=\"wp-element-caption\"><em>Sposoby tworzenia komentarzy w \u015brodowisku Codesys, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/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\">Deklaracja zmiennych<\/h2>\n\n\n\n<p>Deklaracje zmiennej mo\u017cesz wykona\u0107 r\u0119cznie lub poprzez poznan\u0105 ju\u017c przez Ciebie podczas kursu funkcj\u0119 <em>Auto Declare<\/em> (naci\u015bni\u0119cie klawiszy SHIFT i F2). Tym razem jednak nie b\u0119dziesz korzysta\u0107 z tego narz\u0119dzia, a zadeklarujesz zmienn\u0105 r\u0119cznie.<\/p>\n\n\n\n<p>Deklarowanie w j\u0119zyku strukturalnym jest identyczne jak w j\u0119zyku drabinkowym. Nadanie typu zmiennej odbywa si\u0119 poprzez dopisanie dwukropka \u201e:\u201d pomi\u0119dzy nazw\u0119 a typ zmiennej.<\/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 is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"563\" height=\"335\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_DeklaracjaZmiennejLok.gif\" alt=\"\" class=\"wp-image-12708\" style=\"width:563px;height:335px\"\/><figcaption class=\"wp-element-caption\"><em>Deklaracja zmiennej lokalnej w j\u0119zyku ST, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Utworzy\u0142e\u015b w\u0142a\u015bnie pierwsz\u0105 zmienn\u0105 lokaln\u0105. Mo\u017cesz doda\u0107 jej domy\u015bln\u0105 warto\u015b\u0107, kt\u00f3r\u0105 przyjmie zaraz po rozpocz\u0119ciu programu. Robimy to nast\u0119puj\u0105co:<\/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 is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"573\" height=\"352\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_DomyslnaWartosc.gif\" alt=\"\" class=\"wp-image-12709\" style=\"width:573px;height:352px\"\/><figcaption class=\"wp-element-caption\"><em>Nadanie zmiennej domy\u015blnej warto\u015bci, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Tym sposobem mo\u017cesz nada\u0107 warto\u015b\u0107 domy\u015bln\u0105 ka\u017cdemu typowi zmiennej.<\/p>\n\n\n\n<p>W przypadku u\u017cywania du\u017cych ilo\u015bci zmiennych, zaleca si\u0119 u\u017cywanie prefiks\u00f3w w ich nazwach. U\u0142atwia to identyfikacj\u0119 typu zmiennej, a tak\u017ce poprawia czytelno\u015b\u0107 kodu.<\/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 loading=\"lazy\" decoding=\"async\" width=\"547\" height=\"165\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_PREFIKSY.png\" alt=\"\" class=\"wp-image-12710\"\/><figcaption class=\"wp-element-caption\"><em>Przyk\u0142adowe u\u017cycie prefiks\u00f3w w nazwach zmiennych, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/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\">Operatory przypisania, por\u00f3wnania i arytmetyczne<\/h2>\n\n\n\n<p>Instrukcja przypisania jest fundamentaln\u0105 instrukcj\u0105 zawart\u0105 w normie IEC. Zapisuje si\u0119 j\u0105 nast\u0119puj\u0105co<\/p>\n\n\n\n<p><em>X:=Y;<\/em><\/p>\n\n\n\n<p>Kompilator odczytuje t\u0119 instrukcj\u0119 w znaczeniu: \u201eOdczytaj warto\u015b\u0107 Y i zapisz j\u0105 pod zmienn\u0105 X\u201d.<\/p>\n\n\n\n<p>Do instrukcji przypisania mo\u017cesz do\u0142\u0105czy\u0107 np. operacje matematyczne.<\/p>\n\n\n\n<p><em>X:=Y+50;<\/em><\/p>\n\n\n\n<p>Wtedy zmienna X otrzyma warto\u015b\u0107 Y, zwi\u0119kszon\u0105 o 50.<\/p>\n\n\n\n<p>Operatorem przypisania jest symbol \u201e:=\u201d. Oznacza on przypisanie warto\u015bci Y oraz przypisanie jej zmiennej X. Cz\u0119stym b\u0142\u0119dem jest mylenie tego symbolu z symbolem operatora por\u00f3wnania \u201e=\u201d.<\/p>\n\n\n\n<p>U\u017cycie operatora por\u00f3wnania w przypadku takim jak powy\u017cej, dokona operacji por\u00f3wnania i zwr\u00f3ci nam warto\u015b\u0107 Prawda lub Fa\u0142sz.<\/p>\n\n\n\n<p><em>X=Y<\/em><\/p>\n\n\n\n<p>Jak mo\u017cesz zauwa\u017cy\u0107, powy\u017csza linijka kodu nie jest zako\u0144czona \u015brednikiem. Nie jest ona instrukcj\u0105, a operacj\u0105, dlatego dodanie \u015brednika na ko\u0144cu linijki kodu jest b\u0142\u0119dem.<\/p>\n\n\n\n<p>Operatorami por\u00f3wnania s\u0105:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>= (r\u00f3wna si\u0119),<\/li>\n\n\n\n<li>&lt; (mniejsze od),<\/li>\n\n\n\n<li>&lt;= (mniejsze od b\u0105d\u017a r\u00f3wne),<\/li>\n\n\n\n<li>&gt; (wi\u0119ksze ni\u017c),<\/li>\n\n\n\n<li>&gt;= (wi\u0119ksze od b\u0105d\u017a r\u00f3wne),<\/li>\n\n\n\n<li>&lt;&gt; (nier\u00f3wne).<\/li>\n<\/ul>\n\n\n\n<p>Przejdziemy teraz do operator\u00f3w logicznych. S\u0142u\u017c\u0105 one do wykonywania operacji logicznych, w kt\u00f3rych jako rezultat otrzymujemy warto\u015bci typu <em>BOOL<\/em>, czyli Prawda\/Fa\u0142sz.<\/p>\n\n\n\n<p>Operatory logiczne dost\u0119pne w j\u0119zyku ST:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>AND<\/em><\/strong> (suma logiczna),<\/li>\n\n\n\n<li><strong><em>OR<\/em><\/strong> (alternatywa logiczna),<\/li>\n\n\n\n<li><strong><em>XOR<\/em><\/strong> (alternatywa roz\u0142\u0105czna),<\/li>\n\n\n\n<li><strong><em>NOT<\/em><\/strong> (zaprzeczenie).<\/li>\n<\/ul>\n\n\n\n<p>Przyk\u0142adowe u\u017cycie operatora logicznego wygl\u0105da nast\u0119puj\u0105co:<\/p>\n\n\n\n<p><em>X AND Y<\/em><\/p>\n\n\n\n<p>Je\u017celi obie warto\u015bci X i Y to Prawda, operacja zwr\u00f3ci warto\u015b\u0107 Prawda. Je\u015bli jedna lub obie warto\u015bci to Fa\u0142sz, operacja zwr\u00f3ci warto\u015b\u0107 Fa\u0142sz.<\/p>\n\n\n\n<p>Ostatnim rodzajem operator\u00f3w, s\u0105 operatory arytmetyczne. Dzi\u0119ki nim mo\u017cesz dokonywa\u0107 odpowiednich operacji matematycznych.<\/p>\n\n\n\n<p>Operatory matematyczne wygl\u0105daj\u0105 nast\u0119puj\u0105co:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>+ (dodawanie),<\/li>\n\n\n\n<li>&#8211; (odejmowanie),<\/li>\n\n\n\n<li>* (mno\u017cenie),<\/li>\n\n\n\n<li>** (pot\u0119gowanie),<\/li>\n\n\n\n<li>% (dzielenie modulo).<\/li>\n<\/ul>\n\n\n\n<p>Przyk\u0142adowe u\u017cycie operatora matematycznego:<\/p>\n\n\n\n<p><em>wWynik:= X+Y;<\/em><\/p>\n\n\n\n<p>Pod zmienn\u0105 <em>wWynik <\/em>zapisze si\u0119 wynik dodawania warto\u015bci X i Y.<\/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\">Operacje bitowe<\/h2>\n\n\n\n<p>Operacje bitowe mo\u017cesz wykonywa\u0107 dzi\u0119ki operatorom logicznym oraz funkcjom. Operacja logiczna jest wykonywana na ka\u017cdym bicie warto\u015bci. Przyk\u0142adowo:<\/p>\n\n\n\n<p><em>wWynik:= 14 AND 9;<\/em><\/p>\n\n\n\n<p>W zmiennej <em>wWynik<\/em> zapiszemy wynik operacji logicznej na 4 bitach, wykorzystuj\u0105c bity warto\u015bci zawarte w operacji. Warto\u015bci w postaci binarnej wygl\u0105daj\u0105 nast\u0119puj\u0105co:<\/p>\n\n\n\n<p>14 = 1110<\/p>\n\n\n\n<p>9 =&nbsp; 1001<\/p>\n\n\n\n<p>Aplikuj\u0105c funkcj\u0119 logiczn\u0105 <em>AND<\/em> mi\u0119dzy bitami obu liczb, otrzymasz wynik r\u00f3wny 1000. Warto\u015b\u0107 binarna wyniku odpowiada liczbie 8. Sterowniki PLC posiadaj\u0105 tak\u017ce mo\u017cliwo\u015b\u0107 wykorzystania funkcji operuj\u0105cych na bitach. Dzi\u0119ki nim mo\u017cna zmienia\u0107 warto\u015bci zmiennych typu <em>BYTE<\/em>, <em>WORD<\/em> oraz <em>DWORD<\/em>.<\/p>\n\n\n\n<p>Funkcje bitowe to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>ROR<\/em><\/strong> (obr\u00f3t bitowy w prawo),<\/li>\n\n\n\n<li><strong><em>ROL<\/em><\/strong> (obr\u00f3t bitowy w lewo),<\/li>\n\n\n\n<li><strong><em>SHR<\/em><\/strong> (przesuni\u0119cie bitowe w prawo),<\/li>\n\n\n\n<li><strong><em>SHL<\/em><\/strong><em> <\/em>(przesuni\u0119cie bitowe w lewo).<\/li>\n<\/ul>\n\n\n\n<p>Obr\u00f3t bitowy polega na zmianie kolejno\u015bci bit\u00f3w w bajcie. Na zdj\u0119ciu poni\u017cej mo\u017cesz zobaczy\u0107 schemat przedstawiaj\u0105cy funkcj\u0119 <em>ROL<\/em>. Pierwszy bit z lewej jest przepisywany na miejsce pierwszego bitu z prawej. Pozosta\u0142e bity s\u0105 przepisywane o jedno miejsce w lewo.<\/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 loading=\"lazy\" decoding=\"async\" width=\"441\" height=\"190\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_ROL.png\" alt=\"\" class=\"wp-image-12711\"\/><figcaption class=\"wp-element-caption\"><em>Schemat ukazuj\u0105cy dzia\u0142anie funkcji ROL, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Taka operacja zapisana w \u015brodowisku Codesys wygl\u0105da nast\u0119puj\u0105co:<\/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 is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"511\" height=\"186\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_ROL-PROGRAM.png\" alt=\"\" class=\"wp-image-12712\" style=\"width:511px;height:186px\"\/><figcaption class=\"wp-element-caption\"><em>Przyk\u0142adowe u\u017cycie funkcji ROL, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Wyniki u\u017cycia funkcji <em>ROL<\/em> na dw\u00f3ch typach danych r\u00f3\u017cni\u0105 si\u0119, poniewa\u017c typy <em>BYTE<\/em> i <em>WORD<\/em> maj\u0105 r\u00f3\u017cn\u0105 ilo\u015b\u0107 bit\u00f3w.<\/p>\n\n\n\n<p>Analogicznie do funkcji <em>ROL<\/em>, funkcja <em>ROR<\/em> przesuwa bity w prawo.<\/p>\n\n\n\n<p>Funkcja <em>SHL<\/em> powoduje przesuni\u0119cie bit\u00f3w w lewo, ale z prawej strony wpisywane s\u0105 zera.<\/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 loading=\"lazy\" decoding=\"async\" width=\"418\" height=\"218\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_SHL.png\" alt=\"\" class=\"wp-image-12713\"\/><figcaption class=\"wp-element-caption\"><em>Schemat ukazuj\u0105cy dzia\u0142anie funkcji SHL, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Taka operacja zapisana w \u015brodowisku Codesys wygl\u0105da nast\u0119puj\u0105co:<\/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 loading=\"lazy\" decoding=\"async\" width=\"522\" height=\"187\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_SHL-PROGRAM.png\" alt=\"\" class=\"wp-image-12714\"\/><figcaption class=\"wp-element-caption\"><em>Przyk\u0142adowe u\u017cycie funkcji SHL, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Analogicznie do funkcji <em>SHL<\/em>, funkcja <em>SHR<\/em> przesuwa bity w prawo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Instrukcje warunkowe<\/h2>\n\n\n\n<p>Znasz ju\u017c podstawowe instrukcje dost\u0119pne w Codesys, kt\u00f3re mo\u017cesz zapisa\u0107 w j\u0119zyku strukturalnym. Czas przej\u015b\u0107 do pisania bardziej rozwini\u0119tych konstrukcji.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Instrukcja <em>IF<\/em><\/h3>\n\n\n\n<p>Na pocz\u0105tek instrukcja warunkowa<em> IF<\/em>. Jak sama nazwa wskazuje, stawia ona warunek, od kt\u00f3rego zale\u017cy wykonanie dalszej cz\u0119\u015bci programu. Warunek ten ma posta\u0107 aktualnego stanu zmiennej. M\u00f3wi\u0105c kolokwialnie: <em>je\u017celi zmienna x jest w stanie wysokim, to zr\u00f3b to, a jak nie to tamto<\/em>.<\/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 loading=\"lazy\" decoding=\"async\" width=\"591\" height=\"265\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_IF.png\" alt=\"\" class=\"wp-image-12715\"\/><figcaption class=\"wp-element-caption\"><em>Przyk\u0142adowe u\u017cycie instrukcji IF, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Program ukazuje dzia\u0142anie zbiornika z czujnikiem poziomu cieczy. Stan zaworu jest zale\u017cny od stanu czujnika, dzi\u0119ki skonstruowaniu prostej instrukcji warunkowej <em>IF<\/em>.<\/p>\n\n\n\n<p>Instrukcja warunkowa <em>IF<\/em> posiada te\u017c mo\u017cliwo\u015b\u0107 sprawdzenia kilku warunk\u00f3w pod rz\u0105d. Za\u0142\u00f3\u017cmy, \u017ce Tw\u00f3j program w przypadku niespe\u0142nienia pierwszego warunku, ma przej\u015b\u0107 do sprawdzenia kolejnego. W takiej sytuacji stosujemy wyra\u017cenie <em>ELSIF<\/em>, kt\u00f3re jest wykorzystywane do przej\u015bcia mi\u0119dzy warunkami.<\/p>\n\n\n\n<p>U\u017cycie wyra\u017cenia <em>ELSEIF<\/em> ukazane jest na zdj\u0119ciu 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-large\"><img loading=\"lazy\" decoding=\"async\" width=\"669\" height=\"269\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_ELSIF.png\" alt=\"\" class=\"wp-image-12716\"\/><figcaption class=\"wp-element-caption\"><em>Przyk\u0142adowe u\u017cycie instrukcji IF z zastosowaniem wyra\u017cenia ELSIF, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Zmodyfikowany kod poprzedniego programu obejmuje teraz dwa czujniki. W pierwszej kolejno\u015bci sprawdzany jest stan dolnego czujnika, a w przypadku nie spe\u0142nienia pierwszego warunku, sprawdzany jest drugi warunek.<\/p>\n\n\n\n<p>Przyk\u0142adowa sk\u0142adnia dla warunk\u00f3w <em>ELSIF<\/em> i <em>ELSE<\/em>:<\/p>\n\n\n\n<p><em>IF [warunek] THEN<\/em><br><em>&lt;instrukcja&gt;;<\/em><br><em>ELSIF [warunek] THEN<\/em><br><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;instrukcja&gt;;<\/em><br><em>ELSE<\/em><br><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;instrukcja&gt;;<\/em><br><em>END_IF;<\/em><\/p>\n\n\n\n<p>Warto te\u017c wspomnie\u0107, \u017ce u\u017cycie wyra\u017cenia <em>ELSE <\/em>nie jest obowi\u0105zkowe, je\u015bli program nie musi wykona\u0107 \u017cadnej operacji w przypadku nie spe\u0142nienia warunku.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Instrukcja <em>CASE<\/em><\/h3>\n\n\n\n<p>Inn\u0105 instrukcj\u0105 warunkow\u0105 jest instrukcja <em>CASE<\/em>. Czym r\u00f3\u017cni si\u0119 <em>IF<\/em> od <em>CASE<\/em>? Ot\u00f3\u017c instrukcja <em>IF <\/em>dzia\u0142a na zasadzie Prawda\/Fa\u0142sz, czyli polecenie wykona si\u0119, je\u015bli warunek jest prawdziwy. <em>CASE<\/em> dzia\u0142a na zasadzie numerycznej. Co to oznacza? Instrukcja <em>CASE<\/em> mo\u017ce przypisa\u0107 wiele r\u00f3\u017cnych wariant\u00f3w do poszczeg\u00f3lnych wynik\u00f3w wyra\u017cenia zawartego w warunku.<\/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 loading=\"lazy\" decoding=\"async\" width=\"578\" height=\"273\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_CASE2.png\" alt=\"\" class=\"wp-image-12725\"\/><figcaption class=\"wp-element-caption\"><em>Przyk\u0142adowe u\u017cycie instrukcji CASE, \u017ar\u00f3d\u0142o: ASTO<\/em>R<\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Program wykona dan\u0105 operacj\u0119 po osi\u0105gni\u0119ciu warto\u015bci odpowiadaj\u0105cej przypadkowi zawartemu w instrukcji. Mo\u017cesz przypisa\u0107 te same operacje innym przypadkom, wypisuj\u0105c kolejno warto\u015bci przypadku i oddzielaj\u0105c je przecinkiem. Wyra\u017cenie <em>ELSE <\/em>jest opcjonalne \u2013 nie jest wymagane do poprawnej pracy instrukcji.<\/p>\n\n\n\n<p>Przyk\u0142adowa sk\u0142adnia dla instrukcji <em>CASE<\/em>:<\/p>\n\n\n\n<p><em>CASE [warunek] OF<\/em><br><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1: &lt;instrukcja&gt;;<\/em><br><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2:&lt;instrukcja&gt;;<\/em><br><em>ELSE<\/em><br><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;instrukcja&gt;;<\/em><br><em>END_CASE;<\/em><\/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\">P\u0119tle w j\u0119zyku strukturalnym<\/h2>\n\n\n\n<p>Kolejnym typem instrukcji, kt\u00f3re poznasz, s\u0105 p\u0119tle. Wykorzystujemy je wtedy, kiedy chcemy wykona\u0107 dan\u0105 czynno\u015b\u0107 wielokrotnie. W j\u0119zyku ST istniej\u0105 trzy typy p\u0119tli: <em>FOR<\/em>, <em>WHILE<\/em> oraz <em>REPEAT<\/em>.<\/p>\n\n\n\n<p>Wszystkie te trzy p\u0119tle maj\u0105 wsp\u00f3ln\u0105 cech\u0119, jak\u0105 jest warunek. W przypadku p\u0119tli <em>FOR<\/em> oraz <em>WHILE<\/em>, warunek decyduje o zatrzymaniu lub dalszym dzia\u0142aniu p\u0119tli, natomiast dla p\u0119tli <em>REPEAT<\/em>, warunek decyduje o tym, kiedy zatrzyma\u0107 p\u0119tl\u0119.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">P\u0119tla <em>FOR<\/em><\/h3>\n\n\n\n<p>P\u0119tli <em>FOR<\/em> mo\u017cesz u\u017cy\u0107, kiedy chcesz powt\u00f3rzy\u0107 pewne operacje okre\u015blon\u0105 ilo\u015b\u0107 razy. W warunku zadeklaruj ilo\u015b\u0107 powt\u00f3rze\u0144 poprzez okre\u015blenie warto\u015bci pocz\u0105tkowej i ko\u0144cowej zmiennej, u\u017cytej do zapisania warunku. Mo\u017cesz te\u017c ustali\u0107 warto\u015b\u0107, o jak\u0105 b\u0119dzie si\u0119 zwi\u0119ksza\u0107 warto\u015b\u0107 zawarta w warunku (domy\u015blna warto\u015b\u0107 inkrementacji wynosi 1).<\/p>\n\n\n\n<p>Przyk\u0142adowa sk\u0142adnia p\u0119tli <em>FOR<\/em>:<\/p>\n\n\n\n<p><em>FOR iLicznik := warto\u015b\u0107_pocz\u0105tkowa TO warto\u015b\u0107_ko\u0144cowa BY warto\u015b\u0107_inkrementacji DO<\/em><br><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;instrukcja&gt;;<\/em><br><em>END_FOR;<\/em><\/p>\n\n\n\n<p>Przyk\u0142adowy program wykorzystuj\u0105cy p\u0119tle FOR wygl\u0105da nast\u0119puj\u0105co:<\/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 loading=\"lazy\" decoding=\"async\" width=\"488\" height=\"207\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_FOR.png\" alt=\"\" class=\"wp-image-12718\"\/><figcaption class=\"wp-element-caption\"><em>Przyk\u0142adowe u\u017cycie p\u0119tli FOR, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Z warto\u015bci zadeklarowanych w programie wynika, \u017ce p\u0119tla wykona zawart\u0105 w niej instrukcj\u0119 10 razy.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">P\u0119tla <em>WHILE<\/em><\/h3>\n\n\n\n<p>P\u0119tla <em>WHILE<\/em> dzia\u0142a na podobnej zasadzie jak p\u0119tla <em>FOR<\/em>, czyli warunek decyduje o zatrzymaniu lub dalszej pracy p\u0119tli. P\u0119tla <em>WHILE<\/em> dzia\u0142a tak d\u0142ugo, a\u017c zostanie spe\u0142niony warunek, przy czym warunek, w odr\u00f3\u017cnieniu od p\u0119tli <em>FOR<\/em>, ma charakter logiczny \u2013 PRAWDA lub FA\u0141SZ.<\/p>\n\n\n\n<p>Przyk\u0142adowa sk\u0142adnia p\u0119tli <em>WHILE<\/em>:<\/p>\n\n\n\n<p><em>WHILE [warunek] DO<\/em><br><em>&lt;instrukcja&gt;;<\/em><br><em>END_WHILE;<\/em><\/p>\n\n\n\n<p>Przyk\u0142adowy program wykorzystuj\u0105cy p\u0119tl\u0119 <em>WHILE<\/em> wygl\u0105da nast\u0119puj\u0105co:<\/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 loading=\"lazy\" decoding=\"async\" width=\"470\" height=\"196\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_WHILE.png\" alt=\"\" class=\"wp-image-12719\"\/><figcaption class=\"wp-element-caption\"><em>Przyk\u0142adowe u\u017cycie p\u0119tli WHILE, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>P\u0119tla <em>WHILE<\/em> b\u0119dzie wykonywa\u0107 zawart\u0105 w niej instrukcj\u0119, dop\u00f3ki warunek b\u0119dzie spe\u0142niony.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">P\u0119tla <em>REPEAT<\/em><\/h3>\n\n\n\n<p>Ostatni\u0105 p\u0119tl\u0105 jest <em>REPEAT<\/em>. Wykonuje ona zadane instrukcje, dop\u00f3ki warunek, kt\u00f3ry zosta\u0142 zadeklarowany, nie zostanie osi\u0105gni\u0119ty. Podczas gdy w p\u0119tlach <em>FOR<\/em> oraz <em>WHILE<\/em> warunek jest sprawdzany przed wykonaniem instrukcji, w p\u0119tli <em>REPEAT <\/em>jest on sprawdzany po wykonaniu zawartych w p\u0119tli instrukcji. Taka konstrukcja powoduje, \u017ce p\u0119tla <em>REPEAT<\/em> zawsze wykona si\u0119 przynajmniej raz. Warunek, tak jak w przypadku p\u0119tli <em>WHILE<\/em>, osi\u0105ga dwie warto\u015bci: PRAWDA lub FA\u0141SZ.<\/p>\n\n\n\n<p>Przyk\u0142adowa sk\u0142adnia p\u0119tli <em><em>REPEAT<\/em><\/em>:<\/p>\n\n\n\n<p><em>REPAT<\/em><br><em>&lt;instrukcja&gt;;<\/em><br><em>UNTIL [warunek]<\/em><br><em>END_REPEAT;<\/em><\/p>\n\n\n\n<p>Przyk\u0142adowy program wykorzystuj\u0105cy p\u0119tle <em><em>REPEAT<\/em><\/em> wygl\u0105da nast\u0119puj\u0105co:<\/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 loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"192\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_REPEAT.png\" alt=\"\" class=\"wp-image-12720\"\/><figcaption class=\"wp-element-caption\"><em>Przyk\u0142adowe u\u017cycie p\u0119tli REPEAT, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>P\u0119tla zako\u0144czy dzia\u0142anie, gdy warunek zostanie spe\u0142niony, czyli zmienna <em>iWynik<\/em> osi\u0105gnie warto\u015b\u0107 r\u00f3wn\u0105 10.<\/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\u0142anie funkcji i blok\u00f3w funkcyjnych<\/h2>\n\n\n\n<p>Zegary oraz liczniki s\u0105 dost\u0119pne w j\u0119zyku ST, jednak pod inn\u0105 postaci\u0105 ni\u017c w j\u0119zyku LD. W j\u0119zyku drabinkowym, mo\u017cesz wywo\u0142a\u0107 te funkcje poprzez przeci\u0105gni\u0119cie bloku z <em>ToolBoxa<\/em>, natomiast w j\u0119zyku strukturalnym musisz u\u017cy\u0107 komendy zapisanej w kodzie programu.<\/p>\n\n\n\n<p>W kwestii deklaracji i nadania nazwy, post\u0119pujemy tak samo jak w j\u0119zyku drabinkowym, czyli mo\u017cemy to zrobi\u0107 poprzez funkcj\u0119 <em>Auto Declare<\/em>, dost\u0119pn\u0105 w menu, w zak\u0142adce <em>Edit<\/em>. Innym sposobem jest skorzystanie ze skr\u00f3tu klawiszowego SHIFT+F2, b\u0105d\u017a r\u0119czne zadeklarowanie, poprzez wpisanie odpowiednich komend do przestrzeni warto\u015bci programu \u2013 tak jak zosta\u0142o to om\u00f3wione na pocz\u0105tku tego odcinka.<\/p>\n\n\n\n<p>Jak wi\u0119c wygl\u0105da wywo\u0142anie zegara lub licznika w j\u0119zyku ST? Mo\u017cesz to zrobi\u0107 poprzez specjalne komendy, kt\u00f3re wpisujesz do tre\u015bci programu. Widoczne s\u0105 one na poni\u017cszym zdj\u0119ciu:<\/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 loading=\"lazy\" decoding=\"async\" width=\"662\" height=\"249\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_ZEGAR-I-LICZNIK.png\" alt=\"\" class=\"wp-image-12722\"\/><figcaption class=\"wp-element-caption\"><em>Wywo\u0142anie blok\u00f3w funkcyjnych w j\u0119zyku ST, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Do przedstawienia sposobu wywo\u0142ania zegar\u00f3w i licznik\u00f3w u\u017cyj zegara <em>TON<\/em> i licznika zliczaj\u0105cego w g\u00f3r\u0119. Jak zauwa\u017cysz, deklaracja w przestrzeni warto\u015bci jest taka sama, jak w przypadku j\u0119zyka drabinkowego, r\u00f3\u017cnica jest jednak w przestrzeni kodu. \u017beby wywo\u0142a\u0107 zegar lub licznik, musisz najpierw wpisa\u0107 nadan\u0105 mu nazw\u0119, otworzy\u0107 nawias i przypisa\u0107 zmienne dla wej\u015b\u0107 i wyj\u015b\u0107 bloku funkcyjnego, a nast\u0119pnie zamkn\u0105\u0107 nawias. Przy otwieraniu nawiasu do wpisania wej\u015b\u0107 i wyj\u015b\u0107 bloku, wy\u015bwietli si\u0119 adnotacja ukazuj\u0105ca nazwy wej\u015b\u0107 i wyj\u015b\u0107, do kt\u00f3rych trzeba przypisa\u0107 zmienne.<\/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 loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"494\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_WywolanieBlokuFunkcyjnego-1-840x494.gif\" alt=\"\" class=\"wp-image-12723\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_WywolanieBlokuFunkcyjnego-1-840x494.gif 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_WywolanieBlokuFunkcyjnego-1-768x452.gif 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><figcaption class=\"wp-element-caption\"><em>Wywo\u0142anie zegara w j\u0119zyku ST, \u017ar\u00f3d\u0142o: ASTO<\/em>R<\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Jak widzisz adnotacja pokazuje, jak nazwane jest wej\u015bcie lub wyj\u015bcie, jakiego typu zmienn\u0105 nale\u017cy mu przypisa\u0107 oraz kr\u00f3tki opis jego funkcji. Przypisanie zmiennych odbywa si\u0119 inaczej dla wej\u015b\u0107, a inaczej dla wyj\u015b\u0107. W przypadku wej\u015b\u0107, przypisujesz warto\u015b\u0107 zawart\u0105 w zmiennej, jednak wyj\u015bcia maj\u0105 przekazywa\u0107 warto\u015bci do przypisanej zmiennej, st\u0105d odmienna symbolika w zapisie przypisania. Symbol \u201e:=\u201d oznacza przypisanie warto\u015bci zawartej w zmiennej, a \u201e=&gt;\u201d przypisanie warto\u015bci do zmiennej. Wej\u015bcia i wyj\u015bcia mo\u017cesz tak\u017ce przypisa\u0107 w dowolnym miejscu, w obszarze kodu.<\/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 loading=\"lazy\" decoding=\"async\" width=\"547\" height=\"266\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_ZEGAR-I-LICZNIK-v2.png\" alt=\"\" class=\"wp-image-12724\"\/><figcaption class=\"wp-element-caption\"><em>Wywo\u0142anie blok\u00f3w funkcyjnych w j\u0119zyku ST, przypisanie wej\u015b\u0107 i wyj\u015b\u0107, \u017ar\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Kolejno\u015b\u0107 linijek kodu jest w tym przyk\u0142adzie nieistotna. Gdy chcesz przydzieli\u0107 zmienn\u0105 dla wej\u015b\u0107 i wyj\u015b\u0107 poza nawiasem, musisz dokona\u0107 odwo\u0142ania do konkretnego wej\u015bcia naszego bloku funkcyjnego \u2013 tutaj jest to wyra\u017cenie <em>\u201ezegar.\u201d.<\/em> Po kropce wpisz nazw\u0119 danego wej\u015bcia lub wyj\u015bcia, do kt\u00f3rego chcesz przypisa\u0107 zmienn\u0105. Zwr\u00f3\u0107 uwag\u0119 na odmienny spos\u00f3b przypisania zmiennej do wyj\u015bcia bloku. U\u017cycie wcze\u015bniej wspomnianej symboliki, w tym przypadku nie jest poprawne, wi\u0119c \u017ceby przypisa\u0107 zmienn\u0105 do wyj\u015bcia bloku, nale\u017cy u\u017cy\u0107 symbolu \u201e:=\u201d i zmieni\u0107 kolejno\u015b\u0107, poniewa\u017c b\u0119dziesz wtedy przypisywa\u0107 warto\u015b\u0107 wyj\u015bcia do zmiennej.<\/p>\n\n\n\n<p>Na dzisiaj to tyle. Pozna\u0142e\u015b\/a\u015b podstawy j\u0119zyka ST, a tak\u017ce dowiedzia\u0142e\u015b\/a\u015b si\u0119 jak stosowa\u0107 jego sk\u0142adnie i najwa\u017cniejsze funkcje. Teraz najlepszy czas na praktyk\u0119. Zapraszamy Ci\u0119 w zwi\u0105zku z tym do naszej sekcji Tips&amp;Tricks, w kt\u00f3rej zamie\u015bcili\u015bmy przyk\u0142adowy program wykonany w j\u0119zyku ST. Znajdziesz tam gotowy program do pobrania, a tak\u017ce instrukcj\u0119 krok po kroku jak wykona\u0107 go samodzielnie. Przetestuj zdobyt\u0105 wiedz\u0119!<\/p>\n\n\n\n<p>A ju\u017c w kolejnym odcinku dowiesz si\u0119 nieco wi\u0119cej o diagnostyce w Codesys. Poznasz sposoby weryfikacji dzia\u0142ania programu i sterownika, powoli przygotowuj\u0105c si\u0119 na bardziej zaawansowan\u0105 cz\u0119\u015b\u0107 kursu. Do zobaczenia!<\/p>\n\n\n\n<p><strong>Autor artyku\u0142u: Mateusz Steczkowski<\/strong><\/p>\n\n\n\n<p><strong>Wsp\u00f3\u0142praca merytoryczna: Mateusz Pijanowski<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym odcinku wracamy do programowania. Poznasz kolejny j\u0119zyk dost\u0119pny w \u015brodowisku Codesys &#8211; j\u0119zyk strukturalny, w skr\u00f3cie ST od ang. Structured Text.<\/p>\n","protected":false},"author":81,"featured_media":12697,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[234],"tags":[142],"class_list":["post-12696","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatyka-w-praktyce","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>J\u0119zyk strukturalny (ST) | Kurs programowania w Codesys odc. 7 | Poradnik Automatyka<\/title>\r\n<meta name=\"description\" content=\"W tym odcinku wracamy do programowania. Poznasz kolejny j\u0119zyk dost\u0119pny w \u015brodowisku Codesys - j\u0119zyk strukturalny.\" \/>\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\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/\" \/>\r\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"J\u0119zyk strukturalny (ST) | Kurs programowania w Codesys odc. 7 | Poradnik Automatyka\" \/>\r\n<meta property=\"og:description\" content=\"W tym odcinku wracamy do programowania. Poznasz kolejny j\u0119zyk dost\u0119pny w \u015brodowisku Codesys - j\u0119zyk strukturalny.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Poradnik Automatyka\" \/>\r\n<meta property=\"article:published_time\" content=\"2021-07-29T11:43:01+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2024-03-12T17:20:27+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Code-min.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\r\n\t<meta property=\"og:image:height\" content=\"615\" \/>\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=\"21 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\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/\"},\"author\":{\"name\":\"Mateusz Pytel\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#\\\/schema\\\/person\\\/30d3dfd95308f3bba081f0a44bb6b97b\"},\"headline\":\"J\u0119zyk strukturalny (ST) | Kurs programowania w Codesys odc. 7\",\"datePublished\":\"2021-07-29T11:43:01+00:00\",\"dateModified\":\"2024-03-12T17:20:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/\"},\"wordCount\":3568,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/Code-min.jpg\",\"keywords\":[\"Codesys\"],\"articleSection\":[\"Automatyka w praktyce\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/\",\"url\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/\",\"name\":\"J\u0119zyk strukturalny (ST) | Kurs programowania w Codesys odc. 7 | Poradnik Automatyka\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/Code-min.jpg\",\"datePublished\":\"2021-07-29T11:43:01+00:00\",\"dateModified\":\"2024-03-12T17:20:27+00:00\",\"description\":\"W tym odcinku wracamy do programowania. Poznasz kolejny j\u0119zyk dost\u0119pny w \u015brodowisku Codesys - j\u0119zyk strukturalny.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/Code-min.jpg\",\"contentUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/Code-min.jpg\",\"width\":1000,\"height\":615},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\\\/#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\":\"J\u0119zyk strukturalny (ST) | Kurs programowania w Codesys odc. 7\"}]},{\"@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":"J\u0119zyk strukturalny (ST) | Kurs programowania w Codesys odc. 7 | Poradnik Automatyka","description":"W tym odcinku wracamy do programowania. Poznasz kolejny j\u0119zyk dost\u0119pny w \u015brodowisku Codesys - j\u0119zyk strukturalny.","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\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/","og_locale":"pl_PL","og_type":"article","og_title":"J\u0119zyk strukturalny (ST) | Kurs programowania w Codesys odc. 7 | Poradnik Automatyka","og_description":"W tym odcinku wracamy do programowania. Poznasz kolejny j\u0119zyk dost\u0119pny w \u015brodowisku Codesys - j\u0119zyk strukturalny.","og_url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/","og_site_name":"Poradnik Automatyka","article_published_time":"2021-07-29T11:43:01+00:00","article_modified_time":"2024-03-12T17:20:27+00:00","og_image":[{"width":1000,"height":615,"url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Code-min.jpg","type":"image\/jpeg"}],"author":"Mateusz Pytel","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Mateusz Pytel","Szacowany czas czytania":"21 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/#article","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/"},"author":{"name":"Mateusz Pytel","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/30d3dfd95308f3bba081f0a44bb6b97b"},"headline":"J\u0119zyk strukturalny (ST) | Kurs programowania w Codesys odc. 7","datePublished":"2021-07-29T11:43:01+00:00","dateModified":"2024-03-12T17:20:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/"},"wordCount":3568,"commentCount":2,"publisher":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Code-min.jpg","keywords":["Codesys"],"articleSection":["Automatyka w praktyce"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/","name":"J\u0119zyk strukturalny (ST) | Kurs programowania w Codesys odc. 7 | Poradnik Automatyka","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/#primaryimage"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Code-min.jpg","datePublished":"2021-07-29T11:43:01+00:00","dateModified":"2024-03-12T17:20:27+00:00","description":"W tym odcinku wracamy do programowania. Poznasz kolejny j\u0119zyk dost\u0119pny w \u015brodowisku Codesys - j\u0119zyk strukturalny.","breadcrumb":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/#primaryimage","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Code-min.jpg","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2021\/07\/Code-min.jpg","width":1000,"height":615},{"@type":"BreadcrumbList","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/jezyk-strukturalny-st-kurs-programowania-w-codesys-odc-7\/#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":"J\u0119zyk strukturalny (ST) | Kurs programowania w Codesys odc. 7"}]},{"@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\/12696","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=12696"}],"version-history":[{"count":2,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/12696\/revisions"}],"predecessor-version":[{"id":20249,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/12696\/revisions\/20249"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media\/12697"}],"wp:attachment":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media?parent=12696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/categories?post=12696"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/tags?post=12696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}