Code 128

Code 128 to jednowymiarowy kod kreskowy typu 4W, w którym występują paski o czterech różnych szerokościach. Został wynaleziony przez firmę Computer Identics w 1981 roku.

Opis

Kod kreskowy Code 128 jest kodem alfanumerycznym o bardzo dużej gęstości. Liczba kodowanych znaków może być dowolna. Kod ten zajmuje najmniej miejsca spośród kodów jednowymiarowych dla 6 lub więcej znaków. Każdy kodowany znak składa się z 11 czarnych lub białych modułów. Znak stopu składa się z 13 modułów. 11 modułów składa się na trzy paski i trzy odstępy. Paski i odstępy mogą składać się z od 1 do 4 modułów.
Systemy optymalizujące procesy produkcyjneSystemy optymalizujące procesy produkcyjne

Typ

Code 128 to jednowymiarowy kod kreskowy typu 4W, w którym występują paski o czterech różnych szerokościach. Został wynaleziony przez firmę Computer Identics w 1981 roku. Jest kodem modularnym i ciągłym o bardzo dużej gęstości.

Kodowane znaki

Zestaw A: ASCII (0-95),
Zestaw B: ASCII (32-127),
Zestaw C: cyfry 0-9,
Długość kodu jest zmienna.

Code 128 jest zbudowany z:

  • cichej strefy
    (przynajmniej 10 razy szerszej niż wąski pasek)
  • znaku start
  • zmiennego odcinka danych
  • sumy kontrolnej
  • znaku stop
  • cichej strefy
    (przynajmniej 10 razy szerszej niż wąski pasek)
Systemy optymalizujące procesy produkcyjne

Struktura:

Istnieje 106 różnych kombinacji ustawień pasków i odstępów.Każdej takiej kombinacji można przypisać jedno z trzech znaczeń. Znaczenie to określa się poprzez jeden z trzech różnych znaków startowych.
Znak startowy Code A pozwala na kodowanie wszystkich standardowych alfanumerycznych znaków plus znaki sterujące i specjalne.
Znak startowy Code B włącza wszystkie standardowe znaki alfanumeryczne plus małe litery oraz specjalne znaki.
Znak startowy Code C obejmuje 100 par cyfr od 00 do 99 i może być używany do podwojenia gęstości kodowania danych numerycznych.

Wewnątrz kodu można zmienić zestaw kodowanych znaków na inny (A, B, C) stosując specjalne znaki CODE i SHIFT. Znak CODE zmienia zestaw znaków dla wszystkich kolejnych znaków w kodzie. Znak SHIFT zmienia zestaw znaków tylko dla następnego znaku spośród zestawów Code A i Code B.

Kody FNC określają instrukcje dla czytnika kodów kreskowych. FNC 1 jest zarezerwowane dla przyszłego użycia. FNC 2 informuje czytnik, aby zgromadził dane i przesłał je z następnym kodem. FNC 3 jest zarezerwowany do inicjalizacji czytnika i innych funkcji czytnika. FNC 4 jest zarezerwowany dla przyszłych zastosowań.

Każdy znak ma wartość od 0 do 105. Ta wartość jest używana do obliczania sumy kontrolnej kodu.

Suma kontrolna

Poniżej przedstawiony jest sposób obliczania sumy kontrolnej. Kodujemy nazwę kodu czyli 'Code 128'.
  • Każdemu znakowi przypisz wagę równą numerowi pozycji znaku w kodzie.
    • Systemy optymalizujące procesy produkcyjne
      • Dla wszystkich znaków dokonaj obliczenia sumy ważonej wartości znaków. Dodaj wartość symbolu startowego.
        1*35 + 2*79 + 3*68 + 4*69 + 5*0 + 6*17 + 7*18 + 8*24 + 104 = 1197
      • Oblicz resztę z dzielenia wartości otrzymanej w p.2 przez 101.
        1197 mod 101 = 86
      • Sumą kontrolną jest znak, którego wartość jest równa wynikowi z p.3.
        ZNAK (86) = v
        Kod wraz z sumą kontrolną ma więc postać: '(Start B) Code 128 v (Stop)'

Tabela

