Articulo de referencia

Matriz de datos

Un ejemplo de código Data Matrix que codifica el texto: "Wikipedia, la enciclopedia libre". Una matriz de datos es un código bidimensional compuesto por "celdas" o puntos blanco...

Un ejemplo de código Data Matrix que codifica el texto: "Wikipedia, la enciclopedia libre".

Una matriz de datos es un código bidimensional compuesto por "celdas" o puntos blancos y negros dispuestos en un patrón cuadrado o rectangular , también conocido como matriz . La información que se codifica puede ser texto o datos numéricos. El tamaño habitual de los datos oscila entre unos pocos bytes y 1556 bytes . La longitud de los datos codificados depende del número de celdas de la matriz. A menudo se utilizan códigos de corrección de errores para aumentar la fiabilidad: incluso si una o más celdas se dañan y resultan ilegibles, el mensaje aún puede leerse. Un símbolo de matriz de datos puede almacenar hasta 2335 caracteres alfanuméricos .

Los símbolos Data Matrix son rectangulares, generalmente cuadrados, y están compuestos por "celdas" cuadradas que representan bits . Según la codificación utilizada, una celda "clara" representa un 0 y una celda "oscura" un 1, o viceversa. Cada Data Matrix se compone de dos bordes sólidos adyacentes en forma de "L" (denominados "patrón de búsqueda") y otros dos bordes formados por "celdas" o módulos claros y oscuros alternados (denominados "patrón de temporización"). Dentro de estos bordes se encuentran filas y columnas de celdas que codifican información. El patrón de búsqueda se utiliza para localizar y orientar el símbolo, mientras que el patrón de temporización proporciona un recuento del número de filas y columnas del símbolo. A medida que se codifican más datos en el símbolo, aumenta el número de celdas (filas y columnas). Cada código es único. Los tamaños de los símbolos varían de 10×10 a 144×144 en la nueva versión ECC 200, y de 9×9 a 49×49 en la versión anterior ECC 000-140.

Aplicaciones

Una matriz de datos en una tarjeta Mini PCI , que codifica el número de serie 15C06E115AZC72983004.

La aplicación más popular de Data Matrix es el marcado de objetos pequeños, debido a la capacidad del código para codificar cincuenta caracteres en un símbolo legible a 2 o 3 mm² ( 0,003 o 0,005 pulgadas cuadradas ) y al hecho de que el código se puede leer con una relación de contraste de solo el 20 %. [ 1 ] Data Matrix es escalable; existen aplicaciones comerciales con imágenes tan pequeñas como 300 micrómetros (0,012 pulgadas) (grabadas con láser en un dispositivo de silicio de 600 micrómetros (0,024 pulgadas) ) y tan grandes como un cuadrado de 1 metro (3 pies) (pintado en el techo de un vagón de carga ). La fidelidad de los sistemas de marcado y lectura es la única limitación. La Alianza de Industrias Electrónicas de EE. UU. (EIA) recomienda el uso de Data Matrix para el etiquetado de pequeños componentes electrónicos. [ 2 ]      

Los códigos Data Matrix se están volviendo comunes en soportes impresos como etiquetas y cartas. Un lector de códigos de barras puede leer rápidamente el código , lo que permite rastrear el material, por ejemplo, cuando se envía un paquete al destinatario.

Superficies de marcado

Para fines de ingeniería industrial, los códigos Data Matrix se pueden marcar directamente en los componentes, lo que garantiza que solo el componente deseado se identifique con los datos codificados. Estos códigos se pueden marcar en los componentes mediante diversos métodos, pero en la industria aeroespacial, los más comunes son la impresión por inyección de tinta industrial, el marcado por micropuntos, el marcado láser y el grabado químico electrolítico (ECE). Estos métodos proporcionan una marca permanente que puede durar toda la vida útil del componente.

