Sunteți pe pagina 1din 38

SISTEME DE IDENTIFICARE FOLOSIND CODURI DE BARE

1. INTRODUCERE Codul de bare este un cod binar aranjat ca un cmp de bare i goluri, ntr-o configuraie paralel, dup un model prestabilit. Aceasta configuratie codifica de fapt date (informatii binare). Succesiunea de biti 0 si 1 este asociata aranjarii specifice a barelor si golurilor. Secvena de bare (de latimi diferite) i goluri (la fel, de latimi diferite) poate fi interpretat numeric i alfanumeric. Aceast secven este citit prin scanarea optic cu ajutorul unei raze laser care este diferit reflectata de bare (tiparite in general cu cerneala) i de goluri (ce au culoarea alba sau culoarea suportului pe care este tiparit codul de bare).

Codurile de bare pot fi imprimate la un cost foarte redus, folosind o mare varietate de tehnici de imprimare. Sistemul de identificare prin cod de bare este considerat, in general, un sistem de identificare unidimensional. Astfel, in marea majoritate a cazurilor, doar latimea barelor si a spatiilor contine informatie, nu si inaltimea lor. Acest sistem este considerat relativ sigur din punct de vedere al ratei de eroare la identificarea codului citit (mai buna de 10-6). Totusi, exista o rata de eroare a primei citiri destul de mare (aproximativ 20%), in special in sistemele de citire manuala (preponderente pe piata). Sistemele automate pot scadea aceasta rata de eroare dar astfel de sisteme sunt mai rar intalnite si necesita operatii anterioare foarte bine definite. Cele mai vizibile aplicatii ale sistemelor cu cod de bare se afla in domeniul vanzarilor cu amanuntul si en-gross, unde acestea au aparut inca din anii 1970. Astazi, astfel de sisteme au patruns si in domeniul automatizarilor industriale dar estimarile prevad un declin important al acestor aplicatii in detrimentul sistemelor de identificare RFID.

2. Tipuri de coduri de bare Din punctul de vedere al modului in care este codificat un numar de identificare, exista urmatoarele tipuri de coduri de bare principale: Coduri de bare modulate in latime (widemodulated); Coduri de bare modulate in inaltime; Coduri de bare bidimensionale (2-D Stacked sau 2DMatrix);

a) Coduri de bare modulate in latime (widemodulated);


Cele mai reprezentative coduri de bare din aceasta categorie sunt: Code 39, Interleaved 2 of 5, Codabar, Code 128, Code 93. Code 39 a fost primul cod de bare dezvoltat pe scara larga. Astazi este cel mai des intalnit in aplicatii industriale. Codul utilizeaza doua latimi atat pentru benzile negre cat si pentru cele albe. Fiecare caracter are 5 bare si 4 spatii, adica un total de noua elemente. Intotdeauna, din cele 9 elemente trei sunt late si sase inguste, de unde vine si denumirea codului (3 of 9 = 3 din 9 = 39).
Figura 1 Simbolizarea codului 39

In tabelul de mai jos sunt prezentate codurile corespondente pentru caracterele alfanumerice posibil de folosit:

Figura 2 Tabelul de codificare al codului 39

Fiecare cod 39 incepe si se termina cu un caracter *. Altfel spus, acest cod prezinta un caracter de start si unul de stop. Intre oricare doua caractere exista un spatiu de separatie care nu contine informatie, asa cum este prezentat in fig. 3.

Figura 3 Codul 39 - exemplu

Spre deosebire de codul 39, codul Interleaved 2 of 5 este un cod fara separatii intre caractere si fiecare simbol codeaza de fapt doi digiti: unul cu ajutorul barelor negre si unul cu ajutorul spatiilor albe. Cum barele negre si spatiile albe se intrepatrund, rezulta denumirea codului. Fiecare simbol consta din 5 bare si 5 spatii. Intotdeauna doua bare sunt late si trei inguste, conditie ce ramane valabila si pentru spatii. In figura 4 este prezentata codificarea cifrelor cu ajutorul barelor, acelasi cod este insa respectat si pentru spatii.