Poniższa tabela przedstawia sposób kodowania znaków.Pierwsza kolumna zawiera wartości znaków. W następnych trzech zawarte są zestawy znaków: A, B, C. Kolejne cyfry w odpowiedniej komórce ostatniej kolumny oznaczają z ilu modułów składają się kolejne elementy (pasek - odstęp - pasek - odstęp - pasek - odstęp - pasek - odstęp).
Systemy optymalizujące procesy produkcyjne

Wymiary

Szerokość modułu waha się najczęściej w granicach od X=0,19 mm do 1,27 mm.Najmniejsza wysokość pasków musi być co najmniej równa 0,15xdługość symbolu albo 0,25 cala (6,35 mm) - wybieramy większą z tych dwóch liczb.

Całkowita długość symbolu wyraża się wzorem:
L=(11C+35)X
gdzie:
L - długość symbolu (bez uwzględnienia cichych stref),
C - liczba znaków danych i sterujących
(bez uwzględniania startu, stopu i sumy kontrolnej),
X - wymiar modułu.

Dla Code 128C (kodowanie tylko cyfr) powyższy wzór przyjmuje postać:
L=(5,5C+35)X

Zastosowanie

Kod ten ma szerokie zastosowanie.Jest używany między innymi w magazynach, logistyce (opakowania transportowe), sprzedaży detalicznej (daty produkcji, okresy trwałości).
Code 128 używa mniej miejsca do zakodowania sześciu cyfr, niż jakikolwiek inny kod linearny.

Code 128 w praktyce - kiedy go używać

Code 128 sprawdza się wszędzie tam, gdzie liczy się gęstość zapisu danych i pełna obsługa znaków ASCII przy ograniczonej powierzchni etykiety. W logistyce jest standardem dla etykiet SSCC (Serial Shipping Container Code) na paletach EURO i opakowaniach zbiorczych - symbolika GS1-128 (wariant Code 128 z identyfikatorami aplikacji AI) pozwala zakodować numer partii, datę ważności, wagę i numer seryjny w jednym kodzie pod paletą.

W magazynach wysokiego składowania Code 128 pojawia się na etykietach lokalizacji regałowych (np. A12-03-05 oznaczający aleję, regał, poziom) oraz na etykietach pickingowych w systemach WMS. Dzięki Code Set C kod numeryczny zapisuje się dwucyfrowo na jeden znak, co przy 14-cyfrowych GTIN daje znacznie krótszy symbol niż Code 39.

W służbie zdrowia Code 128 jest używany do oznaczania próbek laboratoryjnych (probówki, slajdy histopatologiczne), opasek pacjenta z numerem PESEL i ID hospitalizacji, a także do śledzenia narzędzi chirurgicznych w cyklu sterylizacji (UDI - Unique Device Identification, wymagane przez FDA i MDR).

W produkcji kody Code 128 oznaczają komponenty na liniach montażowych (traceability w motoryzacji wg standardu Odette), partie produkcyjne w przemyśle spożywczym oraz numery seryjne urządzeń elektronicznych. Tam, gdzie zakres danych obejmuje litery, cyfry i znaki specjalne (np. separator FNC1), Code 128 jest praktycznie bezalternatywny wśród symbolik 1D.

Najczęstsze problemy przy wdrażaniu Code 128

1. Niewłaściwy dobór X-dimension do skanera

X-dimension (szerokość najwęższego modułu) musi być dopasowana do rozdzielczości docelowego skanera. Dla skanerów ręcznych CCD typowe minimum to 0,25 mm (10 mil), dla skanerów liniowych w bramkach magazynowych - 0,33 mm, a dla kamer przemysłowych w wizji maszynowej można zejść do 0,17 mm. Zbyt mała X-dimension przy druku termicznym 203 dpi powoduje zlewanie się modułów i błędy odczytu już po 20–30 cm dystansu.

2. Błędna konwersja między Code Set A/B/C

Algorytm enkodera powinien automatycznie przełączać Code Sety dla minimalizacji długości kodu. Częsty błąd: zakodowanie ciągu 123456 w Code Set B (6 znaków × 11 modułów) zamiast Code Set C (3 pary × 11 modułów). Drugi błąd to nieparzysta liczba cyfr w Code C - wymaga przełączenia na A/B dla ostatniego znaku, co bywa pomijane w prostych bibliotekach.

