# Enviar datos desde un PLC siemens 1215C pro profinet a un robot UR3-e

**URL:** <https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844>\
**Category:** Robot Communication\
**Created:** [August 28, 2024, 4:55pm UTC](https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844 "2024-08-28T16:55:05Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![dmendez1](https://avatars.discourse-cdn.com/v4/letter/d/8797f3/32.png) [@dmendez1](https://forum.universal-robots.com/u/dmendez1)\
**Post date:** [August 28, 2024, 4:55pm UTC](https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844/1 "2024-08-28T16:55:05Z")

</div>

Hola, muy buenas.  
Ya puedo comunicar un plc 1215C de siemens con un robot UR3-e. Mi duda es que programa hay que hacer en polyscope, para que el plc pueda modificar las coordenadas x,y, z del robot y este se mueva a dichos espacios. Envío un enlace de Youtube de siemens donde se ve una cámara que envía estos valores a un robot UR. Esto es lo que necesito hacer.

Gracias.

[![](https://img.youtube.com/vi/QEtDrlsaBO8/hqdefault.jpg "Pick and place with SIMATIC MV500") ](https://www.youtube.com/watch?v=QEtDrlsaBO8)

---

<div class="post-metadata">

**Author:** ![cags](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/cags/32/6304_2.png) [@cags](https://forum.universal-robots.com/u/cags)\
**Post date:** [August 29, 2024, 11:55am UTC](https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844/2 "2024-08-29T11:55:35Z")

</div>

Tu descripción es bastante amplia, tengo varias preguntas:

- ¿Qué tipo de comunicación has establecido entre el robot y el PLC? ¿PROFINET? ¿El [ejemplo de XML-RPC](https://www.universal-robots.com/articles/ur/interface-communication/xml-rpc-communication/)? ¿El [ejemplo de socket](https://www.universal-robots.com/articles/ur/interface-communication/tcpip-socket-communication-via-urscript/)?
- ¿Qué tipo de coordenadas XYZ le quieres mandar al robot? ¿Respecto a qué sistema? ¿Vienen ya las coordenadas XYZ con la misma referencia de la base del robot?

Lo que hace el vídeo de Youtube se puede hacer de distintas formas

---

<div class="post-metadata">

**Author:** ![dmendez1](https://avatars.discourse-cdn.com/v4/letter/d/8797f3/32.png) [@dmendez1](https://forum.universal-robots.com/u/dmendez1)\
**Post date:** [August 29, 2024, 12:25pm UTC](https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844/3 "2024-08-29T12:25:42Z")

</div>

Hola, muy buenas. La comunicación es PROFINET.  
Las coordenadas que me interesan son las X, Y, Z del plano de la BASE, ya que la cámara envía los valores sobre ese plano, y también el ángulo del giro, que tiene que ir al valor de la última muñeca (creo que es la muñeca Nº3).  
Sobre el tipo de ejemplo quizás XML-RPC, pero no se decirte más ya que estoy aprendiendo a utilizar el robot y se me escapan muchas cosas aún.

Muchas gracias.

---

<div class="post-metadata">

**Author:** ![cags](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/cags/32/6304_2.png) [@cags](https://forum.universal-robots.com/u/cags)\
**Post date:** [August 30, 2024, 7:09am UTC](https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844/4 "2024-08-30T07:09:09Z")

</div>

Bueno, no estoy muy metida en PROFINET, pero esto es lo que intentaría:

- Hay unos registros genéricos definidos en el I/O, algunos son bytes, otros son integer y otros son float. Usaría algunos de los register float para mandarle al robot la posición XYZ y el ángulo.

```auto
   UR_FloatRegisters.Register[0] := x; 
   UR_FloatRegisters.Register[1] := y; 
   UR_FloatRegisters.Register[2] := z; 
   UR_FloatRegisters.Register[3] := rz;

```

Y luego el robot accede a estos registros:

```auto
global CAM_X = read_input_float_register(0)
global CAM_Y = read_input_float_register(1)
global CAM_Z = read_input_float_register(2)
global CAM_RZ = read_input_float_register(3)

```

- Una vez tengas los valores XYZ y el ángulo, hacerlo un punto:

```auto
global CAM_POINT = p[CAM_X, CAM_Y, CAM_Z, 0, 0, CAM_RZ]
# recuerda que los valores XYZ tienen que estar en mm y el ángulo en radiantes

```

Sobre cómo hacer que el robot vaya a este punto:

> [@dmendez1](#):
>
> Las coordenadas que me interesan son las X, Y, Z del plano de la BASE, ya que la cámara envía los valores sobre ese plano

Me parece que aquí te equivocas. **En el vídeo que has enviado, la cámara detecta la posición en base a su propia posición y a su propio sistema de referencia (interno)**, y si lo vas a hacer igual, significa que el XYZ que vas a enviar al robot **no** es en base al robot.

En mi opinión, tendrías que definir un Feature, un punto que represente dónde está la cámara:

 ![image](https://us1.discourse-cdn.com/flex020/uploads/universal_robots/original/2X/3/382ad2f6d023a9c56f6c97522711f92616c95809.png)

Y luego en el programa del robot, en los comandos MoveJ ó MoveL, indicar que estos movimientos son en referencia a la cámara:

 ![image](https://us1.discourse-cdn.com/flex020/uploads/universal_robots/original/2X/d/d741270711c6a3d4cca849addda01200e27554fd.png)

---

<div class="post-metadata">

**Author:** ![dmendez1](https://avatars.discourse-cdn.com/v4/letter/d/8797f3/32.png) [@dmendez1](https://forum.universal-robots.com/u/dmendez1)\
**Post date:** [August 30, 2024, 5:16pm UTC](https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844/5 "2024-08-30T17:16:10Z")

</div>

Hola buenas tardes. He realizado más o menos el ejemplo que me has propuesto y el eje de la muñeca 3, (RZ) me va perfectamente; pero si doy valores a los ejes X e Y, me da error.  
Envío un PDF y el programa del robot por si me puedes ayudar.  
Un saludo y muchas gracias.

[DUDA UR-Camara.pdf](https://forum.universal-robots.com/uploads/short-url/aF0JFK4l3EeWUWRYiC7Hc2jy7ev.pdf) (563.8 KB)

---

<div class="post-metadata">

**Author:** ![dmendez1](https://avatars.discourse-cdn.com/v4/letter/d/8797f3/32.png) [@dmendez1](https://forum.universal-robots.com/u/dmendez1)\
**Post date:** [August 30, 2024, 5:17pm UTC](https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844/6 "2024-08-30T17:17:50Z")

</div>

[robot\_UR\_y\_camara.script](https://forum.universal-robots.com/uploads/short-url/wWAVnLsPlRLKvby6EEZNNp3tcHQ.script) (11.4 KB)  
[robot\_UR\_y\_camara.urp](https://forum.universal-robots.com/uploads/short-url/vsugmXeZsfTO8w4HPna3FFMLE0S.urp) (1.5 KB)

---

<div class="post-metadata">

**Author:** ![cags](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/cags/32/6304_2.png) [@cags](https://forum.universal-robots.com/u/cags)\
**Post date:** [September 2, 2024, 10:08am UTC](https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844/7 "2024-09-02T10:08:31Z")

</div>

Hola, le he echado un vistazo en el simulador pero no veo nada.  
Pero sí he revisado en la solución que te mandé, que tuve un error.

```auto
global CAM_POINT = p[CAM_X, CAM_Y, CAM_Z, 0, 0, CAM_RZ]
# recuerda que los valores XYZ tienen que estar en mm y el ángulo en radiantes

```

Esto está mal: las unidades tienen que ser en METROS, no en milímetros. O sea, que si la posición XYZ es 5, 7 y 9 milímetros respectivamente:

```auto
global CAM_POINT = p[0.005, 0.007, 0.009, 0, 0, CAM_RZ]

```

Es probable que te salga ese error porque XY será un punto a 20cm del sistema y el programa le está diciendo que está a 20m

---

<div class="post-metadata">

**Author:** ![dmendez1](https://avatars.discourse-cdn.com/v4/letter/d/8797f3/32.png) [@dmendez1](https://forum.universal-robots.com/u/dmendez1)\
**Post date:** [September 2, 2024, 6:07pm UTC](https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844/8 "2024-09-02T18:07:11Z")

</div>

Hola, buenas tardes. He probado de poner los valores en mm y el movimiento en MOVE L y funciona bien.  
Si lo dejo en MOVE J, me sale un error.  
Muchas gracias por la ayuda, ahora ya se puede controlar el robot desde la cámara y un PLC.

Un saludo muy cordial.

---

<div class="post-metadata">

**Author:** ![cags](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/cags/32/6304_2.png) [@cags](https://forum.universal-robots.com/u/cags)\
**Post date:** [September 3, 2024, 1:12pm UTC](https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844/9 "2024-09-03T13:12:07Z")

</div>

El problema con MoveJ es que debajo de la interfaz, si miras el script que se genera y lo comparas con lo que viene en el manual de URScript, el comando tiene un parámetro opcional _qnear_ (una combinación de las articulaciones similar a la configuración que quieres). Si usas este comando desde la interfaz, este parámetro no se usa.

Cuando programo un UR en URscript directamente, siempre uso este parámetro y no me suele dar problemas. A lo mejor si mueves el robot a un punto cercano fijo (como aproximándose al plano de la cámara), y luego al punto que quieres ir, no te daría error. Pero no estoy muy segura de que funcione.

Pero mira, si te funciona, te funciona, protege ese programa con tu vida y mucha suerte 🤣

---

<div class="post-metadata">

**Author:** ![jhonny.gloz25](https://avatars.discourse-cdn.com/v4/letter/j/ac91a4/32.png) [@jhonny.gloz25](https://forum.universal-robots.com/u/jhonny.gloz25)\
**Post date:** [December 2, 2025, 3:10am UTC](https://forum.universal-robots.com/t/enviar-datos-desde-un-plc-siemens-1215c-pro-profinet-a-un-robot-ur3-e/35844/10 "2025-12-02T03:10:02Z")

</div>

Hola @dmendez1 quisiera saber más de tu aplicación ya que estoy intentando algo parecido, francamente estoy en ceros, estoy intentando usar una cámara iv3 con el UR10
