Matrice de date - Data Matrix

Un exemplu de cod Data Matrix, care codifică textul: „Wikipedia, enciclopedia liberă”

O Matrice de date este un cod bidimensional format din „celule” alb-negru sau puncte dispuse fie într-un model pătrat sau dreptunghiular , cunoscut și sub numele de matrice . Informațiile care trebuie codate pot fi text sau date numerice. Dimensiunea obișnuită a datelor este de la câțiva octeți până la 1556 octeți . Lungimea datelor codificate depinde de numărul de celule din matrice. Codurile de corectare a erorilor sunt adesea folosite pentru a crește fiabilitatea: chiar dacă una sau mai multe celule sunt deteriorate, astfel încât să nu poată fi citite, mesajul poate fi în continuare citit. Un simbol Matrice de date poate stoca până la 2.335 de caractere alfanumerice .

Simbolurile Matricei de Date sunt dreptunghiulare, de obicei pătrate și compuse din „celule” pătrate care reprezintă biți . În funcție de codificarea utilizată, o celulă "deschisă" reprezintă un 0 și o celulă "întunecată" este 1, sau invers. Fiecare Matrice de date este compusă din două chenare adiacente solide în formă de „L” (numite „model de căutare”) și alte două chenare constând din „celule” întunecate și luminoase sau module (numite „model de sincronizare”). În aceste margini se află rânduri și coloane de celule care codifică informații. Modelul de căutare este utilizat pentru a localiza și orienta simbolul, în timp ce modelul de sincronizare oferă un număr al rândurilor și coloanelor din simbol. Pe măsură ce mai multe date sunt codificate în simbol, numărul de celule (rânduri și coloane) crește. Fiecare cod este unic. Dimensiunile simbolurilor variază de la 10 × 10 la 144 × 144 în noua versiune ECC 200 și de la 9 × 9 la 49 × 49 în vechea versiune ECC 000 - 140.

Aplicații

O matrice de date pe un card Mini PCI , care codifică numărul de serie 15C06E115AZC72983004

Cea mai populară aplicație pentru Data Matrix este marcarea articolelor mici, datorită capacității codului de a codifica cincizeci de caractere într-un simbol care poate fi citit la 2 sau 3 mm 2 (0,003 sau 0,005 sq in) și faptului că codul poate fi citit cu doar un raport de contrast de 20%. O matrice de date este scalabilă; există aplicații comerciale cu imagini de până la 300 micrometri (0,012 in) (gravate cu laser pe un dispozitiv de siliciu de 600 micrometri) și de până la un pătrat de 1 metru (vopsit pe acoperișul unei vagonete ) . Fidelitatea sistemelor de marcare și citire sunt singura limitare. US Electronic Industries Alliance (EIA) recomandă utilizarea Matricei de date pentru etichetarea componentelor electronice mici.

Codurile Matricii de date devin frecvente pe suporturile tipărite, cum ar fi etichetele și literele. Codul poate fi citit rapid de un cititor de coduri de bare care permite urmărirea suportului media, de exemplu atunci când un colet a fost expediat destinatarului.

Marcarea suprafețelor

În scopuri de inginerie industrială, codurile Data Matrix pot fi marcate direct pe componente, asigurându-se că numai componenta intenționată este identificată cu datele codificate cu matrice de date. Codurile pot fi marcate pe componente cu diferite metode, dar în industria aerospațială acestea sunt în mod obișnuit jet de cerneală industrial, marcaj cu puncte, marcare cu laser și gravare chimică electrolitică (ECE). Aceste metode dau o notă permanentă care poate dura până la durata de viață a componentei.

Codurile Data Matrix sunt de obicei verificate folosind echipamente și software specializate pentru camere. Această verificare asigură conformitatea codului cu standardele relevante și asigură lizibilitatea pe toată durata de viață a componentei. După ce componenta intră în funcțiune, codul Data Matrix poate fi apoi citit de o cameră cititoare, care decodează datele Data Matrix care pot fi apoi utilizate în mai multe scopuri, cum ar fi urmărirea mișcării sau verificarea stocului de stocuri.

Citirea codului Data Matrix cu telefonul mobil ( proiect Semacode )

