W systemie WMS miejsce składowania jest rekordem opisanym kodem i wymiarami oraz statusem, a nie tylko napisem na tabliczce przy regale. Od jakości tego rekordu zależy, czy system potrafi podpowiedzieć odkład, zaplanować trasę pobrań i policzyć wolną pojemność. Ten artykuł rozkłada miejsce składowania na części. Najpierw omawia format kodu z przykładami i strefowanie, a potem rodzaje regałów oraz metody składowania.

Osobne opracowania dotyczą wyboru między stałymi a wolnymi lokalizacjami (metoda stałych miejsc składowania) oraz reguł odkładania i klasyfikacji ABC (program do magazynowania towarów). Tutaj tematem jest to, jak lokalizację nazwać i opisać w bazie oraz jak sprawdzić poprawność jej adresu.

Miejsca składowania jako rekord w systemie

Każda lokalizacja ma stały identyfikator i zestaw atrybutów, na podstawie których system decyduje, czy dany towar może tam trafić. Objętość i ładowność ograniczają wielkość oraz masę składowanej jednostki, a status mówi, czy miejsce jest wolne, zarezerwowane czy zajęte. Pozostałe atrybuty wynikają z rodzaju regału i strefy.

AtrybutZnaczeniePrzykład wartości
KodUnikalny adres lokalizacji, drukowany na etykiecie regałuA-02-05-3
StrefaObszar magazynu o wspólnych zasadach składowaniaA - strefa paletowa
ObjętośćMaksymalna kubatura jednostki, która się zmieści1,60 m3
ŁadownośćNośność gniazda lub poziomu regału1000 kg
StatusStan zajętości, od którego zależy podpowiedź odkładuwolne, zarezerwowane, zajęte

Atrybuty pojemnościowe rzadko wypełnia się dla każdego miejsca osobno. Zwykle definiuje się typ miejsca, na przykład paletę EUR na poziomie o nośności 1000 kg, i przypisuje go do setek lokalizacji naraz. Wyjątki, jak poziom obniżony pod niską halą albo gniazdo z ograniczeniem wysokości, zapisuje się jako osobne typy. Dzięki temu zmiana nośności regału po przeglądzie technicznym wymaga poprawy jednego typu, a nie edycji każdego adresu.

Reguła: kod lokalizacji jest niezmiennym identyfikatorem, a opis miejsca (strefa, typ, nośność) może się zmieniać. Kodu, który występuje w historii ruchów, nie zmienia się w miejscu - zamyka się go i zakłada nowy.

Format kodu lokalizacji i przykłady

Kod regał-gniazdo-wysokość-paleta

W systemie Studio WMS.net adres miejsca paletowego ma format AA-BB-C-D. Pierwsze dwie części to regał i gniazdo, a dwie ostatnie to wysokość i miejsce paletowe. Operator dopisujący nową lokalizację wskazuje te cztery wartości, a system nie zapisze miejsca, jeśli któregoś brakuje. Wartości pochodzą ze skorowidzów zdefiniowanych w systemie, więc regał 12 nie pojawi się raz jako 12, a raz jako 012. Przykładowy kod 12-04-3-1 oznacza regał 12, gniazdo 4, trzeci poziom od podłogi i pierwszą paletę w gnieździe.

Kod ze strefą i rzędem

W magazynach o kilku strefach adres często zaczyna się od litery strefy: STREFA-RZĄD-KOLUMNA-POZIOM, na przykład A-02-05-3. Litera pozwala odczytać strefę bez sięgania do systemu, a stała długość kodu ułatwia sortowanie po adresie i budowanie trasy pobrań. Oba formaty są poprawne. Znaczenie ma wyłącznie to, żeby w jednym magazynie obowiązywał jeden format i żeby kod był na etykiecie czytelny z odległości, z której pracuje wózek.

KodRozbiórTyp miejsca
12-04-3-1regał 12, gniazdo 4, poziom 3, paleta 1gniazdo paletowe w regale przejazdowym
A-02-05-3strefa A, rząd 2, kolumna 5, poziom 3miejsce paletowe w strefie składowania
K-07-12-2strefa K, rząd 7, kolumna 12, poziom 2półka w strefie kompletacji drobnicy
R-01-00-0strefa R, rząd 1, kolumna 0, poziom 0miejsce przyrampowe (bufor wydań)

