28 de septiembre de 2011

Comunicación entre controladores Logix5000: Mensajes

En esta entrada voy a resumir mis pruebas con la instrucción MSG de Logix. Usaré la misma configuración de la entrada anterior: dos máquinas virtuales con un SoftLogix en cada una que se comunicarán entre sí. El control de la mensajería la hará el primer controlador (SoftLogix A). En la segunda máquina virtual (SoftLogix B) simplemente voy a crear dos tags; en el primero, MENSAJE_DATOS_RECIBIDOS, estarán los datos que se escribirán desde el SoftLogix A. En el segundo, MENSAJE_DATOS_A_ENVIAR, pondré los datos que serán leídos desde el SoftLogix A. Y nada más, en el SoftLogix B no voy a hacer ninguna programación, simplemente voy a monitorizar los valores de ese par de tags.


Mis pruebas, por tanto, consistirán en, desde el SoftLogix A, leer y escribir a través de mensajes en los tags del SoftLogix B.

En el proyecto del SoftLogix A deberé especificar la existencia en la red Ethernet del SoftLogix B. Para ello, en el árbol de proyecto, en el apartado I/O Configuration, bajo la tarjeta Ethernet hay que incluir los módulos correspondientes para que quede como sigue:


Para cada comunicación por mensajes deberemos definir un tag de tipo MESSAGE. Como voy a usar en mensaje para escribir y otro para leer, creo los tags MENSAJE_ESCRITURA_SLB y MENSAJE_LECTURA_SLB respectivamente. También necesitaré tags que tengan el mismo formato que los tags del SoftLogix B en los que voy a leer y escribir, así que creo DATOS_A_ESCRIBIR_SLB y DATOS_LEIDOS_SLB. Finalmente creo un par de booleanos para dar las órdenes de escritura y lectura: ORDEN_ESCRITURA_SLB y ORDEN_LECTURA_SLB.


Ahora voy con la programación. Simplemente consiste en lanzar la instrucción MSG con la orden de lectura o escritura y si no está el mensaje activo. Cuando finaliza la comunicación se borra la orden respectiva.


En cada instrucción MSG deberemos asignarle el tag de tipo MESSAGE correspondiente. Para configurar el mensaje pulsaremos sobre el botón de los tres puntos que aparece en la instrucción.


Voy a empezar con el mensaje de lectura. En la pestaña Configuration lo primero es determinar el tipo de mensaje. Para la lectura de otro controlador Logix debo seleccionar CIP Data Table Read. A continuación, en Source Element debo escribir el nombre de la variable del SoftLogix B que voy a leer, decirle cuantos datos de la tabla se transmitirán en Number of Elements y en Destination Element poner el tag del SoftLogix A donde se recogeran los datos.


En la pestaña Communication hay que especificar el controlador de donde se leeran los datos. Para ello pulsamos sobre el botón Browse y seleccionamos el controlador remoto.



En la instrucción MSG de escritura deberemos hacer una configuración similar, deberemos configurar como tipo de mensaje CIP Data Table Write, especificar el tag donde están los datos a transmitir, en número de dato y el nombre de la variable en el controlador remoto donde se almacenarán.


En la pestaña Communication deberemos asímismo seleccionar el controlador remoto.


Ya tenemos todo listo para comprobar que nuestra mensajería funciona. Cargamos nuestros proyectos en los dos SoftLogix y nos ponemos on line. En los tags DATOS_A_ESCRIBIR_SLB del SoftLogix A y MENSAJE_DATOS_A_ENVIAR del SoftLogix B asigno valores al azar y activando los bits de órdenes de lectura y escritura en el SoftLogix A compruebo que los datos se transmiten correctamente.

Datos en el SoftLogix A

Datos en el SoftLogix B

Y hasta aquí esta sencilla prueba de la mensajería en Logix. Los mensajes se utilizan para realizar comunicaciones controladas por la lógica de programación. Por ejemplo, yo he tenido que usarlos recientemente para transmitir señales de alarma a un servidor, pero solo cuando se detectaba un cambio en las alarmas. De esta manera se evita saturar las comunicaciones. Además hay una serie de limitaciones como que no puede haber más de 16 mensajes simultáneos, en el manual (PDF) viene todo esto muy bien explicado.

Como siempre agradeceré cualquier comentario.

8 comentarios:

  1. Gracias GR, Funciona

    ResponderEliminar
  2. Muy bueno...¡¡¡¡¡

    ResponderEliminar
  3. quiero comunicar un plc 5 con un controllogix 5000 como puedo configurar mi arbol de trabajo en el controllogix?

    ResponderEliminar
  4. Hola, excelentes tutoriales. Pero me podrias ayudar con lo siguiente: cuál es la diferencia y qué ventajas tiene transmitir por MSG o por Tags producido/consumido?

    Gracias....

    Saludos

    ResponderEliminar
    Respuestas
    1. Básicamente, los mensajes se lanzan sólo cuando el programador lo desea: el mensaje se dispara cuando las condiciones lógicas del rung que contienen la instrucción son TRUE. El tag consumido-producido sería como un espejo en "tiempo real": el consumido refleja en todo momento el estado del producido. Hay más diferencias, pero lo fundamental sería esto. Como bien apunta Germán, la saturación de la red es un factor a tener en cuenta. Por tanto debes estudiar el volumen de información que se trasvasa y la necesidad en cuanto a tiempo de disponer de dicha información.

      Eliminar

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