Figura 4 Codificarea Interleaved 2 of 5 pentru cifre

Un exemplu pentru numarul 38 codificat cu codul Interleaved 2 of 5 astfel este prezentat in figura 5.

Figura 5 Simbolizarea lui 39 in codul Interleaved 2 of 5

In 1981 a fost dezvoltat un alt cod de bare mai evoluat care ofera o mult mai mare densitate: Code 128. Incepand cu 1990 el si-a gasit o serie larga de aplicatii si a fost apoi dezvoltat pentru a se potrivi cat mai bine cu aplicatiile legate de vanzarea cu amanuntul. Acest cod este continuu si de lungime variabila. Fiecare caracter este tiparit pe 11 module, ce pot fi negre sau albe, asa cum este prezentat in figura 6. Pentru oricare caracter exista doar trei bare negre si doar trei spatii albe, de marimi diferite, functie de tabelul de codificare. Tabelul de codificare contine 106 codificari diferite pentru 3 seturi diferite (A, B si C) de caractere alfanumerice. In setul C se codifica 2 digiti, cod de mare densitate.

Figura 6. Simbolizarea unui caracter folosind 11 module in codul 128

Un mesaj scris in codul 128 incepe intotdeauna cu un caracter de start ce poate avea una din trei forme posibile, indicand astfel ce set al codului este folosit: A, B sau C. Urmeaza apoi tiparirea simbolurilor corespunzatoare mesajului. In final se tipareste un caracter de control urmat de un caracter de stop. Un exemplu este prezentat in figura 8, unde s-a folosit setul A.

Figura 8. Mesajul CODE 128 tiparit cu codul 128, setul A

b) Coduri de bare modulate in inaltime; Aceste coduri sunt folosite cu predilectie de catre serviciile postale. Astfel, codul Postnet este folosit in special in SUA, este un cod numeric (codeaza doar numere) si se bazeaza pe o tehnica de sincronizare cu un semnal de ceas. Un exemplu este prezentat in figura 10. Prin citirea benzii inferioare a codului, scanerul recupereaza semnalul de ceas iar prin citirea benzii superioara se decodifica date inscrise. Pentru fiecare digit se folosesc 5 bare si 4 spatii de latime constanta.

Figura 10. Codul POSTNET

Spre deosebire de SUA, cele mai multe tari utilizeaza in cadrul serviciilor postale coduri alfanumerice. Pentru aceasta, codul Postnet nu mai poate raspunde cerintelor deoarece are prea putine posibilitati de codare (maxim 32). In figura 11 este prezentat un cod de bare numit Four State Code, utilizat in Marea Britanie. Pot exista 4 inaltimi diferite ale fiecarei bare si astfel cresc numarul de combinatii pentru a putea codifica cele 106 caractere alfanumerice.

Figura 11. Exemplu de character tiparit cu Four State Code

c) Coduri de bare bidimensionale (2-D Stacked sau 2DMatrix); Codurile de tip stiva (2-D Stacked) au fost dezvoltate in vederea reducerii ariei ocupate de codurile liniare. Aceste coduri se caracterizeaza prin faptul ca informatia este tiparita pe mai multe randuri dispuse unul sub altul, fiecare rand fiind citit si decodat similar ca un cod liniar. Exista, de asemena separatii intre randuri si caractere speciale dispuse la inceputul randului, pentru identificarea fiecarui rand.

Figura 12 a). Codul 49 poate avea intre 2 si 8 randuri

Codurile de tip 2-D matrix sunt mult mai complicate decat cele liniare sau de tip stiva prezentate anterior. Echipamentele de imprimare si cele de citire sunt mult mai sofisticate. Evident insa ca se obtine o densitate mult mai mare, adica intr-o aceeasi arie tiparita este stocata o cantitate de informatie de 2-3 ori mai mare decat in cazul codurilor anterioare.

