Volver al blog

Códigos de día del año del SLC 5/04 para impresoras de etiquetas

Cree un código de producción YYYYDDD validado en un SLC 5/04. Esta guía distingue el día ordinal del número de día juliano y aborda el muestreo del reloj, los años bisiestos, el desbordamiento, el ...

Muchas plantas de envasado piden a un SLC 5/04 que cree una «fecha juliana» para una impresora de etiquetas. En la mayoría de los casos, el valor requerido no es un número de día juliano astronómico. Es un día ordinal, también llamado día del año: el 1 de enero es 001 y el 31 de diciembre es 365 o 366. Esta distinción debe quedar escrita en la especificación de la interfaz antes de crear la lógica de escalera.

Un código como 2026243 normalmente significa el año 2026 seguido del día ordinal 243. Es útil para el seguimiento de lotes porque tiene una longitud fija y se ordena naturalmente dentro de un año. No identifica la hora del día, la zona horaria, el turno de producción ni un lote globalmente único. Esos campos deben gestionarse por separado cuando la trazabilidad los requiera.

Rutina de escalera del SLC 5/04 que calcula un código de día ordinal a partir de los campos del calendario

Defina el código solicitado como el año más el día ordinal de tres dígitos antes de elegir el almacenamiento como entero o cadena.

Verifique primero la fuente del reloj del controlador

No copie direcciones del archivo de estado de otro proyecto sin comprobar el procesador, la serie, el firmware y la referencia oficial de la tabla de datos instalados. El archivo de estado del SLC contiene información del reloj, pero las palabras exactas y el comportamiento de actualización deben verificarse para el controlador de destino. Los alias incorrectos pueden producir valores plausibles hasta que un cambio de mes o de año revele el error.

Copie el año, el mes y el día en registros de trabajo como una sola muestra coherente. Si los valores se leen al pasar la medianoche, la rutina puede combinar el mes de ayer con el día de hoy. Un enfoque consiste en realizar dos muestras y aceptar los datos solo cuando ambos conjuntos coincidan. Otro es actualizar la fecha de producción durante un intervalo tranquilo definido después de la medianoche.

El reloj del controlador también debe mantenerse. Una fórmula correcta no puede reparar una batería agotada, un reloj incorrecto ni un ajuste no autorizado. Genere una alarma cuando la fecha esté fuera de un rango aprobado y documente quién puede ajustar el reloj después del mantenimiento.

Use un método claro de desplazamiento mensual

El día ordinal equivale al día del mes más todos los días de los meses anteriores. Almacene los desplazamientos acumulados no bisiestos en un archivo de enteros: enero 0, febrero 31, marzo 59, abril 90, mayo 120, junio 151, julio 181, agosto 212, septiembre 243, octubre 273, noviembre 304 y diciembre 334.

Valide el mes antes de indexar ese archivo. Un valor cero, negativo o superior a 12 no debe direccionar un registro no previsto. Valide también el día según el mes seleccionado. El controlador debe activar un bit de fecha no válida, inhibir la impresión y mostrar los campos rechazados en lugar de crear un código de lote plausible pero falso.

Después de recuperar el desplazamiento, calcule el día ordinal como el desplazamiento más el día del mes. Sume uno cuando el año sea bisiesto y el mes sea posterior a febrero. Mantenga visibles los valores intermedios en registros separados. Una expresión compacta puede ahorrar un peldaño, pero dificulta la resolución de problemas en línea.

Implemente la regla gregoriana de los años bisiestos

La prueba común de «divisible por cuatro» es incompleta para los años de siglo. Según la regla gregoriana, un año es bisiesto cuando es divisible por cuatro, excepto los años divisibles por 100, que no son bisiestos a menos que también sean divisibles por 400. Por lo tanto, 2000 fue bisiesto, 2100 no lo será y 2400 sí lo será.

El NIST explica que el calendario gregoriano elimina tres años bisiestos en cada ciclo de 400 años. Vale la pena implementar esa regla porque el código reutilizable suele durar más de lo esperado. Consulte la explicación del NIST sobre los años bisiestos.

