Automatyczna identyfikacja produktów handlowych usprawnia zakupy, sprzyja zadowoleniu klientów, niewątpliwie ułatwia realizację strategii ECR – Efektywnej Obsługi Klientów. Milowym krokiem w rozwoju handlu było wdrożenie kodów kreskowych, które usprawniły funkcjonowanie punktów obsługi klientów, pracę magazynów, znalazły szerokie zastosowanie w wielu dziedzinach gospodarki.

Od początku kody kreskowe podlegały powszechnie przyjętym standardom międzynarodowym. Dziś z perspektywy czasu wydaje nam się, że kody były zawsze stosowane, natomiast faktycznie Polska przystąpiła do systemu EAN-UCC dopiero w 1990 roku. Powołano wówczas Centrum Kodów Kreskowych przy IMG (Instytut Gospodarki Magazynowej) w Poznaniu, dzisiejsza nazwa: Instytut Logistyki i Magazynowania w Poznaniu. Do dobrego szybko się przyzwyczajamy. Dzisiaj nie trzeba nikogo przekonywać do zalet kodów kreskowych.

Kody EAN 13 i EAN 8

W Europie do znakowania towarów detalicznych używa się kodu EAN 13 lub jego wersji skróconej EAN 8 (rys. 1).


Rys.1. Przykłady kodów EAN 13 oraz EAN 8 [3]

W swojej strukturze kod zawiera informacje (tab. 1) o symbolu kraju producenta lub pakującego towar, Polska w tym systemie ma przydzielony nr 590 (prefiks), dalej zawarty jest nr producenta, a następnie nr indywidualny towaru – jako asortymentu danego producenta. Na końcu kodu znajduje się cyfra kontrolna K, która pozwala na sprawdzenie poprawności odczytu kodu przez czytnik kodu. W kodach skróconych EAN 8 brakuje informacji o symbolu producenta towaru.


Tabela 1. Struktura informacji zawartej w kodzie EAN 13 oraz w kodzie EAN 8

Czytnik laserowy kodu

W kodach kreskowych odczyt odbywa się na zasadzie analizy sygnału modulowanego przez promień światła laserowego przemieszczającego się i odbijającego od tła z naniesionym wzorem kodu. Odbity promień trafia poprzez układ optyczny skanera na baterię fotorezystorów i moduluje przepływ prądu w układzie elektrycznym skanera. Sygnał ten w postaci nieregularnej i miejscami spłaszczonej sinusoidy jest wzmacniany, a następnie przekształcany w sygnał skokowo zmienny przez urządzenie zwane farmerem cyfrowym.

Jak zaznaczono na rys. 2, sygnał ten podlega dalszej obróbce poprzez podział na fragmenty (o długości podstawy czasu) odpowiadające długości modułu kodu, tj. najmniejszej grubości kreski występującej w kodzie. W tym przypadku mamy do czynienia z przekształceniem sygnału wizyjnego o konkretnej szerokości i barwie w sygnał elektryczny zmienny w czasie. Przy znanej szybkości przemieszczania promienia lasera wartość sygnału elektrycznego emituje szerokość kresek w kodzie, gdzie wartość sygnału „0” odpowiada kresce białej o szerokości jednego modułu, a wartość sygnału „1” odpowiada kresce czarnej o szerokości jednego modułu. Znając symboliki kodu i długość znaku (określona liczba modułów), możemy odczytać wartość kodowanego znaku.


Rys. 2. Zasada działania czytnika laserowego

W przypadku kodu EAN 13 oprócz znaków danych występują znaki strat – o szerokości 3 modułów, znak rozdzielający – 5 modułów oraz znak stop o szerokości – 3 moduły. W przypadku tego kodu jego szerokość wynosi 95 modułów, na które składają się ; 3 + 5 + 3 moduły opisujące znaki funkcyjne wyżej opisane oraz dwa pola po 6 znaków w każdym, przy czym każdy znak jest odwzorowany za pomocą 7 modułów. Trzynasty znak kodowany to cyfra stojąca na początku kodu – jej wartość wynika ze sposobu kodowania sześciu znaków stojących za nią. W taki sposób przy pomocy 95 bitów (0,1) można zapisać 13 znaków numerycznych.

Algorytm „modulo 39”

Sprawdzenie poprawności odczytu kodu przez skaner polega na wykonaniu obliczeń zgodnie z algorytmem „modulo 39”. Zidentyfikowane znaki kodu zestawiamy w tabeli, numerując je od końca do początku (tab. 2). Sprawdzana cyfra kontrolna znajduje się na końcu sprawdzanego kodu. Następnie w 5 krokach wykonujemy następujące działania:

1° Wyznaczamy sumę cyfr na miejscach parzystych;
2° Otrzymany wynik mnożymy przez 3;
3° Wyznaczamy sumę cyfr na miejscach nieparzystych, za wyjątkiem cyfry sprawdzanej;
4° Sumujemy wyniki działań 2° i 3°;
5° Otrzymany wynik uzupełniamy do pełnych dziesiątek, liczba jednostek uzupełniających jest wartością cyfry kontrolnej. Jeśli jej wartość zgadza się z cyfrą odczytaną przez czytnik, to oznacza poprawne odczytanie całego kodu.

Przykład: Kod nr 7611682180206:


Jak widać, wynik sprawdzenia cyfry kontrolnej jest zgodny z cyfrą zidentyfikowaną przez czytnik kodu kreskowego; oznacza to, że kod został poprawnie zidentyfikowany.

W celu usprawnienia procesów dystrybucji detalicznej jednostek handlowych o zmiennej ilości w miejsce prefiksu kraju stosuje się prefiksy; 02 lub 20 – 29. Zalecane w Polsce struktury numerów przedstawia tabela 2 [2].


Tabela 2. Zalecane struktury numerów dla towarów o zmiennej ilości z krajowymi numerami katalogowymi, obowiązujące w Polsce

Prefiksy 23 oraz 27 zalecane są do znakowania towarów w obrocie ogólnokrajowym. Etykiety z tymi kodami drukuje jednostka pakująca w procesie pakowania towarów.

Prefiksy 24 oraz 29 zalecane są do znakowania towarów w obrocie zamkniętym, tzn. w danym sklepie drukuje drukarka sprzężona ze sklepową wagą automatyczną, następnie klient sam nakleja etykietę na opakowanie. W ten sposób przyspieszamy pracę POK (punktu obsługi kasowej). Pozostałe niewykorzystywane prefiksy 02, 21, 22, 25, 26, 28 – GS1 Polska zarezerwowała do przyszłych zastosowań. Zaznaczoną cyfrę kontrolną V wyznacza się za pomocą specjalnego algorytmu.

Algorytm wyznaczania cyfry kontrolnej dla pola ceny i wagi można ująć w cztery etapy.

Etap I
Wyznacza się iloczyny ważone dla każdej cyfry z przedziału (0 do 9) wg trzech algorytmów oznaczonych odpowiednio współczynnikami ważonymi: 2–, 5+, 5– :
a) Algorytm wyznaczania iloczynów ważonych dla współczynnika ważonego 2– :
- mnożymy cyfry przez 2;
- od iloczynów większych od 10 odejmujemy cyfrę dziesiątek;
- od otrzymanej liczby odrzucamy dziesiątki;
- pozostałe jednostki są iloczynami ważonymi dla współczynnika ważonego 2–.


b) Algorytm wyznaczania iloczynów ważonych dla współczynników ważonych 5+ oraz 5–:
- mnożymy poszczególne cyfry przez 5;
- suma cyfr iloczynu jest iloczynem ważonym dla współczynnika 5+, a liczba uzupełniająca tę wartość do dziesięciu jest iloczynem ważonym dla współczynnika 5–.


Etap II
Dla każdej cyfry z pola ceny ccc,cc lub wagi ww,www obliczamy (odczytujemy) iloczyny ważone, przy czym poszczególnym pozycjom przypisane są następujące współczynniki ważone:
1 cyfra – 5+
2 cyfra – 2–
3 cyfra – 5–
4 cyfra – 5+
5 cyfra – 2–

Etap III
Obliczamy sumę iloczynów ważonych wszystkich pięciu cyfr pola ceny lub wagi.

Etap IV
Uzyskany wynik uzupełniamy do pełnych dziesiątek. Cyfra, która uzupełnia wynik, jest wskaźnikiem cyfry kontrolnej ze zbioru wskaźnika ważonego 5–.


Etykiety logistyczne

Tak oznaczone towary są skanowane w punktach kasowych podobnie jak towary z typowym kodem EAN 13. Informacja związana z towarem jest bardzo skromna. Nie zawiera danych o serii produkcyjnej, dacie produkcji czy dacie przydatności do spożycia. Takie informacje zawierają oznaczenia opakowań transportowych w postaci etykiet logistycznych. Typowa etykieta logistyczna (rys. 3) składa się z trzech części [2].


Rys. 3. Etykieta logistyczna zawierająca dodatkowe informacje o towarze zgodnie z (IZ)[1]

W pierwszej części znajduje się logo firmy ewentualnie jej adres, w części drugiej zawarte są istotne dane o towarze zawartym w przesyłce, a więc nr EAN 13 towaru, ilość, data przydatności do spożycia, międzynarodowy numer jednostki wysyłkowej (SSCC), mogą też być informacje o serii produkcyjnej, masie, wariancie produkcyjnym, wymiary gabarytowe itp. W trzecim polu powtórzone są wybrane informacje z pola drugiego, zapisane w postaci kodu kreskowego. Są to informacje ważne z punktu widzenia gospodarki magazynowej. Dana informacja jest poprzedzona dwu-, trzy- lub czterocyfrową liczbą w nawiasie okrągłym, która informuje system o rodzaju zakodowanej informacji oraz o formacie jej zapisu. Biorąc pod uwagę to, że kody na etykietach są kodami ciągłymi system musi wiedzieć, gdzie kończy się jedna informacja, a gdzie zaczyna druga. Oznaczenia w nawiasach nazywają się standardowymi identyfikatorami zastosowań (IZ).