In figura 12 b) este prezentat codul Vericode in care informatia este codata sub forma unor mici patrate ce pot fi albe sau negre.

Figura 12 b). Codul Vericode

3. Coduri de bare folosite in sistemele pentru vanzarea cu amanuntul


Incepand cu anii 1970, cele mai vizibile aplicatii ale codurilor de bare vizau vanzarile cu amanuntul. Astazi aceste sisteme sunt practic prezente aproape in orice magazin. Pentru a pune in functiune astfel de sisteme a fost necesara o standardizare. Prima astfel de standardizare a aparut in SUA in 1973 cand simbolizarea Universal Product Code (UPC) propusa de IBM a fost aleasa ca standard industrial. Pe de alta parte, in Europa, incepand cu 1978 s-a aprobat standardizarea European Article Numbering (EAN). Dupa multi ani in care cele doua sisteme de codificare au operat separat, incepand cu 1990 s-a cautat o anumita convergenta a celor doua codificari iar astazi exista doar o singura organizatie, cunoscuta sub denumirea de EAN.UCC, care administreaza toate aplicatiile legate de aplicarea codurilor de bare in sistemele pentru vanzarea cu amanuntul.

Sistemul de codificare EAN.UCC


Codificarea UPC a fost introdusa pentru a asigura fiecarui produs un cod unic. Astfel, fiecare producator primea 5 digiti pentru propria identificare si alti cinci digiti cu care putea identifica pana la 100.000 produse livrate de el. Cei 10 digiti sunt completati cu un digit numit Number System digit, care era primul digit din cod si asigura o anumita definire a categoriilor de produse ce erau codificate. La finalul codului sa introdus un digit de control si astfel a aparut codul UPC cu 12 digiti. Pe de alta parte Codul EAN contine 13 digiti, in locul primului digit pentru definirea categoriei de produs introducandu-se 2 digiti pentru codificarea tarii. Acest prefix a evoluat apoi, folosindu-se 3 digiti pentru el, ramanand doar 9 digiti pentru identificarea producatorului si a produsului. Codul EAN.UCC are 14 digiti, la cei 13 anterior descrisi la Codul EAN adaugandu-se un nou prefix pentru identificarea tipului de ambalaj.

Figura 13. Evolutia codificarii EAN.UCC

Digitul pentru identificare are urmatoarea semnificatie: 0, 6, 7 codul reprezinta un numar UPC standard; 2 - codul de bare se refera la coduri corespunzatoare greutatii produselor cantarite in magazin (si sunt valabile doar in acel magazin); 3 - codul de bare se refera la produse farmaceutice; 4 - codul de bare este un cod propriu unui anume magazin (nu este recunoscut in alt magazin); 5 - codul de bare se refera la cupoane pentru reduceri de pret aplicate asupra unor anumite produse si pot fi valabile intr-unul sau mai multe magazin; 1, 8, 9 sunt coduri rezervate. In codificarea UPC, codul este impartit in doua jumatati, fiecare flancate de doua bare negre. Fiecare numar este codificat prin doua bare negre si doua spatii avand latimi simple, duble, triple sau cvadruple.

Exista 30 de coduri de bare grupate in trei seturi: SET A, SET B si SET C (figura 14). Cele doua jumatati ale unui cod UPC de 12 digiti sunt codate astfel: jumatatea din stanga folosind setul A, jumatatea din dreapta folosind setul C. Setul B, in combinatie cu setul A este rezervat unor coduri UPC cu doar 8 digiti - UPC Versiunea E (6 digiti de date + digit de control + digit de sistem). Aceasta din urma versiune codifica un numar limitat de coduri cu doar 6 digiti si este adesea folosita de comercianti datorita etichetei mai scurte, la etichetarea produselor de mici dimensiuni.
Figura 14. Cele trei seturi de coduri folosite in UPC

