{"id":21908,"date":"2025-01-06T21:03:53","date_gmt":"2025-01-06T20:03:53","guid":{"rendered":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?p=21908"},"modified":"2025-03-11T18:58:14","modified_gmt":"2025-03-11T17:58:14","slug":"wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8","status":"publish","type":"post","link":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/","title":{"rendered":"Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego | Wymiana danych pomi\u0119dzy robotem Kawasaki a sterownikiem PLC, odc. 8"},"content":{"rendered":"\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W tej cz\u0119\u015bci poradnika poka\u017cemy, jak wys\u0142a\u0107 z robota zmienn\u0105 tekstow\u0105 za pomoc\u0105 funkcji, w postaci ci\u0105gu znak\u00f3w w kodzie ASCII, a nast\u0119pnie odczyta\u0107 znak po znaku w PLC.<\/p>\n\n\n\n<div class=\"dowiesz-sie\" style=\"margin-top:40px; margin-bottom:40px\">\n<h3>Wymiana danych pomi\u0119dzy robotem Kawasaki Robotics a sterownikiem PLC<\/h3>\n<p>Zagadnienia podstawowe:<\/p>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/integracja-robota-przemyslowego-ze-sterownikiem-plc-i-panelem-hmi-dlaczego-warto\/\">Wst\u0119p: Integracja robota przemys\u0142owego ze sterownikiem PLC i panelem HMI \u2013 dlaczego warto?<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przesylanie-statusu-polaczenia-i-kodu-bledow-w-czasie-rzeczywistym-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-1\/\">1. Przesy\u0142anie statusu po\u0142\u0105czenia i kodu b\u0142\u0119d\u00f3w w czasie rzeczywistym.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przesylanie-danych-robota-typ-numer-seryjny-godziny-pracy-i-zuzyta-energia-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-2\/\">2. Przesy\u0142anie danych robota (typ, numer seryjny, godziny pracy i zu\u017cyta energia).<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przesylanie-dedykowanych-sygnalow-wejsciowych-i-wyjsciowych-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-3\/\">3. Przesy\u0142anie dedykowanych sygna\u0142\u00f3w wej\u015bciowych i wyj\u015bciowych.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przesylanie-parametrow-ruchu-w-czasie-rzeczywistym-i-informacji-o-wykonanym-programie-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-4\/\">4. Przesy\u0142anie parametr\u00f3w ruchu w czasie rzeczywistym i informacji o wykonanym programie.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przesylanie-aktualnej-pozycji-i-dystansu-do-kolejnego-punktu-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-5\/\">5. Przesy\u0142anie aktualnej pozycji i dystansu do kolejnego punktu.<\/a><br\/><br\/>\n<p>Zagadnienia zaawansowane:<\/p>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/ogolna-modyfikacja-komunikacji-i-zmiana-typu-danych-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-6\/\">6. Og\u00f3lna modyfikacja komunikacji i zmiana typu danych.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przesylanie-duzych-ilosci-danych-przy-uzyciu-ograniczonej-liczby-zajetych-bitow-zwielokrotnianie-danych-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-7\/\">7. Przesy\u0142anie du\u017cych ilo\u015bci danych przy u\u017cyciu ograniczonej liczby zaj\u0119tych bit\u00f3w \u2013 zwielokrotnianie danych.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/\">8. Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/odbieranie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-9\/\">9. Odbieranie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przesylanie-do-sterownika-plc-historii-ostatnich-bledow-z-robota-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-10\/\">10. Przesy\u0142anie do sterownika PLC historii ostatnich b\u0142\u0119d\u00f3w z robota.<\/a><br\/>\n<a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/przesylanie-ze-sterownika-plc-do-robota-pelnej-nazwy-programu-do-wykonania-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-11\/\">11. Przesy\u0142anie ze sterownika PLC do robota pe\u0142nej nazwy programu do wykonania.<\/a><br\/>\n<\/div>\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\">Wst\u0119p<\/h2>\n\n\n\n<p>W tej cz\u0119\u015bci poradnika poznasz jeden ze sposob\u00f3w na \u0142atwe przesy\u0142anie zmiennych tekstowych z wykorzystaniem protoko\u0142u Ethernet\/IP, kt\u00f3ry standardowo nie obs\u0142uguje tego typu zmiennych. Jak poprzednio, artyku\u0142 jest podzielony na dwie cz\u0119\u015bci. Pierwsza cz\u0119\u015b\u0107 opisuje spos\u00f3b na przygotowanie tekstu do wys\u0142ania oraz zarz\u0105dzania sekwencj\u0105 wysy\u0142ania w kontrolerze robota. Druga cz\u0119\u015b\u0107 natomiast przedstawia spos\u00f3b dekodowania przesy\u0142anych cyfr i przypisywania do w\u0142a\u015bciwych zmiennych. Przyk\u0142ad b\u0119dzie opiera\u0142 si\u0119 na komunikacji, w kt\u00f3rej to robot zarz\u0105dza komunikacj\u0105 i przesy\u0142a dane z odpowiednim indeksem, sterownik PLC dzia\u0142a reaktywnie, jedynie odczytuj\u0105c zmienne i przypisuj\u0105c do w\u0142a\u015bciwego ID.<\/p>\n\n\n\n<p>W tym typie komunikacji nie ma mo\u017cliwo\u015bci przes\u0142ania w spos\u00f3b bezpo\u015bredni ci\u0105gu znak\u00f3w, dlatego musi on zosta\u0107 wys\u0142any znak po znaku po wcze\u015bniejszym zdekodowania w kodzie ASCII. Oznacza to, \u017ce ka\u017cdy znak zostanie zapisany w postaci liczby na 8 bitach. Urz\u0105dzenie odbieraj\u0105ce informacj\u0119 musi przeprowadzi\u0107 proces odwrotny, czyli ka\u017cd\u0105 otrzyman\u0105 liczb\u0119 zdekodowa\u0107 i zapisa\u0107 jako znak, po po\u0142\u0105czeniu wszystkich znak\u00f3w otrzymamy przesy\u0142any ci\u0105g znak\u00f3w.<\/p>\n\n\n\n<p>W tym poradniku, aby przyspieszy\u0107 proces wysy\u0142ania i mie\u0107 mo\u017cliwo\u015b\u0107 przes\u0142ania wi\u0119kszej ilo\u015bci informacji, jednocze\u015bnie przesy\u0142ane jest 16 znak\u00f3w. Je\u017celi dany tekst jest d\u0142u\u017cszy, zostanie od podzielony na wielokrotno\u015b\u0107 16 i przes\u0142any w kilku sekwencjach. W tym algorytmie robot decyduje o wysy\u0142aniu informacji i ich rodzaju, sterownik ma za zadanie jednie j\u0105 odczyta\u0107.<\/p>\n\n\n\n<div class=\"link-box d-flex align-items-center\">\r\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/themes\/poradnik\/public\/images\/icons\/icon-link.svg\" alt=\"arrow\" class=\"ml-3\">\r\n\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<div><p><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/kawasaki-plc-08.zip\">\u015aci\u0105gnij gotowe pliki z przyk\u0142adami u\u017cytymi w tym artykule<\/a>.<\/p>\n<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\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\">Modyfikacja programu robota<\/h2>\n\n\n\n<p>Program w kontrolerze robota zosta\u0142, zgodnie z opisem wy\u017cej, podzielony na dwa etapy: przygotowanie danych a nast\u0119pnie wys\u0142anie. Zacznijmy od przygotowania danych do wys\u0142ania, b\u0119dzie to dodatkowy podprogram. Dzi\u0119ki temu \u0142atwo b\u0119dzie zdefiniowa\u0107 tre\u015b\u0107 ci\u0105gu znak\u00f3w oraz jego indeks.<\/p>\n\n\n\n<p>Program b\u0119dzie przyjmowa\u0142 dwa parametry: przesy\u0142any ci\u0105g znak\u00f3w oraz ID przesy\u0142anych informacji. W programie ci\u0105g znak\u00f3w b\u0119dzie dzielony na sekwencje, je\u017celi przekracza d\u0142ugo\u015b\u0107 pojedynczej informacji, kt\u00f3ra w tym przypadku wynosi 16 bajt\u00f3w\/znak\u00f3w, a nast\u0119pnie informacje przepisywane s\u0105 do odpowiedniego ci\u0105gu znak\u00f3w. Ca\u0142a procedura wykorzystuje funkcje:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>MOD \u2013 zwraca reszt\u0119 z dzielenia, dzi\u0119ki temu wiadomo czy wysy\u0142a\u0107 dodatkow\u0105 sekwencj\u0119 (nawet je\u017celi jest nie pe\u0142na),<\/li>\n\n\n\n<li>LEN \u2013 zwraca d\u0142ugo\u015b\u0107 ci\u0105gu znak\u00f3w w postaci liczby ca\u0142kowitej,<\/li>\n\n\n\n<li>MID \u2013 zwraca zdefiniowan\u0105 cz\u0119\u015b\u0107 ca\u0142ego ci\u0105gu znak\u00f3w, w tym przypadku zwraca kolejne 16 znak\u00f3w, umo\u017cliwiaj\u0105c podzia\u0142 na sekwencje.<\/li>\n<\/ul>\n\n\n\n<p>Zastosowany algorytm znajduje si\u0119 poni\u017cej:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>.PROGRAM Send_string (.$string_to_send,.ID_data) ;\n  ;WAIT Stat_sending_string==FALSE ; Oczekiwanie czy nie sa wysy\u0142ane inne dane w tym momencie\nIF LEN (.$string_to_send) MOD 16 &gt; 0 THEN ;Dividing the string for sequence (16 chars)\n    Num_seq = INT(LEN (.$string_to_send) \/ 16) + 1\n  ELSE\n    Num_seq = INT(LEN (.$string_to_send) \/ 16)\n  END\n  FOR i = 1 TO Num_seq ;przypisane do wektora kolejnych danych do sekwencji\n    $Send_String&#091;i] =\"\"\n    $Send_String&#091;i] = $MID (.$string_to_send, 16 * (i - 1) + 1, 16)\n  END\n  ID_string_data = .ID_data\n  Stat_sending_string = TRUE\n  Temp_index = 1\n.END<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W tym podprogramie przekazywane s\u0105 cztery zmienne, kt\u00f3re nale\u017cy zarezerwowa\u0107 i nie nale\u017cy ich u\u017cywa\u0107 w innych cz\u0119\u015bciach programu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>$Send_String[i]<\/strong> \u2013 wektor ci\u0105gu znak\u00f3w kt\u00f3re maj\u0105 by\u0107 przes\u0142ane \u2013 po podzieleniu co 16 znak\u00f3w,<\/li>\n\n\n\n<li><strong>Num_seq<\/strong> \u2013 liczba sekwencji przesy\u0142ana w tym ci\u0105gu znak\u00f3w<\/li>\n\n\n\n<li><strong>ID_string_data<\/strong> \u2013 zmienna liczbowa przechowuj\u0105ca index przesy\u0142anych danych<\/li>\n\n\n\n<li><strong>Stat_sending_string AND Temp_index<\/strong> \u2013 zmienne statusowe przesy\u0142ane mi\u0119dzy programami<\/li>\n<\/ul>\n\n\n\n<p>Druga cz\u0119\u015b\u0107 programu obs\u0142uguj\u0105ca wysy\u0142anie znak\u00f3w b\u0119dzie dzia\u0142a\u0107 w w\u0105tku r\u00f3wnoleg\u0142ym (PC Program) poprzednio modyfikowanym, kt\u00f3ry w momencie rozpocz\u0119cia wysy\u0142ania zapisze ka\u017cdy znak osobno i wystawi status gotowo\u015bci danych. W tym celu b\u0119dzie wykorzystywana dodatkowa funkcja:<\/p>\n\n\n\n<p><strong>ASC<\/strong> \u2013 zwraca warto\u015b\u0107 liczbow\u0105 dla przes\u0142anego znaku, zgodnie z tablic\u0105 ASCII.<\/p>\n\n\n\n<p>Ca\u0142a procedura znajduje si\u0119 poni\u017cej:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>;*****     Sending string in sequence after preparation data in \"Send_string\" prog\nIF Stat_sending_string == TRUE AND Num_seq &gt;0 AND SIG(String_ready)==FALSE AND sig(Get_string_data)==FALSE THEN ;\n      IF Temp_index==1 THEN \n        BITS ID_string_data_8, 8 = ID_string_data ; index data (1- robot name; 2- serial)\n        BITS Num_string_seq_8, 8 = Num_seq ; Number of sequence for one string \n      END\n      FOR i=0 TO 15  \n         BITS Data1_Str_8+(i*8),8= ASC($Send_String&#091;Temp_index],i+1)\n      END\n      SIGNAL String_ready  ; Ready to read by PLC\n      Temp_index=Temp_index+1\nELSE \n        IF SIG(String_ready)==TRUE AND sig(Get_string_data)==TRUE THEN \n          SIGNAL -String_ready\n          IF Temp_index==Num_seq+1 THEN \n            Stat_sending_string=FALSE ; End of sending whole sequence\n            Temp_index=0\n            Num_seq=0\n          END\n        END\nEND<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Program jest podzielony na dwie cz\u0119\u015bci. W pierwszej przygotowany jest indeks informacji oraz liczba przesy\u0142anych sekwencji. Nast\u0119pnie w p\u0119tli FOR na kolejnych 16 bajtach zapisywane s\u0105 znaki w kodzie ASCII. Nast\u0119pnie wystawiany jest sygna\u0142 gotowo\u015bci danych i wskazanie kolejnej sekwencji.<\/p>\n\n\n\n<p>W drugiej cz\u0119\u015bci sprawdzany jest status odczytania w sterowniku PLC, w momencie odczytania zmieniany jest status gotowo\u015bci danych oraz sprawdzany jest numer sekwencji. Je\u017celi nie ma ju\u017c kolejnej, zerowany jest parametr sekwencji i ko\u0144czy wysy\u0142anie danych, w przeciwnym razie program jest powtarzany dla kolejnej sekwencji danych.<\/p>\n\n\n\n<p>Na koniec nale\u017cy usun\u0105\u0107 lub zakomentowa\u0107 w programie <strong>autostart<\/strong> cz\u0119\u015b\u0107 programu, kt\u00f3ra poprzednio wysy\u0142a\u0142a nazw\u0119 robota i numer seryjny robota \u2013 czyli cz\u0119\u015b\u0107 programu z poradnika nr 2 w tej serii. Dodatkowo mo\u017cna doda\u0107 automat, kt\u00f3ry zawsze przy pierwszym wykonaniu programu <strong>autostart<\/strong> prze\u015ble nazw\u0119 robota i numer seryjny. Wystarczy doda\u0107 zmian\u0105 <strong>Fist_sending <\/strong>z pocz\u0105tkow\u0105 warto\u015bci\u0105 1, reszta procedury zajmie si\u0119 wys\u0142aniem danych. Niestety nie mo\u017cna wykorzysta\u0107 w programie r\u00f3wnoleg\u0142ym funkcji z program\u00f3w ruchu, dlatego poni\u017cej znajduje si\u0119 przyk\u0142ad manualnego przygotowania danych:<\/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=\"844\" height=\"610\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image4-1.png\" alt=\"\" class=\"wp-image-21912\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image4-1.png 844w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image4-1-840x607.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image4-1-768x555.png 768w\" sizes=\"auto, (max-width: 844px) 100vw, 844px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Dzi\u0119ki braku zastosowaniu TWAIT program <strong>autostart<\/strong> nie b\u0119dzie czeka\u0142 na przes\u0142anie poprzednich informacji, ale w momencie gdy tylko b\u0119dzie mo\u017cliwo\u015b\u0107, prze\u015ble obie dane do sterownika PLC.<\/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\">Modyfikacja programu sterownika PLC<\/h2>\n\n\n\n<p>1) Aby zapewni\u0107 szybk\u0105 komunikacj\u0119 i m\u00f3c przes\u0142a\u0107 wi\u0119cej informacji w kr\u00f3tszym czasie, zostanie stworzony osobny program, tylko do zarzadzania przesy\u0142aniem ci\u0105gu znak\u00f3w, kt\u00f3ry b\u0119dzie wykorzystywa\u0142 osobny w\u0105tek. Aby stworzy\u0107 nowy podprogram, nale\u017cy wybra\u0107 prawym przyciskiem myszy <strong>Application-&gt;Add Object-&gt; POU<\/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=\"726\" height=\"761\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image5-1.png\" alt=\"\" class=\"wp-image-21913\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image5-1.png 726w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image5-1-700x734.png 700w\" sizes=\"auto, (max-width: 726px) 100vw, 726px\" \/><\/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 nale\u017cy zdefiniowa\u0107 nazw\u0119, typ programu jako ST i klikn\u0105\u0107 <strong>Add<\/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=\"432\" height=\"719\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image6-1.png\" alt=\"\" class=\"wp-image-21914\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Aby ten program by\u0142 wykonywany, nale\u017cy go przypisa\u0107 do odpowiedniego w\u0105tku. W tym celu stworzymy osobny w\u0105tek, w kt\u00f3rym b\u0119dzie wykonywany ten program, proces ten przedstawiony jest w trzech krokach na kolejnych zrzutach ekranu:<\/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=\"482\" height=\"533\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image7-1.png\" alt=\"\" class=\"wp-image-21915\"\/><\/figure>\n<\/div>\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=\"1340\" height=\"871\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image8-1.png\" alt=\"\" class=\"wp-image-21916\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image8-1.png 1340w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image8-1-840x546.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image8-1-768x499.png 768w\" sizes=\"auto, (max-width: 1340px) 100vw, 1340px\" \/><\/figure>\n<\/div>\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=\"359\" height=\"705\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image9-1.png\" alt=\"\" class=\"wp-image-21917\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Kolejnym etapem jest dodanie zmiennych do stworzonego programu, pe\u0142na lista znajduje si\u0119 poni\u017cej:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>PROGRAM String_manage\nVAR\n\tstring_recieve:STRING; \n\tData_str:ARRAY&#091;1..16] OF BYTE; \n\tNum_seq: BYTE;\n\tID_data_str: BYTE;\n\tTo_Rob_data_read_str: BOOL;\n\tRob_ready_data_str: BOOL;\n\ti: BYTE;\n\ta: BYTE;\n\tData_num_seq: BYTE;\n\tUser_info:STRING;\nEND_VAR<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Nast\u0119pnie zdefiniowane zmienne nale\u017cy przypisa\u0107 do modu\u0142u komunikacyjnego (<strong>Mapping<\/strong>), aby dane odbierane zosta\u0142y wpisane do w\u0142a\u015bciwej zmiennej. W tym celu ponownie nale\u017cy wprowadzi\u0107 kilka zmian w ramce komunikacyjnej i przygotowa\u0107 miejsce. Cze\u015b\u0107 zmiennych musimy ponownie ustawi\u0107 jako typ BYTE oraz usun\u0105\u0107 zmienne z poprzedniej cz\u0119\u015bci, kt\u00f3re teraz b\u0119d\u0105 przesy\u0142ane innaczej. Zmiany nale\u017cy wprowadzi\u0107 zgodnie z przygotowanym poni\u017cej schematem:<\/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=\"1030\" height=\"576\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image10-1.png\" alt=\"\" class=\"wp-image-21918\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image10-1.png 1030w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image10-1-840x470.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image10-1-768x429.png 768w\" sizes=\"auto, (max-width: 1030px) 100vw, 1030px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Pierwszym krokiem jest zmiana typu zmiennych na BYTE:<\/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=\"809\" height=\"474\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image11.png\" alt=\"\" class=\"wp-image-21919\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image11.png 809w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image11-768x450.png 768w\" sizes=\"auto, (max-width: 809px) 100vw, 809px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Poniewa\u017c przy zmianie typu zmiennej z INT na BYTE skraca si\u0119 d\u0142ugo\u015b\u0107 ramki o jeden bajt, ramka przesunie si\u0119, a b\u0142\u0119dna liczba bajt\u00f3w spowoduje problem z komunikacj\u0105. Dlatego, poniewa\u017c zmieniamy 3 zmienne z INT na BYTE, dodane zostaj\u0105 trzy nowe zmienne. Wa\u017cne aby zmienne doda\u0107 w pierwszej cz\u0119\u015bci ramki, tam gdzie zmienne wcze\u015bniej si\u0119 znajdowa\u0142y. Na przyk\u0142ad mo\u017cna ustawi\u0107 kursor na <strong>Input2<\/strong>, nast\u0119pnie klikn\u0105\u0107 przycisk <strong>Add<\/strong> i wybra\u0107 dodanie 3 zmiennych <strong>Count<\/strong>, jak na obrazie poni\u017cej:<\/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=\"843\" height=\"457\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image12.png\" alt=\"\" class=\"wp-image-21920\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image12.png 843w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image12-840x455.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image12-768x416.png 768w\" sizes=\"auto, (max-width: 843px) 100vw, 843px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Teraz pozostaje przypisa\u0107 zmienne do odpowiedniego miejsca w ramce.<\/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=\"952\" height=\"654\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image13.png\" alt=\"\" class=\"wp-image-21921\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image13.png 952w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image13-840x577.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image13-768x528.png 768w\" sizes=\"auto, (max-width: 952px) 100vw, 952px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Dodatkowo wymieniane s\u0105 dwa bity statusowe, jeden jako wej\u015bcie do sterownika, czyli sygna\u0142, \u017ce dane s\u0105 gotowe do odczytania:<\/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=\"1035\" height=\"552\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image14.png\" alt=\"\" class=\"wp-image-21922\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image14.png 1035w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image14-840x448.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image14-768x410.png 768w\" sizes=\"auto, (max-width: 1035px) 100vw, 1035px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Oraz drugi sygna\u0142 wyj\u015bciowy, aby przes\u0142a\u0107 sygna\u0142 do robota, \u017ce aktualna sekwencja zosta\u0142a odczytana:<\/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=\"821\" height=\"205\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image15.png\" alt=\"\" class=\"wp-image-21923\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image15.png 821w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image15-768x192.png 768w\" sizes=\"auto, (max-width: 821px) 100vw, 821px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>3) Trzecim krokiem jest uzupe\u0142nienie programu, kt\u00f3ry z otrzymanych pojedynczych danych po\u0142\u0105czy je w ca\u0142y ci\u0105g znak\u00f3w. Ta cz\u0119\u015b\u0107 programu r\u00f3wnie\u017c opera si\u0119 na p\u0119tli FOR oraz funkcj\u0119 DELETE, aby wyczy\u015bci\u0107 ca\u0142y string. Pozwoli to unikn\u0105\u0107 problemu z pozosta\u0142o\u015bciami innych znak\u00f3w kt\u00f3re m\u00f3g\u0142by zosta\u0107 po poprzednich dzia\u0142aniach.<\/p>\n\n\n\n<p>Poni\u017cej znajduje si\u0119 algorytm do programu <strong>Manage_string<\/strong> odebraj\u0105cego pojedyncze znaki i zapisuj\u0105cego do odpowiedniej zmiennej: &nbsp;<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>IF Rob_ready_data_str= TRUE AND To_Rob_data_read_str= FALSE AND Num_seq&gt;0 THEN \/\/Start reading\n\tFOR a:=1 TO 16 DO\n\t\tIF Data_str&#091;a]=255 THEN \n\t\t\tstring_recieve&#091;a-1+(Data_num_seq*16)]:=32;\n\t\t\tEXIT;\n\t\tELSE \n\t\t\tstring_recieve&#091;a-1+(Data_num_seq*16)]:=Data_str&#091;a];\n\t\tEND_IF\n\tEND_FOR\n\tData_num_seq:=Data_num_seq+1; \n\tTo_Rob_data_read_str:=TRUE; \n\tIF Data_num_seq=Num_seq THEN\n\t\tData_num_seq:=0; \/\/End of transmision\n\t\t\/\/Assign recieve string to right variable: \n\t\tCASE ID_data_str OF \n\t\t\t1: \/\/Robot name \n\t\t\t\tGVL.Rob_Name:='';\n\t\t\t\tGVL.Rob_Name:=string_recieve;\n\t\t\t\tstring_recieve:=DELETE(string_recieve,LEN(string_recieve),0); \/\/clear string\n\t\t\t2: \/\/Serial number\n\t\t\t\tGVL.Rob_serial:='';\n\t\t\t\tGVL.Rob_serial:=string_recieve;\t\n\t\t\t\tstring_recieve:=DELETE(string_recieve,LEN(string_recieve),0); \/\/clear string\n\t\t\t3: \/\/ User data \n\t\t\t\tUser_info:=DELETE(User_info,LEN(User_info),0);\n\t\t\t\tUser_info:=string_recieve;\t\n\t\t\t\tstring_recieve:=DELETE(string_recieve,LEN(string_recieve),0);\n\t\t\tELSE \n\t\t\t\t\/\/Nothing\n\t\tEND_CASE\n \tEND_IF \t\nELSIF Rob_ready_data_str= FALSE  AND To_Rob_data_read_str= TRUE\tTHEN \n\tTo_Rob_data_read_str:= FALSE;\t\t\t\t\nEND_IF<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Procedura w sterowniku PLC jest r\u00f3wnie\u017c podzielona na dwa etapy, pierwsza cz\u0119\u015b\u0107 to odczytanie wszystkich liczb. Jednocze\u015bnie nast\u0119puje dekodowanie wed\u0142ug kodu ASCII i \u0142\u0105czenie znak\u00f3w w ci\u0105g do zmiennej typu STRING. Druga cz\u0119\u015b\u0107 to weryfikacja numeru ID informacji i przypisane odczytanego ci\u0105gu znak\u00f3w do zmiennej.<\/p>\n\n\n\n<p>Odczytywane znaki od razu zosta\u0142y przypisane do poprzednich danych, wi\u0119c bez zmiany poprzedniego programu wszystkie warto\u015bci s\u0105 prawid\u0142owo przypisane. Dodatkowo jest przygotowana nowa zmienna <strong>User_info<\/strong>, w kt\u00f3rej u\u017cytkownik mo\u017ce umie\u015bci\u0107 sw\u00f3j w\u0142asny ci\u0105g znak\u00f3w. Aby wy\u015bwietli\u0107 przesy\u0142an\u0105 przez u\u017cytkownika informacj\u0119, dodane zostanie nowe pole tekstowe na ekranie g\u0142\u00f3wnym, kt\u00f3re wy\u015bwietli przes\u0142any ci\u0105g znak\u00f3w i pozwoli na szybki test komunikacji.<\/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=\"1543\" height=\"693\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image16.png\" alt=\"\" class=\"wp-image-21924\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image16.png 1543w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image16-840x377.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image16-768x345.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image16-1536x690.png 1536w\" sizes=\"auto, (max-width: 1543px) 100vw, 1543px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Dzia\u0142aj\u0105ca aplikacja<\/h2>\n\n\n\n<p>Aby wyzwoli\u0107 wysy\u0142anie danych nale\u017cy wykorzysta\u0107 wcze\u015bniej przygotowany podprogram <strong>Send_string<\/strong> wraz z parametrami. Przyk\u0142ad u\u017cycia wys\u0142ania z robota w\u0142asnego komunikatu:<\/p>\n\n\n\n<p><strong>CALL Send_string(\u201cText to send to PLC\u201d,3)<\/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=\"903\" height=\"543\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image17.png\" alt=\"\" class=\"wp-image-21925\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image17.png 903w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image17-840x505.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/image17-768x462.png 768w\" sizes=\"auto, (max-width: 903px) 100vw, 903px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>U\u017cywaj\u0105c tego polecenia w programie mo\u017cna \u0142atwo wys\u0142a\u0107 informacje do sterownika PLC. Aby wys\u0142a\u0107 nazw\u0119 robota mo\u017cna u\u017cy\u0107:<\/p>\n\n\n\n<p><strong>CALL Send_string($SYSDATA(ZROB.NAME),1)<\/strong><\/p>\n\n\n\n<div class=\"link-box d-flex align-items-center\">\r\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/themes\/poradnik\/public\/images\/icons\/icon-link.svg\" alt=\"arrow\" class=\"ml-3\">\r\n\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<div><p><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/01\/kawasaki-plc-08.zip\">\u015aci\u0105gnij gotowe pliki z przyk\u0142adami u\u017cytymi w tym artykule<\/a>.<\/p>\n<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\n\n\n\n<p><a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/odbieranie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-9\/\">W kolejnej cz\u0119\u015bci<\/a> dowiesz si\u0119, jak odebra\u0107 zmienn\u0105 tekstow\u0105 i wykorzysta\u0107 j\u0105 w programie robota, np. odczyta\u0107 nazw\u0119 programu do wykonania lub inny komunikat do kontroli pracy robota.<\/p>\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=\"69d393dd9ea65\">\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=\"0ae94f73a2\"\/>\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=\"69d393dd9ea65\"] 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\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tej cz\u0119\u015bci poradnika poka\u017cemy, jak wys\u0142a\u0107 z robota zmienn\u0105 tekstow\u0105 za pomoc\u0105 funkcji, w postaci ci\u0105gu znak\u00f3w w kodzie ASCII, a nast\u0119pnie odczyta\u0107 znak po znaku w PLC.<\/p>\n","protected":false},"author":45,"featured_media":15549,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[234],"tags":[139,22,59,56],"class_list":["post-21908","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatyka-w-praktyce","tag-astraada-one","tag-kawasaki","tag-kontrolery-kawasaki","tag-roboty-kawasaki"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego | Wymiana danych pomi\u0119dzy robotem Kawasaki a sterownikiem PLC, odc. 8 | Poradnik Automatyka<\/title>\r\n<meta name=\"description\" content=\"Dowiedz si\u0119, jak wys\u0142a\u0107 z robota zmienn\u0105 tekstow\u0105 za pomoc\u0105 funkcji, w postaci ci\u0105gu znak\u00f3w w kodzie ASCII.\" \/>\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\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/\" \/>\r\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego | Wymiana danych pomi\u0119dzy robotem Kawasaki a sterownikiem PLC, odc. 8 | Poradnik Automatyka\" \/>\r\n<meta property=\"og:description\" content=\"Dowiedz si\u0119, jak wys\u0142a\u0107 z robota zmienn\u0105 tekstow\u0105 za pomoc\u0105 funkcji, w postaci ci\u0105gu znak\u00f3w w kodzie ASCII.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Poradnik Automatyka\" \/>\r\n<meta property=\"article:published_time\" content=\"2025-01-06T20:03:53+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2025-03-11T17:58:14+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image1.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1386\" \/>\r\n\t<meta property=\"og:image:height\" content=\"738\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"Konrad Sendrowicz\" \/>\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=\"Konrad Sendrowicz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"31 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\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/\"},\"author\":{\"name\":\"Konrad Sendrowicz\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/e7fc017b5877f0cb38f4b41449057c81\"},\"headline\":\"Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego | Wymiana danych pomi\u0119dzy robotem Kawasaki a sterownikiem PLC, odc. 8\",\"datePublished\":\"2025-01-06T20:03:53+00:00\",\"dateModified\":\"2025-03-11T17:58:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/\"},\"wordCount\":1521,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image1.jpg\",\"keywords\":[\"Astraada One\",\"Kawasaki\",\"Kontrolery Kawasaki\",\"Roboty Kawasaki\"],\"articleSection\":[\"Automatyka w praktyce\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/\",\"name\":\"Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego | Wymiana danych pomi\u0119dzy robotem Kawasaki a sterownikiem PLC, odc. 8 | Poradnik Automatyka\",\"isPartOf\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image1.jpg\",\"datePublished\":\"2025-01-06T20:03:53+00:00\",\"dateModified\":\"2025-03-11T17:58:14+00:00\",\"description\":\"Dowiedz si\u0119, jak wys\u0142a\u0107 z robota zmienn\u0105 tekstow\u0105 za pomoc\u0105 funkcji, w postaci ci\u0105gu znak\u00f3w w kodzie ASCII.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#primaryimage\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image1.jpg\",\"contentUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image1.jpg\",\"width\":1386,\"height\":738},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Automatyka w praktyce\",\"item\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/category\/automatyka-w-praktyce\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego | Wymiana danych pomi\u0119dzy robotem Kawasaki a sterownikiem PLC, odc. 8\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/\",\"name\":\"Poradnik Automatyka\",\"description\":\"Poradnik Automatyka to przydatne kursy, u\u017cyteczne artyku\u0142y i merytoryczne webinary dla ka\u017cdego automatyka i elektryka.\",\"publisher\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization\",\"name\":\"ASTOR\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png\",\"contentUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png\",\"width\":3322,\"height\":1078,\"caption\":\"ASTOR\"},\"image\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/e7fc017b5877f0cb38f4b41449057c81\",\"name\":\"Konrad Sendrowicz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/04\/K.-Sendrowicz.jpg\",\"contentUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/04\/K.-Sendrowicz.jpg\",\"caption\":\"Konrad Sendrowicz\"},\"description\":\"Absolwent Politechniki Krakowskiej na kierunki Automatyka i Robotyka. Na co dzie\u0144 in\u017cynier wsparcia aplikacji zrobotyzowanych na obszarze Europy \u015brodkowo-wschodniej.\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/autor\/konrads\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego | Wymiana danych pomi\u0119dzy robotem Kawasaki a sterownikiem PLC, odc. 8 | Poradnik Automatyka","description":"Dowiedz si\u0119, jak wys\u0142a\u0107 z robota zmienn\u0105 tekstow\u0105 za pomoc\u0105 funkcji, w postaci ci\u0105gu znak\u00f3w w kodzie ASCII.","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\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/","og_locale":"pl_PL","og_type":"article","og_title":"Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego | Wymiana danych pomi\u0119dzy robotem Kawasaki a sterownikiem PLC, odc. 8 | Poradnik Automatyka","og_description":"Dowiedz si\u0119, jak wys\u0142a\u0107 z robota zmienn\u0105 tekstow\u0105 za pomoc\u0105 funkcji, w postaci ci\u0105gu znak\u00f3w w kodzie ASCII.","og_url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/","og_site_name":"Poradnik Automatyka","article_published_time":"2025-01-06T20:03:53+00:00","article_modified_time":"2025-03-11T17:58:14+00:00","og_image":[{"width":1386,"height":738,"url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image1.jpg","type":"image\/jpeg"}],"author":"Konrad Sendrowicz","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Konrad Sendrowicz","Szacowany czas czytania":"31 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#article","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/"},"author":{"name":"Konrad Sendrowicz","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/e7fc017b5877f0cb38f4b41449057c81"},"headline":"Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego | Wymiana danych pomi\u0119dzy robotem Kawasaki a sterownikiem PLC, odc. 8","datePublished":"2025-01-06T20:03:53+00:00","dateModified":"2025-03-11T17:58:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/"},"wordCount":1521,"commentCount":0,"publisher":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image1.jpg","keywords":["Astraada One","Kawasaki","Kontrolery Kawasaki","Roboty Kawasaki"],"articleSection":["Automatyka w praktyce"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/","name":"Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego | Wymiana danych pomi\u0119dzy robotem Kawasaki a sterownikiem PLC, odc. 8 | Poradnik Automatyka","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#primaryimage"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image1.jpg","datePublished":"2025-01-06T20:03:53+00:00","dateModified":"2025-03-11T17:58:14+00:00","description":"Dowiedz si\u0119, jak wys\u0142a\u0107 z robota zmienn\u0105 tekstow\u0105 za pomoc\u0105 funkcji, w postaci ci\u0105gu znak\u00f3w w kodzie ASCII.","breadcrumb":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#primaryimage","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image1.jpg","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/02\/image1.jpg","width":1386,"height":738},{"@type":"BreadcrumbList","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wysylanie-zmiennej-tekstowej-za-posrednictwem-standardowego-protokolu-komunikacyjnego-wymiana-danych-pomiedzy-robotem-kawasaki-a-sterownikiem-plc-odc-8\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Automatyka w praktyce","item":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/category\/automatyka-w-praktyce\/"},{"@type":"ListItem","position":2,"name":"Wysy\u0142anie zmiennej tekstowej za po\u015brednictwem standardowego protoko\u0142u komunikacyjnego | Wymiana danych pomi\u0119dzy robotem Kawasaki a sterownikiem PLC, odc. 8"}]},{"@type":"WebSite","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/","name":"Poradnik Automatyka","description":"Poradnik Automatyka to przydatne kursy, u\u017cyteczne artyku\u0142y i merytoryczne webinary dla ka\u017cdego automatyka i elektryka.","publisher":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization","name":"ASTOR","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png","width":3322,"height":1078,"caption":"ASTOR"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/e7fc017b5877f0cb38f4b41449057c81","name":"Konrad Sendrowicz","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/image\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/04\/K.-Sendrowicz.jpg","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2023\/04\/K.-Sendrowicz.jpg","caption":"Konrad Sendrowicz"},"description":"Absolwent Politechniki Krakowskiej na kierunki Automatyka i Robotyka. Na co dzie\u0144 in\u017cynier wsparcia aplikacji zrobotyzowanych na obszarze Europy \u015brodkowo-wschodniej.","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/autor\/konrads\/"}]}},"_links":{"self":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/21908","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\/45"}],"replies":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/comments?post=21908"}],"version-history":[{"count":3,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/21908\/revisions"}],"predecessor-version":[{"id":22413,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/21908\/revisions\/22413"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media\/15549"}],"wp:attachment":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media?parent=21908"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/categories?post=21908"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/tags?post=21908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}