Drukarka kodów kreskowych w obiegu towaru

Drukarka kodów kreskowych jest w magazynie ostatnim ogniwem łańcucha danych. Program magazynowy zna numer palety, adres lokalizacji albo partię towaru, ale dopiero wydruk zamienia te dane w oznaczenie, które skaner odczyta na hali. Błąd w szablonie albo źle dobrana głowica kończą się kodem nieczytelnym dla kolektora, więc urządzenie traktuje się jak element procesu, a nie jak peryferium przy biurku.

Etykiety powstają w czterech miejscach obiegu. Zestawienie poniżej pokazuje, skąd system bierze dane do każdej z nich i jaki kod trafia na wydruk.

Moment procesuEtykietaDane z systemuTypowy kod
Przyjęcie dostawyJednostka logistycznaNumer SSCC, GTIN, numer partii, data ważnościGS1-128
Odłożenie na regałLokalizacja magazynowaPrzykładowy adres strefa-rząd-kolumna-poziomCode 128 albo Data Matrix
Kompletacja i pakowanieKarton wysyłkowyNumer zamówienia, odbiorca, numer przesyłkiCode 128 albo QR
ProdukcjaWyrób gotowyIndeks, numer partii, data produkcjiGS1-128 albo Data Matrix

Budowę kodów i etykiety GS1 opisują osobne strony o kodach kreskowych w magazynie oraz o etykietach logistycznych GS1. Ten tekst dotyczy urządzenia: co nim steruje, jak dobrać głowicę i materiał oraz jakie ograniczenia ma przykładowy model przemysłowy.

Etykieta jest wynikiem operacji, a nie osobną czynnością

Najprostszy układ zostawia drukowanie magazynierowi: wpisuje numer i wybiera szablon w programie do etykiet. Każdy taki krok jest okazją do pomyłki, a wydruk nie zostawia śladu w bazie. W układzie lepszym żądanie druku powstaje razem z operacją magazynową. Potwierdzenie przyjęcia palety zapisuje ruch i wstawia zadanie wydruku w jednej transakcji SQL, więc wydruk nie istnieje bez ruchu, a ruch bez wydruku.

Ten opis dotyczy mechanizmu ogólnego, a nie konfiguracji konkretnego produktu. Studio WMS.net generuje etykiety logistyczne GS1 na podstawie danych operacji, co omawia strona o etykiecie GS1 w programie WMS, natomiast zakres szablonów ustala projekt wdrożeniowy dla danego magazynu.

Karton na palecie w regale z dużym kodem QR i liniowym kodem kreskowym na naklejonej etykiecie
Etykieta z kodem 2D i kodem liniowym na kartonie: wynik wydruku na etapie przyjęcia i odłożenia towaru

Jak program magazynowy steruje drukarką etykiet

Drukarka przemysłowa rozumie język poleceń, a nie pliki z edytora tekstu. W urządzeniach Zebra jest nim ZPL II: strumień znaków ASCII, który opisuje pola tekstowe i kody kreskowe, a także liczbę kopii. Program magazynowy składa te polecenia z danych operacji i wysyła je do drukarki przez sieć, port USB albo łącze szeregowe.

Etykieta lokalizacji zajmuje w ZPL II kilkanaście linii. Poniższy szablon dla etykiety o szerokości 4 cali przy 203 dpi drukuje adres tekstem oraz kodem Code 128 i zleca jedną kopię.

^XA
^PW812
^LL406
^CI28
^FO40,30^A0N,40,40^FDLokalizacja^FS
^FO40,90^A0N,70,70^FDA-12-03-2^FS
^FO40,190^BY3^BCN,120,Y,N,N^FDA-12-03-2^FS
^PQ1
^XZ

Polecenie ^FO ustawia pozycję pola w punktach od lewego górnego rogu etykiety, a ^A0N wybiera czcionkę skalowalną o podanej wysokości i szerokości. Wartość ^BY3 wyznacza moduł kodu, czyli szerokość najwęższej kreski, na 3 punkty. Polecenie ^BCN drukuje Code 128 w pozycji poziomej z tekstem pod kodem, a ^PQ1 określa liczbę kopii.

