Yard management system - etapy wizyty na placu
Yard management system prowadzi pojazd przez plac jako jedną wizytę o pięciu etapach. Każdy etap ma zdarzenie wyzwalające i użytkownika, który je potwierdza. Dane z etapu trafiają do rekordu wizyty. Taki podział odróżnia system od zeszytu ochrony, w którym zapisuje się tylko przyjazd i wyjazd, a wszystko pomiędzy zostaje w pamięci dyspozytora.
| Etap | Zdarzenie | Kto potwierdza | Co zapisuje system |
|---|---|---|---|
| Przyjazd | pojazd dojeżdża do bramy | kamera ANPR albo ochrona | czas wjazdu i numer rejestracyjny |
| Rejestracja | dopasowanie do awizacji | ochrona | powiązanie z oknem czasowym i podpis kierowcy |
| Przydział | wskazanie rampy i miejsca postojowego | dyspozytor | planowana rampa oraz planowane stanowisko |
| Obsługa | podstawienie pod rampę | magazyn | początek i koniec rozładunku albo załadunku |
| Wyjazd | opuszczenie terenu | ochrona | czas wyjazdu i zamknięcie wizyty |
Etapy przydziału i obsługi przebiegają odmiennie zależnie od modelu pracy. Przy bezpośrednim rozładunku kierowca czeka w pojeździe i sam wjeżdża na rampę. W modelu wymiany naczep ciągnik odstawia naczepę, a jej dalszy los należy do obsługi placu. Zakres całej klasy rozwiązań opisuje artykuł o systemie YMS, a miejsce YMS w łańcuchu dostaw omawia tekst o roli YMS.
Przed etapem przyjazdu istnieje jeszcze planowanie. Dostawca zakłada awizację i wybiera najpierw obiekt oraz magazyn, a potem okno na rampie, więc pojazd zjawia się przy bramie z już przypisanym terminem. Ten etap, w ujęciu produktowym, przedstawia artykuł o yard management w Studio VSS.net.
Reguła: etap zapisuje się przy zdarzeniu fizycznym, a nie przy zamiarze. Planowana rampa jest planem, a podstawienie pod rampę zdarzeniem.
Przyjazd i rejestracja pojazdu
Odczyt tablicy przez ANPR
Kamera ANPR odczytuje numer rejestracyjny na wjeździe i porównuje go z listą awizowanych wizyt na dany dzień. Zgodny odczyt zapisuje czas wjazdu bez udziału ochrony. Odczyt ma ograniczenia: potwierdza tożsamość pojazdu i moment przejazdu przez bramę, ale nie wskazuje stanowiska na placu.

Odczyt z kamery bywa niepewny. Zabrudzona tablica albo zła jakość obrazu dają numer z pominiętym znakiem. Przy integracji z kamerą warto przewidzieć porównanie z listą awizacji z tolerancją jednego znaku oraz ręczne potwierdzenie przez ochronę dla niepewnych dopasowań.
Reguła: odczyt ANPR potwierdza wjazd pojazdu, ale nie jego stanowisko. Lokalizację ustala dopiero dyspozycja albo czujnik na miejscu postojowym.
Odprawa na bramie
Ochrona ma na bramie listę transportów oczekujących na wjazd. Widzi podgląd zgłoszenia i wydrukuje przepustkę. Podpis kierowcy składa się palcem albo rysikiem na ekranie i zastępuje papierowe potwierdzenie przyjazdu.
Wjazd nieawizowany i odprawa ręczna
Pojazd bez awizacji nie jest odsyłany automatycznie. Ochrona wpisuje w formularzu dane pojazdu i kierowcy oraz cel wizyty, generuje jednorazową przepustkę w formacie PDF i zapisuje podpis kontrahenta. Wpis trafia do historii jako transport nieawizowany, więc raport pokazuje, jaki odsetek ruchu omija kalendarz.
Bramę można też połączyć z terminalem samoobsługowym. Kierowca rejestruje wtedy przyjazd sam, a system porównuje numer z listą awizacji. Dane pojazdów i kierowców pochodzą z kartotek opisanych w artykule o kartotekach w systemie VSS.net, więc ich jakość decyduje o tym, ile odczytów dopasuje się bez udziału człowieka.
Spóźnienie względem okna
Spóźnienie mieści się w buforze na końcu okna albo go przekracza. Niewielkie opóźnienie nie wymaga żadnej akcji. Większe zwalnia okno dla innych dostaw, a pojazd czeka na wolne miejsce na placu albo dostaje nowe okno w kalendarzu. Oba progi warto opisać w regulaminie dla przewoźników, bo tylko wtedy odmowa wjazdu na umówioną godzinę nie jest zaskoczeniem. Decyzję w przypadkach spornych podejmuje logistyka, a nie kierowca przy szlabanie.
Przydział bramy i miejsca postojowego
Po rejestracji pracownik bramy wskazuje osobno planowane miejsce parkingowe i osobno planowaną rampę. Rozdzielenie pól jest celowe. Miejsce postojowe należy do placu, rampa do budynku, a pomyłka między słownikami nie jest możliwa, bo pola korzystają z różnych list. Stan mapy placu zmienia się po pierwszym z tych zdarzeń, co opisuje artykuł o wizualizacji zajętości miejsc parkingowych.

