Comunicar PLC Compactlogix con Impresora Zebra/Printronix

hace 1 año · Actualizado hace 8 meses

Comunicar PLC Compactlogix con Impresora Zebra
Comunicar PLC Compactlogix con Impresora Zebra/Printronix
📋Aquí podrás Encontrar✍
  1. Impresoras Industriales
  2. Comunicar PLC Compactlogix con Impresora Zebra/Printronix
    1. Secuencia típica de transacciones para un cliente TCP
    2. Socket Create
    3. OpenConnection
    4. WriteSocket
    5. DeleteSocket
  3. Crear Diseño de etiqueta (ZPL)
  4. Descargar Manual del lenguaje ZPL
  5. Descarga de Rutinas

Impresoras Industriales

La colocación de etiquetas en piezas terminadas en la industria tiene múltiples propósitos y beneficios. Estas etiquetas pueden contener información variada que es crucial para la trazabilidad, la identificación y la gestión eficiente de los productos a lo largo de su ciclo de vida.

Algunas de los datos principales que se colocan en las etiquetas de las piezas son:

  • Número serial
  • Fecha de elaboración
  • Modelo de la pieza
  • Resultado de las pruebas
  • Código QR

Las impresoras industriales desempeñan un papel fundamental en la identificación, trazabilidad y gestión eficiente de productos a lo largo de la cadena de suministro. Estas impresoras están diseñadas específicamente para satisfacer las necesidades y demandas de entornos industriales, donde se requiere una producción constante de etiquetas de alta calidad y durabilidad.

⭐️ Antes de continuar suscríbete a nuestras Redes Sociales ⭐️

Comunicar PLC Compactlogix con Impresora Zebra/Printronix

El objetivo de este artículo es crear el diseño de nuestra etiqueta (Comandos ZPL e información contenida) en el PLC y solicitar la impresión de dicha etiqueta desde el PLC.

La comunicación entre una Impresora Industrial con el PLC marca Allen Bradley se realiza a través de "Socket Interface". La interfaz de socket permite que un controlador Logix 5000 se comunique a través de un módulo EtherNet/IP con dispositivos Ethernet que no admiten el protocolo de aplicación EtherNet/IP, por ejemplo, la impresora ZD421.

Secuencia típica de transacciones para un cliente TCP

El siguiente diagrama muestra una secuencia típica de transacciones de interfaz de socket con el controlador Logix 5000 que actúa como un cliente TCP. Cada transacción entre el controlador Logix 5000 y el módulo EtherNet/IP es una instrucción de mensaje (MSG).

Secuencia de Transacción Socket
Secuencia de Transacción Socket

Vamos a utilizar la instrucción MSG, el tipo de mensaje CIP y elegerimos los siguientes tipos de Servicios:

  • Socket Create
  • OpenConnection
  • WriteSocket
  • DeleteSocket

Socket Create

El servicio Socket Create crea una instancia del objeto socket. El servicio devuelve un número de instancia que utiliza en el subsiguiente operaciones de socket. Llame al servicio Socket Create con la instancia 0 (clase de objeto Socket).

Socket Create Configuration
MSG - Socket Create

MSG Source Element

Se debe de crear un tag "Socket" del tipo "CreateParameters" que corresponde a un UDT (User-Defined Data type). Por lo tanto también creamos el UDT, como se muestra en la siguiente imagen:

CreateParameters
Tipo de datos para elemento de origen de creación de socket

MSG Destination Element

La instrucción MSG devuelve el número de instancia del socket que creó al elemento de destino. Especifique un Tag DINT.

Consideraciones

Utilice la instancia que devuelve el servicio Socket Create en solicitudes de servicio posteriores. Use una instrucción MOV para mover la instancia a otra etiqueta MSG (el campo .Instance).

OpenConnection

El servicio OpenConnection Abre una conexión TCP con la dirección de destino especificada.

OpenConnection
MSG - OppenConnection

MSG Source Element

Creamos un Tag "Sock_Open_Par" del tipo de dato "OpenConnectionParameters" que corresponde a un UDT. Por lo tanto, también vamos a crear el UDT, considerando los siguientes miembros:

OpenConnectionParameters
Tipo de datos para el elemento fuente de OpenConnection

En el Tag creado, "Sock_Open_Par", debemos escribir la dirección IP de la impresora, ademas del puerto que utilizaremos. Es importante escribir la sintaxis como se muestra en la imagen anterior.

IPAddr?port=xxxzzz

Aplicaciones Premium

Suscríbete a nuestro boletín de noticias

🤖 Antes de suscribirte acepta nuestros términos y condiciones.


✅ Recuerda que al Suscríbete a nuestro boletín de noticias, recibirás por correo electrónico cada nueva publicación y también las actualizaciones de los mismos.

Tag Sock_Open_Par

MSG Source Length