Reguła: polecenie ^CI28 ustawia kodowanie UTF-8, więc polskie znaki w polach tekstowych wymagają tej samej strony kodowej w programie i w drukarce, która obsługuje Unicode.

Szablon na serwerze albo w pamięci drukarki

Wzór etykiety można dostarczyć na dwa sposoby. Pierwszy wysyła pełny szablon z każdym zadaniem, więc zmiana układu wymaga poprawki tylko w programie. Drugi zapisuje wzór w pamięci Flash drukarki poleceniem ^DF, a w zadaniu przekazuje wyłącznie wartości pól przez ^FN oraz wywołanie ^XF. Ruch w sieci maleje, ale każda zmiana szablonu oznacza aktualizację wszystkich urządzeń.

^XA
^DFE:LOKACJA.ZPL^FS
^FO40,90^A0N,70,70^FN1^FS
^FO40,190^BY3^BCN,120,Y,N,N^FN1^FS
^XZ

^XA
^XFE:LOKACJA.ZPL^FS
^FN1^FDA-12-03-2^FS
^PQ1
^XZ

Pamięć urządzenia ma limit. Model Zebra ZM400 z opisu w dalszej części tekstu ma 8 MB pamięci Flash, opcjonalnie 64 MB. Prosty szablon tekstowy zajmuje pojedyncze kilobajty, więc ograniczeniem bywają raczej grafiki i dodatkowe czcionki.

Wysyłka zadania i kolejka wydruku

Zadanie trafia do drukarki sieciowej przez surowe gniazdo TCP, zwykle na port 9100. Poniższy fragment C# otwiera połączenie i zapisuje polecenia w kodowaniu UTF-8.

using System.Net.Sockets;
using System.Text;

static void WyslijZpl(string host, string zpl)
{
    using var client = new TcpClient(host, 9100);
    using var stream = client.GetStream();
    byte[] bytes = Encoding.UTF8.GetBytes(zpl);
    stream.Write(bytes, 0, bytes.Length);
}

Połączenie z drukarką potrafi zawieść: brak papieru, otwarta głowica albo przerwa w sieci. Z tego powodu program nie wysyła zadania bezpośrednio z okna użytkownika, tylko zapisuje je w tabeli kolejki i odbiera osobnym procesem, który ponawia próby. Tabela poniżej jest schematem przykładowym, a nie strukturą produktu.

CREATE TABLE dbo.PrintJob (
    PrintJobId  bigint IDENTITY(1,1) PRIMARY KEY,
    PrinterCode varchar(20)   NOT NULL,
    Zpl         nvarchar(max) NOT NULL,
    Status      tinyint       NOT NULL DEFAULT 0, -- 0 nowe, 1 wysłane, 2 błąd
    Attempts    tinyint       NOT NULL DEFAULT 0,
    CreatedAt   datetime2     NOT NULL DEFAULT SYSUTCDATETIME()
);

Reguła: wpis w kolejce powstaje w tej samej transakcji co ruch magazynowy. Po cofnięciu transakcji znika także zadanie, więc nie zostaje etykieta na towar, który nie przeszedł przez system.

Rozdzielczość głowicy i materiał etykiety

Parametry urządzenia wybiera się według najmniejszego kodu na etykiecie, a nie według cennika. Punkt wydruku ma określony rozmiar, a moduł kodu, czyli najwęższa kreska, składa się z całkowitej liczby takich punktów.

RozdzielczośćPunktów na milimetrRozmiar punktuTypowe zastosowanie
203 dpi80,125 mmEtykiety logistyczne GS1 i adresy lokalizacji
300 dpi12około 0,083 mmMałe etykiety z kodami 2D
600 dpi24około 0,042 mmBardzo drobne kody i znakowanie małych elementów

Moduł o szerokości 3 punktów daje przy 203 dpi kreskę 0,375 mm, a przy 300 dpi kreskę 0,25 mm. Ten sam szablon wydrukowany na drukarce o innej rozdzielczości ma więc inne wymiary fizyczne, jeśli wartość ^BY nie zostanie przeliczona.

