Titelbild zum Artikel „Serialisierte Codes: Nummer, Zuordnung, Rückverfolgung“
Best Practices

Serialisierte Codes: Nummer, Zuordnung, Rückverfolgung

7 Min. Lesezeit
QR-Code erstellen

Viertausend Ventilgehäuse gehen mit je einem lasermarkierten Code in den Versand. Drei Monate später muss die Garantieseite dahinter umziehen, und sie zieht in zehn Minuten um, weil jeder Code dynamisch war. Dann fragt ein Servicetechniker, ob der Code auf einem Rückläufer zum Fertigungsdatensatz genau dieses Geräts gehört, und die Antwort dauert zwei Tage. Die Seriennummer steht nicht im Code, sondern in einer Tabelle, die jemand neu sortiert und neu erzeugt hat.

Codes zu serialisieren ist nicht schwierig. Die Entscheidung, wo die Seriennummer lebt und was sie bedeuten darf, entscheidet darüber, ob Sie drei Jahre später noch Fragen beantworten können.

Drei Orte, an denen eine Seriennummer leben kann

In der Nutzlast, als die ganze Nutzlast. Der Code kodiert SN-0004821 und sonst nichts. Eine Telefonkamera zeigt die Zeichenkette und bietet nichts damit an, während eine Scanner-App, die an Ihr System angebunden ist, sie nachschlägt. Das ist richtig für geschlossene Kreise: ein Lesegerät an der Linie, ein Handscanner im Lager, ein Servicetablet mit Ihrer App. Es ist die kleinstmögliche Nutzlast und braucht kein Netz.

Im Pfad einer Adresse. Der Code kodiert https://ex.co/i/0004821. Jedes Stück bekommt seine eigene Adresse, diese Adresse löst auf eine Seite je Stück auf, und jeder mit einem Telefon bekommt etwas Brauchbares. Das ist die Antwort, sobald ein Mensch außerhalb Ihrer Organisation scannt.

Als Parameter an einer gemeinsamen Basis. https://ex.co/p?sn=0004821. Nahe an der Pfadvariante und in einem Punkt schlechter: Ein langer gemeinsamer Anfang bedeutet, dass tausend Codes sich nur im Schwanz unterscheiden, eine falsch sortierte Etikettenrolle ist also für das Auge unsichtbar und für eine Stichprobe fast unsichtbar.

Ist das Stück ein Handelsprodukt mit GTIN, gibt es eine vierte Möglichkeit: die Seriennummer in einem GS1 Digital Link neben der Artikelnummer führen, mit den dafür vorgesehenen Kennzeichnern. Wo Codes jemals von einer Handels- oder regulierten Lieferkette gelesen werden und nicht nur von Ihnen, fangen Sie dort an, statt ein eigenes Schema zu erfinden.

Was der gedruckte Code nie mehr ändern kann

Ein dynamischer Code erlaubt Ihnen zu ändern, wohin der Code führt. Er erlaubt Ihnen nicht zu ändern, was der Code sagt. Die Zeichenkette im Symbol stand in dem Moment fest, in dem die Markierung entstand, und sie bleibt für die Lebensdauer des Objekts fest.

Die Seriennummer im gedruckten Code muss also eine Kennung sein und nichts weiter. Kodieren Sie nicht den Eigentümer, den Standort, die Konfiguration, den Händler, die Preisgruppe, den Firmwarestand oder den Zielmarkt. Alles davon ändert sich, und wenn es sich ändert, behaupten viertausend markierte Objekte etwas Falsches. Setzen Sie eine bedeutungsfreie Kennung in den Code und lassen Sie den Datensatz dahinter jede veränderliche Tatsache halten, dieselbe Disziplin, die Inventaretiketten aus demselben Grund brauchen. Zwei Tatsachen sind sicher zu kodieren, weil sie sich für dieses Objekt nie ändern: was es ist und welches es ist.

Was eine Seriennummer an Modulbreite kostet

Eine Seriennummer besteht aus Zeichen, Zeichen sind Kapazität, und Kapazität ist Version. Gehen Sie diese Kette durch, bevor Sie die Etikettengröße festlegen.

Adressen landen im Byte-Modus, weil sie Kleinbuchstaben und Zeichen führen, die der dichtere alphanumerische Modus nicht enthält, rechnen Sie also mit acht Bit je Zeichen; die Modustabelle erklärt, warum. Auf der höchsten Fehlerkorrekturstufe hält Version 3 24 Bytes, Version 4 hält 34, Version 5 hält 44 und Version 6 hält 58. Auf einer niedrigeren Stufe passt dieselbe Nutzlast in ein kleineres Raster, und bezahlt wird mit Schadenstoleranz.