Una vez marcado el componente, las cámaras lectoras ubicadas en la línea de producción, así como una cámara utilizada por los técnicos una vez finalizada la producción, pueden decodificar la matriz de datos para leer la información relevante. Esta información puede incluir la fecha de fabricación, el número de serie y cualquier otra información que el fabricante decida incluir. Estas cámaras lectoras también se pueden usar para rastrear el movimiento del componente a lo largo de la línea de producción, así como para realizar controles de inventario.

Lectura de código Data Matrix con teléfono móvil (antiguo proyecto Semacode de Wikipedia )

Los códigos Data Matrix, junto con otros códigos de código abierto como los códigos de barras 1D, también se pueden leer con teléfonos móviles mediante la descarga de aplicaciones móviles específicas para cada código. Si bien muchos dispositivos móviles pueden leer códigos 2D, incluido el código Data Matrix, [ 3 ] pocos extienden la decodificación para permitir el acceso e interacción móvil, lo que permite que los códigos se utilicen de forma segura y en diferentes medios; por ejemplo, en soluciones de seguimiento y localización, lucha contra la falsificación, gobierno electrónico y banca.

Industria alimentaria

Los códigos Data Matrix se utilizan en la industria alimentaria en sistemas de codificación automática para evitar que los productos alimenticios se envasan y fechan incorrectamente. Los códigos se almacenan internamente en la base de datos del fabricante y se asocian a cada producto, por ejemplo, a las variaciones de ingredientes. Para cada lote de producción, se proporciona el código único a la impresora. Se requiere el diseño de la etiqueta para que el código Data Matrix 2D se posicione correctamente para un escaneo óptimo. Para los códigos en blanco y negro, no es necesario realizar pruebas a menos que la calidad de impresión sea un problema, pero todas las variaciones de color deben probarse antes de la producción para garantizar su legibilidad.

Arte

En mayo de 2006, un programador informático alemán, Bernd Hopfengärtner, creó una gran matriz de datos en un campo de trigo (de forma similar a los círculos en los cultivos ). El mensaje decía " ¡Hola, mundo! ". [ 4 ]

Especificaciones técnicas

Un ejemplo de código Data Matrix, que codifica el texto: "Wikipedia" coloreado para mostrar datos (verde), relleno (amarillo), corrección de errores (rojo), buscador y sincronización (magenta) y no utilizado (naranja).

Los símbolos Data Matrix se componen de módulos dispuestos dentro de un perímetro delimitado por un patrón de búsqueda y temporización. Pueden codificar hasta 3116 bytes, que por defecto se interpretan como caracteres del conjunto de caracteres ASCII . El símbolo consta de regiones de datos que contienen módulos dispuestos en una matriz regular. Los símbolos grandes contienen varias regiones. Cada región de datos está delimitada por un patrón de búsqueda, y esta región está rodeada por un borde de zona silenciosa (margen) en sus cuatro lados. (Nota: Los módulos pueden ser redondos o cuadrados; el estándar no define una forma específica. Por ejemplo, las celdas marcadas con puntos suelen ser redondas).

Data Matrix tiene una tasa de error de menos de 1 en 10 millones de caracteres escaneados. [ 5 ]

Data Matrix está diseñado para ser legible en color invertido. [ 6 ]

Matriz de datos ECC 000–140

Las versiones anteriores de Data Matrix incluyen ECC 000, ECC 050, ECC 080, ECC 100 y ECC 140. En lugar de utilizar códigos Reed-Solomon como ECC 200, las versiones ECC 000-140 emplean una corrección de errores basada en convolución. Cada una varía en la cantidad de corrección de errores que ofrece: ECC 000 no ofrece ninguna y ECC 140 ofrece la mayor. Para la detección de errores en tiempo de decodificación, incluso en el caso de ECC 000, cada una de estas versiones también codifica una verificación de redundancia cíclica (CRC) en el patrón de bits. Como medida adicional, la ubicación de cada bit en el código se determina mediante tablas de ubicación de bits incluidas en la especificación. Estas versiones antiguas siempre tienen un número impar de módulos y pueden fabricarse en tamaños que van desde 9 × 9 hasta 49 × 49. Todos los símbolos que utilizan la corrección de errores ECC 000 a 140 se pueden reconocer porque el módulo de la esquina superior derecha es el inverso del color de fondo (binario 1).