O tym, czy rampa przyjmie pojazd, decyduje pojemność bramy. Administrator przypisuje do bramy dostępne rampy i ustala maksymalny czas oczekiwania pojazdu. Określa też reguły automatycznego przypisania miejsca postojowego w zależności od typu transportu. Zasady definiowania bram i obszarów załadunkowych opisuje serwis producenta: jak definiować bramy i obszary załadunkowe w Studio VSS.net. Koordynację z rampami omawia tekst o zarządzaniu dokami w magazynie.
Reguły przypisania miejsca zależą od typu transportu. Administrator ustawia je dla bramy, a system podpowiada stanowisko zgodnie z polityką obiektu. Poniższa tabela pokazuje przykładową politykę o wartościach poglądowych.
| Typ wizyty | Miejsce postojowe | Rampa |
|---|---|---|
| Dostawa paletowa | strefa oczekiwania przy bramie wjazdowej | rampa rozładunkowa |
| Załadunek wysyłki | strefa oczekiwania przy hali wysyłek | rampa załadunkowa |
| Naczepa odstawiona | strefa długiego postoju | przydział przy wywołaniu |
| Transport nieawizowany | strefa buforowa przy bramie | po decyzji logistyki |
Kolejka pojazdów do rampy
Gdy rampa się zwolni, dyspozytor wywołuje następny pojazd. Jeżeli robi to dwóch dyspozytorów naraz, ta sama wizyta nie może dostać dwóch przydziałów. W T-SQL rozwiązuje to połączenie podpowiedzi UPDLOCK i READPAST. Przykład wybiera pierwszą wizytę oczekującą na podstawienie i zmienia jej status w jednej instrukcji. Nazwy tabeli i kolumn są poglądowe.
-- Przykład (nazwy poglądowe): wywołanie następnej wizyty na rampę
WITH nxt AS (
SELECT TOP (1) VisitId, DockId, Status
FROM dbo.YardVisit WITH (UPDLOCK, READPAST, ROWLOCK)
WHERE Status = 'PARKED'
AND WindowStart <= SYSDATETIME()
ORDER BY WindowStart, VisitId
)
UPDATE nxt
SET Status = 'CALLED'
OUTPUT inserted.VisitId, inserted.DockId;
UPDLOCK zakłada blokadę aktualizacji na wybranym wierszu, a READPAST pomija wiersze zablokowane przez inną sesję. Drugi dyspozytor dostaje więc kolejną wizytę zamiast czekać na pierwszą. Bez READPAST sesje ustawiałyby się w kolejce na tej samej blokadzie. Opis podpowiedzi zawiera dokumentacja table hints w Microsoft Learn. Indeks na parze kolumn Status i WindowStart pozwala znaleźć wiersz bez skanowania tabeli.
Obsługa na rampie i ciągnik placowy
W modelu wymiany naczep pracę placu wykonuje ciągnik placowy, czyli pojazd używany wyłącznie na terenie zakładu. Przestawia naczepy między miejscami postojowymi a rampami, więc kierowca dalekobieżny nie czeka przy rozładunku. Ciągnik jest przy tym zasobem jak rampa: ma status i historię przydziałów.
W VSS.net przestawienia pojazdów między strefami zakładu obsługuje pozycja Transport wewnętrzny w module Yard Management. Kartoteka opisuje każdy ciągnik czterema grupami danych, podobnie jak wózki i maszyny, co przedstawia artykuł o transporcie wewnętrznym w module VSS.net.
- Identyfikacja - nazwa pojazdu i numer rejestracyjny.
- Numery ewidencyjne - numer SAP i numer ewidencyjny.
- Kod kreskowy - oznaczenie do skanowania przy wydaniu kluczyków.
- Status - dostępność pojazdu i przypisanie do magazynu albo oddziału.

