# DataMatrix-Code

Der DataMatrix-Code ist einer der bekanntesten 2D-Codes. Er wurde in den späten 1980er Jahren in den USA durch die Acuity Corp. entwickelt.

## Anwendungsbereiche

Heute ist dieser Code einer der bekanntesten Typen der 2D-Codes und wird für dauerhafte Direktbeschriftungen mittels Laser in der Produktion (z. B. Leiterplatten), mit Nadelprägung im Automobilbau, bei Analysegeräten und Instrumenten (Chemie, Medizin), aber auch zunehmend als gedrucktes Codebild im Dokumentenhandling (Tickets, DV-Freimachung beim Postversand) verwendet. Im Arzneimittelbereich wird es für Ausdrucke des Elektronischen Rezeptes, für Medikationspläne und für die fälschungssichere Seriennummer jeder Arzneimittelpackung im Securpharm-System benutzt.

## Aussehen und Größe

Die Größe des meist quadratischen, manchmal auch rechteckigen Codebildes wird aus einer großen Auswahlmenge bestimmt. Die Symbol-Elemente im Codebild sind je nach Herstellverfahren quadratisch oder rund, das gilt auch für das Randmuster (Finder Pattern).

## Aufbau

Der DataMatrix-Code besteht aus vier oder fünf Hauptkomponenten:
* die zwei Paare fester durchgehender und unterbrochener Kanten als Begrenzungslinien (Finder Pattern)
    Die festen Begrenzungslinien dienen zur Abgrenzung. Sie werden für die Aufrichtung und Entzerrung des DataMatrix-Codes verwendet, so dass jeder Lesewinkel möglich ist.
* die umlaufende Ruhezone (Quiet Zone)
    Diese leere Zone umgibt den DataMatrix-Code. Sie enthält keinerlei Informationen oder Muster. Die Breite der Ruhezone beträgt mindestens eine Spalte bzw. eine Zeile (besser die vierfache Breite bzw. Höhe eines Moduls) und wird zur Abgrenzung von anderen optischen Bildelementen der Umgebung benötigt.
* die den geschlossenen Kanten gegenüberliegende Ecke
    Diese Ecke erlaubt das schnelle Erkennen der Codeschemata. Beim Codeschema ECC 200 mit einer geraden Anzahl Zeilen und Spalten ist das Element in der oberen rechten Ecke stets weiß. Bei den anderen genormten Codeschemata mit einer ungeraden Zeilen- und Spaltenzahl ist das Element in der oberen rechten Ecke stets schwarz.
* die Ausrichtungsmuster (Alignment Pattern)
    Diese paarweise Kombination durchgehender und unterbrochener Linien in beiden Richtungen waagerecht und senkrecht erleichtern die Bildauswertung. Sie unterteilen große Datenfelder bei Codes mit mindestens 32 Modulen Kantenlänge in gleich große Teile.
* der Datenbereich
    Dieser Datenbereich enthält die eigentliche binäre Information in kodierter Form. Je nach Größe der Matrix definiert sich damit auch die Anzahl der möglichen Informationen.
Mit dem DataMatrix-Code 144×144 ECC 200 (zuzüglich Suchmuster und Ausrichtungsmuster) lassen sich bis zu 1556 Bytes, mithin 3116 Ziffern (3,5 Bit pro Zeichen) oder 2335 ASCII-Zeichen (7 Bit pro Zeichen) kodieren.
Der DataMatrix-Code ist ein Binärcode. Ein Element wird Modul genannt und besteht aus einer quadratischen Zelle. Das Größenverhältnis zwischen einem weißen und schwarzen Modul ist 1:1.
Für den DataMatrix-Code ECC 200 gibt es vordefinierte quadratische und rechteckige Formate. Bei einer Symbolgröße ab 32 x 32 werden die Regionen in mehrere Quadranten aufgeteilt. Bei rein numerischen Codierungen ist die Datenkapazität durch den BCD-Code höher als bei alphanumerischen Codierungen. Die Datenkapazität aufgrund des BCD-Codes für Zahlen kann verdoppelt werden kann. Statt ein Byte für eine Zahl zu verwenden, werden beim BCD-Code nur die Halbbytes benutzt. Die Gewichtung ist hierbei 8-4-2-1.
Da der DataMatrix-Code ECC 200 nur geradzahlige Formate kennt, kann er von ECC 0 bis ECC 140 dadurch unterschieden werden, dass gegenüber des Schnittpunktes der zwei durchgezogenen Linien das Eckmodul immer frei bleiben muss. Die DataMatrix-Codes ECC 0 bis ECC 140 haben eine ungerade Anzahl von Zeilen und Spalten. Um die Daten im DataMatrix-Code zu kodieren, gibt es verschiedene Zeichensätze. Das mögliche Datenvolumen innerhalb der Kodierung ist abhängig von diesen Zeichensätzen. Der Standardzeichensatz ist ASCII-Code mit 7 Bit und der erweiterte ASCII-Code mit 8 Bit.