Especifique 8 bytes (Tiempo de espera + AddrLen) + número de caracteres en la dirección de destino. En este caso, la dirección contiene 22 caracteres y se le deben sumar 8, teniendo un tamaño de 30.

OpenConnection Lenght

WriteSocket

El servicio WriteSocket envía datos en un socket. Usted especifica el número de bytes a enviar. El servicio intenta enviar el pedido número de bytes y devuelve el número de bytes enviados.

WriteSocket Configuration
MSG - Write Socket

Instancia: este servicio utiliza la instancia devuelta por el servicio CreateConnection.

MSG Source Element

Se crea un Tag "WriteData_Source" del tipo de Dato "WriteParameters". Este tipo dato UDT debe ser creado, considerando lo siguientes tipos de datos:

WriteParameters UDT
Tipo de datos para el elemento fuente de WriteParameters

MSG Source Length

Especifique 16 bytes (Timeout + Addr + BufLen) + número de bytes para escribir.

WriteSocket Buffer

DeleteSocket

El servicio DeleteSocket elimina una instancia de socket. Para una conexión TCP, el servicio DeleteSocket también cierra la conexión antes de que elimina la instancia.

DeleteSocket Configuration
MSG DeleteSocket

Al finalizar, debemos de tener una lógica como la que se muestra en la siguiente imagen:

Secuencia para Crear, Conectar, Escribir y Eliminar el Socket de comunicación

Crear Diseño de etiqueta (ZPL)

Para la creación del diseño de la etiqueta utilizaremos el lenguaje ZPL. El lenguaje ZPL utiliza una sintaxis basada en comandos que indican a la impresora cómo formatear y presentar la información en la etiqueta. Estos comandos pueden especificar el tipo de fuente, el tamaño del texto, la orientación, la posición de los elementos en la etiqueta, la impresión de códigos de barras y mucho más.

El diseño de la etiqueta que vamos es realizar es el de un código QR, en la siguiente imagen se puede apreciar el formato.

Formato Etiqueta Impresora Zebra

Los comandos que enviaremos son:

^XA^FO385,8
^BQN,2,3
^FDMM,
HOLA
^FS
^XZ

Vamos a crear un Array de 20 Elementos, Label_Data, del tipo de dato PRINT_STR. Para esto debemos de crear ese tipo de dato, como se muestra a continuación:

PRINT_STR

En cada elemento del Array colocaremos una línea de comandos fijos, solo el comando que contiene la información del Código QR es el que cambiará, en este caso el elemento 4 (Label_Data[4]).

Label_Data Array

Por último tenemos que "CONCATENAR" todos los elementos en un nuevo Tag del tipo PRINT_STR.

Contatenar diseño de la etiqueta

Descargar Manual del lenguaje ZPL

El lenguaje ZPL (Zebra Programming Language) es un lenguaje de programación de alto nivel diseñado específicamente para controlar impresoras de etiquetas y códigos de barras fabricadas por Zebra Technologies. Utiliza comandos simples y estructuras de datos para definir la disposición y el formato de los datos en la etiqueta.

A continuación te dejo el manual de la Guía de programación del lenguaja ZPL, con el puedes apoyarte para crear un diseño adecuado a tus necesidades.

Descarga de Rutinas

A continuación te dejo las 2 rutinas creadas, lo único que debes hacer es importarlas en tu programa. Una rutina es para la comunicación con la impresora y la otra rutina es para crear el diseño de la etiqueta.

⭐️ Si quieres saber más de otros artículos parecidos a Comunicar PLC Compactlogix con Impresora Zebra/Printronix puedes visitar nuestra categoría Allen Bradley. Te esperamos dentro 👍

Entradas de Interes

  1. William dice:

    Your post on the CompaqLogix to Zebra printer using socket is outstanding - best on the internet that I could find. Thank you. I might need your help with translation

  2. Jean Francois dice:

    Muy bueno el post. Me funciona para una etiqueta de menos de 472 caracteres. El tema que necesito imprimir el triple ! Como habilitar una "large connection" (que da hasta 3972) en lugar de una conexión estándar ?
    Debo cortar el texto y enviar varios mensajes "WriteSocket" uno atrás del otro ?
    Gracias contestarme...
    Saludos.

    1. Carlos Abner dice:

      Hola Jean, si podrías hacer lo que comentas, alguna vez lo encontré en un programa de estar enviando pequeñas cadenas poco a poco.
      Pero para lo que ocupas yo te recomiendo que modifiques el tipo de dato String PRINT_STR, ve al apartado de STRINGS que se encuentra al lado izquierdo, ahí esta el tipo string PRINT_STR, dale doble click y en Max characters ahí pon la cantidad que necesites.
      Solo que el tag Label_Data te recomiendo que lo disminuyas, o hasta podría no ser un array, porque con esto se consumiría mucha memoria, si gusta me puede escribir un correo a cvargaslerma491@gmail.com

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tu puntuación: Útil

Subir