Walidacja kodu w bazie

Format kodu warto egzekwować w bazie, a nie tylko w formularzu. Ograniczenie CHECK odrzuca adres o złym układzie znaków, a ograniczenie UNIQUE gwarantuje, że dwie lokalizacje nie dostaną tego samego kodu. Poniższa tabela jest przykładowa. Składnię ograniczeń opisuje dokumentacja ograniczeń CHECK w SQL Server.

-- przykładowa tabela miejsc składowania (nie jest schematem żadnego produktu)
CREATE TABLE dbo.MiejsceSkladowania (
    IdMiejsca   int IDENTITY(1,1) PRIMARY KEY,
    Kod         varchar(12)  NOT NULL,          -- np. A-02-05-3
    Strefa      char(1)      NOT NULL,
    Rzad        tinyint      NOT NULL,
    Kolumna     tinyint      NOT NULL,
    Poziom      tinyint      NOT NULL,
    ObjetoscM3  decimal(6,2) NULL,
    LadownoscKg int          NULL,
    Status      tinyint      NOT NULL DEFAULT 0, -- 0 wolne, 1 zarezerwowane, 2 zajęte
    CONSTRAINT UQ_MiejsceSkladowania_Kod UNIQUE (Kod),
    CONSTRAINT CK_MiejsceSkladowania_Kod
        CHECK (Kod LIKE '[A-Z]-[0-9][0-9]-[0-9][0-9]-[0-9]')
);

Etykieta lokalizacji

Kod trzeba przenieść na regał w postaci, którą odczyta terminal i człowiek. Etykieta zawiera kod kreskowy oraz ten sam adres drukiem, umieszczona jest na belce regału na wysokości oczu operatora, a w wysokich regałach powtarza się ją na każdym poziomie. Standard GS1 przewiduje numer GLN do identyfikacji miejsc, jednak w magazynie wewnętrznym wystarcza zwykle własny, krótki format, opisany w artykule o etykiecie GS1 jako uzupełnienie etykiet jednostek logistycznych. Skanowanie etykiety lokalizacji przy odkładzie i przy pobraniu jest jedynym sposobem, by system zapisał ruch pod adresem faktycznym.

Strefowanie magazynu i jego skutki dla lokalizacji

Strefa jest atrybutem, który wiąże grupę lokalizacji z zasadami. Strefa przyjęć i strefa wydań to bufory, w których towar leży krótko. Strefa składowania trzyma zapas na regałach, a strefa kompletacji utrzymuje mniejsze ilości bliżej stanowisk pakowania. Dodatkowo wydziela się strefy warunkowe, na przykład chłodnię albo miejsca dla towarów niebezpiecznych, o których piszemy w tekście o magazynowaniu w chłodni i towarach ADR.

Strefa działa jak filtr przy podpowiedzi odkładu: system nie zaproponuje miejsca w strefie, której nie dopuszczono dla klasy towaru. Podział według rotacji, czyli strefa szybkich pobrań blisko wydań i strefa wolno rotujących zapasów dalej, opisuje artykuł o rozmieszczeniu towaru w magazynie wysokiego składowania.

Strefy buforowe i miejsca tymczasowe

Towar w ruchu też musi mieć adres. Palety czekające na odkład, zwroty do oceny czy zestawy skompletowane i niewysłane leżą w miejscach buforowych, które opisuje się tak samo jak regały, choć nie mają poziomów. Bez takich lokalizacji towar w trakcie przesunięcia znika ze stanów i pojawia się dopiero po zatwierdzeniu dokumentu, co przy inwentaryzacji wygląda jak brak. Obsługę takich miejsc w ciągu zmiany opisuje artykuł o obsłudze magazynu.

Paleta z towarem i etykietą z kodem QR na poziomie regału paletowego, w tle pracownik ze skanerem
Etykieta lokalizacji i etykieta palety - dwa skany potwierdzają, że jednostka trafiła pod właściwy adres

Rodzaje regałów i ich wpływ na adresację

