{"id":2592,"date":"2021-08-22T03:53:34","date_gmt":"2021-08-22T03:53:34","guid":{"rendered":"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/?page_id=2592"},"modified":"2023-01-21T05:28:37","modified_gmt":"2023-01-21T05:28:37","slug":"modbus-registers-read-position-via-port-502","status":"publish","type":"page","link":"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/modbus-registers-read-position-via-port-502\/","title":{"rendered":"MODBUS registers read position via port 502."},"content":{"rendered":"\n<p><a title=\"Visit Zacobria &amp; Webshop &amp; Universal-Robots solutions.\" href=\"https:\/\/www.zacobria.com\/automation\/webshop\/\">Visit Zacobria Webshop<\/a><\/p>\n\n\n\n<p><strong>MODBUS registers read position via port 502.<\/strong><\/p>\n\n\n\n<p><strong>Application Description:<\/strong><br>This example shows the use of internal MODBUS registers 400-405 on the Universal-Robots to read the robot position from external device.<\/p>\n\n\n\n<p>The application uses the MODBUS server running at port 502 on the Universal-Robots. The MODBUS server has a range of register available with dedicated content and register 128 to 255 are for general purpose use. In this example register 400 to 405 will be used because they contain the values of the robot position as<\/p>\n\n\n\n<p>400 = TCP-x in tenth of mm (in base frame)<br>401 = TCP-y in tenth of mm (in base frame)<br>402 = TCP-z in tenth of mm (in base frame)<br>403 = TCP-rx in mrad (in base frame)<br>404 = TCP-ry in mrad (in base frame)<br>405 = TCP-rz in mrad (in base frame)<\/p>\n\n\n\n<p>A list of the MODBUS and register can be found at this link <a href=\"http:\/\/www.universal-robots.com\/how-tos-and-faqs\/how-to\/ur-how-tos\/modbus-server-16377\/\">UR Modbus page<\/a><\/p>\n\n\n\n<p>The commands are send from a external host with Python code.<br><strong>Function description:<\/strong><br>The external host (PC) is connected to the UR via Ethernet and access the MODBUS registers on the UR on TCP port 502.<\/p>\n\n\n\n<p>For the MODBUS protcol and meaning of the raw data there are more informations at this link <a href=\"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/modbus-registers-input-and-output-handling-via-port-502\/\">MODBUS registers Input and Output handling via port 502<\/a>.<\/p>\n\n\n\n<p><strong>Program description:<\/strong><br>The external host reads the register 400-405 every 5 seconds and convert the raw data to readable data in mm.<\/p>\n\n\n\n<p>(Further Below is the same program with more conversation data shown on the screen for evaluation purpose).<\/p>\n\n\n\n<p><strong>Program code:<\/strong><\/p>\n\n\n\n<p><strong>No program on UR.<\/strong><\/p>\n\n\n\n<p><strong>Host program in Python code.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Echo client program\nimport socket\nimport time\n\nHOST = \"192.168.0.9\" # The remote host\nPORT_502 = 502\n\nprint \"Starting Program\"\n\ncount = 0\nhome_status = 0\nprogram_run = 0\n\nwhile (True):\n if program_run == 0:\n  try:\n   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n   s.settimeout(10)\n   s.connect((HOST, PORT_502))\n   time.sleep(0.05)\n   print \"\"\n   reg_400 = \"\"\n   s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x90\\x00\\x01\") #request data from register 128-133 (cartisian data)\n   reg_400 = s.recv(1024)\n   reg_400 = reg_400.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n   reg_400 = reg_400.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n   if reg_400 == \"\":\n     reg_400 = \"0000\"\n     reg_400_i = int(reg_400,16)\n   if reg_400_i &lt; 32768:\n     reg_400_f = float(reg_400_i)\/10\n   if reg_400_i &gt; 32767:\n     reg_400_i = 65535 - reg_400_i\n     reg_400_f = float(reg_400_i)\/10*-1\n   print \"X = \",reg_400_f\n\n   reg_401 = \"\"\n   s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x91\\x00\\x01\") #request data from register 128-133 (cartisian data)\n   reg_401 = s.recv(1024)\n   reg_401 = reg_401.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n   reg_401 = reg_401.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n   if reg_401 == \"\":\n     reg_401 = \"0000\"\n     reg_401_i = int(reg_401,16)\n   if reg_401_i &lt; 32768:\n     reg_401_f = float(reg_401_i)\/10\n   if reg_401_i &gt; 32767:\n     reg_401_i = 65535 - reg_401_i\n     reg_401_f = float(reg_401_i)\/10*-1\n   print \"Y = \",reg_401_f\n\n   reg_402 = \"\"\n   s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x92\\x00\\x01\") #request data from register 128-133 (cartisian data)\n   reg_402 = s.recv(1024)\n   reg_402 = reg_402.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n   reg_402 = reg_402.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n   if reg_402 == \"\":\n     reg_402 = \"0000\"\n     reg_402_i = int(reg_402,16)\n   if reg_402_i &lt; 32768:\n     reg_402_f = float(reg_402_i)\/10\n   if reg_402_i &gt; 32767:\n     reg_402_i = 65535 - reg_402_i\n   reg_402_f = float(reg_402_i)\/10*-1\n   print \"Z = \",reg_402_f\n\n   reg_403 = \"\"\n   s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x93\\x00\\x01\") #request data from register 128-133 (cartisian data)\n   reg_403 = s.recv(1024)\n   reg_403 = reg_403.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n   reg_403 = reg_403.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n   if reg_403 == \"\":\n     reg_403 = \"0000\"\n     reg_403_i = int(reg_403,16)\n   if reg_403_i &lt; 32768:\n     reg_403_f = float(reg_403_i)\/1000\n   if reg_403_i &gt; 32767:\n     reg_403_i = 65535 - reg_403_i\n     reg_403_f = float(reg_403_i)\/1000*-1\n   print \"Rx = \",reg_403_f\n\n   reg_404 = \"\"\n   s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x94\\x00\\x01\") #request data from register 128-133 (cartisian data)\n   reg_404 = s.recv(1024)\n   reg_404 = reg_404.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n   reg_404 = reg_404.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n   if reg_404 == \"\":\n     reg_404 = \"0000\"\n     reg_404_i = int(reg_404,16)\n   if reg_404_i &lt; 32768:\n     reg_404_f = float(reg_404_i)\/1000\n   if reg_404_i &gt; 32767:\n     reg_404_i = 65535 - reg_404_i\n     reg_404_f = float(reg_404_i)\/1000*-1\n   print \"Ry = \",reg_404_f\n\n   reg_405 = \"\"\n   s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x95\\x00\\x01\") #request data from register 128-133 (cartisian data)\n   reg_405 = s.recv(1024)\n   reg_405 = reg_405.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n   reg_405 = reg_405.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n   if reg_405 == \"\":\n     reg_405 = \"0000\"\n     reg_405_i = int(reg_405,16)\n   if reg_405_i &lt; 32768:\n     reg_405_f = float(reg_405_i)\/1000\n   if reg_405_i &gt; 32767:\n     reg_405_i = 65535 - reg_405_i\n     reg_405_f = float(reg_405_i)\/1000*-1\n   print \"Rz = \",reg_405_f\n\n   time.sleep(5.00)\n   home_status = 1\n   program_run = 0\n   s.close()\n except socket.error as socketerror:\n   print(\"Error: \", socketerror)\nprint \"Program finish\"<\/pre>\n\n\n\n<p><strong>Program run:<\/strong><\/p>\n\n\n\n<p>The robot is in this position &#8211; Notice the X, Y, Z, Rx, Ry, Rz values in the Move screen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips\/wp-content\/uploads\/2016\/10\/universal-robots-zacobria-modbus-read-position-1.jpg\"><img decoding=\"async\" src=\"http:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips\/wp-content\/uploads\/2016\/10\/universal-robots-zacobria-modbus-read-position-1.jpg\" alt=\"universal-robots-zacobria-modbus-read-position-1\" class=\"wp-image-1826\"\/><\/a><\/figure>\n\n\n\n<p>Below is the printout on the screen with the X, Y, Z, Rx, Ry, Rz values when the Python program is executed. The values are collected from the MODBUS registers and correspond with the actual values of the robot position. The X, Y, Z are in mm and Rx, Ry, Rz are in radians.<\/p>\n\n\n\n<p>&gt;&gt;&gt;<br>Starting Program<\/p>\n\n\n\n<p>X = 0.0<br>Y = 300.0<br>Z = 300.0<br>Rx = 0.0<br>Ry = 3.14<br>Rz = 0.0<\/p>\n\n\n\n<p><strong>Notes:<\/strong><br>For the purpose of monitor and evaluation of the data is below the same program, but with more data printout on the screen so it can be observed how the data are converted to readable data in mm and radians.<\/p>\n\n\n\n<p><strong>Program code:<\/strong><\/p>\n\n\n\n<p><strong>No program on UR.<\/strong><\/p>\n\n\n\n<p><strong>Host program in Python code with more data printout.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Echo client program\nimport socket\nimport time\n\nHOST = \"192.168.0.9\" # The remote host\nPORT_502 = 502\n\nprint \"Starting Program\"\n\ncount = 0\nhome_status = 0\nprogram_run = 0\n\nwhile (True):\n if program_run == 0:\n   try:\n     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n     s.settimeout(10)\n     s.connect((HOST, PORT_502))\n     time.sleep(0.05)\n\n     print \"\"\n     print \"Request reg 400\"\n     print \"Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x90 x00 x01\"\n     reg_400 = \"\"\n     s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x90\\x00\\x01\") #request data from register 128-133 (cartisian data)\n     print \"Modbus command send to read reg 400\"\n     print \"Received\"\n     reg_400 = s.recv(1024)\n     print repr(reg_400) #Print the receive data in \\x hex notation (notice that data above 32 hex will berepresented at the ascii code e.g. 50 will show P\n     print \"\"\n     reg_400 = reg_400.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n     reg_400 = reg_400.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n     if reg_400 == \"\":\n       reg_400 = \"0000\"\n     print reg_400\n     print \"\"\n     reg_400_i = int(reg_400,16)\n     print reg_400_i\n     if reg_400_i &lt; 32768:\n       reg_400_f = float(reg_400_i)\/10\n     if reg_400_i &gt; 32767:\n       reg_400_i = 65535 - reg_400_i\n       reg_400_f = float(reg_400_i)\/10*-1\n     print \"X = \",reg_400_f\n\n     print \"\"\n     print \"Request reg 401\"\n     print \"Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x91 x00 x01\"\n     reg_401 = \"\"\n     s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x91\\x00\\x01\") #request data from register 128-133 (cartisian data)\n     print \"Modbus command send to read reg 401\"\n     print \"Received\"\n     reg_401 = s.recv(1024)\n     print repr(reg_401) #Print the receive data in \\x hex notation (notice that data above 32 hex will berepresented at the ascii code e.g. 50 will show P\n     print \"\"\n     reg_401 = reg_401.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n     reg_401 = reg_401.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n     if reg_401 == \"\":\n       reg_401 = \"0000\"\n     print reg_401\n     print \"\"\n     reg_401_i = int(reg_401,16)\n     print reg_401_i\n     if reg_401_i &lt; 32768:\n       reg_401_f = float(reg_401_i)\/10\n     if reg_401_i &gt; 32767:\n       reg_401_i = 65535 - reg_401_i\n       reg_401_f = float(reg_401_i)\/10*-1\n     print \"Y = \",reg_401_f\n\n     print \"\"\n     print \"Request reg 402\"\n     print \"Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x92 x00 x01\"\n     reg_402 = \"\"\n     s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x92\\x00\\x01\") #request data from register 128-133 (cartisian data)\n     print \"Modbus command send to read reg 402\"\n\n     print \"Received\"\n     reg_402 = s.recv(1024)\n     print repr(reg_402) #Print the receive data in \\x hex notation (notice that data above 32 hex will berepresented at the ascii code e.g. 50 will show P\n     print \"\"\n     reg_402 = reg_402.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n     reg_402 = reg_402.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n     if reg_402 == \"\":\n       reg_402 = \"0000\"\n     print reg_402\n     print \"\"\n     reg_402_i = int(reg_402,16)\n     print reg_402_i\n     if reg_402_i &lt; 32768:\n       reg_402_f = float(reg_402_i)\/10\n     if reg_402_i &gt; 32767:\n     reg_402_i = 65535 - reg_402_i\n     reg_402_f = float(reg_402_i)\/10*-1\n     print \"Z = \",reg_402_f\n\n     print \"\"\n     print \"Request reg 403\"\n     print \"Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x93 x00 x01\"\n     reg_403 = \"\"\n     s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x93\\x00\\x01\") #request data from register 128-133 (cartisian data)\n     print \"Modbus command send to read reg 403\"\n     print \"Received\"\n     reg_403 = s.recv(1024)\n     print repr(reg_403) #Print the receive data in \\x hex notation (notice that data above 32 hex will berepresented at the ascii code e.g. 50 will show P\n     print \"\"\n     reg_403 = reg_403.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n     reg_403 = reg_403.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n     if reg_403 == \"\":\n       reg_403 = \"0000\"\n     print reg_403\n     print \"\"\n     reg_403_i = int(reg_403,16)\n     print reg_403_i\n     if reg_403_i &lt; 32768:\n       reg_403_f = float(reg_403_i)\/1000\n     if reg_403_i &gt; 32767:\n     reg_403_i = 65535 - reg_403_i\n     reg_403_f = float(reg_403_i)\/1000*-1\n     print \"Rx = \",reg_403_f\n\n     print \"\"\n     print \"Request reg 404\"\n     print \"Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x94 x00 x01\"\n     reg_404 = \"\"\n     s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x94\\x00\\x01\") #request data from register 128-133 (cartisian data)\n     print \"Modbus command send to read reg 404\"\n     print \"Received\"\n     reg_404 = s.recv(1024)\n     print repr(reg_404) #Print the receive data in \\x hex notation (notice that data above 32 hex will berepresented at the ascii code e.g. 50 will show P\n     print \"\"\n     reg_404 = reg_404.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n     reg_404 = reg_404.strip(\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\")\n     reg_404 = reg_404.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n     if reg_404 == \"\":\n       reg_404 = \"0000\"\n     print reg_404\n     print \"\"\n     reg_404_i = int(reg_404,16)\n     print reg_404_i\n     if reg_404_i &lt; 32768:\n       reg_404_f = float(reg_404_i)\/1000\n     if reg_404_i &gt; 32767:\n       reg_404_i = 65535 - reg_404_i\n       reg_404_f = float(reg_404_i)\/1000*-1\n     print \"Ry = \",reg_404_f\n\n     print \"\"\n     print \"Request reg 405\"\n     print \"Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x95 x00 x01\"\n     reg_405 = \"\"\n     s.send (\"\\x00\\x04\\x00\\x00\\x00\\x06\\x00\\x03\\x01\\x95\\x00\\x01\") #request data from register 128-133 (cartisian data)\n     print \"Modbus command send to read reg 405\"\n     print \"Received\"\n     reg_405 = s.recv(1024)\n     print repr(reg_405) #Print the receive data in \\x hex notation (notice that data above 32 hex will berepresented at the ascii code e.g. 50 will show P\n     print \"\"\n     reg_405 = reg_405.replace (\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\", \"\")\n     reg_405 = reg_405.strip(\"\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\")\n     reg_405 = reg_405.encode(\"hex\") #convert the data from \\x hex notation to plain hex\n     if reg_405 == \"\":\n       reg_405 = \"0000\"\n     print reg_405\n     print \"\"\n     reg_405_i = int(reg_405,16)\n     print reg_405_i\n     if reg_405_i &lt; 32768:\n       reg_405_f = float(reg_405_i)\/1000\n     if reg_405_i &gt; 32767:\n       reg_405_i = 65535 - reg_405_i\n       reg_405_f = float(reg_405_i)\/1000*-1\n     print \"Rz = \",reg_405_f\n\n     time.sleep(5.00)\n     home_status = 1\n     program_run = 0\n     s.close()\n   except socket.error as socketerror:\n     print(\"Error: \", socketerror)\nprint \"Program finish\"<\/pre>\n\n\n\n<p><strong>Program run:<\/strong><\/p>\n\n\n\n<p>The robot is in this position &#8211; Notice the X, Y, Z, Rx, Ry, Rz values in the Move screen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips\/wp-content\/uploads\/2016\/10\/universal-robots-zacobria-modbus-read-position-1.jpg\"><img decoding=\"async\" src=\"http:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips\/wp-content\/uploads\/2016\/10\/universal-robots-zacobria-modbus-read-position-1.jpg\" alt=\"universal-robots-zacobria-modbus-read-position-1\" class=\"wp-image-1826\"\/><\/a><\/figure>\n\n\n\n<p>Below is the printout on the screen with the X, Y, Z, Rx, Ry, Rz values when the Python program is executed. The values are collected from the MODBUS registers and correspond with the actual values of the robot position. The X, Y, Z are in mm and Rx, Ry, Rz are in radians.<\/p>\n\n\n\n<p>&gt;&gt;&gt;<br>Starting Program<\/p>\n\n\n\n<p>Request reg 400<br>Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x90 x00 x01<br>Modbus command send to read reg 400<br>Received<br>&#8216;\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\\x00\\x00&#8217;<\/p>\n\n\n\n<p>0000<\/p>\n\n\n\n<p>0<br>X = 0.0<\/p>\n\n\n\n<p>Request reg 401<br>Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x91 x00 x01<br>Modbus command send to read reg 401<br>Received<br>&#8216;\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\\x0b\\xb8&#8217;<\/p>\n\n\n\n<p>0bb8<\/p>\n\n\n\n<p>3000<br>Y = 300.0<\/p>\n\n\n\n<p>Request reg 402<br>Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x92 x00 x01<br>Modbus command send to read reg 402<br>Received<br>&#8216;\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\\x0b\\xb8&#8217;<\/p>\n\n\n\n<p>0bb8<\/p>\n\n\n\n<p>3000<br>Z = 300.0<\/p>\n\n\n\n<p>Request reg 403<br>Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x93 x00 x01<br>Modbus command send to read reg 403<br>Received<br>&#8216;\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\\x00\\x00&#8217;<\/p>\n\n\n\n<p>0000<\/p>\n\n\n\n<p>0<br>Rx = 0.0<\/p>\n\n\n\n<p>Request reg 404<br>Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x94 x00 x01<br>Modbus command send to read reg 404<br>Received<br>&#8216;\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\\x0cD&#8217;<\/p>\n\n\n\n<p>0c44<\/p>\n\n\n\n<p>3140<br>Ry = 3.14<\/p>\n\n\n\n<p>Request reg 405<br>Sending: x00 x04 x00 x00 x00 x06 x00 x03 x01 x95 x00 x01<br>Modbus command send to read reg 405<br>Received<br>&#8216;\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x03\\x02\\x00\\x00&#8217;<\/p>\n\n\n\n<p>0000<\/p>\n\n\n\n<p>0<br>Rz = 0.0<\/p>\n\n\n\n<p><strong>Disclaimer:<\/strong> While the Zacobria Pte. Ltd. believes that information and guidance provided is correct, parties must rely upon their skill and judgement when making use of them. Zacobria Pte. Ltd. assumes no liability for loss or damage caused by error or omission, whether such an error or omission is the result of negligence or any other cause. Where reference is made to legislation it is not to be considered as legal advice. Any and all such liability is disclaimed.<\/p>\n\n\n\n<p>If you need specific advice (for example, medical, legal, financial or risk management), please seek a professional who is licensed or knowledgeable in that area.<\/p>\n\n\n\n<p>Author:<br><a href=\"https:\/\/plus.google.com\/u\/0\/116832821661215606670?rel=author\">By Zacobria Lars Skovsgaard<\/a><br>Accredited 2015-2018 Universal Robots support Centre and Forum.<br><br><br><\/p>\n\n\n\n<p><a href=\"https:\/\/twitter.com\/share\">Tweet<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/twitter.com\/zacobria\">Follow @zacobria<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visit Zacobria Webshop MODBUS registers read position via port 502. Application Description:This example shows the use of internal MODBUS registers 400-405 on the Universal-Robots to read the robot position from external device. The application uses the MODBUS server running at&#8230; <\/p>\n<div class=\"more-link-container\"><a class=\"more-link\" href=\"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/modbus-registers-read-position-via-port-502\/\">Read More<\/a><\/div>\n","protected":false},"author":1,"featured_media":2481,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"templates\/full-width-page.php","meta":{"footnotes":""},"class_list":["post-2592","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/wp-json\/wp\/v2\/pages\/2592","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/wp-json\/wp\/v2\/comments?post=2592"}],"version-history":[{"count":6,"href":"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/wp-json\/wp\/v2\/pages\/2592\/revisions"}],"predecessor-version":[{"id":3101,"href":"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/wp-json\/wp\/v2\/pages\/2592\/revisions\/3101"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/wp-json\/wp\/v2\/media\/2481"}],"wp:attachment":[{"href":"https:\/\/www.zacobria.com\/universal-robots-knowledge-base-tech-support-forum-hints-tips-cb2-cb3\/index.php\/wp-json\/wp\/v2\/media?parent=2592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}