3. Druk na materiałach o niskim kontraście

Norma ISO/IEC 15416 wymaga współczynnika kontrastu symbolu (SC) co najmniej 40%. Druk czarnym tonerem na folii transparentnej, srebrnej lub metalizowanej daje SC 15–25% - kod jest nieczytelny dla skanerów laserowych. Rozwiązanie: biała powłoka podkładowa lub przejście na folię matową/satynową. Na opakowaniach mrożonek dochodzi problem szronu - etykiety muszą być laminowane.

4. Brak quiet zone

Code 128 wymaga marginesu 10 × X-dimension z każdej strony kodu. Projektanci etykiet często wcinają tekst w quiet zone, co generuje błędy 'No Read' pomimo idealnie wydrukowanego kodu. To problem szczególnie częsty przy etykietach z grafiką tła.

5. Termiczna degradacja głowicy drukarki

Drukarki termotransferowe po 30–50 km wydruku mają uszkodzone pojedyncze piksele głowicy, co tworzy pionowe białe linie w kodzie. Code 128 z poziomymi paskami toleruje to do pewnego stopnia, ale weryfikator ISO/IEC 15415 oznaczy stopień F. Konieczna jest okresowa kalibracja i wymiana głowicy.

6. Niespójność prędkości druku i temperatury

Druk z prędkością 6 ips przy temperaturze ustawionej dla 4 ips daje cienkie paski i szerokie spacje - błąd dekodowalności. Każda zmiana taśmy TTR wymaga rekalibracji parametrów termicznych.

7. Nadmierna kompresja danych w GS1-128

Próba zakodowania 60+ znaków w jednym symbolu daje kod o szerokości przekraczającej możliwości pola odczytu skanera ręcznego. Limit praktyczny to ok. 25–30 znaków - powyżej należy rozważyć podział na dwa kody lub przejście na Data Matrix.

Wybór drukarki i skanera do Code 128

Drukarka

Rozdzielczość to pierwsze kryterium. Dla etykiet logistycznych A6/A5 z X-dimension ≥ 0,33 mm wystarczy 203 dpi (8 dot/mm). Dla etykiet farmaceutycznych, próbek laboratoryjnych i biżuterii - gdzie X-dimension schodzi do 0,17 mm - niezbędne jest 300 dpi lub 600 dpi. Druk poniżej zalecanej rozdzielczości skutkuje aliasingiem krawędzi modułów.

Technologia druku: termotransferowa (TTR) dla etykiet trwałych (ekspozycja UV, chemikalia, niskie temperatury) z taśmą wax/resin lub pure resin; termiczna bezpośrednia (DT) dla krótkiej żywotności etykiet kurierskich i wagowych. DT jest tańsze, ale etykiety blakną po 6–12 miesiącach.

Wbudowany weryfikator inline (ISO/IEC 15415/15416) to funkcja krytyczna w produkcji regulowanej - drukarka odrzuca etykiety o gradzie poniżej C i drukuje je ponownie.

Język drukarki: ZPL, EPL, IPL, DPL - wybór ma znaczenie dla integracji z istniejącym ERP/WMS. Brak natywnego wsparcia dla GS1-128 z FNC1 w prostszych modelach wymusza generowanie kodu jako bitmapy po stronie aplikacji.

Skaner

Typ silnika optycznego: laser 1D - najtańszy, działa do 30–50 cm, problemy z ekranami LCD; CCD/linear imager - odporny na wstrząsy, krótszy zasięg; area imager 2D - czyta Code 128 pod dowolnym kątem, z ekranów telefonów, oraz wszystkie kody 2D. Dla wdrożeń przyszłościowych rekomenduje się area imager.

Stopień ochrony IP: IP54 dla biura, IP65 dla magazynu, IP67/IP68 dla mroźni i mycia ciśnieniowego. Odporność na upadek co najmniej 1,8 m na beton dla skanerów ręcznych w intensywnej eksploatacji.

Interfejs: USB HID (klawiatura) dla prostych integracji, USB COM/RS-232 dla SDK i kontroli pełnej, Bluetooth/Wi-Fi dla mobilnych terminali. Głębia pola ma znaczenie przy skanowaniu z palet - skanery dalekiego zasięgu czytają Code 128 z 1,5–6 m.