{"id":18726,"date":"2023-08-09T11:32:30","date_gmt":"2023-08-09T09:32:30","guid":{"rendered":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?p=18726"},"modified":"2023-12-14T10:23:57","modified_gmt":"2023-12-14T09:23:57","slug":"programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16","status":"publish","type":"post","link":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/","title":{"rendered":"Programowanie sterownika bezpiecze\u0144stwa w Codesys | Kurs programowania w Codesys odc. 16"},"content":{"rendered":"\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"dowiesz-sie\">\n<h3>Z tego artyku\u0142u dowiesz si\u0119:<\/h3>\n<ul class=\"bulleted\">\n<li>jak skonfigurowa\u0107 blok FSoEMaster,<\/li>\n<li>jak poprawnie napisa\u0107 aplikacj\u0119 Safety,<\/li>\n<li>jak uruchomi\u0107 aplikacj\u0119 Safety.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W poprzednim odcinku przygotowali\u015bmy \u015brodowisko Codesys oraz skonfigurowali\u015bmy projekt aplikacji Safety. Teraz przejdziemy do projektowania aplikacji<strong>.<\/strong><\/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<p>Rozpoczynaj\u0105c tworzenie programu Safety wa\u017cne jest, aby w pierwszej kolejno\u015bci doda\u0107 blok <strong>FSoEMaster<\/strong>. Ten blok ma za zadanie monitorowa\u0107 status po\u0142\u0105czenia FSoE (FailSafe over EtherCAT) oraz diagnozowa\u0107 wej\u015bcia\/wyj\u015bcia, decyduj\u0105c o kontynuacji pracy programu. Je\u015bli nie jest on dost\u0119pny w Toolboxie, mo\u017cna przeci\u0105gn\u0105\u0107 dowolny inny blok do programu, a nast\u0119pnie dwukrotnie klikn\u0105\u0107 na jego nazw\u0119 i r\u0119cznie wpisa\u0107 <strong>FSoEMaster<\/strong>. Po zatwierdzeniu klawiszem <strong>ENTER<\/strong>, blok zostanie odpowiednio zmodyfikowany.<\/p>\n\n\n\n<p>W bloku FSoEMaster istotn\u0105 rol\u0119 odgrywa zmienna, kt\u00f3r\u0105 ten blok definiuje. Nie mo\u017ce to by\u0107 dowolna zmienna, ale specjalnie przygotowana zmienna powi\u0105zana z modu\u0142em I\/O. Aby skonfigurowa\u0107 odpowiedni\u0105 zmienn\u0105, nale\u017cy klikn\u0105\u0107 na trzy kropki powy\u017cej bloku i wybra\u0107 <strong>SafeApp -&gt; Logical I\/Os -&gt; FSOES -&gt; FSOES<\/strong>. Dzi\u0119ki temu blok zostanie skonfigurowany wraz z po\u0142\u0105czonym modu\u0142em.<\/p>\n\n\n\n<div style=\"height:30px\" 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=\"878\" height=\"411\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/15.png\" alt=\"\" class=\"wp-image-18765\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/15.png 878w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/15-840x393.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/15-768x360.png 768w\" sizes=\"auto, (max-width: 878px) 100vw, 878px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Aby zapewni\u0107 poprawne dzia\u0142anie blok\u00f3w Safety, konieczne jest posiadanie zmiennej, kt\u00f3ra pozwoli na ich aktywacj\u0119. Ka\u017cdy blok funkcyjny Safety (z wyj\u0105tkiem FSoEMaster, kt\u00f3ry dzia\u0142a ci\u0105gle) posiada wej\u015bcie o nazwie Active. Dlatego te\u017c najlepiej skorzysta\u0107 z funkcjonalno\u015bci diagnostycznej bloku FSoEMaster i zezwoli\u0107 na aktywacj\u0119 pozosta\u0142ych blok\u00f3w tylko wtedy, gdy wej\u015bcia i wyj\u015bcia przejd\u0105 pomy\u015blnie test diagnostyczny.<\/p>\n\n\n\n<p>Aby stworzy\u0107 tak\u0105 zmienn\u0105, nale\u017cy przypisa\u0107 warto\u015b\u0107 <strong>True<\/strong> do wej\u015b\u0107 <strong>S_ActiveOut<\/strong> oraz <strong>S_ActiveIn<\/strong>, co uruchomi diagnostyk\u0119 fizycznych wej\u015b\u0107 i wyj\u015b\u0107. Nale\u017cy tak\u017ce przypisa\u0107 warto\u015b\u0107 <strong>True<\/strong> do wej\u015b\u0107 <strong>StartReset<\/strong> oraz <strong>AutoReset<\/strong>, kt\u00f3re umo\u017cliwi\u0105 ci\u0105g\u0142\u0105 i automatyczn\u0105 prac\u0119 bloku. Nast\u0119pnie, mo\u017cna skorzysta\u0107 z wyj\u015b\u0107 <strong>S_OutReady<\/strong> oraz <strong>S_InReady<\/strong>, kt\u00f3re informuj\u0105 o poprawnym (warto\u015b\u0107 <strong>True<\/strong>) lub niepoprawnym (warto\u015b\u0107 <strong>False<\/strong>) dzia\u0142aniu I\/O. Wyj\u015bcia te mo\u017cna po\u0142\u0105czy\u0107 za pomoc\u0105 bloku <strong>AND<\/strong>, co pozwoli zdefiniowa\u0107 zmienn\u0105, kt\u00f3ra przyjmie warto\u015b\u0107 <strong>True<\/strong> tylko wtedy, gdy zar\u00f3wno wej\u015bcia, jak i wyj\u015bcia pomy\u015blnie przejd\u0105 test diagnostyczny.<\/p>\n\n\n\n<div style=\"height:30px\" 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=\"847\" height=\"239\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/16.png\" alt=\"\" class=\"wp-image-18766\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/16.png 847w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/16-840x237.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/16-768x217.png 768w\" sizes=\"auto, (max-width: 847px) 100vw, 847px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Kolejnym krokiem jest kontynuowanie tworzenia programu. W tym przyk\u0142adzie zostanie zdefiniowany przycisk o dw\u00f3ch wej\u015bciach typu <strong>NC<\/strong> (Normally Closed), kt\u00f3ry aktywuje wyj\u015bcie oznaczone jako <strong>Output 1<\/strong>.<\/p>\n\n\n\n<p>Aby uzyska\u0107 bezpo\u015brednie odwo\u0142anie do fizycznych wej\u015b\u0107 i wyj\u015b\u0107 modu\u0142u I\/O, nale\u017cy przej\u015b\u0107 do segmentu <strong>Global variables<\/strong> i rozwin\u0105\u0107 drzewko opcji. Tam mo\u017cna znale\u017a\u0107 odpowiednie zmienne odnosz\u0105ce si\u0119 do fizycznych wej\u015b\u0107 i wyj\u015b\u0107, z kt\u00f3rymi mo\u017cna dalej pracowa\u0107 w programie:<\/p>\n\n\n\n<div style=\"height:30px\" 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=\"899\" height=\"379\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/17.png\" alt=\"\" class=\"wp-image-18767\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/17.png 899w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/17-840x354.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/17-768x324.png 768w\" sizes=\"auto, (max-width: 899px) 100vw, 899px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Aby przetworzy\u0107 dwa sygna\u0142y wej\u015bciowe na jeden sygna\u0142 wyj\u015bciowy, mo\u017cna skorzysta\u0107 z blok\u00f3w <strong>SF_Equivalent<\/strong> (r\u00f3wnorz\u0119dne) lub <strong>SF_Antivalent<\/strong> (przeciwnorz\u0119dne), w zale\u017cno\u015bci od rodzaju styk\u00f3w w przycisku. W tym przyk\u0142adzie styki s\u0105 tego samego rodzaju (NC &#8211; Normally Closed), dlatego u\u017cyjemy bloku SF_Equivalent.<\/p>\n\n\n\n<p>Aby poprawnie skonfigurowa\u0107 blok SF_Equivalent, nale\u017cy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Na wej\u015bciu <strong>Active<\/strong> poda\u0107 zmienn\u0105, kt\u00f3ra aktywuje dzia\u0142anie bloku. W tym przyk\u0142adzie jest to zmienna <strong>SiecGotowa<\/strong>, kt\u00f3r\u0105 wcze\u015bniej przygotowali\u015bmy.<\/li>\n\n\n\n<li>Pod\u0142\u0105czy\u0107 sygna\u0142y wej\u015bciowe z przycisku do wej\u015b\u0107 <strong>S_Channel1A<\/strong> oraz <strong>S_Channel1B<\/strong>.<\/li>\n\n\n\n<li>Stworzy\u0107 zmienn\u0105 <strong>Czas<\/strong>, w kt\u00f3rej zdefiniujemy maksymalny czas, w jakim oba sygna\u0142y maj\u0105 zmieni\u0107 stan na <strong>True<\/strong>. W tym przypadku styki dzia\u0142aj\u0105 w ramach jednego przycisku, wi\u0119c sygna\u0142y prawdopodobnie zmieni\u0105 si\u0119 niemal jednocze\u015bnie, dlatego ten czas mo\u017ce by\u0107 kr\u00f3tki.<\/li>\n\n\n\n<li>Zdefiniowa\u0107 zmienn\u0105 przy wyj\u015bciu <strong>Ready<\/strong>, kt\u00f3ra informuje o gotowo\u015bci bloku do dzia\u0142ania, oraz zmienn\u0105 przy wyj\u015bciu <strong>S_EquivalentOut<\/strong>, kt\u00f3ra b\u0119dzie g\u0142\u00f3wn\u0105 zmienn\u0105 wyj\u015bciow\u0105.<\/li>\n<\/ul>\n\n\n\n<p>Dzi\u0119ki tak skonfigurowanemu blokowi b\u0119dziemy w stanie przetworzy\u0107 dwa sygna\u0142y wej\u015bciowe z przycisku na jeden sygna\u0142 wyj\u015bciowy:<\/p>\n\n\n\n<div style=\"height:30px\" 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=\"834\" height=\"183\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/18.png\" alt=\"\" class=\"wp-image-18769\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/18.png 834w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/18-768x169.png 768w\" sizes=\"auto, (max-width: 834px) 100vw, 834px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Po skonfigurowaniu programu mo\u017cna przej\u015b\u0107 do procesu wgrywania programu. Pierwszym krokiem jest nawi\u0105zanie komunikacji z g\u0142\u00f3wnym sterownikiem i zalogowanie si\u0119 do niego, a nast\u0119pnie wgranie programu. Poprawne nawi\u0105zanie komunikacji b\u0119dzie sygnalizowane przez zielone strza\u0142ki, kt\u00f3re pojawi\u0105 si\u0119 po przej\u015bciu sterownika w tryb <strong>RUN<\/strong>. Nast\u0119pnym krokiem jest zalogowanie si\u0119 bezpo\u015brednio do sterownika Safety. Aby to zrobi\u0107, nale\u017cy klikn\u0105\u0107 prawym przyciskiem myszy na <strong>SafetyApp<\/strong> i wybra\u0107 opcje <strong>Login<\/strong>:<\/p>\n\n\n\n<div style=\"height:30px\" 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=\"548\" height=\"648\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/19.png\" alt=\"\" class=\"wp-image-18770\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Aplikacja poprosi o weryfikacj\u0119 logowania poprzez podanie numeru seryjnego sterownika Safety. Nale\u017cy taki numer poda\u0107 i wcisn\u0105\u0107 <strong>OK<\/strong>:<\/p>\n\n\n\n<div style=\"height:30px\" 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=\"671\" height=\"484\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/20.png\" alt=\"\" class=\"wp-image-18771\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Nast\u0119pnie zostanie wy\u015bwietlony komunikat informuj\u0105cy, \u017ce wgrana aplikacja r\u00f3\u017cni si\u0119 od obecnie zainstalowanej w sterowniku. Po potwierdzeniu tego komunikatu, sterownik zostanie prze\u0142\u0105czony w tryb testowy, umo\u017cliwiaj\u0105cy wgranie nowej aplikacji i przeprowadzenie fizycznego testu na sprz\u0119cie.<\/p>\n\n\n\n<p>Ostatnim komunikatem b\u0119dzie pro\u015bba o podanie has\u0142a. Domy\u015blnie has\u0142o nie jest ustawione, wi\u0119c wystarczy klikn\u0105\u0107 przycisk <strong>OK<\/strong>.<\/p>\n\n\n\n<p>Po wgraniu aplikacji nale\u017cy prze\u0142\u0105czy\u0107 sterownik Safety w tryb RUN, klikaj\u0105c prawym przyciskiem myszy na ikon\u0119 <strong>SafetyApp<\/strong> i wybieraj\u0105c opcj\u0119 <strong>Start<\/strong>. W tym momencie mo\u017cna przeprowadzi\u0107 test funkcjonalno\u015bci aplikacji.<\/p>\n\n\n\n<div style=\"height:30px\" 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=\"786\" height=\"857\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/21.png\" alt=\"\" class=\"wp-image-18772\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/21.png 786w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/21-673x734.png 673w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/21-768x837.png 768w\" sizes=\"auto, (max-width: 786px) 100vw, 786px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W celu zapewnienia trwa\u0142o\u015bci wgranej aplikacji w sterowniku Safety, po zalogowaniu si\u0119 do niego i przeprowadzeniu testu poprawno\u015bci dzia\u0142ania konieczne jest przygotowanie pliku <strong>Boot<\/strong>. Aby to zrobi\u0107, kliknij prawym przyciskiem myszy na ikon\u0119 <strong>SafetyApp<\/strong> i wybierz opcj\u0119 <strong>Set Active Application<\/strong>, a nast\u0119pnie udaj si\u0119 do lewego g\u00f3rnego rogu ekranu, rozwi\u0144 opcj\u0119 <strong>Online<\/strong> i wybierz <strong>Create boot application<\/strong>. <\/p>\n\n\n\n<div style=\"height:30px\" 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=\"430\" height=\"322\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/22.png\" alt=\"\" class=\"wp-image-18773\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Zostanie utworzony plik Boot, kt\u00f3ry zapewni przywr\u00f3cenie wgranej aplikacji po wylogowaniu si\u0119 z sterownika.<\/p>\n\n\n\n<p>Po wylogowaniu si\u0119 z sterownika oprogramowanie wy\u015bwietli pytanie, czy sterownik powinien zosta\u0107 zrestartowany i uruchomiony z aktualn\u0105 wersj\u0105 aplikacji boot, kt\u00f3ra zosta\u0142a wgrana do pami\u0119ci. Konieczne jest potwierdzenie tego komunikatu. Od tego momentu sterownik b\u0119dzie dzia\u0142a\u0142 z zainstalowan\u0105 aplikacj\u0105 i b\u0119dzie realizowa\u0107 jej funkcje zgodnie z programem, kt\u00f3ry zosta\u0142 napisany.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Bloki funkcyjne Safety biblioteki PLCOpen<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Nazwa bloku<\/strong><\/td><td><strong>Opis bloku<\/strong><\/td><\/tr><tr><td>SF_Antivalent<\/td><td>SF_Antivalent monitoruje i analizuje sygna\u0142y pochodz\u0105ce z dw\u00f3ch zacisk\u00f3w wej\u015bciowych zwi\u0105zanych z bezpiecze\u0144stwem, w celu wykrycia r\u00f3\u017cnych stan\u00f3w sygna\u0142u. Zadaniem tego bloku jest analizowanie sygna\u0142\u00f3w pochodz\u0105cych z dwukana\u0142owych czujnik\u00f3w lub prze\u0142\u0105cznik\u00f3w, takich jak urz\u0105dzenia steruj\u0105ce zatrzymaniem awaryjnym.<\/td><\/tr><tr><td>SF_EDM<\/td><td>SF_EDM (External Device Monitoring) jest odpowiedzialny za monitorowanie okre\u015blonego stanu pocz\u0105tkowego oraz zachowania prze\u0142\u0105czania stycznik\u00f3w, kt\u00f3re s\u0105 pod\u0142\u0105czone do sterownika Safety Logic Controller.<\/td><\/tr><tr><td>SF_EmergencyStop<\/td><td>SF_EmergencyStop jest odpowiedzialny za monitorowanie stan\u00f3w prze\u0142\u0105czania urz\u0105dzenia steruj\u0105cego, kt\u00f3re jest przeznaczone do zatrzymania awaryjnego. Gdy pod\u0142\u0105czone urz\u0105dzenie zatrzymania awaryjnego zostanie aktywowane, sygna\u0142 na wyj\u015bciu S_EStopOut zostaje ustawiony na warto\u015b\u0107 SAFEFALSE.<\/td><\/tr><tr><td>SF_EnableSwitch<\/td><td>SF_EnableSwitch ocenia sygna\u0142y z r\u0119cznego trzystopniowego prze\u0142\u0105cznika zezwolenia w celu okre\u015blenia jego po\u0142o\u017cenia i kierunku. Pod\u0142\u0105czony prze\u0142\u0105cznik zezwolenia mo\u017ce by\u0107 wykorzystany do dezaktywacji zabezpiecze\u0144, o ile odpowiedni tryb pracy (np. ograniczenie pr\u0119dko\u015bci lub zakresu ruchu) zosta\u0142 wybrany i jest aktywny.<\/td><\/tr><tr><td>SF_Equivalent<\/td><td>SF_Equivalent jest blokiem, kt\u00f3ry sprawdza sygna\u0142y bezpiecze\u0144stwa pochodz\u0105ce z dw\u00f3ch terminali wej\u015bciowych. Zazwyczaj te sygna\u0142y s\u0105 generowane przez dwukana\u0142owe czujniki lub prze\u0142\u0105czniki, na przyk\u0142ad urz\u0105dzenia steruj\u0105ce zatrzymaniem awaryjnym. Monitor ten por\u00f3wnuje stany sygna\u0142\u00f3w z obu terminali i dzia\u0142a w oparciu o okre\u015blone kryteria. Sygna\u0142 zezwolenia, oznaczony jako S_EquivalentOut, zostaje ustawiony na warto\u015b\u0107 SAFETRUE (czyli prawdziwy z punktu widzenia bezpiecze\u0144stwa), gdy spe\u0142nione s\u0105 nast\u0119puj\u0105ce warunki: blok funkcyjny jest aktywny, nie wyst\u0105pi\u0142 \u017caden b\u0142\u0105d, a sygna\u0142y wej\u015bciowe S_ChannelA i S_ChannelB wskazuj\u0105 na stan SAFETRUE przez okre\u015blony czas, zwanym DiscrepancyTime.<\/td><\/tr><tr><td>SF_ESPE<\/td><td>SF_ESPE (Electro-Sensitive Protective Equipment) jest blokiem monitoruj\u0105cym, kt\u00f3ry nadzoruje stany prze\u0142\u0105czania elektroczu\u0142ych urz\u0105dze\u0144 ochronnych, takich jak siatki \u015bwietlne. G\u0142\u00f3wnym celem tego monitora jest wykrywanie przypadk\u00f3w, gdy urz\u0105dzenie zabezpieczaj\u0105ce zostaje aktywowane, co oznacza, \u017ce wi\u0105zka \u015bwiat\u0142a siatki \u015bwietlnej zosta\u0142a przerwana. Sygna\u0142 zezwolenia na wyj\u015bciu, oznaczony jako S_ESPE_Out, przyjmuje warto\u015b\u0107 SAFEFALSE (czyli fa\u0142szywy z punktu widzenia bezpiecze\u0144stwa), gdy urz\u0105dzenie zabezpieczaj\u0105ce zadzia\u0142a. Innymi s\u0142owy, je\u015bli monitor wykryje przerwanie wi\u0105zki \u015bwietlnej siatki \u015bwietlnej, to sygna\u0142 na wyj\u015bciu wskazuje, \u017ce jest niebezpiecznie, tj. wyst\u0105pi\u0142o naruszenie ochrony i mo\u017ce by\u0107 wymagane podj\u0119cie dzia\u0142a\u0144 naprawczych lub interwencyjnych w celu przywr\u00f3cenia bezpiecznego stanu.<\/td><\/tr><tr><td>SF_GuardLocking<\/td><td>SF_GuardLocking obs\u0142uguje monitorowanie os\u0142ony z blokad\u0105 (monitorowanie drzwi z czterostopniow\u0105 blokad\u0105 zgodnie z norm\u0105 EN 1088).<\/td><\/tr><tr><td>SF_GuardMonitoring<\/td><td>SF_GuardMonitoring monitoruje os\u0142on\u0119 (np. drzwi) z dwustopniow\u0105 blokad\u0105 zgodnie z norm\u0105 EN 1088.<\/td><\/tr><tr><td>SF_ModeSelector<\/td><td>SF_ModeSelector jest blokiem oceniaj\u0105cy stany prze\u0142\u0105cznika wyboru trybu, kt\u00f3ry ma maksymalnie osiem pozycji. Mechaniczny prze\u0142\u0105cznik wyboru trybu jest u\u017cywany do ustawiania okre\u015blonego trybu pracy, na przyk\u0142ad trybu serwisowego, trybu konfiguracji, trybu czyszczenia itp. Ka\u017cdy tryb pracy mo\u017ce mie\u0107 przypisan\u0105 inn\u0105 funkcj\u0119 zwi\u0105zan\u0105 z bezpiecze\u0144stwem.<\/td><\/tr><tr><td>SF_MutingPar<\/td><td>SF_MutingPar to modu\u0142, kt\u00f3ry ocenia sygna\u0142y czterech czujnik\u00f3w mutingu oraz optoelektronicznego sprz\u0119tu zwi\u0105zanego z bezpiecze\u0144stwem, takiego jak siatki \u015bwietlne. Modu\u0142 ten jest stosowany w aplikacji do r\u00f3wnoleg\u0142ego mutingu z wykorzystaniem czterech czujnik\u00f3w i prze\u0142\u0105cza sygna\u0142 zezwolenia na wyj\u015bciu oznaczonym jako S_AOPD_Out. Sygna\u0142 na wyj\u015bciu S_AOPD_Out pe\u0142ni rol\u0119 sygna\u0142u zezwolenia dla ca\u0142ego procesu. Natomiast sygna\u0142 SAFEFALSE na wyj\u015bciu S_AOPD_Out powoduje zatrzymanie aplikacji w strefie dzia\u0142ania, w celu zapewnienia bezpiecze\u0144stwa.<\/td><\/tr><tr><td>SF_MutingPar_2Sensor<\/td><td>SF_MutingPar_2Sensor to komponent zwi\u0105zany z bezpiecze\u0144stwem, kt\u00f3ry monitoruje sygna\u0142y dw\u00f3ch czujnik\u00f3w mutingu oraz optoelektronicznego sprz\u0119tu zwi\u0105zanego z bezpiecze\u0144stwem, takiego jak siatka \u015bwietlna. Ten komponent jest u\u017cywany w aplikacji do mutingu r\u00f3wnoleg\u0142ego z dwoma czujnikami i odpowiada za prze\u0142\u0105czanie sygna\u0142u zezwolenia na wyj\u015bciu oznaczonym jako S_AOPD_Out. Sygna\u0142 generowany na wyj\u015bciu S_AOPD_Out jest odpowiedzialny za udzielenie zgody na kontynuacj\u0119 ca\u0142ego procesu. Jednak\u017ce gdy sygna\u0142 oznaczony jako SAFEFALSE pojawia si\u0119 na wyj\u015bciu S_AOPD_Out, aplikacja zostaje zatrzymana w obszarze dzia\u0142ania w celu zapewnienia bezpiecze\u0144stwa.<\/td><\/tr><tr><td>SF_MutingSeq<\/td><td>SF_MutingSeq s\u0142u\u017cy do oceny sygna\u0142\u00f3w z czterech czujnik\u00f3w mutingu oraz optoelektronicznego sprz\u0119tu zwi\u0105zanego z bezpiecze\u0144stwem, takiego jak siatka \u015bwietlna, w aplikacji do mutingu sekwencyjnego z czterema czujnikami. Blok ten prze\u0142\u0105cza sygna\u0142 zezwolenia na wyj\u015bciu S_AOPD_Out. Sygna\u0142 na wyj\u015bciu S_AOPD_Out pe\u0142ni rol\u0119 sygna\u0142u zezwolenia dla ca\u0142ego procesu. Je\u017celi sygna\u0142 SAFEFALSE zostanie wygenerowany na wyj\u015bciu S_AOPD_Out, oznacza to zatrzymanie aplikacji w strefie dzia\u0142ania.<\/td><\/tr><tr><td>SF_OutControl<\/td><td>SF_OutControl steruje wyj\u015bciem urz\u0105dzenia zwi\u0105zanego z bezpiecze\u0144stwem. Wyj\u015bcie zwi\u0105zane z bezpiecze\u0144stwem jest sterowane w zale\u017cno\u015bci od sygna\u0142u ze standardowego sterownika (uruchomienie\/zatrzymanie pracy) i sygna\u0142u zwi\u0105zanego z bezpiecze\u0144stwem (monitorowanie funkcji zwi\u0105zanej z bezpiecze\u0144stwem, np. zatrzymanie awaryjne).<\/td><\/tr><tr><td>SF_SafetyRequest<\/td><td>SF_SafetyRequest jest modu\u0142em odpowiedzialnym za bezpiecze\u0144stwo w aplikacji, umo\u017cliwiaj\u0105cym \u017c\u0105danie uruchomienia funkcji zwi\u0105zanych z bezpiecze\u0144stwem, takich jak bezpieczne zatrzymanie lub ograniczenie pr\u0119dko\u015bci. W zale\u017cno\u015bci od stanu wej\u015bciowego S_OpMode, blok funkcyjny odpowiedzialny za bezpiecze\u0144stwo wysy\u0142a \u017c\u0105danie uruchomienia odpowiednich funkcji bezpiecze\u0144stwa na urz\u0105dzeniu peryferyjnym.<\/td><\/tr><tr><td>SF_TestableSafetySensor<\/td><td>SF_TestableSafetySensor to komponent odpowiedzialny za monitorowanie stanu optoelektronicznego sprz\u0119tu bezpiecze\u0144stwa (np. kurtyny \u015bwietlnej). Blok funkcyjny zawiera r\u00f3wnie\u017c funkcj\u0119 testow\u0105, umo\u017cliwiaj\u0105c\u0105 weryfikacj\u0119 dzia\u0142ania pod\u0142\u0105czonego sprz\u0119tu bezpiecze\u0144stwa.<\/td><\/tr><tr><td>SF_TwoHandControlTypeII<\/td><td>SF_TwoHandControlTypeII ocenia zachowanie prze\u0142\u0105czania dwur\u0119cznego urz\u0105dzenia steruj\u0105cego typu II pod\u0142\u0105czonego do sterownika logicznego bezpiecze\u0144stwa.<\/td><\/tr><tr><td>SF_TwoHandControlTypeIII<\/td><td>SF_TwoHandControlTypeIII ocenia zachowanie prze\u0142\u0105czania dwur\u0119cznego urz\u0105dzenia steruj\u0105cego typu III pod\u0142\u0105czonego do sterownika logicznego bezpiecze\u0144stwa.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n            <div id=\"mailerlite-form_9\" data-temp-id=\"69e1f0e03648c\">\n                <div class=\"mailerlite-form\">\n                    <form action=\"\" method=\"post\" novalidate>\n                                                    <div class=\"mailerlite-form-title\"><h3>Newsletter Poradnika Automatyka<\/h3><\/div>\n                                                <div class=\"mailerlite-form-description\"><p>Czytaj trendy i inspiracje, podstawy automatyki, automatyk\u0119 w praktyce<\/p>\n<\/div>\n                        <div class=\"mailerlite-form-inputs\">\n                                                                                            <div class=\"mailerlite-form-field\">\n                                    <label for=\"mailerlite-9-field-email\">Email<\/label>\n                                    <input id=\"mailerlite-9-field-email\"\n                                           type=\"email\" required=\"required\"                                            name=\"form_fields[email]\"\n                                           placeholder=\"Email\"\/>\n                                <\/div>\n                                                        <div class=\"mailerlite-form-loader\">Please wait...<\/div>\n                            <div class=\"mailerlite-subscribe-button-container\">\n                                <button class=\"mailerlite-subscribe-submit\" type=\"submit\">\n                                    Zapisz si\u0119                                <\/button>\n                            <\/div>\n                            <input type=\"hidden\" name=\"form_id\" value=\"9\"\/>\n                            <input type=\"hidden\" name=\"action\" value=\"mailerlite_subscribe_form\"\/>\n                            <input type=\"hidden\" name=\"ml_nonce\" value=\"ba36634c7b\"\/>\n                        <\/div>\n                        <div class=\"mailerlite-form-response\">\n                                                            <h4><p>Dzi\u0119kujemy za zapis do newslettera!<\/p>\n<\/h4>\n                                                    <\/div>\n                    <\/form>\n                <\/div>\n            <\/div>\n        <script type=\"text\/javascript\" src='https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/plugins\/official-mailerlite-sign-up-forms\/assets\/js\/localization\/validation-messages.js'><\/script>\n         <script type=\"text\/javascript\"> var selectedLanguage = \"pl\"; var validationMessages = messages[\"en\"]; if(selectedLanguage) { validationMessages = messages[selectedLanguage]; } window.addEventListener(\"load\", function () { var form_container = document.querySelector(`#mailerlite-form_9[data-temp-id=\"69e1f0e03648c\"] form`); let submitButton = form_container.querySelector('.mailerlite-subscribe-submit'); submitButton.disabled = true; fetch('https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-admin\/admin-ajax.php', { method: 'POST', headers:{ 'Content-Type': 'application\/x-www-form-urlencoded', }, body: new URLSearchParams({ \"action\" : \"ml_create_nonce\", \"ml_nonce\" : form_container.querySelector(\"input[name='ml_nonce']\").value }) }) .then((response) => response.json()) .then((json) => { if(json.success) { form_container.querySelector(\"input[name='ml_nonce']\").value = json.data.ml_nonce; submitButton.disabled = false; } }) .catch((error) => { console.error('Error:', error); }); form_container.addEventListener('submit', (e) => { e.preventDefault(); let data = new URLSearchParams(new FormData(form_container)).toString(); let validationError = false; document.querySelectorAll('.mailerlite-form-error').forEach(el => el.remove()); Array.from(form_container.elements).forEach((input) => { if(input.type !== 'hidden') { if(input.required) { if(input.value == '') { validationError = true; let error = document.createElement(\"span\"); error.className = 'mailerlite-form-error'; error.textContent = validationMessages.required; input.after(error); return false; } } if((input.type == \"email\") && (!validateEmail(input.value))) { validationError = true; let error = document.createElement(\"span\"); error.className = 'mailerlite-form-error'; error.textContent = validationMessages.email; input.after(error); return false; } } }); if(validationError) { return false; } fade.out(form_container.querySelector('.mailerlite-subscribe-button-container'), () => { fade.in(form_container.querySelector('.mailerlite-form-loader')); }); fetch('https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-admin\/admin-ajax.php', { method: 'POST', headers:{ 'Content-Type': 'application\/x-www-form-urlencoded', }, body: data }) .then((response) => { fade.out(form_container.querySelector('.mailerlite-form-inputs'), () => { fade.in(form_container.querySelector('.mailerlite-form-response')); }); }) .catch((error) => { console.error('Error:', error); }); }); }, false); var fade = { out: function(el, fn = false) { var fadeOutEffect = setInterval(function () { if (!el.style.opacity) { el.style.opacity = 1; } if (el.style.opacity > 0) { el.style.opacity -= 0.1; } else { el.style.display = 'none'; clearInterval(fadeOutEffect); } }, 50); if( typeof (fn) == 'function') { fn(); } }, in: function(el) { var fadeInEffect = setInterval(function () { if (!el.style.opacity) { el.style.opacity = 0; } if (el.style.opacity < 1) { el.style.opacity = Number(el.style.opacity) + 0.1; } else { el.style.display = 'block'; clearInterval(fadeInEffect); } }, 50); } }; function validateEmail(email){ if(email.match( \/^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$\/ )) { return true; } return false; } <\/script> \n","protected":false},"excerpt":{"rendered":"<p>W poprzednim odcinku przygotowali\u015bmy \u015brodowisko Codesys oraz skonfigurowali\u015bmy projekt aplikacji Safety. Teraz przejdziemy do projektowania aplikacji.<\/p>\n","protected":false},"author":81,"featured_media":18766,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[234],"tags":[139,142],"class_list":["post-18726","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>Programowanie sterownika bezpiecze\u0144stwa w Codesys | Kurs programowania w Codesys odc. 16 | Poradnik Automatyka<\/title>\r\n<meta name=\"description\" content=\"W tym odcinku, korzystaj\u0105c z przygotowanej wcze\u015bniej konfiguracji, napiszemy i uruchomimy aplikacj\u0119 Safety w \u015brodowisku Codesys.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/\" \/>\r\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Programowanie sterownika bezpiecze\u0144stwa w Codesys | Kurs programowania w Codesys odc. 16 | Poradnik Automatyka\" \/>\r\n<meta property=\"og:description\" content=\"W tym odcinku, korzystaj\u0105c z przygotowanej wcze\u015bniej konfiguracji, napiszemy i uruchomimy aplikacj\u0119 Safety w \u015brodowisku Codesys.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Poradnik Automatyka\" \/>\r\n<meta property=\"article:published_time\" content=\"2023-08-09T09:32:30+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2023-12-14T09:23:57+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/16.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"847\" \/>\r\n\t<meta property=\"og:image:height\" content=\"239\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"11 minut\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/\"},\"author\":{\"name\":\"Mateusz Pytel\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#\\\/schema\\\/person\\\/30d3dfd95308f3bba081f0a44bb6b97b\"},\"headline\":\"Programowanie sterownika bezpiecze\u0144stwa w Codesys | Kurs programowania w Codesys odc. 16\",\"datePublished\":\"2023-08-09T09:32:30+00:00\",\"dateModified\":\"2023-12-14T09:23:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/\"},\"wordCount\":2029,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/16.png\",\"keywords\":[\"Astraada One\",\"Codesys\"],\"articleSection\":[\"Automatyka w praktyce\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/\",\"url\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/\",\"name\":\"Programowanie sterownika bezpiecze\u0144stwa w Codesys | Kurs programowania w Codesys odc. 16 | Poradnik Automatyka\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/16.png\",\"datePublished\":\"2023-08-09T09:32:30+00:00\",\"dateModified\":\"2023-12-14T09:23:57+00:00\",\"description\":\"W tym odcinku, korzystaj\u0105c z przygotowanej wcze\u015bniej konfiguracji, napiszemy i uruchomimy aplikacj\u0119 Safety w \u015brodowisku Codesys.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/16.png\",\"contentUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/16.png\",\"width\":847,\"height\":239},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Automatyka w praktyce\",\"item\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/category\\\/automatyka-w-praktyce\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programowanie sterownika bezpiecze\u0144stwa w Codesys | Kurs programowania w Codesys odc. 16\"}]},{\"@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":"Programowanie sterownika bezpiecze\u0144stwa w Codesys | Kurs programowania w Codesys odc. 16 | Poradnik Automatyka","description":"W tym odcinku, korzystaj\u0105c z przygotowanej wcze\u015bniej konfiguracji, napiszemy i uruchomimy aplikacj\u0119 Safety w \u015brodowisku Codesys.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/","og_locale":"pl_PL","og_type":"article","og_title":"Programowanie sterownika bezpiecze\u0144stwa w Codesys | Kurs programowania w Codesys odc. 16 | Poradnik Automatyka","og_description":"W tym odcinku, korzystaj\u0105c z przygotowanej wcze\u015bniej konfiguracji, napiszemy i uruchomimy aplikacj\u0119 Safety w \u015brodowisku Codesys.","og_url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/","og_site_name":"Poradnik Automatyka","article_published_time":"2023-08-09T09:32:30+00:00","article_modified_time":"2023-12-14T09:23:57+00:00","og_image":[{"width":847,"height":239,"url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/16.png","type":"image\/png"}],"author":"Mateusz Pytel","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Mateusz Pytel","Szacowany czas czytania":"11 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/#article","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/"},"author":{"name":"Mateusz Pytel","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/30d3dfd95308f3bba081f0a44bb6b97b"},"headline":"Programowanie sterownika bezpiecze\u0144stwa w Codesys | Kurs programowania w Codesys odc. 16","datePublished":"2023-08-09T09:32:30+00:00","dateModified":"2023-12-14T09:23:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/"},"wordCount":2029,"commentCount":0,"publisher":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/16.png","keywords":["Astraada One","Codesys"],"articleSection":["Automatyka w praktyce"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/","name":"Programowanie sterownika bezpiecze\u0144stwa w Codesys | Kurs programowania w Codesys odc. 16 | Poradnik Automatyka","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/#primaryimage"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/16.png","datePublished":"2023-08-09T09:32:30+00:00","dateModified":"2023-12-14T09:23:57+00:00","description":"W tym odcinku, korzystaj\u0105c z przygotowanej wcze\u015bniej konfiguracji, napiszemy i uruchomimy aplikacj\u0119 Safety w \u015brodowisku Codesys.","breadcrumb":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/#primaryimage","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/16.png","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/08\/16.png","width":847,"height":239},{"@type":"BreadcrumbList","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/programowanie-sterownika-bezpieczenstwa-w-codesys-kurs-programowania-w-codesys-odc-16\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Automatyka w praktyce","item":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/category\/automatyka-w-praktyce\/"},{"@type":"ListItem","position":2,"name":"Programowanie sterownika bezpiecze\u0144stwa w Codesys | Kurs programowania w Codesys odc. 16"}]},{"@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\/18726","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=18726"}],"version-history":[{"count":2,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/18726\/revisions"}],"predecessor-version":[{"id":18780,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/18726\/revisions\/18780"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media\/18766"}],"wp:attachment":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media?parent=18726"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/categories?post=18726"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/tags?post=18726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}