4 de septiembre de 2011

Comunicación entre controladores Logix5000: Tags producidos y consumidos

Para comunicar dos controladores de la gama Logix5000 existen dos opciones: Tags producidos/consumidos [PDF] o Mensajes. Los primeros simplemente se configuran de forma que no es necesario la intervención de instrucciones de programación para su difusión: lo que escribamos en un tag productor de un controlador se verá reflejado en los tags consumidores del controlador o controladores consumidores. Los mensajes, en cambio, precisan de la instrucción MSG para su difusión.

En esta entrada haré un resumen de mis pruebas con los tags productores/consumidores. Como no dispongo físicamente de ningún controlador CompactLogix o ControlLogix con el que trastear, he preparado dos máquinas virtuales con un SoftLogix en cada una, tal y como hice en esta entrada. Las ejecutaré simultáneamente en mi ordenador a la vez que la máquina virtual donde tengo el software de programación, lo cual supone tres máquinas virtuales simultáneas sobre mi portátil, que, aparte de calentarse más que una sartén, ha aguantado estoicamente.

Teniendo ya todo el sistema de pruebas preparado, lo primero será comprobar que los controladores se ven entre sí. Para ello ejecuto el RSLinx en cualquier máquina virtual y con la herramienta RSWho observo que aparecen mis dos controladores SoftLogix:


Ahora tengo que preparar dos proyectos (ver esta entrada), uno para el contolador productor (SoftLogix A) y otro para el controlador consumidor (SoftLogix B). No voy a hacer ninguna programación, simplemente voy a configurar un tag productor, cambiar su valor en la monitorización de tags y comprobar que el valor se transmite al tag consumidor.
En el SoftLogix A (productor) creo una variable llamada PRODUCIDA del tipo DINT (obligatoriamente debe estar en el ámbito del controlador) y voy a sus propiedades.


Selecciono el tipo Produced y pulso sobre Conection...


Como solo voy a tener un consumidor, dejo la opción Max Consumers a 1 y acepto.


En el controlador productor no hay que configurar nada más, así que voy al proyecto del SoftLogix B (consumidor) y creo otra variable del mismo tipo que la anterior (también en al ámbito del controlador) y la llamo CONSUMIDA.


A este tag consumidor hay que especificarle de dónde tiene que obtener su valor, para ello en el árbol de proyecto, bajo la tarjeta ethernet virtual del SoftLogix B (consumidor), debemos introducir la configuración del SoftLogix A (productor), que quedará así:


Tenemos que tener la precaución de especificar la dirección IP del controlador productor.


Para evitar un error de duplicidad de control en la tarjeta de entradas/salidas digitales del SoftLogix A la he deshabilitado.


Ahora vamos a las propiedades del tag CONSUMIDA, selecionamos el tipo Consumed, y pulsamos sobre el botón Connection...


Como producor (producer) seleccionamos en el menú desplegable el controlador productor (en mi caso SL_Productor). En la casilla Remote Data hay que especificar el nombre de la variable producida en el controlador productor, en mi caso PRODUCIDA.


El RPI (Requested Packet Interval) es el tiempo de actualización de la variable consumida. Deberemos ser cuidadosos con este tiempo ya que un RPI bajo implica mayor consumo en los recursos de nuestra red de comunicaciones. Ademas este valor debe ser mayor que el tiempo de actualización de la red.

Y listo, ya solo nos queda comprobar que nuestra configuración funciona. Me pongo on-line con los dos SoftLogix y, monitorizando los tags, compruebo que un valor introducido en el tag PRODUCIDA del controlador productor se refleja en el tag CONSUMIDA del controlador consumidor.


Cuando configuramos tags productores o consumidores podemos seleccionar conexiones Unicast, que, según tengo entendido, exigen menos recursos de la red. Son conexiones punto a punto (point to point) entre un controlador productor y un controlador consumidor (no se permiten conexiones múltiples). Según leo en la edición en inglés del manual (en la versión en español no figura) el controlador productor debe permitir conexiones Unicast, pero es el controlador consumidor quien decide si la conexión es unicast o multicast. Sin embargo, en mis pruebas, si configuro el consumidor para permitir las conexiones Unicast, el productor también tengo que configurarlo como Unicast, si no, no funciona.

Como siempre, agradeceré cualquier comentario.

11 comentarios:

  1. Como los previos post, muy bien detallado y explicado.
    Gracias
    Saludos
    JM

    ResponderEliminar
  2. Excelente informaciòn, muy clara y entendible, para los que vamos empezando en esto, y reafirmar conocimientos de los que ya tienen tiempo en esto.

    Saludos

    ResponderEliminar
  3. Buenos días!

    Muy buenos aportes los de usted Ing. GR.
    Tengo un problema con esta comunicación. En el PLC consumidor me sale una señal de advertencia en el módulo de Ethernet REDA (el que se añadió al módulo Ethernet REDB) y por consecuencia, el símbolo de advertencia, se coloca también sobre los otros módulos que pertenecen al PLC Productor. Líneas abajo, aparece el mensaje 16#0203 error.

    Buscando encontré esta solución http://www.plctalk.net/qanda/showthread.php?t=56656, pero parece que sólo se cumple para equipos reales y no para los virtuales (cómo sería en este caso en el que se está trabajando).

    Le agradecería su ayuda con este problema.

    Muchas gracias.

    ResponderEliminar
    Respuestas
    1. Hola Elmer. La verdad es que nunca se me ha planteado ese problema. Prueba a aumentar el tiempo del RPI (Requested Packet Interval). Prueba a preguntar en los foros de InfoPLC.net o Automatas.org.

      Un saludo y gracias por el interés.

      Eliminar
  4. Hola muy clara tu explicación, tube una duda cuando intente crear un tag Producido en un programa, este estaba On line y no me daba la opción de configurarlo como tal. Pregunta; se pueden crear Consumidos o producido con el PLC on line? Saludos y muchas gracias!

    ResponderEliminar
    Respuestas
    1. No se pueden crear ni modificar en linea

      Eliminar
  5. Buenas noches como escribir en una variable que esta contenida en 2 plc compactlogix distintos desde un HMI panelview?

    ResponderEliminar
  6. Muy buena la explicación fue de gran ayuda y como se hace la comunicacion por Mensajes?????

    ResponderEliminar
  7. Para hacerlo físico es igual

    ResponderEliminar
  8. se puede programar un plc que ya es productor ,como consumidor y viseversa?
    gracias y saludos

    ResponderEliminar
  9. Muy buenas tardes, mi pregunta es: ¿ Me puede generar un status acerca del correcto envio de la variable para verificar fallas de comunicación? Sin nada mas por el momento me despido enviándoles un cordial saludo

    ResponderEliminar

Por favor, no pidas copias de programas comerciales, licencias o números de serie.