Nehmen Sie eine Basis von https://ex.co/i/, sechzehn Zeichen. Eine sechsstellige Seriennummer bringt die Nutzlast auf 22 Zeichen und passt in Version 3: ein Raster von 29 mal 29, mit den vier Modulen Ruhezone, die die ISO auf jeder Seite verlangt, 37 Modulbreiten, auf einem Etikett von 20 mm also 0,54 mm je Modul. Nehmen Sie nun stattdessen eine UUID. Die Nutzlast erreicht 52 Zeichen und braucht Version 6: 41 mal 41, mit Rand also 49 Modulbreiten und 0,41 mm je Modul auf demselben Etikett. Sie haben ein Viertel Ihrer Modulbreite für eine Kennung hergegeben, die niemand jemals vorlesen wird.

Die öffentliche und die interne Kennung sollten deshalb nicht dieselbe Zeichenkette sein. Halten Sie eine UUID oder einen Datenbankschlüssel intern und geben Sie für das Etikett einen kurzen, bedeutungsfreien öffentlichen Code aus. Acht Zeichen zur Basis 36 ergeben etwa 2,8 Billionen Werte, mehr als jede Produktionsmenge, und kosten eine Version statt drei.

Fortlaufende Nummern verraten mehr, als Sie denken

Nummern, die hochzählen, sind bequem und sie sind undicht. Ein Wettbewerber, der im Abstand eines Monats zwei Ihrer Geräte kauft, liest beide und weiß grob, wie viele Sie dazwischen gebaut haben, das ist Produktionsvolumen, auf dem Etikett überreicht. Und wer einen Code scannt und die letzte Stelle erhöht, landet auf einer gültigen Seite für ein Stück, das er nie gesehen hat.

Zwei Abhilfen für zwei verschiedene Probleme. Geben Sie nicht fortlaufende öffentliche Kennungen aus einem Raum aus, der groß genug ist, dass Raten scheitert, und halten Sie die fortlaufende interne Nummer privat. Oder behalten Sie eine lesbare fortlaufende Seriennummer und hängen ein kurzes, mit einem Schlüssel daraus abgeleitetes Token an, sodass eine geratene Nummer ohne passendes Token auf nichts auflöst.

Beides stoppt das Raten. Keines stoppt das Kopieren, denn ein abfotografierter Code ist byteweise mit dem Original identisch, und kein Symbol kann beweisen, dass es das gedruckte ist. Das Einzige, was Vervielfältigung erkennt, ist Verhalten über Zeit: dieselbe Kennung in einer Woche in zwei Ländern gescannt, oder ein erster Scan, der eintrifft, nachdem der Datensatz das Stück als aktiviert führt. Das ist der eigentliche Inhalt von Produktauthentifizierung, und der lebt in Ihrem Backend und nicht in der Markierung.

Prüfziffern, und welche

Irgendwann wird jemand die Seriennummer mit dem Daumen über einem Teil davon vom Etikett ablesen und in ein Formular tippen. Eine Prüfziffer ist ein zusätzliches Zeichen, das das meiste davon abfängt, was dabei schiefgeht, und die Verfahren unterscheiden sich darin, was genau.

  • Luhn, Modulo 10. Das bekannte Verfahren von Kartennummern. Fängt jede einzelne falsche Ziffer und jeden Dreher zweier benachbarter Ziffern, außer 09 gegen 90.
  • Die GS1-Prüfziffer nach Modulo 10. Abwechselnde Gewichte 3 und 1, innerhalb eines GS1-Schemas vorgeschrieben. Fängt alle Einzelziffernfehler, aber nicht alle Dreher.
  • Damm oder Verhoeff. Beide fangen jeden Einzelziffernfehler und jeden Dreher benachbarter Ziffern ohne Ausnahme, für etwas mehr Aufwand in der Umsetzung und ohne Nachteil.
  • ISO 7064 Modulo 97-10. Zwei Prüfzeichen, das Verfahren hinter der IBAN. Lohnt sich, wenn die Nummer lang ist und eine falsche Zuordnung teuer.

Drucken Sie die Seriennummer neben den Code, mit ihrer Prüfziffer, in einer Schrift, die die Null vom großen O unterscheidet. Dann ist ein Code, der nicht scannt, immer noch eine Nummer, die jemand am Telefon vorlesen kann.