W różnych okolicznościach typową etykietę logistyczną można zastąpić kodami złożonymi. Są one tworzone na bazie kodów liniowych EAN 13 i innych, np. EAN 128, RSS. Widok kodu złożonego przedstawia rys. 4.


Rys. 4. Kody złożone: a) kod złożony na bazie kodu liniowego EAN-13; b) kod złożony na bazie kodu liniowego EAN 128; c) kod złożony na bazie kodu RSS spiętrzonego, zawierający treść (01)03412345678900(17)010200

Kody te składają się z kodu liniowego oraz doklejonego do niego kodu piętrowego (2D). W kodzie piętrowym można zapisać dodatkowe informacje o towarze, które zawierała etykieta logistyczna. Również i w tym przypadku wykorzystywane są IZ-ty. Kod piętrowy to taki rodzaj kodu, w którym informacje są zapisywane w rzędach i kolumnach. Odczyt pełnej informacji wymaga przeczytania każdego znaku w tym kodzie. Służą do tego skanery wizyjne (aparat fotograficzny), które fotografują kod, a następnie podlega on automatycznej analizie w komputerze. Najczęściej jako kod piętrowy występuje kod PDF 417 [4]. Jest to kod opracowany w USA w 1992 roku. Ze względu na swoją pojemność informacyjną nazywany jest podręczną bazą danych. Jego budowa umożliwia odczyt pełnej informacji nawet przy uszkodzeniu do 40% jego powierzchni. Związane to jest z jego zabezpieczeniami oraz specjalną budową. Umożliwia on również zapisanie wagi danego produktu. Wadą kodów EAN 13 jest to, że nie pozwalają one po rozpakowaniu produktu na pełną informację o produkcie. Chodzi o informacje zawarte na etykiecie logistycznej.

Tak więc towary z różnych partii dostaw nie są rozpoznawalne na podstawie tylko kodu EAN 13. Zastosowanie kodów złożonych eliminuje tę niedogodność. Kolejną grupę kodów stanowią kody matrycowe. Jednym z nich jest kod o nazwie Data Matrix. Kod ten jest stosowany przez pocztę niemiecką (rys. 5). Poszczególne znaki alfanumeryczne są zapisywane w tym kodzie przy pomocy modułów w postaci kwadracików czarnych lub jasnych (swego rodzaju pikseli). Wielkość tego kodu zależy od wielkości informacji, którą chcemy zapisać. W kodzie tym zapisana jest informacja m.in. o wadze przesyłki, wysokości pobranej opłaty pocztowej, dacie nadania. Drukarka kodu sprzężona jest z wagą automatyczną przesyłek.


Rys. 5. Przykład naklejki z kodem Data Matrix stosowanej do frankowania listów przez Deutsche Post

Podsumowanie

W artykule przedstawiono związek procesów ważenia ze sposobem zapisu i przystosowania tej informacji do automatycznego odczytu. Podano przykłady zapisu informacji o wadze towaru w postaci kodu liniowego, kodu piętrowego, kodu złożonego i kodu matrycowego. Procesy ważenia są jednym z licznych i bardzo ważnych procesów na liniach pakujących, sprawność funkcjonowania tych linii zależy od szybkości i dokładności pracy użytych urządzeń. Rozwiązania te są dzisiaj bardzo powszechne, jednak postęp techniczny nasuwa nowe, jeszcze wygodniejsze i bardziej niezawodne rozwiązania. Opierają się one na znacznikach radiowych RFID znanych także pod nazwami: tagi, transpondery, EPC – elektroniczne kody produktów. Ich rozpowszechnienie jest związane z wieloma problemami technicznymi, nad którymi pracują liczne zespoły badawcze.

Literatura
[1] PRACA ZBIOROWA: Kody kreskowe. Rodzaje, Standardy. Sprzęt. Zastosowania. Wyd. ILiM. Poznań 1994.
[2] PRACA ZBIOROWA: Kody kreskowe. Rodzaje. Standardy. Sprzęt. Zastosowania. Wydanie II. ILiM, Poznań 2000.
[3] Podręcznik stosowania systemu EAN.UCC – ILiM Poznań 2005.
[4] KWAŚNIOWSKI S., ZAJĄC P.: Automatyczna identyfikacja w systemach logistycznych, Seria wyd. Nawigator nr 16, Ofic. Wyd. Politechniki Wrocławskiej, Wrocław 2004.

Dr inż. Stanisław Kwaśniowski, Dr inż. Paweł Zając, Politechnika Wrocławska, Zakład Logistyki i Systemów Transportowych

Komentarze