Typ regału wyznacza, co w praktyce oznacza pojedyncze miejsce w systemie. W regale paletowym jest to gniazdo na jedną paletę, a w regale przepływowym cały tor, w którym mieści się kilka palet ustawionych jedna za drugą. Poniższa tabela zestawia najczęstsze rodzaje regałów z tym, jak wpływają na rekord lokalizacji.

Rodzaj regałuJednostka w lokalizacjiKolejność wydawaniaUwaga dla rekordu lokalizacji
Regał paletowy przejazdowyJedna paleta w gnieździeDowolna, bezpośredni dostęp do każdej paletyNośność poziomu i wysokość gniazda
Regał półkowyPółka lub pojemnikDowolnaWiele indeksów w jednej półce wymaga podziału na pola
Regał przepływowyTor grawitacyjny z kilkoma paletamiFIFO, paleta z tyłu toru jest wydawana pierwszaPojemność toru w paletach i jeden indeks na tor
Regał push-backTor z wózkami wpychanymi w głąbLIFO, ostatnia paleta jest pobierana pierwszaGłębokość toru i zakaz mieszania partii
Regał wspornikowyPoziom z długimi elementamiDowolnaDługość i masa elementu zamiast objętości

W popularnym opisie push-back bywa mylony z regałem FIFO, tymczasem paleta wpychana do toru jako ostatnia wyjeżdża pierwsza. Kolejność FIFO daje regał przepływowy, w którym palety zjeżdżają grawitacyjnie od strony załadunku do strony pobrań. Ma to znaczenie przy artykułach z krótkim terminem ważności, bo przy push-back system musi pilnować, żeby w torze stała jedna partia.

Dobór regałów i układ alejek wpływają na koszt zmian, więc błędy najlepiej wychwycić przed montażem. Typowe pomyłki wymienia artykuł o błędach przy planowaniu układu regałów.

Metody składowania i wybór miejsca odkładu

Przy metodzie stałych miejsc każdy indeks ma przypisaną lokalizację, a system podpowiada ją bez wyszukiwania. Przy metodzie miejsc wolnych system wybiera dowolną wolną lokalizację spełniającą warunki, co lepiej wykorzystuje przestrzeń, ale wymaga pełnej dyscypliny skanowania. W praktyce stosuje się mieszankę: stałe miejsca w strefie kompletacji i wolne w strefie składowania. Trzecim wariantem jest składowanie klasowe, w którym indeksy grupuje się według rotacji, a w obrębie strefy danej klasy wybiera się miejsce dowolnie.

Przy wolnych miejscach wybór lokalizacji jest zapytaniem do bazy. Poniższy przykład pokazuje indeks filtrowany, który obejmuje wyłącznie wolne miejsca, oraz zapytanie wybierające najbliższe miejsce spełniające wymagania palety. Dokumentacja opisuje ten mechanizm w artykule o indeksach filtrowanych w SQL Server.

-- indeks filtrowany obejmuje tylko wolne miejsca, więc pozostaje mały
CREATE INDEX IX_Miejsce_Wolne
    ON dbo.MiejsceSkladowania (Strefa, Poziom, Rzad, Kolumna)
    INCLUDE (Kod, LadownoscKg, ObjetoscM3)
    WHERE Status = 0;

DECLARE @MasaKg int = 620, @ObjetoscM3 decimal(6,2) = 1.40;

SELECT TOP (1) Kod
FROM dbo.MiejsceSkladowania
WHERE Status = 0
  AND Strefa = 'A'
  AND LadownoscKg >= @MasaKg
  AND ObjetoscM3  >= @ObjetoscM3
ORDER BY Poziom, Rzad, Kolumna;

Kolejność wydawania nie zależy od regału, tylko od reguły zapisanej w systemie. FIFO wydaje najpierw partię o najwcześniejszej dacie przyjęcia, a FEFO partię o najwcześniejszym terminie ważności. Reguła FEFO wymaga daty ważności zapisanej przy partii już w chwili przyjęcia, więc brak tej daty na etykiecie dostawy trzeba wyłapać przy rampie. Aby reguła działała, lokalizacja musi wiedzieć, jaką partię trzyma, a system powinien blokować mieszanie partii w jednym miejscu, jeśli magazyn nie dopuszcza takiej praktyki.