Rückverfolgbarkeit, UDI und wann eine Nummer personenbezogen wird

Wofür die Seriennummer gebraucht wird, hängt an der Branche, und die Branche bestimmt, was der Code tragen darf.

Im Maschinen- und Anlagenbau ist die Seriennummer Teil der Kennzeichnung am Produkt. Typbezeichnung, Seriennummer, Herstellerangabe und das CE-Zeichen müssen dauerhaft und lesbar am Gerät bleiben, und ein Code ergänzt diese Angaben, er ersetzt sie nicht. Deshalb ist ein Typenschild mit Klartextnummer und daneben ein Code die übliche Lösung: Der Mensch liest die Nummer, das Lesegerät liest den Code, und keiner von beiden hängt vom anderen ab.

Im Lebensmittelbereich verlangt das Lebensmittelrecht Rückverfolgbarkeit einen Schritt vorwärts und einen Schritt zurück, also Lieferant und Abnehmer je Charge. Dafür genügt die Chargennummer; eine Nummer je Stück ist Aufwand, der sich erst rechnet, wenn Sie Rückrufe auf einzelne Einheiten begrenzen wollen.

Bei Medizinprodukten ist die Sache am strengsten geregelt und hat eigenes Vokabular. Die UDI-Kennzeichnung schreibt vor, aus welchen Bestandteilen eine Kennung besteht und in welchem Datenträger sie stehen darf. Ihr eigenes Token ist dafür kein Ersatz, und wer hier improvisiert, baut eine Kennzeichnung, die im Audit nicht besteht. Prüfen Sie die Anforderung, bevor Sie ein Format erfinden.

Dann der Punkt, der in hiesigen Projekten die meiste Nacharbeit auslöst: Datenschutz. Eine Seriennummer allein ist keine personenbezogene Angabe. Sobald Sie sie mit einer Garantieregistrierung, einem Kaufbeleg oder einem Wartungsvertrag verknüpfen, wird sie über diese Verknüpfung zum Bezug auf eine Person. Daraus folgen drei Dinge: Das gedruckte Token bleibt pseudonym und enthält keine Kundendaten, die Zuordnungstabelle lebt in einem System mit Zugriffsrechten und einem Löschkonzept, und in der Datenschutzerklärung steht, wozu Scans erhoben werden. Wer die Scans auch auswerten will, sieht sich Scan-Tracking und Einwilligung an.

Ein Nebeneffekt lohnt sich: In Betrieben mit Qualitätsmanagement läuft derselbe Mechanismus für Prüfmittel. Ein Code am Messschieber, der Kalibrierschein und nächstes Fälligkeitsdatum öffnet, erspart die Suche in der Prüfmittelliste, und weil das Gerät ohnehin eine eindeutige Nummer trägt, ist die Serialisierung dort schon geschehen.

Eine Auflage prüfen, in der jedes Etikett anders ist

Tausend gleiche Etiketten prüfen Sie, indem Sie eines ansehen. Tausend serialisierte Etiketten prüfen Sie durch Ansehen überhaupt nicht, weil sie gleich aussehen und der Unterschied mitten in einer Zeichenkette sitzt. Also prüft hier die Maschine und nicht das Auge.

Dekodieren statt begutachten, und wählen Sie die Stichprobe bewusst: das erste Etikett, das letzte, und je einen Block vor und nach jedem Rollenwechsel und jedem Bogenwechsel. Rollenstöße und um eins verschobene Vorschübe sind die Stellen, an denen serialisierte Auflagen kippen, und sie kippen in zusammenhängenden Blöcken statt zufällig, eine Zufallsstichprobe findet sie also spät. Vergleichen Sie jede dekodierte Zeichenkette mit ihrer Quellzeile per Skript und nicht per Auge. Die vollständige Routine, samt dem, was eine Tabellenkalkulation stillschweigend mit einer zwölfstelligen Nummer macht, steht in CSV-Abläufen für QR-Codes, und das Kennungsschema sollte der Namenskonvention folgen, die auch Ihre übrigen Codes verwenden.

Dann friert man diese Datei ein und archiviert sie mit Datum, Menge und dem Ziel, an das das Material ging. In drei Jahren lautet die einzige Frage, die jemand zu einem serialisierten Code stellt, auf welchem Objekt er saß.

Diesen Artikel teilen