Data Matrix

Der Data Matrix Code ist ein 2-dimensionaler Code der aus Codewörtern für Daten und Fehlerkorrektur besteht sowie feste Strukturen (feste Muster, Fixed Pattern) aufweist die zur Codelagebestimmung und Gitterrekonstruktion bestehen.
Für SmartPhones gibt es viele Apps die den DataMatrix Code dekodieren können. Bezüglich der vollständigen Umsetzung des Codes hapert es aber oft. Es fängt mit der ganz einfachen (nach Norm erlaubt und spezifiziert) Negativversion des Codes an (Heller Code auf dunklem Hintergrund) die nicht gelesen werden. Zu prüfen ist auch ob die verschiedenen Kodiermethoden korrekt umgesetzt sind.

 

NEU : Es gibt eine weitergehende rechteckige Erweiterung des Data Matrix Codes (DMRE)
Das ISO Projekt dazu hat die Nummer ISO/IEC 21471. Ein Entwurf der Norm ist hier zu finden.


Das Erkennungsmerkmal der Matrix Codes ist dass diese in einer Schachbrettform aufgebaut werden. Jedes einzelne Feld beinhaltet eine Information. Da beim Date Matrix jedes Feld (bzw. Matrixzelle oder  Modul) entweder hell oder dunkel sein kann, kann in einer Zelle ein Bit kodiert werden. Ein Bit kann den Wert 0 oder 1 aufweisen. Es werden immer 8 dieser Matrixzellen zusammengefasst. Diese Zusammenfassung ist ein Codewort. Da eine Matrixzelle ein Bit umfasst sind 8 Zellen 8 bit. Mit 8 bit lassen sich die Zahlenwerte von 0 bis 255 kodieren.



Das Bild zeigt ein Codewort eines Data Matrix Codes. Wenn die Codeworte an den Rändern des Codes liegen dann überlappen sich die Codeworte an den gegenüberliegenden Seiten. Damit wird erreicht dass der Platz in dem das Codewort in der gezeigten Geometrie nicht passt trotzdem benutzt werden kann. Das folgende Bild zeigt ein vollständiges Symbol.
 


In diesem Bild ist jedes einzelne Codewort mit einen orangen, grünen, weinroten, rosa oder hellblauen Rahmen markiert worden. Die Codewörter an den Rändern überlappen sich an den gegenüberliegenden Seiten.


In diesem Bild wird das gleiche Symbol noch einmal gezeigt. Anstelle der schwarzen und weißen Matrixzellen ist jetzt in jedem Codewort die Nummer des Codewortes eingetragen. Das Symbol hat eine Matrixgröße von 22 x 22. Es nimmt 50 Codewörter auf. Davon können die Codewörter von 1 bis 30 für die Daten benutzt werden und die Codewörter von 31 bis 50 nehmen die Werte für die Reed Solomon Fehlerkorrektur auf. Die 30 Datencodewörter können 60 Ziffern, 43 aplphanumerische Zeichen oder 28 Bytes aufnehmen.

Jeder Code weist neben den Daten- und Fehlerkorrektur Bereiche mit festen Mustern auf. Im folgenden Bild sind die  festen Muster im Data Matrix Code farblich hervorgehoben.



Die festen Muster unterteilen sich in verschiedene Bereiche. Der gelbe Rahmen ist die Ruhezone (light margin, quiet zone). Diese wird benötigt um das Symbol vom umliegend gedruckten Mustern abzugrenzen. Die Ruhezone sollte mindestesn eine Matrixzelle (Modulbreite) breit sein. Empfohlen wird eine Breite von 3 Modulen. Das Bild zeigt die Ruhezone in einer Breite von einem Modul.