Reguła: jedna lokalizacja i jedna partia, chyba że magazyn świadomie dopuszcza mieszanie. Dwie partie o różnych terminach w jednym gnieździe uniemożliwiają zarówno FIFO, jak i FEFO.

Zarządzanie lokalizacjami w programie WMS

Nową lokalizację w Studio WMS.net dopisuje się w module lokalizacji magazynowych, wybierając pozycję Nowa lokalizacja albo funkcję Dopisz w kartotece miejsc adresowych. Cztery parametry adresu są obowiązkowe:

  • Regał - numer regału pochodzący ze skorowidzu.
  • Gniazdo - pozycja w rzędzie regałów.
  • Poziom - wysokość, na której leży miejsce.
  • Gniazdo paletowe - kolejna paleta w obrębie gniazda.

Z rejestru miejsc składowania dostępna jest historia obrotów wybranej lokalizacji: pozycje dokumentów przyjęcia i wydania, które zmieniały jej stan. Pozycje są pogrupowane miesięcznie i posortowane od najnowszych. Osobne okno pokazuje aktualne stany towaru w lokalizacji: indeks z nazwą oraz jednostkę miary z ilością. W obu widokach obowiązują standardowe filtry i sortowanie oraz eksport danych. Zajętość całego magazynu w formie graficznej opisuje strona o wizualizacji zajętości magazynu, a adresację palet w gospodarce opakowaniami zwrotnymi artykuł o adresacji palet i numerach SSCC.

Wózek widłowy z paletami w alei między regałami, po prawej stanowisko z terminalem
Zestawienie towaru w lokalizacjach - punkt odniesienia przy kontroli, czy stan pod danym adresem zgadza się z regałem

Zapełnienie stref

Rekord lokalizacji pozwala policzyć zajętość magazynu jednym zapytaniem. Zapytanie zwraca dla każdej strefy liczbę miejsc oraz liczbę wolnych, a także odsetek zajętych. Gdy strefa zbliża się do pełnego zapełnienia, odkład wydłuża się, bo system szuka coraz dalszego wolnego miejsca, a operator jedzie przez pół hali. Warto więc reagować na zapełnienie strefy, zanim zacznie blokować przyjęcia.

-- zajętość stref na podstawie statusu miejsc
SELECT Strefa,
       COUNT(*) AS Miejsca,
       SUM(CASE WHEN Status = 0 THEN 1 ELSE 0 END) AS Wolne,
       CAST(100.0 * SUM(CASE WHEN Status > 0 THEN 1 ELSE 0 END) / COUNT(*) AS decimal(5,1)) AS ZajeteProc
FROM dbo.MiejsceSkladowania
GROUP BY Strefa
ORDER BY ZajeteProc DESC;

Typowe błędy w adresacji lokalizacji

Najczęściej błąd polega na zmianie układu regałów bez zmiany kodów. Regał przesunięty w inne miejsce zachowuje stary adres, więc kod przestaje odpowiadać położeniu, a trasa pobrań sortowana po adresie prowadzi magazyniera dookoła hali. Drugi błąd to kody o różnej długości: A-2-5-3 i A-02-05-3 sortują się inaczej i system może potraktować je jako różne miejsca. Trzeci to brak lokalizacji buforowych, przez co towar w trakcie przesunięcia nie ma adresu i znika ze stanów. Czwarty to składowanie towaru poza systemem, na przykład palety odstawionej w przejściu tuż przed wydaniem. Taka paleta nie ma miejsca, więc nie istnieje w kompletacji, a jej wykrycie zależy od czyjejś pamięci.

Uporządkowanie takich błędów zaczyna się od porównania listy lokalizacji w systemie z rzeczywistym układem regałów. Metody liczenia opisuje artykuł o inwentaryzacji ciągłej w magazynie. Dopiero po uporządkowaniu adresów ma sens pełne wdrożenie reguł odkładania. Sprawdzenie działania lokalizacji w praktyce umożliwia demonstracyjny magazyn online, a opis modułu znajduje się w serwisie produktowym Studio WMS.net.