Construya la prueba mediante comparaciones explícitas de restos compatibles con el conjunto de instrucciones instalado. Comente cada rama. Evite una expresión que los técnicos futuros no puedan verificar en línea. Si la especificación de la planta utiliza deliberadamente una regla más sencilla, documente su rango de fechas válido.

Mantenga la aritmética de enteros dentro del rango

El día ordinal cabe en un entero con signo de 16 bits. Un valor numérico combinado como YYYYDDD no. Por ejemplo, 2026243 supera 32.767. No intente guardar el código completo de la etiqueta en un registro de enteros normal del SLC.

Mantenga el año y el día ordinal como enteros separados y después cree una cadena. Esto evita el desbordamiento y conserva los ceros iniciales. Si la impresora acepta campos separados, transmítalos por separado. Si realmente se requiere un número de día juliano astronómico, utilice un algoritmo y una representación de datos revisados por separado; no cambie el nombre de esta rutina de día ordinal.

Dé formato a una cadena de impresora de ancho fijo

La cadena de producción siempre debe contener cuatro dígitos para el año y tres para el día ordinal. El día 7 debe convertirse en 007. Cree el resultado en un búfer ASCII o de cadena mediante instrucciones compatibles con el procesador y el proyecto. Confirme la longitud de destino antes del disparo de impresión y sobrescriba todo el búfer para que no queden caracteres de un mensaje anterior.

Código de etiqueta YYYYDDD de ancho fijo generado por un SLC 5/04

El formato de ancho fijo conserva los ceros iniciales y mantiene alineados los campos del código de barras.

Utilice un protocolo de solicitud y confirmación con la impresora. Congele la cadena de fecha completa cuando se emita la solicitud. No permita que una rutina de fecha de ejecución continua cambie el búfer mientras haya un mensaje activo. Registre el éxito, el tiempo de espera agotado y el rechazo de la impresora como estados separados.

Valide los límites, no solo las fechas normales

Pruebe el 1 de enero, el 28 de febrero, el 29 de febrero de un año bisiesto, el 1 de marzo en años bisiestos y comunes, el 31 de diciembre y el cambio de año. Incluya el 2099-12-31, el 2100-02-28 y el 2100-03-01 si el código puede permanecer en servicio o copiarse en el futuro. Compare los resultados con un calendario independiente.

Introduzca deliberadamente datos incorrectos: mes 0, mes 13, día 0, 31 de abril y 29 de febrero en un año común. Confirme que la rutina rechaza la impresión. Apague y vuelva a encender el procesador cerca de un cambio de fecha y verifique el reloj, los registros de trabajo, el comportamiento del primer escaneo y el protocolo de comunicación con la impresora.

Integre el código con la gestión del lote

La rutina de fecha debe proporcionar un valor validado, pero la secuencia de envasado decide cuándo pasa a formar parte de un lote. Un lote que comienza antes de la medianoche puede necesitar conservar su fecha de producción original después del cambio de calendario. Capture el valor aprobado al inicio del lote y consérvelo hasta que el lote se cierre.

Almacene la rutina documentada junto con los registros de migración de los sistemas PLC y PAC de la planta. Incluya las palabras exactas de la fuente del reloj utilizadas en esa máquina. Mantenga visibles el código de fecha activo y el estado de validación a través de la capa de HMI y computación industrial.

Perspectiva de ingeniería

La principal mejora es la claridad conceptual. Denomine al valor día ordinal o código de día del año, valide el reloj y los campos del calendario, utilice la regla gregoriana completa, mantenga la aritmética dentro del rango y congele una cadena de ancho fijo durante la transmisión. Estas decisiones evitan errores silenciosos de trazabilidad que pueden aparecer únicamente en un día bisiesto, un cambio de año o la sustitución del controlador.

Deja un comentario

Tenga en cuenta que los comentarios deben ser aprobados antes de ser publicados.