Din punctul de vedere al codificarii EAN exista doua versiuni: EAN 13 si EAN-8. EAN 13 codeaza 13 digiti, prefixul fiind format din 2 digiti. Compatibilitatea cu codurile UPC, care au doar 12 digiti este asigurata prin rezervarea codurilor 00-09 in prefixul codurilor EAN 13. Altfel spus, la citirea cu un reader UPC primul 0 va fi ignorat. Invers, un cititor EAN va decodifica un cod UPC prin adaugarea in fata a unui 0. In cazul codarii EAN-8, codul este impartit in doua jumatati de cate 4 digiti fiecare. In acest caz (figura 15) exista 2 digiti pentru tara, 5 digiti pentru produs si unul de control.
Figura 15. Codul EAN-8

Fiecare tara are o autoritate care asigneaza coduri producatorilor si mentine o baza de date centrala cu toate aceste coduri. In SUA, Uniform Code Council administreaza aceste coduri pentru SUA si Canada. In Europa, acest lucru este facut de International Article Numbering Associacion cu sediul in Bruxel, Belgia. Astazi codul UPC poate fi considerat un subset al codului EAN. De fapt, in SUA se trece treptat la implementarea codului EAN.UCC ce are doi digiti suplimentari fata de clasicul UPC.

4. Principiile de operare ale cititoarelor de coduri de bare.


Un cititor de coduri de bare este un sistem electronic utilizat pentru extragerea informatiei ce este codata optic sub forma unui cod de bare. Informatia este extrasa sub forma unui sir de date si este transmisa apoi unui computer pentru prelucrare sau stocare locala. Schema bloc figura 16.

Figura 16. Schema bloc a unui cititor de coduri de bare

Sistemul electro-optic asigura iluminarea codului de bare tiparit si preia lumina reflectata. Sistemul de scanare asigura examinarea secventiala a codului de bare prin baleierea razei de lumina pe una sau doua dimensiuni, functie de tipul codului de bare folosit. Semnalul obtinut la iesire sistemului electro-optic este un semnal analogic direct proportional cu succesiunea de bare negre si spatii albe din codul de bare scanat. Acest semnal analogic este transformat intr-un cod numeric cu ajutorul unui convertor analog-numeric. In final, datele sunt procesate de un procesor pentru decoficarea completa a codului de bare scanat.

Atunci cand este scanat un cod de bare liniar (EAN.UCC, Code 39 sau code 128) cazul cel mai des intalnit cititorul de coduri de bare trebuie sa realizeze urmatoarele functii de baza: Pozitionarea corecta deasupra codului de bare, asigurarea liniei de vizibilitate directa; Determinarea latimii fiecarei bare negre si a fiecarui spatiu alb, sau a distantei intre doua inceputuri de bara neagra sau de spatiu alb; Cuantizarea fiecarei latimi intr-un numar intreg de nivele, functie de tipul codului de bare; Verificarea faptului ca cuantele mai sus obtinute au valori corecte si in concordanta cu codarea specifica fiecarui cod; Atunci cand e necesar trebuie sa inverseze ordinea datelor; Confirmarea zonei de garda pentru codurile care o prevad; Confirmarea corectitudinii citirii codului de control corelat cu celelalte date.

Sistemul electro-optic Sistemul electro-optic asigura scanarea codului de bare imprimat. Operatiunea de scanare poate fi realizata: manual, de catre un operator; prin intermediul unui mecanism intern de scanare; prin intermediul unui senzor optic intern; prin miscarea codului de bare imprimat prin dreptul fantei de citire a cititorului. Principiul de citire se bazeaza pe trimiterea spre eticheta cu cod de bare a unei raze luminoase care se reflecta diferit pe barele negre si pe zonele albe. Pe eticheta se formeaza un asa numit spot de lumina care este reflectat si captat apoi de un fotodetector (figura 17).

Figura 17. Principiul de scanare a codurilor de bare