## Fehlerbehandlung

Der DataMatrix-Code existiert in Kombination mit einem Verfahren zur Fehlererkennung und zwei verschiedenen Verfahren zur Fehlerkorrektur. Alle Varianten benutzen einen CRC-Algorithmus zur Fehlererkennung.
Das ursprünglich eingesetzte Verfahren benutzt zur Fehlerkorrektur einen Faltungscode zur Vorwärtsfehlerkorrektur. Diese Variante wird als ECC00 bis zu ECC140 bezeichnet, wobei ECC für Fehlerkorrektur-Code (englisch „error correcting code“) steht und die Zahl angibt, in welchem Maße die Daten redundant im Code abgespeichert sind. Neuerdings wird zur Fehlerkorrektur der leistungsfähigere Reed-Solomon-Algorithmus eingesetzt. Diese Variante wird als ECC200 bezeichnet. Es wird im Allgemeinen empfohlen, nur noch die aktuelle ECC200-Version einzusetzen.
Die ECC200-Fehlerkorrektur basiert auf den Codewörtern des Codes, die jeweils aus acht Matrixzellen bestehen. Eine Matrixzelle pro Codewort (8 Matrixzellen insgesamt), die defekt ist, zerstört das Codewort. Allerdings ist auch nur ein Codewort zerstört, wenn alle acht Matrixzellen des Codewortes zerstört sind. In der rechteckigen Version des DataMatrix-Codes können zwischen 3 und 14 fehlerhafte Codewörter korrigiert werden. In der quadratischen Version können zwischen 2 und 310 fehlerhafte Codewörter korrigiert werden. Jede individuelle Anzahl von korrigierbaren Codewörtern gilt immer nur für eine Matrixgröße (zwischen 10×10 bis zu 144×144).
Wenn die Fehler so verteilt sind, dass die zerstörten Bereiche 25 % der Codefläche zerstören und dabei die Anzahl der erlaubten zerstörten Codewörter nicht überschritten wird, ist eine automatische Korrektur möglich. Wenn die Fehler so verteilt sind, dass eine kleine Codefläche zerstört ist, aber viele Codewörter betroffen sind, funktioniert die Fehlerkorrektur nicht mehr bzw. nur bis zum definierten Maß der erlaubten zerstörten Codewörter.

## Normung

Der DataMatrix-Code ist durch die Internationale Organisation für Normung (ISO) genormt (ISO/IEC 16022:2006). Der technische Report ISO/IEC TR 24720:2008 beschreibt die Anwendung des Codes in Direktmarkierungen (DPM – Direct part Marking). Diese Normen liefern eine einheitliche Basis und erlauben damit, Codes unabhängig vom Hersteller des Druckers oder des Lesegeräts herzustellen und zu lesen.
Die Registrierungsstelle für ausgebende Agenturen (Issuing Agencies, IACs) ist das niederländische Normeninstitut NEN. IACs können mit Hilfe dieser Registrierung international eindeutige Artikelnummersysteme und Seriennummersysteme aufbauen. Das Ganze passiert unter dem Dach des ISO. Registrierte IACs sind beispielsweise EDIFICE, GS1, HIBC, ODETTE usw.

## GS1 und Data Matrix

Im GS1-System ist Data Matrix ISO Version ECC 200 für festgelegte Anwendungsbereiche freigegeben. Obligatorisch ist dabei die Kodierung des Sonderzeichens FNC1 nach dem Startzeichen. Den Anwendungen wird damit gezeigt, dass der Codeinhalt nach den GS1 Vorgaben strukturiert wird. Die Grundlage dieses Konzeptes ist in internationalen Normen festgehalten. GS1 ist nach ISO/IEC 15459-2 als Issuing Agency registriert. Die ISO/IEC 15434 legt fest, wie die benutzte Struktur erkannt werden kann und die ISO/IEC 15418 beschreibt die Datenstruktur.
Damit die aus einem 'GS1 DataMatrix-Symbol' erhaltenen Daten eindeutig interpretiert werden können, werden Format und Bedeutung jedes einzelnen, im GS1-Datenbezeichnerkonzept darstellbaren Dateninhaltes exakt beschrieben.
Im Gesundheitswesen hat sich 'GS1 DataMatrix' bereits als globaler Standard etabliert. Weitere Anwendungen finden sich in den technischen Industrien und im Verteidigungssektor. Aber auch in Bereichen wie Logistik und Handel, in denen bisher lineare Symbologien vorherrschten, gibt es immer mehr Anwendungsfälle für den Einsatz des 'GS1 DataMatrix'.