Codurile Data Matrix, împreună cu alte coduri open-source, cum ar fi codurile de bare 1D, pot fi citite și cu telefoanele mobile prin descărcarea aplicațiilor mobile specifice codului. Deși multe dispozitive mobile sunt capabile să citească coduri 2D, inclusiv Codul Matricii de Date, puțini extind decodarea pentru a permite accesul și interacțiunea mobilă, după care codurile pot fi utilizate în siguranță și pe suport media; de exemplu, în soluții de urmărire, anti-contrafacere, de ex., și soluții bancare.

Industria alimentară

Codurile Matrice de date sunt utilizate în industria alimentară în sistemele de autocodificare pentru a preveni ambalarea și datarea incorectă a produselor alimentare. Codurile sunt păstrate intern într-o bază de date a producătorilor de alimente și asociate fiecărui produs unic, de exemplu, variații ale ingredientelor. Pentru fiecare produs rulat, codul unic este furnizat imprimantei. Este necesară ilustrarea etichetelor pentru a permite poziționarea Matricei de date 2D pentru o scanare optimă. Pentru codurile negru pe alb nu este necesară testarea codurilor, cu excepția cazului în care calitatea imprimării este o problemă, dar toate variantele de culoare trebuie testate înainte de producție pentru a se asigura că sunt lizibile.

Artă

În mai 2006, un programator de calculator german, Bernd Hopfengärtner, a creat o mare matrice de date într-un câmp de grâu (într-un mod similar cu cercurile de cultură ). Mesajul scria „ Bună ziua, lume! ”. În iunie 2011, tatuatorul parizian KARL, ca parte a unei promoții pentru whisky-ul scotch Ballantine , a creat primul tatuaj animat din lume utilizând un cod Data Matrix într-un proces de colaborare transmis în direct pe Facebook.

Specificatii tehnice

Un exemplu de cod Data Matrix, care codifică textul: „Wikipedia” colorat pentru a afișa date (verde), umplutură (galben), corectarea erorilor (roșu), căutare și sincronizare (magenta) și neutilizat (portocaliu).

Simbolurile Matricei de date sunt alcătuite din module dispuse într-un căutare perimetrală și un model de sincronizare. Poate codifica până la 3.116 caractere din întregul set de caractere ASCII (cu extensii). Simbolul este format din regiuni de date care conțin module stabilite într-o matrice obișnuită. Simbolurile mari conțin mai multe regiuni. Fiecare regiune de date este delimitată de un model de căutare și acesta este înconjurat pe toate cele patru laturi de o margine de zonă liniștită (margine). (Notă: Modulele pot fi rotunde sau pătrate - nicio formă specifică nu este definită în standard. De exemplu, celulele peen-punct sunt în general rotunde.)

Data Matrix ECC 200

ECC 200, cea mai nouă versiune a Data Matrix, utilizează coduri Reed – Solomon pentru recuperarea erorilor și ștergerii. ECC 200 permite reconstrucția de rutină a întregului șir de date codificat atunci când simbolul a suferit 30% daune, presupunând că matricea poate fi încă localizată cu precizie. Data Matrix are o rată de eroare mai mică de 1 din 10 milioane de caractere scanate.

Simbolurile au un număr par de rânduri și un număr par de coloane. Majoritatea simbolurilor sunt pătrate cu dimensiuni de la 10 × 10 la 144 × 144. Cu toate acestea, unele simboluri sunt dreptunghiulare cu dimensiuni de la 8 × 18 la 16 × 48 (numai valori egale). Toate simbolurile care utilizează corectarea erorilor ECC 200 pot fi recunoscute prin modulul din colțul din dreapta sus fiind același cu culoarea de fundal. (binar 0).

Capacitățile suplimentare care diferențiază simbolurile ECC 200 de standardele anterioare includ:

  • Simboluri de citire inversă (imagini luminoase pe un fundal întunecat)
  • Specificarea setului de caractere (prin Interpretări extinse ale canalelor )
  • Simboluri dreptunghiulare
  • Anexă structurată (conectarea a până la 16 simboluri pentru a codifica cantități mai mari de date)

Data Matrix ECC 000–140

Versiunile mai vechi ale Data Matrix includ ECC 000, ECC 050, ECC 080, ECC 100, ECC 140. În loc să utilizați coduri Reed – Solomon precum ECC 200, ECC 000–140 utilizați o corecție de eroare bazată pe convoluție. Fiecare variază în ceea ce privește corecția de eroare pe care o oferă, ECC 000 oferind niciuna, iar ECC 140 oferind cea mai mare. Pentru detectarea erorilor la momentul decodării, chiar și în cazul ECC 000, fiecare dintre aceste versiuni codifică și un Cyclic Redundancy Check (CRC) pe modelul de biți. Ca o măsură adăugată, plasarea fiecărui bit în cod este determinată de tabelele de plasare a biților incluse în specificație. Aceste versiuni mai vechi au întotdeauna un număr impar de module și pot fi realizate în dimensiuni cuprinse între 9 × 9 și 49 × 49. Toate simbolurile care utilizează corecția de eroare ECC 000 până la 140 pot fi recunoscute prin modulul din colțul din dreapta sus fiind invers a culorii de fundal. (binar 1).