Según la norma ISO/IEC 16022, "ECC 000-140 solo debe utilizarse en aplicaciones cerradas donde una única entidad controle tanto la producción como la lectura de los símbolos y sea responsable del rendimiento general del sistema".

Matriz de datos ECC 200

ECC 200, la versión más reciente de Data Matrix, utiliza códigos Reed-Solomon para la recuperación de errores y borrados. ECC 200 permite la reconstrucción rutinaria de toda la cadena de datos codificada cuando el símbolo ha sufrido un daño del 30 %, siempre que la matriz pueda localizarse con precisión.

Los símbolos tienen un número par de filas y un número par de columnas. La mayoría son cuadrados, con dimensiones que van desde 10 × 10 hasta 144 × 144. Algunos, sin embargo, son rectangulares, con dimensiones que van desde 8 × 18 hasta 16 × 48 (solo valores pares). Todos los símbolos que utilizan la corrección de errores ECC 200 se pueden reconocer porque el módulo de la esquina superior derecha tiene el mismo color que el fondo (binario 0).

Entre las capacidades adicionales que diferencian los símbolos ECC 200 de los estándares anteriores se incluyen:

  • Especificación del conjunto de caracteres (mediante interpretaciones de canales extendidos )
  • Símbolos rectangulares
  • Anexión estructurada (enlace de hasta 16 símbolos para codificar mayores cantidades de datos)

Corrección de errores

Los códigos ECC 200 utilizan la corrección de errores de Reed-Solomon sobre el campo finito.F256{\displaystyle \mathbb {F} _{256}}(o GF(2 8 ) ), cuyos elementos se codifican como bytes de 8 bits ; el byteb7b6b5b4b3b2b1b0{\displaystyle b_{7}b_{6}b_{5}b_{4}b_{3}b_{2}b_{1}b_{0}}con un valor numérico estándari=07bi2i{\displaystyle \textstyle \sum _ {i=0}^{7}b_ {i}2^{i}}codifica el elemento de campoi=07biαi{\displaystyle \textstyle \sum _{i=0}^{7}b_{i}\alpha ^{i}}dóndeαF256{\displaystyle \alpha \in \mathbb {F} _{256}}se considera un elemento primitivo que satisfaceα8+α5+α3+α2+1=0{\displaystyle \alpha ^{8}+\alpha ^{5}+\alpha ^{3}+\alpha ^{2}+1=0}El polinomio primitivo esincógnita8+incógnita5+incógnita3+incógnita2+1{\displaystyle x^{8}+x^{5}+x^{3}+x^{2}+1}, correspondiente al polinomio número 301, con raíz inicial = 1 para obtener polinomios generadores. El código Reed-Solomon utiliza diferentes polinomios generadores sobreF256{\displaystyle \mathbb {F} _{256}}, dependiendo de cuántos bytes de corrección de errores agregue el código. El número de bytes agregados es igual al grado del polinomio generador.

Por ejemplo, en el símbolo de 10  ×  10, hay 3 bytes de datos y 5 bytes de corrección de errores. El polinomio generador se obtiene como:gramo(incógnita)=(incógnita+α)(incógnita+α2)(incógnita+α3)(incógnita+α4)(incógnita+α5){\displaystyle g(x)=(x+\alpha )(x+\alpha ^{2})(x+\alpha ^{3})(x+\alpha ^{4})(x+\alpha ^{5})},

lo que da como resultado: gramo(incógnita)=incógnita5+α235incógnita4+α207incógnita3+α210incógnita2+α244incógnita+α15{\displaystyle g(x)=x^{5}+\alpha ^{235}x^{4}+\alpha ^{207}x^{3}+\alpha ^{210}x^{2}+\alpha ^{244}x+\alpha ^{15}},