## Vergleich mit eindimensionalen Strichcodes

Beim DataMatrix-Code sind die Informationen sehr kompakt in einer quadratischen oder rechteckigen Fläche als Muster von Punkten kodiert. Beim Lesen eines DataMatrix-Codes werden nicht mehr zwei verschiedene Balkenbreiten in der Folge eindeutig bestimmt, wie beim eindimensionalen Strichcode (1D-Code), sondern die Anordnung der gleich großen Punkte innerhalb der Berandung (Suchmuster) und im Raster der Matrix. Die Punkte sind schwarze oder weiße Kästchen, die aneinander anschließen, oder runde Punkte mit Lücken dazwischen. Allein diese einheitliche Symbolgröße und der feste Symbolabstand machen das Lesen des Bildes und das Dekodieren der Information deutlich sicherer und den Code in der Ausdehnung erheblich kompakter. Da der DataMatrix-Code außerdem ein Verfahren der Fehlerkorrektur bietet, verdrängt er den Strichcode, der meist nur die Erkennung eines einzelnen Fehlers unterstützt, in vielen Anwendungen.

## HIN, HIBCC und Data Matrix

Es werden die genormten Symbologien eines DataMatrix-Codes gemäß ISO/IEC 16022, angewendet. Dabei ist das erste kodierte Zeichen immer das charakteristische Sonderzeichen.
HIBCC und EHIBCC selber sind keine Normenorganisation, sondern Organisationen, die sicherstellen, dass es weltweit eindeutige Nummernkreise im Anwendungsbereich der Industrie, insbesondere des Gesundheitswesens gibt. Da das DataMatrix-Codesystem allgemein für die internationale Industrie entwickelt wurde, dominiert kein Industriebereich das System. Insbesondere in der Pharmaindustrie ist dieses System bekannt.
HIBCC respektive EHIBCC sind als IAC gemäß der ISO/IEC 15459-2 (Issuing Agency) bei der offiziellen Registrierungsstelle für IACs registriert. Die Nutzer des HIBCC Systems nutzen die Herstellernummern (LIC) unter einer Lizenz des HIBCC bzws des EHIBCC, aber gebührenfrei.
HIN ist Teil des HIBCC-DataMatrix-Code und bezeichnet das Ergebnis als Health Industry Number innerhalb der HIBCC Datenstruktur. Das ist lediglich ein Standortkennzeichen für einen Betrieb der Gesundheitswirtschaft, beispielsweise ein Klinikum.
Ein allgemeiner Symbologieschutz für DataMatrix-Codes existiert nicht. Die Verwendung von anderen Kennzeichensystemen ist jedoch nicht freigestellt, es ist generell die Vorgabe gemäß ISO/IEC 15418 (Referenz auf ANSI MH10.8.2) zu beachten, um Verwechslungen und Fehler zu vermeiden. Nach dem ersten Zeichen (+) folgt beispielsweise eine definierte HIBCC Datenstruktur.

## Lesegeräte

Im Unterschied zum 1D-Code wird beim 2D-Code idealerweise eine digitale Kamera verwendet. Das Codebild muss lediglich im Kamerafenster liegen, die Orientierung gegenüber dem Bildfeld ist gleichgültig. Dadurch kann der DataMatrix-Code ohne Bewegung von Gerät oder Optik automatisch abgebildet werden. Das Lesen der Codes erfolgt üblicherweise bei ruhendem Objekt oder bei gleichförmiger Bewegung, wobei ein einzelnes Bild erfasst und ausgewertet wird. Höhere Geschwindigkeiten während der Aufnahme werden durch die Nutzung von Zeilenkameras ermöglicht.
Die Kamera erfasst die Information zweidimensional und eine Software wertet das Bild aus. Daher müssen 2D-Codes mit einer Lichtquelle flächig beleuchtet werden. Das vom 2D-Code reflektierte Licht wird dann in einer „Bildebene“, zum Beispiel einem CMOS-Sensor, scharf abgebildet.
Viele Mobiltelefone mit Kamera sind mit einem Code-Scanner ausgestattet. Damit kann beispielsweise eine in einem DataMatrix-Code kodierte Telefonnummer oder eine Webseitenadresse einfach eingelesen werden.
Zeilenscanner sind ungebräuchlich und nicht so sicher in der Abbildung des Codebildes.