Zonele albe reflecta mai multa lumina iar cele negre mai putina lumina. Astfel fotodetectorul furnizeaza la iesire un semnal analogic a carui valoare instantanee corespunde barelor negre sau spatiilor albe (fig 18). Spotul nu trebuie sa fie neaparat circular, trebuie insa sa aiba un diametru mai mic decat cea mai subtire bara neagra sau spatiu alb (altfel nu s-ar sesiza schimbarea neta de reflectivitate). Spotul se formeaza prin focalizarea razelor de lumina provenite de la o sursa luminoasa. Exista insa si solutii in care lentila de focalizare este dispusa in fata fotodetectorului si nu a sursei de lumina. Baleierea se asigura fie intern printr-un mecanism mecanic care plimba raza de lumina de-a lungul lungimii codului de bare (cel mai adesea) fie prin plimbarea etichetei cu codul de bare, raza fiind fixa.

Figura 18. Semnalul analogic corespunzator codului de bare

Convertorul analog digital Inainte de a fi aplicat convertorului analog digital, semnalul de la iesirea fotodetectorului este uzual amplificat datorita amplitudinii sale foarte mici ce face grea prelucrarea sa ulterioara. Rolul de baza al acestui convertor este de a face conversia semnalului analogic provenit de la detector (uzual numit semnal video) intr-un semnal digital ce poate fi apoi prelucrat de catre microprocesorul (microcontrolerul) cititorului de cod de bare. In cea mai simpla forma, acest convertor poate fi un simplu comparator ce compara valorile instantanee ale semnalului analogic cu doua valori de prag (comparator cu Trigger Schmitt), rezultand la iesirea sa un semnal numeric ca in figura 19.

Daca valorile de prag sunt alese corect, durata celor doua nivele de tensiune obtinute corespund, din punct de vedere al proportiilor, exact cu latimile barelor negre si a spatiilor albe din codul de bare (durata in timp a unui palier ar trebui teoretic sa fie exact raportul dintre latimea barei negre sau a spatiului si viteza de scanare).

Din pacate un astfel de convertor simplu are slabe performante in practica deoarece trebuie sa faca fata unor semnale analogice mult diferite de cele prezentate in figura 19. (vezi figura 20).
Figura 19. Formele de unda de la intrarea si iesirea unui detector de prag

Figura 20. Forma semnalului analogic obtinuta adesea in practica

Semnalul din figura 20 este mult mai apropiat de ceea ce se intampla in realitate datorita unor unghiuri de scanare diferite sau care se schimba pe durata scanarii (cazul scanarii manuale), a rezolutiei mai putin performante a scanerului, a interferentei intersimboluri (semnalul corespunzator unui spatiu patrunde si in zona corespunzatoare unei bare negre si invers). Pentru a obtine un semnal digital cat mai apropiat de cel ideal, trebuie alese cu foarte multa grija valorile pragurilor (superior la trecerea semnalului analogic peste aceasta valoare iesirea devine high si inferior - la trecerea semnalului analogic sub aceasta valoare iesirea devine low). Pentru aceasta sau inregistrat mai multe brevete de inventie. Astazi cea mai moderna si mai exacta metoda consta in esantionarea cu o frecventa mare a semnalului analogic, conversia esantioanelor analogice in numere si analiza unui sir mare de esantioane pentru determinarea si formarea cu precizie a semnalului numeric din figura 19.

Sursa de lumina

La inceputurile utilizarii codurilor de bare, raza incidenta era o raza din domeniul vizibil (figura 21) sau apropiat acestuia.

Figura 21. Spectrul vizibil in cadrul intregului spectru electromagnetic

In domeniul vizibil sau in domeniul apropiat acestuia s-au standardizat scanere ce lucrau in banda B633 (adica foloseaza o raza cu lungimea de unda de 633 nm) si B900 (900 nm). Scanerele B633 lucreaza in domeniul vizibil, in timp ce scanerele B900 sunt in afara acestui domeniu, fiind adesea folosite in aplicatii privind securitatea accesului. In general, scanerele ce lucreaza in banda B900 sunt mai performante putand lucra cu succes in medii in care pe etichete pot aparea urme de ulei, petrol sau sange. Dar acestea sunt si mai scumpe. Astazi, cele mai multe scanere lucreaza in ambele benzi (B633 si B900). O alta modalitate de scanare, specifica serviciilor postale, folosea o cerneala speciala fosforescenta care emitea lumina pe o frecventa specifica atunci cand era iluminata cu raze UV.