o con coeficientes decimales: gramo(incógnita)=incógnita5+62incógnita4+111incógnita3+15incógnita2+48incógnita+228{\displaystyle g(x)=x^{5}+62x^{4}+111x^{3}+15x^{2}+48x+228}.

Codificación de bytes

Lectores de códigos Data Matrix industriales

El proceso de codificación se describe en la norma ISO/IEC 16022:2006. [ 7 ] Se ha publicado software de código abierto para codificar y decodificar la variante ECC-200 de Data Matrix. [ 8 ] [ 9 ]

Los diagramas a continuación ilustran la ubicación de los datos del mensaje dentro de un símbolo Data Matrix. El mensaje es "Wikipedia" y está dispuesto en un patrón diagonal algo complejo que comienza cerca de la esquina superior izquierda. Algunos caracteres están divididos en dos partes, como la W inicial, y la tercera 'i' está en el "patrón de esquina 2" en lugar de la disposición habitual en forma de L. También se muestran el código de fin de mensaje (marcado como End), los bytes de relleno (P) y corrección de errores (E), y cuatro módulos de espacio no utilizado (X).

El símbolo tiene un tamaño de 16×16 (área de datos de 14×14), con 12 bytes de datos (incluyendo el fin y el relleno) y 12 bytes de corrección de errores. Se utiliza un código Reed Solomon (255,243,6) acortado a (24,12,6). Puede corregir errores o borrados de hasta 6 bytes.

Para obtener los bytes de corrección de errores, se puede llevar a cabo el siguiente procedimiento:

El polinomio generador especificado para el código (24,12,6) es: gramo(incógnita)=incógnita12+242incógnita11+100incógnita10+178incógnita9+97incógnita8+213incógnita7+142incógnita6+42incógnita5+61incógnita4+91incógnita3+158incógnita2+153incógnita+41{\displaystyle g(x)=x^{12}+242x^{11}+100x^{10}+178x^{9}+97x^{8}+213x^{7}+142x^{6}+42x^{5}+61x^{4}+91x^{3}+158x^{2}+153x+41}, que también puede escribirse en forma de matriz de coeficientes decimales:

[1 242 100 178 97 213 142 42 61 91 158 153 41]

El mensaje de 12 bytes "Wikipedia", que incluye "End", P1 y P2, en coeficientes decimales (véanse los diagramas a continuación para el método de cálculo utilizando valores ASCII), es:

[ 88 106 108 106 113 102 101 106 98 129 251 147 ]

Utilizando el procedimiento de codificación sistemática de Reed-Solomon , los 12 bytes de corrección de errores obtenidos (E1 a E12 en decimal) en forma del resto de la división polinómica son:

[ 104 216 88 39 233 202 71 217 26 92 25 232 ]

Estos bytes de corrección de errores se añaden al mensaje original. El mensaje codificado resultante tiene 24 bytes y tiene el siguiente formato:

[ W ikipedia 'Fin' P1 P2 E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 ]

o en coeficientes decimales:

[ 88 106 108 106 113 102 101 106 98 129 251 147 104 216 88 39 233 202 71 217 26 92 25 232 ]

y en coeficientes hexadecimales:

[ 58 6A 6C 6A 71 66 65 6A 62 81 FB 93 68 D8 58 27 E9 CA 47 D9 1A 5C 19 E8 ]

(Tenga en cuenta que la 58 6A 6C 6A 71 66 65 6A 62diferencia es de exactamente uno con respecto a la codificación ASCII de "Wikipedia" 57 69 6B 69 70 65 64 69 61. Esto se debe a la codificación de datos, que se describe en la siguiente sección).

Codificación de datos

La matriz de datos opera en unidades de palabras clave de 8 bits ("bytes"). El modo predeterminado almacena un carácter ASCII por cada palabra clave de 8 bits y permite usar códigos de control para cambiar a otros modos. Los demás modos vuelven al modo predeterminado una vez finalizada la codificación de los datos.