Reguła: do standardowych etykiet logistycznych GS1 wystarcza 203 dpi, natomiast drobne kody 2D na małych etykietach wymagają głowicy 300 lub 600 dpi, aby skaner odczytał kod bez powtórnej próby.

Druk termotransferowy a termiczny bezpośredni

Obie technologie działają na tej samej głowicy, ale utrwalają obraz inaczej. Wybór zależy od tego, jak długo etykieta ma zostać czytelna.

CechaTermotransferowyTermiczny bezpośredni
Nośnik barwnikaTaśma barwiąca i etykietaPapier reagujący na ciepło, bez taśmy
Trwałość nadrukuOdporny na światło i tarcieBlaknie pod wpływem światła i temperatury
Koszt materiałówEtykiety oraz taśmaTylko etykiety
Typowe użycieEtykiety paletowe, znakowanie długotrwałeKrótkotrwałe oznaczenie przesyłek

Etykieta paletowa, która ma zostać czytelna dłużej niż kilka tygodni, powinna powstawać metodą termotransferową. Nadruk termiczny bezpośredni ciemnieje albo blaknie, po czym kod SSCC na palecie przestaje się skanować. Do taśmy barwiącej należy jeszcze dobrać nawinięcie zgodne z trzpieniem drukarki (IN albo OUT).

Zebra ZM400 jako przykład drukarki przemysłowej

Zebra ZM400 należy do drukarek półprzemysłowych do etykiet logistycznych GS1. Opis modelu podaje parametry, które dobrze pokazują, na co patrzy się przy wyborze urządzenia. Pełną listę symbologii i wyposażenia zawiera osobna strona Drukarka Zebra ZM400 - parametry techniczne.

ParametrWartość według opisu modelu
Metoda drukuTermotransferowa oraz termiczna bezpośrednia
Rozdzielczość głowicy203 dpi, 300 dpi albo 600 dpi
Maksymalna szybkość254 mm/s przy 203 dpi, 203 mm/s przy 300 dpi, 102 mm/s przy 600 dpi
Szerokość druku104 mm
Pamięć16 MB DRAM, 8 MB Flash, opcjonalnie 64 MB Flash
Język poleceńZPL II
InterfejsyUSB 2.0, Centronics, RS232, serwer druku ZebraNet 10/100, opcjonalnie sieć 802.11b/g

Szybkość spada wraz z rozdzielczością: głowica 600 dpi drukuje z prędkością 102 mm/s, czyli ponad dwa razy wolniej niż głowica 203 dpi. Przy stanowisku pakowania, gdzie etykieta powstaje po każdym kartonie, ta różnica zamienia się w czas oczekiwania. Rozdzielczość 600 dpi wybiera się więc tylko tam, gdzie wymaga tego kod.

Model można doposażyć. Z listy opcji istotne dla magazynu są cztery:

  • Zegar czasu rzeczywistego - pozwala drukować datę i godzinę z zegara urządzenia.
  • Obcinacz etykiet - tnie materiał po każdym wydruku.
  • Odklejacz z nawijakiem podkładu - wydaje pojedynczą etykietę gotową do naklejenia.
  • Obsługa RFID - umożliwia zapis znacznika wklejonego w etykietę.

Reguła: parametry w tabeli pochodzą z opisu modelu. Przed zakupem sprawdza się aktualną kartę katalogową producenta i dostępność materiałów eksploatacyjnych.

Pracownica magazynu odbiera wydrukowaną etykietę z przemysłowej drukarki etykiet przy regałach
Stanowisko wydruku przy hali: etykieta trafia na towar zaraz po operacji, bez powrotu do biura

Status urządzenia i konserwacja w codziennej pracy

Opowieści o drukarce, która sama zamawia materiały, należą do zapowiedzi marketingowych. Realne możliwości są skromniejsze i bardziej użyteczne: urządzenie zgłasza swój stan, a program reaguje na niego przed wysłaniem kolejnego zadania.

Odczyt statusu drukarki

Zebra udostępnia polecenie ~HS, które zwraca ciąg znaków ze stanem urządzenia. Odczytuje się z niego dwie grupy informacji: braki materiału (papier, taśma) oraz stan mechaniki (otwarta głowica, pauza).