Conform ISO / IEC 16022, „ECC 000–140 ar trebui utilizat numai în aplicații închise în care o singură parte controlează atât producția, cât și citirea simbolurilor și este responsabilă pentru performanța generală a sistemului.”

Standarde

Data Matrix a fost inventată de International Data Matrix, Inc. (ID Matrix) care a fost fuzionată în RVSI / Acuity CiMatrix , care au fost achiziționate de Siemens AG în octombrie 2005 și Microscan Systems în septembrie 2008. Data Matrix este acoperită astăzi de mai multe ISO / IEC standarde și este în domeniul public pentru multe aplicații, ceea ce înseamnă că poate fi utilizat fără licențe sau redevențe.

  • ISO / IEC 16022: 2006 - Specificație de simbolologie a codului de bare Matrice de date
  • ISO / IEC 15415—2-D Standard de calitate a tipăririi
  • ISO / IEC 15418: 2016 — Semantica formatului de date simbol ( identificatori de aplicații GS1 și identificatori de date ASC MH10 și întreținere)
  • ISO / IEC 15424: 2008 — Identificatori ai purtătorului de date (inclusiv identificatori de simbolologie) [ID-uri pentru a distinge diferite tipuri de coduri de bare]
  • ISO / IEC 15434: 2006 — Sintaxă pentru medii ADC de mare capacitate (format de date transferate de la scaner la software etc.)
  • ISO / IEC 15459 — Identificatori unici

Codificare

Cititoare de coduri Industrial Data Matrix

Procesul de codificare este descris în standardul ISO / IEC 16022: 2006. A fost publicat un software open-source pentru codificarea și decodarea variantei ECC-200 a Data Matrix.

Diagramele de mai jos ilustrează plasarea datelor mesajului într-un simbol Matrice de date. Mesajul este „Wikipedia” și este aranjat într-un model diagonal oarecum complicat care începe în colțul din stânga sus. Unele personaje sunt împărțite în două piese, cum ar fi W-ul inițial, iar al treilea „i” este mai degrabă în „model de colț 2” decât în ​​aranjamentul obișnuit în formă de L. De asemenea, sunt afișate codul de sfârșit al mesajului (marcat Sfârșit), octetii de umplere (P) și corectarea erorilor (E) și patru module de spațiu neutilizat (X).

Data Matrix Encoding.svg Datamatrixfilling.png

Mai multe moduri de codificare sunt utilizate pentru a stoca diferite tipuri de mesaje. Modul implicit stochează un caracter ASCII pentru fiecare cuvânt de cod pe 8 biți. Codurile de control sunt furnizate pentru a comuta între moduri, așa cum se arată mai jos.

Cuvânt de cod Interpretare
0 Nefolosit
1–128 Date ASCII (valoare ASCII + 1)
129 Sfârșitul mesajului
130–229 Perechi de cifre 00 - 99
230 Începeți codificarea C40
231 Începeți codarea bazei 256
232 FNC1
233 Anexă structurată. Permite împărțirea unui mesaj pe mai multe simboluri.
234 Programarea cititorului
235 Setați bitul mare al următorului caracter
236 05 Macro
237 06 Macro
238 Începeți codarea ANSI X12
239 Începeți codarea textului
240 Începeți codificarea EDIFACT
241 Cod de interpretare a canalului extins
242–255 Nefolosit

Moduri text

Modurile C40, Text și X12 sunt potențial mai compacte pentru stocarea mesajelor text. Acestea sunt similare cu DEC Radix-50 , utilizând coduri de caractere în intervalul 0-39, iar trei dintre aceste coduri sunt combinate pentru a face un număr de până la 40 3 = 64000, care este împachetat în doi octeți (valoarea maximă 65536) după cum urmează :

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

Valoarea rezultată a lui B1 este în intervalul 0-250. Valoarea specială 254 este utilizată pentru a reveni la modul de codificare ASCII.