Iata in continuare categoriile de surse de lumina frecvent folosite in scanerele de coduri de bare: - lasere bazate pe Heliu-Neon, ce opereaza pe =633 nm; - surse de lumina incandescente, ce opereaza cu o raza de lumina cu un spectru mai larg, aflat in domeniul 600-630nm; - flash lamp (lampi de tip spot, de mare intensitate luminoasa), ce opereaza in domeniul 550-650 nm; - LED ce opereaza in domeniul vizibil 630-700 nm; - LED-uri in infrarosu, ce opereaza in domeniul 850-920 nm; - diode LASER (cele mai moderne si mai folosite, datorita pretului care a devenit foarte scazut). Privind diodele LASER, putem preciza faptul ca abia incepand cu 1988, LED-urile ce lucreaza in domeniu 640-680 nm au inceput a echipa scanere pentru coduri de bare. Astazi sunt disponibile si diode laser ce lucreaza pe = 630 nm, domeniu in care ochiul uman are cea buna sensitivitate.

O categorie aparte o formeaza scanerele CCD (fig 22).

Figura 22. Principiul de functionare a scanerului CCD

Un scaner CCD nu contine parti mecanice in miscare ceea ce il face mult mai fiabil si mai precis. Raza de lumina ce provine de la sursa de lumina (pot fi chiar si doua surse) ilumineaza intregul cod de bare. Undele luminoase reflectate sunt focalizate pe o arie de fotodetectori (fotodiode) realizate prin tehnica circuitelor integrate. Semnalul analogic este obtinut astfel similar ca intr-o camera TV. Drept fotodetectori pot fi folositi astazi pe langa senzorii CCD (charged coupled device) si senzorii CMOS, datorita pretului de cost foarte scazut al acestora din urma. Pentru a creste rata de succes a scanarii, orice scaner efectueaza rapid mai multe scanari ale aceluiasi cod, pentru ca, la finalul procesului de scanare, cel putin un semnal analogic obtinut sa poata fi decodat ca un cod viabil. Unele scanere folosesc chiar mai multe raze de scanare, sub diverse unghiuri pentru ca putea realiza cat mai multe incercari, din acelasi motiv. Chiar si asa, rata de eroare la prima citire ajunge in multe cazuri in jurul a 20%.

In cazul in care codurile de bare sunt altele decat cele liniare, complexitatea scanerului creste. Pentru codurile formate din mai multe randuri este necesara o baleiere a acestora de catre raza luminoasa dupa un sistem asemanator cu cel din monitoare sau receptoarele TV. In cazul codurilor matriciale sau chiar mai complexe, cele mai performante scanere sunt scanerele video. Aceste scanere folosesc DSP-uri (Digital Signal Processing) puternice, imagini de inalta rezolutie captate cu senzori de imagini sensibili si software de inalt nivel pentru recunoasterea formelor. In aceste scanere nu se foloseste raza LASER.

O schema bloc a unui scaner video portabil este prezentata in figura 23.

Figura 23. Schema de principiu a unui scaner video pentru coduri de bare

Imaginea de scanat (codul de bare), este captata printr-o lentila de focalizare pe o tinta 2D (similar ca in camera TV), tinta pe care se afla milioane de senzori de imagine de tip CCD sau CMOS. Semnalul de imagine obtinut la iesirea acestor senzori este transformat intr-un semnal numeric si apoi digitizat (codat) pentru a fi stocat intr-o memorie de imagine. In vederea recunoasterii codului (recuperarii informatiei codate in codul de bare), datele ce corespund imaginii preluate sunt apoi prelucrate cu ajutorul unui DSP si, cu ajutorul unui program software specializat pentru recunoasterea formelor, datele stocate in codul de bare sunt in final decodificate.