Der blau markierte Bereich ist das L-Suchmuster. Dies dient zur Lageerkennung des Symbol im Bildauschnitt eines Scanners. Der rot markierte Bereich zeigt das Taktmuster (Clock Track). Das Taktmuster zeigt ein alternierendes Muster von Modulen an die immer genau eine Matrixzelle umfassen. Damit kann die Gittermatrix rekonstruiert werden. Die Kenntnis über die Lage des Symbol und die Gitterrekonstruktion ist notwendig um die Codewörter in der korrekten Sequenz (siehe Bild mit den Codewortnummern) zu erkennen.
 

Das folgende Bild zeigt einen Data Matrix Code mit vier Segmenten.

Wenn  ein Symbol in Segmente unterteilt wird dann liegen zwischen den Segmenten wieder feste Muster. Es handelt sich dabei um kleinere  Kopien des L Suchmusters und des Taktmusters. Diese zusätzlichen festen Muster sind in dem Bild in grün und beige farblich hervorgehoben worden.

Die Anzahl der Segmente und Größen sind in folgender Tabelle zu sehen.

kleinste Matrix größte Matrix Anzahl der Segmente
Tabelle der Data Matrix Segmente
10 x 10 26 x 26 1
32 x 32 52 x 52 4
64 x 64 104 x 104 16
120 x 120 144 x 144 36
Rechtecksymbole
8 x 18, 12 x 26 1
8 x 32, 12 x 36, 16 x 36, 16 x 48 2

Zu beachten : Die Tabelle zeigt nur auf welche Matrixgrößen wieviele Segmente nutzen.
Die tatsächliche Anzahl der aller unterschiedlichen Matrixgrößen ist höher.

 

Die folgenden Dateien beinhalten Codebespiele

Quadratische Symbole (ODT Format)

Quadratische Symbole (PDF Format)

Rechteckige Symbole (ODT Format)

Rechteckige  Symbole (PDF Format)

Die folgende Tabelle zeigt die Bedeutung der Codewörter an.

Codewort Funktion oder Daten
1-128 ASCII Daten (ASCII Wert + 1)
129 Füllzeichen (Pad, bitte Folgesequenz beachten)
130-229 Ziffernwerte 00-99 (numerischer Wert + 130)
230 Umschaltung auf C40 Kodierung
231 Umschaltung auf binäre Kodierung (Base 256, Längenangabe erforderlich)
232 Sonderzeichen FNC1 (siehe ISO/IEC 15418, ANS MH10.8.2)
233 Strukturiertes Verketten
234 Scanner Programmierung
235 Einzelschaltung erweitertes ASCII
236 Makro 05 (siehe Format 05 ISO/IEC 15434)
237 Makro 06 (siehe Format 06 ISO/IEC 15434, EDIFICE Seite 11, securPharm Seite 7)
238 Umschaltung auf ANSI X12 Kodierung
239 Umschaltung auf Text Kodierung
240 Umschaltung auf EDIFACT Kodierung
241 ECI Zeichen (Enhanced Channel Interpretation)
242 -253 nur im Base256 Modus benutzt
254 Unlatch
255 nur im Base 256 Modus benutzt

 

Die Umschaltzeichen (Latch) bewirken eine permanente Umschaltung in den gewählten Zeichensatz bis ein ein Unlatch Zeichen kommt. Das Einzelschaltzeichen (upper shift) wirkt sich nur auf das folgende Zeichen aus.

Im Base256 Modus werden die Codewörter mit Hilfe des "255-state algorithm" kodiert. Dabei wird, unter anderem, eine Zahl mit Werten zwischen 1 und 255 zu dem zu kodierenden Wert hinzuaddiert.  Das Base 256 Codewort hat dann Werte zwischen 0 und 255. Als Standardmethode gilt wie bei ASCII ISO 646 und  die erweiterten ASCII Zeichen nach ISO 8859-1, Latin Alphabet No. 1. Wenn weder ECI noch die Standardmethode benutzt wird gibt es keine Möglichkeit zur benutzte Kodierung zu erkennen (außer Merkmale gängiger Schemata wie z.B. UTF-8 durchzuprobieren). Daher erfordert eine binäre Kodierung eine Festlegung was die Daten bedeuten. Es besteht durchaus die Möglichkeit kleine Bilder oder MP3 Schnipsel zu kodieren.