Program wysyła zapytanie przed zadaniem i wstrzymuje wydruk, gdy któraś flaga jest ustawiona. Zadanie wraca do kolejki ze statusem oczekującym, a magazynier dostaje komunikat na kolektorze, że drukarka wymaga interwencji. Etykieta nie ginie po cichu.

Czyszczenie głowicy i opcja RFID

Głowica zużywa się od tarcia i zanieczyszczeń. Zabrudzona daje jasne smugi, które przerywają kreski kodu, a skaner odrzuca taki wydruk albo odczytuje go błędnie. Wynik kontroluje się skanerem, a nie okiem: etykieta próbna powinna odczytać się od razu. W opisie modelu ZM400 konserwację toru przesuwu i głowicy uproszczono.

Przy opcji RFID drukarka zapisuje dodatkowo dane w znaczniku wklejonym w etykietę. Zapis, który się nie powiódł, trzeba odnotować, a taką etykietę wyłączyć z użycia. Wtedy w obiegu nie zostaje znacznik bez danych.

Wdrożenie druku etykiet w magazynie

Wdrożenie zaczyna się od inwentarza etykiet, a nie od zakupu drukarek. Dla każdego typu etykiety ustala się dane i kod, a także rozmiar oraz miejsce wydruku. Zestawienie poniżej pokazuje przykładowy podział stanowisk.

StanowiskoDrukarkaEtykietaUwaga
Rampa przyjęćStacjonarna przemysłowa, 203 dpiJednostka logistyczna z SSCCWydruk po potwierdzeniu przyjęcia
Hala składowaniaMobilna, przy wózkuLokalizacjaWydruk na żądanie po zmianie adresu
PakowanieStacjonarna z odklejaczemKarton wysyłkowyZnaczenie ma szybkość wydruku
ProdukcjaPrzemysłowa z taśmą barwiącąWyrób gotowy z partiąGłowica dobrana do najmniejszego kodu

Kolektor danych z Androidem potwierdza czytelność wydruku przez odczyt kodu z etykiety. Urządzenia opisuje strona o kolektorze danych Android WMS, a pracę skanera z programem strona o programie magazynowym ze skanerem. Adresy regałów, które trafiają na etykiety lokalizacji, opisuje tekst o miejscach składowania.

Dla każdego typu etykiety wykonuje się próbę odczytu na docelowym skanerze, a przy kodach 2D także na kolektorze z kamerą. Przy towarze z partią i datą ważności próba obejmuje wszystkie pola identyfikatorów, co omawia strona o partiach produkcyjnych i datach ważności. Etykiety paletowe wiążą się z numerem SSCC, który wraca w awizacji, jak opisuje tekst o awizo dostawy palet.

Powtórny wydruk i numeracja SSCC

Etykieta uszkodzona w transporcie albo zabrudzona na hali wymaga powtórnego wydruku. Numer SSCC jednostki logistycznej nadaje się jednak raz, w chwili jej utworzenia, więc druga etykieta nie może dostać kolejnego numeru. System drukuje kopię z tego samego rekordu i zapisuje, kto zlecił wydruk i z jakiego powodu.

Dzięki temu w bazie istnieje jeden numer palety i historia jej etykiet. Odbiorca, który skanuje kod przy przyjęciu, dostaje ten sam identyfikator niezależnie od tego, którą kopię naklejono. Gdyby numer generowano od nowa przy każdym wydruku, jedna paleta miałaby dwa identyfikatory, a awizacja wysyłkowa wskazywałaby tylko jeden z nich.

Reguła: powtórny wydruk zmienia liczbę kopii etykiety, a nie numer jednostki. Nowy numer SSCC dostaje wyłącznie nowa jednostka logistyczna.

Składnię poleceń ZPL II opisuje dokumentacja producenta Zebra. Współpracę drukarki z modułem magazynowym można obejrzeć w demo systemu magazynowego SoftwareStudio, a opis Studio WMS.net znajduje się na stronie producenta. Szerszy obraz oprogramowania, które obsługuje przyjęcia i etykiety, daje tekst o oprogramowaniu magazynowym.