Comunicar PLC Compactlogix con Impresora Zebra/Printronix
hace 1 año · Actualizado hace 8 meses
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.
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).
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).
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:
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.
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:
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
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.
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.
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:
MSG Source Length
Especifique 16 bytes (Timeout + Addr + BufLen) + número de bytes para escribir.
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.
Al finalizar, debemos de tener una lógica como la que se muestra en la siguiente imagen:
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.
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:
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]).
Por último tenemos que "CONCATENAR" todos los elementos en un nuevo Tag del tipo PRINT_STR.
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 👍
-
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
-
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.
Deja una respuesta
Entradas de Interes