Interpretările codului de caractere sunt prezentate în tabelul de mai jos. Modurile C40 și Text au patru seturi separate. Setul 0 este implicit și conține coduri care selectează temporar un set diferit pentru următorul caracter. Singura diferență este că inversează literele mari și mici. C40 este în primul rând cu majuscule, cu litere mici în setul 3; Textul este invers. Setul 1, care conține coduri de control ASCII și setul 2, care conține simboluri de punctuație sunt identice în modul C40 și text.

Cod setul 0 setul 1 setul 2 setul 3 X12
C40 Text C40 Text
0 setul 1 NUL ! ` CR
1 setul 2 DECI H " A A *
2 setul 3 STX # b B >
3 spaţiu ETX $ c C spaţiu
4 0 EOT % d D 0
5 1 ENQ & e E 1
6 2 ACK ' f F 2
7 3 BEL ( g G 3
8 4 BS ) h H 4
9 5 HT * eu Eu 5
10 6 LF + j J 6
11 7 VT , k K 7
12 8 FF - l L 8
13 9 CR . m M 9
14 A A ASA DE / n N A
15 B b SI : o O B
16 C c DLE ; p P C
17 D d DC1 < q Î D
18 E e DC2 = r R E
19 F f DC3 > s S F
20 G g DC4 ? t T G
21 H h NAK @ tu U H
22 Eu eu SYN [ v V Eu
23 J j ETB \ w W J
24 K k POATE SA ] X X K
25 L l EM ^ y Da L
26 M m SUB _ z Z M
27 N n ESC FNC1 { N
28 O o FS | O
29 P p GS } P
30 Î q RS hibit ~ Î
31 R r S.U.A. DEL R
32 S s S
33 T t T
34 U tu U
35 V v V
36 W w W
37 X X X
38 Da y Da
39 Z z Z

Mod EDIFACT

Modul EDIFACT folosește șase biți pe caracter, cu patru caractere împachetate în trei octeți. Poate stoca cifre, litere mari și multe semne de punctuație, dar nu are suport pentru literele mici.

Cod Sens
0-30 Coduri ASCII 64-94
31 Reveniți la modul ASCII
32–63 Coduri ASCII 32–63

Modul de bază 256

Datele de bază de bază 256 încep cu un indicator de lungime, urmat de un număr de octeți de date. O lungime de la 1 la 249 este codificată ca un singur octet, iar lungimile mai mari sunt stocate ca doi octeți.

L1 = podea (lungime / 250) + 249, L2 = lungime mod 250

Este de dorit să se evite șiruri lungi de zerouri în mesajul codat, deoarece acestea devin zone goale mari în simbolul Matricei de date, ceea ce poate determina pierderea sincronizării unui scaner. (Codificarea ASCII implicită nu folosește zero din acest motiv.) Pentru a face acest lucru mai puțin probabil, lungimea și octeții de date sunt ascunși prin adăugarea unei valori pseudorandom R (n), unde n este poziția în fluxul de octeți.

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

Probleme de brevet

Înainte de expirarea brevetului SUA 5.612.524 în noiembrie 2007, compania de proprietate intelectuală Acacia Technologies a susținut că Data Matrix era acoperită parțial de conținutul său. În calitate de proprietar al brevetului, Acacia ar fi contactat utilizatorii Data Matrix cerând taxe de licență legate de brevet.

Cognex Corporation , un mare producător de dispozitive cu coduri de bare 2D, a depus o plângere de judecată declarativă la 13 martie 2006, după ce a primit informații că Acacia a contactat clienții săi cerând taxe de licențiere. La 19 mai 2008, judecătorul Joan N. Ericksen de la Curtea Districtuală SUA din Minnesota s-a pronunțat în favoarea Cognex. Hotărârea a afirmat că brevetul „524, care pretindea că acoperă un sistem de captare și citire a codurilor de simbolologie 2D, este atât invalid, cât și imposibil de aplicat din cauza conduitei inechitabile a pârâților în timpul procurării brevetului.

În timp ce hotărârea a fost pronunțată după expirarea brevetului, aceasta a exclus cererile pentru încălcare a dreptului de autor în baza utilizării Data Matrix înainte de noiembrie 2007.

O cerere de brevet german DE 4107020 a fost depusă în 1991 și publicată în 1992. Acest brevet nu este citat în cererile de brevet americane de mai sus și ar putea să le invalideze.

Vezi si

Referințe

linkuri externe