{"id":22754,"date":"2025-05-27T18:12:02","date_gmt":"2025-05-27T16:12:02","guid":{"rendered":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?p=22754"},"modified":"2025-05-27T18:12:03","modified_gmt":"2025-05-27T16:12:03","slug":"polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics","status":"publish","type":"post","link":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/","title":{"rendered":"Po\u0142\u0105czenie terminalowe sterownika PLC Astraada One z robotem Kawasaki Robotics"},"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 po\u0142\u0105czy\u0107 sterownik PLC Astraada One i robota Kawasaki Robotics za po\u015brednictwem protoko\u0142u TPC\/IP,<\/li>\n<li>jak przygotowa\u0107 program obs\u0142uguj\u0105cy komunikacj\u0119 dla sterownika Astraada One.<\/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 nowoczesnych systemach automatyki bardzo cz\u0119sto integruje si\u0119 r\u00f3\u017cne urz\u0105dzenia oraz systemy do zarz\u0105dzania procesem. Typowym przyk\u0142adem mo\u017ce by\u0107 komunikacja pomi\u0119dzy sterownikiem PLC a robotem przemys\u0142owym.<\/p>\n\n\n\n<p>W tym artykule poka\u017cemy, jak w praktyce realizowa\u0107 po\u0142\u0105czenie pomi\u0119dzy sterownikiem PLC Astraada One, programowanym w \u015brodowisku Codesys, a robotem Kawasaki Robotics, z wykorzystaniem protoko\u0142u TCP. Takie rozwi\u0105zanie otwiera szerokie mo\u017cliwo\u015bci integracyjne \u2013 od przesy\u0142ania polece\u0144 po pe\u0142n\u0105 synchronizacj\u0119 dzia\u0142a\u0144 maszyny i robota, a jednocze\u015bnie niweluje ograniczenia innych protoko\u0142\u00f3w komunikacyjnych.<\/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\">Protok\u00f3\u0142 TCP\/IP<\/h2>\n\n\n\n<p>Kluczowym elementem takiej integracji jest komunikacja sieciowa, a jednym z najcz\u0119\u015bciej stosowanych standard\u00f3w w tym zakresie jest protok\u00f3\u0142 TCP\/IP.<\/p>\n\n\n\n<p>TCP\/IP (Transmission Control Protocol \/ Internet Protocol) to zestaw protoko\u0142\u00f3w komunikacyjnych u\u017cywanych do przesy\u0142ania danych w sieciach komputerowych \u2013 w tym r\u00f3wnie\u017c przemys\u0142owych. Dzia\u0142a w modelu warstwowym, gdzie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>IP odpowiada za adresowanie i dostarczanie pakiet\u00f3w do odpowiedniego urz\u0105dzenia w sieci,<\/li>\n\n\n\n<li>TCP dba o niezawodno\u015b\u0107 transmisji: kontroluje kolejno\u015b\u0107 danych, potwierdzenia odbioru, retransmisje w przypadku utraty pakiet\u00f3w.<\/li>\n<\/ul>\n\n\n\n<p>W automatyce przemys\u0142owej protok\u00f3\u0142 TCP\/IP wykorzystywany jest m.in. w komunikacji mi\u0119dzy sterownikami, komputerami przemys\u0142owymi, robotami, systemami SCADA oraz urz\u0105dzeniami IoT.<\/p>\n\n\n\n<p>Zalety TCP\/IP w systemach automatyki:<\/p>\n\n\n\n<p>1. Powszechno\u015b\u0107 i kompatybilno\u015b\u0107.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Standard obs\u0142ugiwany jest przez wi\u0119kszo\u015b\u0107 urz\u0105dze\u0144 na rynku \u2013 od sterownik\u00f3w PLC po roboty przemys\u0142owe i serwery.<\/li>\n\n\n\n<li>Umo\u017cliwia \u0142\u0105czenie urz\u0105dze\u0144 r\u00f3\u017cnych producent\u00f3w bez potrzeby stosowania specjalnych konwerter\u00f3w.<\/li>\n<\/ul>\n\n\n\n<p>2. Niezawodno\u015b\u0107 transmisji.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>TCP gwarantuje dostarczenie danych w odpowiedniej kolejno\u015bci i bez b\u0142\u0119d\u00f3w.<\/li>\n\n\n\n<li>Mechanizmy retransmisji oraz potwierdze\u0144 (ACK) zapewniaj\u0105 bezpiecze\u0144stwo komunikacji nawet w trudnych warunkach sieciowych.<\/li>\n<\/ul>\n\n\n\n<p>3. \u0141atwo\u015b\u0107 testowania i diagnostyki.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Istnieje wiele narz\u0119dzi (np. Wireshark, netcat, Packet Sender), kt\u00f3re pozwalaj\u0105 monitorowa\u0107 komunikacj\u0119 w czasie rzeczywistym.<\/li>\n\n\n\n<li>U\u0142atwia analiz\u0119 b\u0142\u0119d\u00f3w i testowanie nowych rozwi\u0105za\u0144.<\/li>\n<\/ul>\n\n\n\n<p>W przypadku integracji sterownika PLC z robotem przemys\u0142owym \u2013 np. Kawasaki Robotics \u2013 TCP\/IP sprawdza si\u0119 znakomicie jako warstwa transportowa:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>umo\u017cliwia przesy\u0142anie komend steruj\u0105cych, parametr\u00f3w procesu lub wsp\u00f3\u0142rz\u0119dnych trajektorii robota,<\/li>\n\n\n\n<li>zapewnia sta\u0142\u0105 synchronizacj\u0119 dzia\u0142a\u0144 PLC i robota, co ma kluczowe znaczenie np. przy podawaniu detalu lub zsynchronizowanym ruchu,<\/li>\n\n\n\n<li>dzi\u0119ki standardowemu podej\u015bciu robot mo\u017ce by\u0107 sterowany nie tylko z poziomu PLC, ale r\u00f3wnie\u017c z innych system\u00f3w \u2013 np. wizji maszynowej, aplikacji desktopowej, chmury.<\/li>\n<\/ul>\n\n\n\n<p>Co wi\u0119cej, komunikacja TCP mo\u017ce by\u0107 zrealizowana bez konieczno\u015bci zakupu dodatkowych licencji czy modu\u0142\u00f3w \u2013 wystarczy dost\u0119p do gniazda Ethernet oraz podstawowe funkcje socketowe w oprogramowaniu sterownika i robota.<\/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\">Konfiguracja krok po kroku w programie Codesys<\/h2>\n\n\n\n<p>W \u015brodowisku Codesys dost\u0119pna jest biblioteka <strong>SysSocket<\/strong>, kt\u00f3ra zawiera funkcje do zdefiniowania parametr\u00f3w komunikacji, a tak\u017ce funkcje do wysy\u0142ania i odbierania wiadomo\u015bci.<\/p>\n\n\n\n<p>Pierwszym krokiem jest dodanie biblioteki do tworzonego programu. Nale\u017cy otworzy\u0107 zak\u0142adk\u0119 <strong>SysSocket<\/strong> i klikn\u0105\u0107 przycisk <strong>Add Library<\/strong>, a nast\u0119pnie znale\u017a\u0107 <strong>SysSocket<\/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=\"626\" height=\"474\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image1-1.png\" alt=\"\" class=\"wp-image-22759\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Biblioteka SysSocket pozwala na wykorzystanie funkcji do obs\u0142ugi wszystkich typ\u00f3w po\u0142\u0105cze\u0144, w tym przypadku b\u0119dzie wykorzystane jedynie pi\u0119\u0107 z nich, kt\u00f3re odpowiadaj\u0105 5 etapom po\u0142\u0105czenia:<\/p>\n\n\n\n<p>1. <strong>Syssockcreate<\/strong>: tworzenie gniazda komunikacyjnego w sterowniku PLC na podstawie zdefiniowanych parametr\u00f3w. Funkcja zwraca wska\u017anik gniazda (socket handle).<\/p>\n\n\n\n<p>2. <strong>Syssockconnect<\/strong>: po\u0142\u0105czenie stworzonego w poprzednim kroku gniazda z serwerem TCP i synchronizacja po\u0142\u0105czenia. Funkcja zwraca status po\u0142\u0105czenia.<\/p>\n\n\n\n<p>3. <strong>Syssocksend<\/strong>: wysy\u0142anie danych (zapytania) do serwera. Wymaga przygotowania ci\u0105gu znak\u00f3w do wys\u0142ania.<\/p>\n\n\n\n<p>4. <strong>Syssockrecv<\/strong>: odbieranie danych od serwera. Po wys\u0142aniu danych klient, w tym przypadku PLC, nas\u0142uchuje odpowiedzi.<\/p>\n\n\n\n<p>5. <strong>Syssockclose<\/strong>: zamkni\u0119cie po\u0142\u0105czenia i gniazda. Na koniec dzia\u0142ania programu lub gdy potrzeba jest prze\u0142\u0105czenia si\u0119 do innego gniazda, nale\u017cy wykona\u0107 zamkni\u0119cie. Mo\u017cna to robi\u0107 po ka\u017cdym przes\u0142aniu informacji, aby nie blokowa\u0107 po\u0142\u0105czenia.<\/p>\n\n\n\n<p>Struktura ca\u0142ego programu b\u0119dzie wygl\u0105da\u0107 jak na schemacie 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=\"1085\" height=\"226\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image2.png\" alt=\"\" class=\"wp-image-22760\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image2.png 1085w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image2-840x175.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image2-768x160.png 768w\" sizes=\"auto, (max-width: 1085px) 100vw, 1085px\" \/><\/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 dodanie listy zmiennych do obs\u0142ugi komunikacji, lista zostanie podzielona na 6 cz\u0119\u015bci, dla ka\u017cdego etapu oraz zmienne og\u00f3lne.<\/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 Terminal_Kawasaki\nVAR \n\/\/General variable\n\tiStep : INT := 0; \/\/ Step of process sequence\n\txStart : BOOL; \/\/start communication\n\txRecvBytes : BOOL; \/\/ state of receive data\n\txSendData: BOOL; \/\/start sending data\n\txCloseSocket:BOOL; \/\/close communication\n\tEnd_of_line:STRING; \/\/additional sign, dedicated for Kawasaki Robotics\n\/\/Create socket\t\n\tiecSocketId : syssocket_interfaces.RTS_IEC_HANDLE; \/\/ socket handle\n\tiecCreateResult : syssocket_interfaces.RTS_IEC_RESULT; \/\/ socket create result\n\tipAddr : syssocket.SOCKADDRESS; \/\/ soket address\n\/\/Connect to server \n\tsIpAddress : STRING:='127.0.0.1'; \/\/ server ip address\n\twPort : WORD:=9105; \/\/ server listening port\n\tiecConnectResult : syssocket_interfaces.RTS_IEC_RESULT;  \/\/ socket connect result\n\/\/Send data\n\tsSending_buffor:STRING; \/\/ send data buffer\n\txiSentBytes : __XINT;  \/\/ number of bytes sent\n\tiecSendResult : syssocket_interfaces.RTS_IEC_RESULT; \/\/ send result\n\/\/Receive data \t\n\tsDataRec : STRING(1524); \/\/ receive data buffer\n\txiRecBytes : __XINT; \/\/ number of bytes recieved\n\tiecSRecResult : syssocket_interfaces.RTS_IEC_RESULT; \/\/ receive result\n\/\/Close socket\t\n\tiecCloseResult : syssocket_interfaces.RTS_IEC_RESULT; \/\/ close result\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>Program b\u0119dzie podzielony na kroki, by w \u0142atwy spos\u00f3b zarz\u0105dza\u0107 procesem komunikacji, do tego zostanie wykorzystana struktura CASE, szkielet programu b\u0119dzie wygl\u0105da\u0142 nast\u0119puj\u0105co:<\/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>CASE iStep OF \n\t0: \n\t\/\/preparing data \n\t1:\n\t\/\/ create the socket\n\t2: \n\t\/\/ connect to socket server\n\t3: \n\t\/\/ send date\n\t4: \n\t\/\/receive date\n\t5: \n\t\/\/ close socket\nEND_CASE<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W kroku <em>zero<\/em> zostan\u0105 przygotowane parametry to stworzenia gniazda i nawi\u0105zania komunikacji. Nale\u017cy zdefiniowa\u0107 adres IP, port oraz rodzin\u0119 adres\u00f3w serwera. W tym celu zostanie wykorzystana gotowa funkcja z biblioteki, kt\u00f3ra w \u0142atwy spos\u00f3b wype\u0142ni wymagan\u0105 struktur\u0119 do po\u0142\u0105czenia. Dodatkowo w tym kroku nale\u017cy sprawdzi\u0107 stan rozpocz\u0119cia procesu. &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>0: \n\t\/\/preparing data \n\tIF xStart THEN\n\t\tsyssocket.SysSockInetAddr(sIpAddress, ADR(ipAddr.sin_addr)); \n\t\tipAddr.sin_family := syssocket.SOCKET_AF_INET; \n\t\tipAddr.sin_port := syssocket.SysSockHtons(wPort);\n\t\tiStep:=1;\n\tEND_IF<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W pierwszym kroku zostanie stworzone gniazdo (socket) na sterowniku PLC. Je\u017celi zwr\u00f3cony zostanie status b\u0142\u0119du, proces wr\u00f3ci do pierwszego kroku i b\u0119dzie oczekiwa\u0142 na ponownie uruchomienie zmienn\u0105 <em>xStart<\/em>.<\/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>1:\n\t\/\/ create the socket\n\tiecSocketId:=syssocket.SysSockCreate(syssocket.SOCKET_AF_INET,syssocket.SOCKET_STREAM, syssocket.SOCKET_IPPROTO_IP, ADR(iecCreateResult));\n\tIF iecSocketId = syssocket_interfaces.RTS_INVALID_HANDLE THEN\n\t\txStart := FALSE;\n\t\tiStep := 0;\n\tELSE\n\t\tiStep := 2;\n\tEND_IF<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Krok drugi to po\u0142\u0105czenie sterownika do serwera, w tym przypadku kontrolera robota Kawasaki.<\/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>2: \n\t\/\/ connect to socket server\n\tiecConnectResult := syssocket.SysSockConnect(iecSocketId, ADR(ipAddr), SIZEOF(ipAddr)); \n\tiStep := 3;\n\txRecvBytes:=TRUE;<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Krok trzeci obs\u0142uguje wysy\u0142anie danych do serwera oraz automatycznie wyzwala odczyt danych odbieranych od serwera. Dlatego b\u0119d\u0105 tutaj dwa warunki, kt\u00f3re rozpoczn\u0105 proces wysy\u0142ania lub zako\u0144cz\u0105 proces i przejd\u0105 do kolejnego kroku.<\/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>3:\n\t\/\/ send data\n\tIF xSendData =TRUE THEN\n\t\tsEnd_of_line&#091;0]:=16#0A;\n\t\tsSending_buffor:=CONCAT(sSending_buffor, End_of_line);\n\t\txiSentBytes := syssocket.SysSockSend(iecSocketId,ADR(sSending_buffor),LEN(sSending_buffor), 0,ADR(iecSendResult));\n\t\txRecvBytes := TRUE;\n\t\txSendData:=FALSE; \n\tELSIF xCloseSocket =TRUE THEN \n\t\tiStep := 5;\n\t\txCloseSocket:=FALSE; \n\tEND_IF<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Krok czwarty nie b\u0119dzie znajdowa\u0142 si\u0119 strukturze CASE, tylko poza ni\u0105, aby odczyt m\u00f3g\u0142 dzia\u0142a\u0107 niezale\u017cnie. Dlatego krok czwarty zostanie pusty, a ca\u0142o\u015b\u0107 funkcji odczytu, zostanie dodana poni\u017cej. Odebrana wiadomo\u015b\u0107 zostanie przypisana do zmiennej <em>sDataRec<\/em>.<\/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 xRecvBytes AND xStart THEN\n\txiRecBytes := syssocket.SysSockRecvFrom(iecSocketId, ADR(sDataRec), SIZEOF(sDataRec), 0, ADR(ipAddr), SIZEOF(ipAddr), ADR(iecSRecResult)); \n\txRecvBytes := FALSE; \n\tsSending_buffor:='';\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>Ostatnim krokiem jest zamkni\u0119cie komunikacji i gniazda TCP.<\/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>5:\n\t\/\/ close socket\n\tIF NOT xiRecvBytes THEN\n\t\tiecCloseResult := syssocket.SysSockClose(iecSocketId);\n\t\txStart := FALSE;\n\t\tiStep := 0;\t\n\tEND_IF<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Przygotowany program jest gotowy do dzia\u0142ania i wymaga jedynie ustawienia poprawnego adresu IP, portu oraz rozpocz\u0119cia komunikacji. Aby wys\u0142a\u0107 informacj\u0119, nale\u017cy wpisa\u0107 ci\u0105g znak\u00f3w do zmiennej <em>sSending_buffor<\/em>, a nast\u0119pnie zmieni\u0107 warto\u015b\u0107 zmiennej <em>xSendData<\/em> na TRUE i zatwierdzi\u0107 przyciskami CTRL+F7.<\/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\">Dostosowanie programu do komunikacji z Kawasaki Robotics<\/h2>\n\n\n\n<p>Do komunikacji z serwerem Kawasaki Robotics nale\u017cy wprowadzi\u0107 drobne zmiany i dostosowa\u0107 wielko\u015b\u0107 bufor\u00f3w. Kawasaki przesy\u0142a d\u0142ugie ci\u0105gi znak\u00f3w, kt\u00f3re mog\u0105 przekroczy\u0107 domy\u015bln\u0105 d\u0142ugo\u015b\u0107 zmiennych lub wyd\u0142u\u017cy\u0107 czas oczekiwania, aby ca\u0142a wiadomo\u015b\u0107 dotar\u0142a do sterownika PLC.<\/p>\n\n\n\n<p>Pierwszym elementem b\u0119dzie dodane drobnego op\u00f3\u017anienia w odczytywaniu wiadomo\u015bci, w tym celu dodany zostanie timer z kr\u00f3tkim czasem wyzwolenia. Dodatkowe zmienna:<\/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>VAR\n\ttimer: Standard.TON := (PT := TIME#50MS);\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>A w programie zostanie dodany timer przed struktur\u0105 CASE, dzi\u0119ki czemu w momencie wywo\u0142ania odczytu sterownik poczeka 50 ms.<\/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>timer();\n\nIF timer.Q THEN\n\txRecvBytes := TRUE;\n\ttimer.IN := FALSE;\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>Nast\u0119pnie wsz\u0119dzie w programie, gdzie by\u0142o bezpo\u015brednie uruchomienie komunikacji, nale\u017cy zamieni\u0107 na wyzwolenie timera w taki spos\u00f3b:<\/p>\n\n\n\n<p><em><s>xRecvBytes := TRUE;<\/s><\/em><em> <\/em><em>&#8211;&gt;<\/em><em> timer.IN := TRUE;<\/em><\/p>\n\n\n\n<p>Te kroki pozwol\u0105 sterownikowi niezale\u017cnie od po\u0142\u0105czonego kontrolera czy symulatora na oczytanie pe\u0142nej informacji.<\/p>\n\n\n\n<p>Aby obs\u0142u\u017cy\u0107 d\u0142ugie ci\u0105gi znak\u00f3w wysy\u0142ane z robota Kawasaki Robotics, zostanie dodana nowa zmienna do przechowania odebranego ci\u0105gu znak\u00f3w oraz prosta wizualizacja do obs\u0142ugi komunikacji.<\/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>VAR\n\tsReceive_message:STRING(1524); \n\tiCopyBuffer: DINT;\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 w programie w sekcji odbioru informacji nale\u017cy doda\u0107 linijk\u0119 kodu, obs\u0142uguj\u0105c\u0105 skopiowanie odebranej wiadomo\u015bci do zmiennej, kt\u00f3ra nast\u0119pnie zostanie wy\u015bwietlona. W tym celu najpierw zostanie wyczyszczony bufor, a nast\u0119pnie skopiowana ca\u0142a d\u0142ugo\u015b\u0107 odebranego ci\u0105gu znak\u00f3w.<\/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>sReceive_message:= standard.DELETE(STR:= sReceive_message, LEN:= 1524, POS:= 1);\n\ncopyBuffer:= Stu.StrCpyA(pBuffer:= ADR(sReceive_message), iBufferSize:= TO_DINT(xiRecBytes)+1, pStr:= ADR(sDataRec));<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Je\u017celi po dodaniu tych linii kodu pojawiaj\u0105 si\u0119 b\u0142\u0119dy w kompilatorze, oznacza to, \u017ce nale\u017cy doda\u0107 bibliotek\u0119 obs\u0142uguj\u0105c\u0105 d\u0142ugie ci\u0105gi znak\u00f3w, czyli <strong>StringUtils<\/strong>, w taki sam spos\u00f3b, jak w punkcie pierwszym.<\/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\">Wizualizacja<\/h2>\n\n\n\n<p>Ostatnim krokiem b\u0119dzie dodanie prostej wizualizacji do obs\u0142ugi komunikacji. W nowym oknie wizualizacji zostanie dodane pole tekstowe, w kt\u00f3rym zostanie wy\u015bwietlona aktualna odpowied\u017a z kontrolera robota:<\/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=\"1618\" height=\"637\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image3-1.png\" alt=\"\" class=\"wp-image-22762\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image3-1.png 1618w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image3-1-840x331.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image3-1-768x302.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image3-1-1536x605.png 1536w\" sizes=\"auto, (max-width: 1618px) 100vw, 1618px\" \/><\/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 dodaj 3 przyciski kt\u00f3re rozpoczn\u0105 komunikacj\u0119, zainicjuj\u0105 wysy\u0142anie oraz zako\u0144cz\u0105 komunikacj\u0119. Nale\u017cy przypisa\u0107 do nich odpowiednie zmienne.<\/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=\"1724\" height=\"687\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image4-1.png\" alt=\"\" class=\"wp-image-22763\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image4-1.png 1724w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image4-1-840x335.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image4-1-768x306.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image4-1-1536x612.png 1536w\" sizes=\"auto, (max-width: 1724px) 100vw, 1724px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Do przycisku <strong>Stop<\/strong> nale\u017cy doda\u0107 kod \u201eTerminal_Kawasaki.xCloseSocket:=TRUE;\u201d kt\u00f3ry w kroku trzecim wywo\u0142a zamkni\u0119cie si\u0119 gniazda komunikacyjnego.<\/p>\n\n\n\n<p>Natomiast przycisk <strong>Send<\/strong> powinien wywo\u0142a\u0107 wysy\u0142anie, dlatego zostanie wykorzystana funkcja <strong>Tap<\/strong> dla tego przycisku:<\/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=\"882\" height=\"153\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image5-1.png\" alt=\"\" class=\"wp-image-22765\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image5-1.png 882w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image5-1-840x146.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image5-1-768x133.png 768w\" sizes=\"auto, (max-width: 882px) 100vw, 882px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Ostatnim elementem jest pole tekstowe w kt\u00f3rym wpisywana b\u0119dzie tre\u015b\u0107 wiadomo\u015bci wysy\u0142anej do robota. Jako zmienn\u0105 nale\u017cy u\u017cy\u0107 <em>sSending_buffor<\/em>.<\/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=\"1459\" height=\"723\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image6-2.png\" alt=\"\" class=\"wp-image-22766\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image6-2.png 1459w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image6-2-840x416.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image6-2-768x381.png 768w\" sizes=\"auto, (max-width: 1459px) 100vw, 1459px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Na gotowej wizualizacji mo\u017cliwe jest uruchomienie komunikacji, zatrzymanie, wy\u015bwietlanie informacji zwrotnej oraz \u0142atwe definiowane tekstu do wys\u0142ania do kontrolera. Nale\u017cy pami\u0119ta\u0107, \u017ce przy takim po\u0142\u0105czeniu robot zawsze poprosi o zalogowanie na pocz\u0105tku, na kt\u00f3re nale\u017cy odpowiedzie\u0107 \u201eas\u201d. Po tym logowaniu mo\u017cliwa jest pe\u0142na wymiana informacji. Przyk\u0142ad komunikacji mo\u017cna zobaczy\u0107 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=\"757\" height=\"471\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image7-2.png\" alt=\"\" class=\"wp-image-22767\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\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>Pe\u0142ny kod prezentowanego programu mo\u017cna pobra\u0107 tutaj: <a href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/Terminal_Kawasaki_kod.zip\">Terminal_Kawasaki_kod.zip<\/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\">Podsumowanie<\/h2>\n\n\n\n<p>Dzi\u0119ki tego typu komunikacji, kt\u00f3ra nie potrzebuje dodatkowej licencji czy karty komunikacyjnej w obu w\u0119z\u0142ach sieci, mo\u017cna w \u0142atwy spos\u00f3b rozszerzy\u0107 mo\u017cliwo\u015bci aplikacji. A brak konieczno\u015bci przypisania na sta\u0142e wymienianych zmiennych, ca\u0142kowicie eliminuje ograniczenia liczby bit\u00f3w, kt\u00f3re mo\u017cna przes\u0142a\u0107 w klasycznych protoko\u0142ach (w Kawasaki Robotics aktualnie 960 bit\u00f3w). Do wy\u017cej przedstawionej procedury wystarczy doda\u0107 niewielk\u0105 analiz\u0119 danych i mo\u017cna odpytywa\u0107 o wszystkie dane z robota. Przyk\u0142adowo mog\u0105 to by\u0107: lista wszystkich program\u00f3w oraz ich wyb\u00f3r, nadpisywanie punkt\u00f3w i ich modyfikacja, status robota, lista b\u0142\u0119d\u00f3w i wiele innych informacji bez ogranicze\u0144.<\/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=\"69de691aca05a\">\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=\"995c7c8d1f\"\/>\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=\"69de691aca05a\"] 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 tym artykule poka\u017cemy, jak w praktyce realizowa\u0107 po\u0142\u0105czenie pomi\u0119dzy sterownikiem PLC Astraada One, programowanym w \u015brodowisku Codesys, a robotem Kawasaki Robotics, z wykorzystaniem protoko\u0142u TCP.<\/p>\n","protected":false},"author":45,"featured_media":22760,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[234,233],"tags":[139,142,22,293,59,56],"class_list":["post-22754","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatyka-w-praktyce","category-dla-uzytkownikow-produktow-astor","tag-astraada-one","tag-codesys","tag-kawasaki","tag-kawasaki-robotics","tag-kontrolery-kawasaki","tag-roboty-kawasaki"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\r\n<title>Po\u0142\u0105czenie terminalowe sterownika PLC Astraada One z robotem Kawasaki Robotics | Poradnik Automatyka<\/title>\r\n<meta name=\"description\" content=\"W tym artykule poka\u017cemy, jak po\u0142\u0105czy\u0107 sterownik PLC Astraada One oraz robota Kawasaki Robotics, z wykorzystaniem protoko\u0142u TCP.\" \/>\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\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/\" \/>\r\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Po\u0142\u0105czenie terminalowe sterownika PLC Astraada One z robotem Kawasaki Robotics | Poradnik Automatyka\" \/>\r\n<meta property=\"og:description\" content=\"W tym artykule poka\u017cemy, jak po\u0142\u0105czy\u0107 sterownik PLC Astraada One oraz robota Kawasaki Robotics, z wykorzystaniem protoko\u0142u TCP.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Poradnik Automatyka\" \/>\r\n<meta property=\"article:published_time\" content=\"2025-05-27T16:12:02+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2025-05-27T16:12:03+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image2.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1085\" \/>\r\n\t<meta property=\"og:image:height\" content=\"226\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"10 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\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/\"},\"author\":{\"name\":\"Konrad Sendrowicz\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#\\\/schema\\\/person\\\/e7fc017b5877f0cb38f4b41449057c81\"},\"headline\":\"Po\u0142\u0105czenie terminalowe sterownika PLC Astraada One z robotem Kawasaki Robotics\",\"datePublished\":\"2025-05-27T16:12:02+00:00\",\"dateModified\":\"2025-05-27T16:12:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/\"},\"wordCount\":1561,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/image2.png\",\"keywords\":[\"Astraada One\",\"Codesys\",\"Kawasaki\",\"kawasaki robotics\",\"Kontrolery Kawasaki\",\"Roboty Kawasaki\"],\"articleSection\":[\"Automatyka w praktyce\",\"Produkty ASTOR\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/\",\"url\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/\",\"name\":\"Po\u0142\u0105czenie terminalowe sterownika PLC Astraada One z robotem Kawasaki Robotics | Poradnik Automatyka\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/image2.png\",\"datePublished\":\"2025-05-27T16:12:02+00:00\",\"dateModified\":\"2025-05-27T16:12:03+00:00\",\"description\":\"W tym artykule poka\u017cemy, jak po\u0142\u0105czy\u0107 sterownik PLC Astraada One oraz robota Kawasaki Robotics, z wykorzystaniem protoko\u0142u TCP.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/image2.png\",\"contentUrl\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/image2.png\",\"width\":1085,\"height\":226},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.astor.com.pl\\\/poradnikautomatyka\\\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\\\/#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\":\"Po\u0142\u0105czenie terminalowe sterownika PLC Astraada One z robotem Kawasaki Robotics\"}]},{\"@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\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/K.-Sendrowicz.jpg\",\"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":"Po\u0142\u0105czenie terminalowe sterownika PLC Astraada One z robotem Kawasaki Robotics | Poradnik Automatyka","description":"W tym artykule poka\u017cemy, jak po\u0142\u0105czy\u0107 sterownik PLC Astraada One oraz robota Kawasaki Robotics, z wykorzystaniem protoko\u0142u TCP.","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\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/","og_locale":"pl_PL","og_type":"article","og_title":"Po\u0142\u0105czenie terminalowe sterownika PLC Astraada One z robotem Kawasaki Robotics | Poradnik Automatyka","og_description":"W tym artykule poka\u017cemy, jak po\u0142\u0105czy\u0107 sterownik PLC Astraada One oraz robota Kawasaki Robotics, z wykorzystaniem protoko\u0142u TCP.","og_url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/","og_site_name":"Poradnik Automatyka","article_published_time":"2025-05-27T16:12:02+00:00","article_modified_time":"2025-05-27T16:12:03+00:00","og_image":[{"width":1085,"height":226,"url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image2.png","type":"image\/png"}],"author":"Konrad Sendrowicz","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Konrad Sendrowicz","Szacowany czas czytania":"10 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/#article","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/"},"author":{"name":"Konrad Sendrowicz","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/e7fc017b5877f0cb38f4b41449057c81"},"headline":"Po\u0142\u0105czenie terminalowe sterownika PLC Astraada One z robotem Kawasaki Robotics","datePublished":"2025-05-27T16:12:02+00:00","dateModified":"2025-05-27T16:12:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/"},"wordCount":1561,"commentCount":0,"publisher":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image2.png","keywords":["Astraada One","Codesys","Kawasaki","kawasaki robotics","Kontrolery Kawasaki","Roboty Kawasaki"],"articleSection":["Automatyka w praktyce","Produkty ASTOR"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/","name":"Po\u0142\u0105czenie terminalowe sterownika PLC Astraada One z robotem Kawasaki Robotics | Poradnik Automatyka","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/#primaryimage"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image2.png","datePublished":"2025-05-27T16:12:02+00:00","dateModified":"2025-05-27T16:12:03+00:00","description":"W tym artykule poka\u017cemy, jak po\u0142\u0105czy\u0107 sterownik PLC Astraada One oraz robota Kawasaki Robotics, z wykorzystaniem protoko\u0142u TCP.","breadcrumb":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/#primaryimage","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image2.png","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/05\/image2.png","width":1085,"height":226},{"@type":"BreadcrumbList","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/polaczenie-terminalowe-sterownika-plc-astraada-one-z-robotem-kawasaki-robotics\/#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":"Po\u0142\u0105czenie terminalowe sterownika PLC Astraada One z robotem Kawasaki Robotics"}]},{"@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\/wp-content\/uploads\/2023\/04\/K.-Sendrowicz.jpg","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\/22754","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=22754"}],"version-history":[{"count":3,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/22754\/revisions"}],"predecessor-version":[{"id":22780,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/22754\/revisions\/22780"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media\/22760"}],"wp:attachment":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media?parent=22754"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/categories?post=22754"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/tags?post=22754"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}