Na mapie placu zestaw kompletny ma inną ikonę niż naczepa odstawiona. Rozróżnienie ma skutek operacyjny. Zestaw z kierowcą czeka na wywołanie do rampy, a naczepę bez kierowcy przestawia ciągnik placowy w chwili, gdy rampa się zwolni. Zlecenie przestawienia ma źródło i cel oraz wskazuje ciągnik, który je wykonuje. Stan mapy placu zmienia się dopiero wtedy, gdy operator potwierdzi przestawienie, a nie w chwili utworzenia zlecenia. Ma też skutek rozliczeniowy: czas postoju naczepy odstawionej bywa elementem umowy z przewoźnikiem, a system zapisuje go automatycznie od chwili odstawienia.
Wyjazd i zamknięcie wizyty
Wyjazd zamyka wizytę. Ochrona zapisuje czas opuszczenia terenu, a system wylicza czas postoju i porównuje go z oknem czasowym. W sekcji Awizacje pozycja Wyjazd służy do zamknięcia wizyty, a historia przechowuje zakończone pobyty razem z użytkownikiem, który je zamknął. W obiektach z ograniczeniami tonażowymi do obiegu dołącza waga samochodowa, a wynik ważenia trafia do rekordu wizyty. Widok wyjazdu w module awizacji opisuje artykuł o awizacjach w VSS.net.
Przy dostawie ważenie na wjeździe daje masę brutto, a ważenie na wyjeździe masę pustego pojazdu, czyli tarę. Różnica obu wartości jest masą ładunku. Wynik zapisuje się w rekordzie wizyty razem ze znacznikiem czasu ważenia.
| Wskaźnik | Sposób liczenia | Co ujawnia |
|---|---|---|
| Opóźnienie względem okna | czas wjazdu minus początek okna | dyscyplinę przewoźnika |
| Czas do rampy | podstawienie minus wjazd | brak wolnych stanowisk lub późne wywołanie |
| Czas obsługi | koniec rozładunku minus początek | zbyt krótkie okna |
| Postój łączny | wyjazd minus wjazd | podstawę rozliczeń postojowego |
Wskaźniki pozwalają rozstrzygnąć, czy przyczyną kolejki jest plac, czy rampa. Długi czas do rampy przy krótkim czasie obsługi wskazuje na brak wolnych stanowisk albo zbyt późne wywołanie pojazdu. Długi czas obsługi przy krótkim czasie do rampy oznacza, że okna są za krótkie albo rozładunek trwa dłużej, niż zakłada wyliczenie. Zasady doboru długości okien omawia artykuł o oknach czasowych.
Wizyty bez znacznika wyjazdu narastają, gdy ochrona pominie zapis przy opuszczaniu terenu. Pojazd, który stoi na mapie od trzech dób, jest niemal na pewno błędem danych. Zapytanie z warunkiem GateOutAt IS NULL i progiem czasu wskazuje takie rekordy do wyjaśnienia. Zamyka się je zdarzeniem korygującym z osobnym źródłem, aby nie zafałszować statystyk postoju.
Model danych wizyty w SQL Server
Wizytę wygodnie odwzorować jako nagłówek i dziennik zdarzeń. Nagłówek przechowuje dane stałe, a dziennik dopisuje każdą zmianę i nigdy jej nie nadpisuje. Z dziennika da się odtworzyć stan wizyty w dowolnym momencie oraz policzyć czasy między etapami. Schemat jest przykładem, a nazwy nie odpowiadają bazie produktu.
CREATE TABLE dbo.YardEvent (
EventId bigint IDENTITY(1,1) PRIMARY KEY,
VisitId bigint NOT NULL,
EventType tinyint NOT NULL, -- 1 zgłoszenie, 2 wjazd, 3 podstawienie, 4 koniec obsługi, 5 wyjazd
EventAt datetime2(0) NOT NULL,
Source tinyint NOT NULL -- 1 brama, 2 ANPR, 3 operator
);
CREATE NONCLUSTERED INDEX IX_YardEvent_Visit
ON dbo.YardEvent (VisitId, EventAt)
INCLUDE (EventType);
Indeks nieklastrowy na parze (VisitId, EventAt) obsługuje dwa typowe zapytania: historię jednej wizyty i ostatnie zdarzenie. Kolumna EventType w klauzuli INCLUDE pozwala odczytać typ zdarzenia bez sięgania do tabeli. Bieżący stan wizyty to typ ostatniego zdarzenia.
SELECT v.VisitId, e.EventType AS CurrentState
FROM dbo.YardVisit AS v
CROSS APPLY (
SELECT TOP (1) x.EventType
FROM dbo.YardEvent AS x
WHERE x.VisitId = v.VisitId
ORDER BY x.EventAt DESC, x.EventId DESC
) AS e;
Operator CROSS APPLY z TOP (1) wyszukuje ostatnie zdarzenie osobno dla każdej wizyty, a indeks czyni to wyszukiwanie tanim. Sortowanie po EventAt i EventId rozstrzyga sytuację, w której dwa zdarzenia mają ten sam czas z dokładnością do sekundy.
Ochrona przed duplikatami odczytów
Kamera potrafi zgłosić ten sam przejazd kilkakrotnie w ciągu sekundy. Unikalny indeks na parze (VisitId, EventType) odrzuca powtórzenie tego samego etapu, a aplikacja traktuje błąd 2601 jako informację, że etap został już zapisany. Dziennik zostaje wtedy zgodny z rzeczywistością nawet przy niestabilnym łączu z kamerą.
Indeks filtrowany na otwartych wizytach
Dziennik rośnie z każdą wizytą, a zapytania o bieżący plac dotyczą wyłącznie wizyt otwartych. Indeks filtrowany na otwartych wizytach utrzymuje je szybkimi niezależnie od wielkości archiwum. Ten sam indeks w wersji unikalnej wymusza regułę, że jeden numer rejestracyjny ma najwyżej jedną otwartą wizytę. Składnię omawia dokumentacja indeksów filtrowanych w Microsoft Learn.
CREATE UNIQUE NONCLUSTERED INDEX UX_YardVisit_Plate_Open
ON dbo.YardVisit (PlateNumber)
WHERE GateOutAt IS NULL;
Zarządzanie placem bez systemu i po wdrożeniu
Plac da się prowadzić bez oprogramowania, jeśli ruch jest niewielki. Mapa placu z wyznaczonymi strefami, arkusz z pojazdami oraz łączność radiowa pozwalają utrzymać porządek, choć wymagają dyscypliny i regularnego uzupełniania. Numery miejsc i rejestracja w punkcie wjazdowym ograniczają chaos. Wraz ze wzrostem liczby wizyt te metody przestają wystarczać, bo nikt nie policzy czasu postoju z odręcznych zapisów.
| Czynność | Bez systemu | W systemie YMS |
|---|---|---|
| Rejestracja wjazdu | wpis w zeszycie ochrony | odczyt ANPR albo odprawa z podpisem na ekranie |
| Wskazanie miejsca | radio i tablica przy placu | przydział z listy stanowisk oraz mapa placu |
| Wywołanie na rampę | telefon dyspozytora | zmiana statusu wizyty |
| Czas postoju | ręczne odejmowanie godzin | znaczniki czasu zapisane przy zdarzeniach |
| Analiza opóźnień | spotkanie zespołu po zdarzeniu | raport ze wskaźników wizyt |
Regularne spotkania zespołu zostają potrzebne, ale zmienia się ich materiał. Zamiast wspomnień o kolejce zespół otrzymuje zestawienie czasów do rampy i czasów obsługi z podziałem na dostawców. Przewoźnik, który stale przyjeżdża po oknie, jest wtedy widoczny w danych, a nie tylko w opinii dyspozytora.