## Druckanforderungen

Die Anforderungen an die Druckqualität von Matrixcodes sind in der ISO/IEC 15415 definiert. Diese Norm bezieht die jeweilige Symbologienorm, hier ISO/IEC 16022, mit ein. Unter anderem sind damit Anforderungen an Kontraste und Matrixverzerrungen definiert.
Zu beachten ist, dass der DataMatrix-Code gemäß ISO/IEC 16022 für Direktbeschriftung (Laser, Nadelpräger usw.) nicht spezifiziert ist.
Da dies aber in der Industrie eine typische Anwendung des DataMatrix-Codes ist, wurde mit der ISO/IEC TR 29158 eine Druckqualitätsanforderung entwickelt, die diese Lücke schließt. Der technische Report ISO/IEC TR 24720 beschreibt die verschiedenen Verfahren zur direkten Kennzeichnung. Ein Teilaspekt dabei ist der Einsatz des DataMatrix-Codes. Eine weitere ähnliche Anwendung des DataMatrix-Codes ist in der DIN V 66401 beschrieben.
Insbesondere genadelte Codes (Dot Peening) sind eine robuste Kennzeichnung, die über die Lebensdauer der gekennzeichneten Produkte lesbar bleibt.
Ähnliche Codes sind der QR-Code nach ISO/IEC 18004, der MaxiCode nach ISO/IEC 16023, der Aztec-Code, der Mesa Code und andere, teilweise proprietäre Codes.

## Nutzungsbeispiele

Die Deutsche Post AG nutzt zur DV-Freimachung Codes der Größe 22×22 und 26×26, für die Internetmarke Codes der Größe 26×26, für normale Briefmarken (seit 2021) der Größe 16x48, für das Produkt Stampit Codes der Größe 32×32, für das Produkt Frankit die Größe 36×36 und bei Pressepost mit Randbeschriftung Codes der Größe 52×52.
Auch die Schweizer Post nutzt den DataMatrix-Code – unter anderem für die Frankierung von Massensendungen. Unter den Produktnamen PP Easy (ein statischer Code für die gesamte Sendung) und PP Business (dynamischer Code; jedes Element einer Sendung erhält individuelle Angaben) werden diese Frankierlösungen angeboten. Im DataMatrix-Code sind hierbei Informationen zum Versender (Verrechnung der Sendung) und das Handling der Retouren enthalten. Im Fall von PP Business hat der Kunde (der Versender) zusätzliche Zeichen zur Verfügung, die er für eigene Informationen verwenden kann.
In Frankreich wird auf der Rückseite des biometrischen nationalen Personalausweises ein 2D-Doc-Code abgedruckt, in dem der Wohnsitznachweis codiert ist und der eine Erweiterung des DataMatrix-Codes darstellt.
Für die UDI-Kennzeichnung in Europa kann gemäß Verordnung (EU) 2017/745 über Medizinprodukte (MDR) und Verordnung (EU) 2017/746 über In-vitro-Diagnostika (IVDR) ein Data Matrix Code genutzt werden. Mit Durchführungsbeschluss der EU-Kommission wurde GS1 am 6. Juni 2019 als UDI-Zuteilungsstelle benannt. Damit erfüllt ein GS1 DataMatrix mit den entsprechenden GS1 Datenelementen die gesetzlichen Kennzeichnungsanforderungen für Medizinprodukte.
In der Pharmaindustrie wird durch gesetzliche Regelungen (Richtlinie 2011/62/EU) eine Erkennung von Fälschungen verlangt. In der Umsetzung wird ein DataMatrix-Code mit einer Seriennummer benutzt (www.ifaffm.de, PPN Code). Die Datenstruktur basiert auf ISO/IEC 15418, ISO/IEC 15434 und ISO/IEC 15459-2.
Im Allgemeinen wird mit der internationalen Norm ISO 22742 die Kennzeichnung von Produktverpackungen mit Codes beschrieben. Die Produktkennzeichnung ist in der ISO 28219 beschrieben. Es kommen dabei ISO-konforme Datenstrukturen zum Einsatz sowie Codes, die wie der DataMatrix-Code, in einer ISO/IEC-Norm spezifiziert sind.