Por defecto, los valores codificados se interpretan como texto en ASCII e ISO-8859-1 . Por ejemplo, para codificar la cadena Wikipédia, primero se convierte a ISO-8859-1 57 69 6B 69 70 E9 64 69 61 20, luego se utiliza una combinación de codificaciones ASCII y Base 256 para llegar a (base-256 en cursiva). Esto se pasa a la rutina de codificación de byte a imagen. El código de interpretación de canal extendido se puede utilizar para cambiar la interpretación: por ejemplo, anteponer (ECI: ) haría que la cadena de bytes se decodifique como la página de códigos 437 , donde es en su lugar .58 6A 6C 6A 71 01 ea 65 6A 62f1 01\0E9Θ

Modos de texto

Los modos C40, Text y X12 son potencialmente más compactos para almacenar mensajes de texto. Son similares a DEC Radix-50 , utilizando códigos de caracteres en el rango 0–39, y tres de estos códigos se combinan para formar un número de hasta 40 3 =64000, que se empaqueta en dos bytes (valor máximo 65536) de la siguiente manera:

V = C1×1600 + C2×40 + C3 + 1
B1 = piso(V/256)
B2 = V mod 256

El valor resultante de B1 está en el rango 0–250. El valor especial 254 se utiliza para volver al modo de codificación ASCII.

Las interpretaciones de los códigos de caracteres se muestran en la tabla siguiente. Los modos C40 y Texto tienen cuatro conjuntos distintos. El conjunto 0 es el predeterminado y contiene códigos que seleccionan temporalmente un conjunto diferente para el siguiente carácter. La única diferencia es que invierten las mayúsculas y minúsculas. C40 utiliza principalmente mayúsculas, con minúsculas en el conjunto 3; en Texto es al revés. El conjunto 1, que contiene códigos de control ASCII, y el conjunto 2, que contiene símbolos de puntuación, son idénticos en los modos C40 y Texto.

Modo EDIFACT

El modo EDIFACT utiliza seis bits por carácter, con cuatro caracteres empaquetados en tres bytes. Puede almacenar dígitos, letras mayúsculas y muchos signos de puntuación, pero no admite letras minúsculas.

Modo base 256

Los datos en modo Base 256 comienzan con un indicador de longitud, seguido de un número de bytes de datos. Una longitud de 1 a 249 se codifica como un solo byte, y las longitudes mayores se almacenan como dos bytes.

L1 = piso(longitud / 250) + 249, L2 = longitud mod 250

Es conveniente evitar largas secuencias de ceros en el mensaje codificado, ya que se convierten en grandes áreas en blanco en el símbolo Data Matrix, lo que puede provocar que el escáner pierda la sincronización. (La codificación ASCII predeterminada no utiliza el cero por este motivo). Para minimizar esta probabilidad, la longitud y los bytes de datos se ocultan añadiendo un valor pseudoaleatorio R(n), donde n es la posición en la secuencia de bytes.

R(n) = (149 × n) mod 255 + 1

Historia

La norma ISO/IEC 16022, el estándar internacional vigente para Data Matrix, se publicó por primera vez como ISO/IEC 16022:2000 en el año 2000. A partir de abril de 2026 , la última revisión es ISO/IEC 16022:2024 (Edición 3). [ 10 ]

Estándares

Data Matrix fue inventada por International Data Matrix, Inc. (ID Matrix), que se fusionó con RVSI/ Acuity CiMatrix , adquirida por Siemens AG en octubre de 2005, Microscan Systems en septiembre de 2008 y Omron en 2017. Actualmente, Data Matrix está cubierta por varias normas ISO / IEC y es de dominio público para muchas aplicaciones, lo que significa que puede utilizarse sin necesidad de licencias ni regalías.

  • ISO/IEC 16022:2024—Especificación de la simbología del código de barras Data Matrix [ 11 ]
  • ISO/IEC 15415: Norma de calidad para impresión 2D
  • ISO/IEC 15418:2016—Semántica del formato de datos de símbolos ( identificadores de aplicación GS1 e identificadores de datos ASC MH10 y su mantenimiento)
  • ISO/IEC 15424:2008—Identificadores de soporte de datos (incluidos los identificadores de simbología) [Identificadores para distinguir diferentes tipos de códigos de barras]
  • ISO/IEC 15434:2006—Sintaxis para soportes ADC de alta capacidad (formato de datos transferidos del escáner al software, etc.)
  • ISO/IEC 15459—Identificadores únicos