Die ANSI X12 Kodierung ist eine Kodierung die, die Ziffern 0...9, die Buchstaben A....Z, CR, Leerzeichen und die X12 Zeichen  Segment- und Subsegmentseparator kodieren kann. Damit kann eine EDI X12 Nachricht im Data Matrix Code transportiert werden. Der eingeschränkte Umfang der verfügbaren Zeichen erlaubt eine höhere Kodierdichte (5,33 bits pro Datenzeichen)

Die EDIFACT Kodierung ist ebenfalls eine Methode EDIFACT Nachrichten im DataMatrix Code zu transportieren. Es werden 6 bit pro Zeichen benötigt. Es können nur die ASCII Zeichen mit den Werten 32 bis 94 benutzt werden. Im wesentlichen ist es eine Methode um die betreffenden ASCII Zeichen kompakt zu kodieren.

Die C40 Methode fasst zwei Codewörter zu einem 16-bit Wort zusammen. Damit erreicht man eine Kodierdichte von 5,33 oder 10,66 bit pro Zeichen. Mit dem Upper Shift Schalter können erweiterte ASCII Werte dargestellt werden.

Die Text Kodierung kann alle Kleinbuchstaben mit 5,33 bit pro Zeichen kodieren. Mit dem Uppershift können auch hier in 10,66 bits Sonderzeichen wie auch die Großbuchstaben kodiert werden.

Ohne Angabe einer Kodiermethode gilt die ASCII und Digit Methode. Die ASCII Zeichen sind in den Codewörtern 1-128 kodiert (ISO 646). Die Ziffernpärchen in den Codewörtern 130 -229. Mit dem Upper Shift Zeichen können die erweiterten ASCII Zeichen 128 bis 255 (ISO 8859-1, Latin Alphabet No. 1)  kodiert werden.

Mit dem ECI Protokoll können Sonderzeichen wie Griechich, Kyrillisch usw. kodiert werden. Vom AIM Verband gibt es dazu eine dreiteilige Spezifikation zu kaufen. In der Praxis wird die Methode  selten benutzt.  Die Standardmethode ist ECI 000003.

 

"GS1 Datamatrix" ist eine Anwendung des Data Matrix Codes. Der Data Matrix Code wird als Datenträger für die Datenstrukturen nach Vorgaben der privatwirtschaftlich aufgestellten GS1 Organisation benutzt. Als Erkennungsmerkmal muss in diesem Fall das Data Matrix Code Spezialzeichen FNC1 immer als erstes Zeichen im Code erscheinen.

 

 

 

Steckbrief:
Kleinste Matrix 10 x 10, 1 Byte, 3 a/n Zeichen, 6 Ziffern
Größte Matrix 144 x 144 1555 Bytes , 2335 a/n Zeichen, 3116 Ziffern
Kleinste Rechteckmatrix 8x18 3 Bytes 6 a/n Zeichen, 10 Ziffern
Größte Rechteckmatrix 16x48 47 Bytes, 72 a/n Zeichen, 98 Ziffern
Es ist eine Ruhezone von einem Pixelelement ( 1 Modul) rundherum notwendig
Die ECC200 Fehlerkorrektur nach Reed Solomon ist fest vorgegeben. Eine Skalierung ist nicht vorgesehen.
Inverse Symbole sind spezifiziert, spiegelverkehrte Symbole sind nicht spezifiziert, Leserichtung Omnidirektional
Mehrere Symbole können verkettet werden
Die alte Data Matrix Version mit der CRC Fehlerkorrektur ECC000 bis  ECC140 soll nicht mehr benutzt werden.
Norm: ISO/IEC 16022