Cuestiones de patentes

Antes de que expirara la patente estadounidense 5,612,524 [ 12 ] en noviembre de 2007, la empresa de propiedad intelectual Acacia Technologies afirmó que Data Matrix estaba parcialmente cubierta por su contenido. Como titular de la patente, Acacia supuestamente contactó a los usuarios de Data Matrix exigiendo el pago de derechos de licencia relacionados con la patente.

Cognex Corporation , un importante fabricante de dispositivos de códigos de barras 2D, presentó una demanda de sentencia declaratoria el 13 de marzo de 2006 tras recibir información de que Acacia se había puesto en contacto con sus clientes exigiendo el pago de derechos de licencia. El 19 de mayo de 2008, la jueza Joan N. Ericksen del Tribunal de Distrito de los Estados Unidos en Minnesota falló a favor de Cognex. [ 13 ] El fallo sostuvo que la patente '524, que alegaba cubrir un sistema para capturar y leer códigos de simbología 2D, era inválida e inaplicable debido a la conducta desleal de los demandados durante la obtención de la patente.

Si bien el fallo se dictó después de que expirara la patente, impidió las demandas por infracción basadas en el uso de Data Matrix antes de noviembre de 2007.

La solicitud de patente alemana DE 4107020 se presentó en 1991 y se publicó en 1992. Esta patente no se cita en las solicitudes de patente estadounidenses mencionadas anteriormente y podría invalidarlas.

Véase también

Referencias

  1. "Código de barras Data Matrix" . Archivado del original el 14 de septiembre de 2017.
  2. Stevenson, Rick (diciembre de 2005). "Marcado láser de códigos matriciales en PCB" (PDF) . Printed Circuit Design and Manufacture . Consultado el 31 de mayo de 2007 .
  3. Stefan, V. (2012). El uso de códigos 2D en el desarrollo de aplicaciones móviles con base de datos. Valahian Journal of Economic Studies, 3 (2), 105-114. Recuperado de https://econpapers.repec.org/article/vlhjournl/v_3a3_3ay_3a2012_3ai_3a2_3ap_3a105-114.htm
  4. "Hombre alemán programa 'Hola Mundo' en un campo de trigo" . arstechnica.com . 11 de junio de 2007. Consultado el 22 de febrero de 2017 .
  5. "Prueba de integridad de datos Data Matrix y PDF417" (PDF) . idautomation.com . Archivado del original (PDF) el 20 de agosto de 2019. Consultado el 20 de agosto de 2019 .
  6. ISO/IEC 16022:2006, sección 4.2
  7. Página de comercio electrónico de ISO para esta norma http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=44230
  8. "GitHub – zxing/zxing: Página principal del proyecto oficial ZXing ("Cruce de cebra")" . google.com . Consultado el 22 de febrero de 2017 .
  9. "Página principal de libdmtx" . sourceforge.net . Consultado el 22 de febrero de 2017 .
  10. "ISO/IEC 16022:2000 Tecnología de la información — Especificación internacional de simbología — Data Matrix" . ISO .
  11. "ISO/IEC 16022:2024" .
  12. US 5612524 , Sant'Anselmo, Carl; Sant'Anselmo, Robert y Hooper, David C., "Sistema de símbolos de identificación y método con mecanismo de orientación", publicado el 18 de marzo de 1997, emitido el 18 de marzo de 1997 
  13. "Cognex invalida la patente '524 de Acacia; ¿Y ahora qué? Demanda por difamación comercial" . Groklaw . 23 de junio de 2008. Archivado del original el 5 de mayo de 2010.
  • Guía de GS1 DataMatrix: Descripción general e introducción técnica al uso de GS1 DataMatrix
  • Generador de código Datamatrix - Herramienta en línea