Supermarket - Dokumentace
Obsah
Vytvoření a konfigurace supermarketu
dbo.Store_Requests_ResultState
Základní informace
„Supermarket“ je speciální mezioperační sklad výroby, kde jsou uskladněny racky, které obsahují desky plošných spojů (DPS) po strojním osazení SMD, THT součástek, tedy po dokončení výrobní operace v části výroby s názvem „Front end“.
V xTrace jsou takovéto produkty převážně označeny prefixem „S_“ a dále názvem produktu s tím, že po zpracování na pracovišti AOI (Automatic Optical Inspection) a Radiál 2 existuje spojení SN dílu (xTrace 2D kód na DPS) s rackem.
Každý dokončený rack po AOI, RAD2 je následně umístěn na paletové místo, tedy paletu a na tabuli je smazatelnou fixou zaznamenána lokace racku, název produktu a počet. Toto je pak nutné při každém vložení/vybrání ze/do supermarketu manuálně aktualizovat.
Před dalším zpracováním „S_“ produktu na ručním, fastonování atd., tedy na „Back Endu“ a to jejich pře děděním na „H_“ nebo „Finál“ jsou tyto tabule použity k identifikaci lokace, tedy kde se potřebný vstupní produktu nachází a při vybrání aktualizovat počet daného produktu na tabuli.
Manuální zápis na tabuli fixem je zdržující operace jak pro obsluhu, která zápis provádí, tak v případě následného čtení ručního zápisu na více tabulích.
Cílem digitalizace supermarketu je tento manuální zápis na tabuli odstranit a přehled mezioperačního skladu s přesnou lokací přenést do xTrace.ů
Tento dokument popisuje veškeré postupy, které bude uživatel pro práci se supermarketem potřebovat znát.
Webové rozhraní Supermarket
Vytvoření a konfigurace supermarketu
Vytvoření supermarketu
- Nastavení -> Mezioperační sklady a zásoby -> Supermarket
- + Nový záznam
- Zadáme:
- Název skladu
- Kód skladu
- Rozměry v osách x, y a z

Definice lokací
- Lokace skladu
- Nový záznam
-
Zadáme:
- Kód lokace
- Typ lokace
- Kapacitu lokace
-
Prioritu na zaskladnění
Parametry:
-
Lze mixovat výrobky?
- Lze mixovat racky?
- Lze mixovat balení?

Design skladu
- Zde si definujeme design skladu a naskládáme si kolace dle potřeby (reálného supermarketu)

Přehled Supermarketů
- Výroba -> Sklady -> Přehled skladů
Celkový stav všech skladů
Základní stránka přehlůedu Supermarketů. Obsahuje základní informace:
- Název skladu,
- Kapacitu supermarketu
- Obsazená kapacita
- Zbývá kapacita
- Procentuální obsazení
- Celkem objektů
- Kolik objektů čeká na naskladnění
- Kolik je z obejktů racků
- Kolik je z objektů balení

- Tlačítkem zobrazit v sekci Obsah zobrazíme obsah supermarketu.
- Tlačítkem zobrazit v sekci Detail zobrazíme detailnější informace ke konkrétnímu obsahu supermarketu.
Sekce Obsah
V této sekci jsou k dispozici základní informace o objektech v daném supermarketu:
- SN objektu
- Co to je za objekt
- Kód výrobku v objektu (racku atd.)
- Lakce skladu, kde se objekt nachází
- Kolik je v objektu dílů nebo panelů
- Kolik objekt zabírá místa v supermarketu
- Kdy byl objekt do supermarketu vložen
- V jakém je objekt stavu
Dále jsou zde v nástrojové liště v horní části sekce nástroje pro:
- Manuální vyskladnění objektu ze supermarketu
- Manuálnímu přeskladnění do jiného supermarketu

Sekce Detail
Podobné jako sekce obsah s tím rozdílem, že obsahuje detailnější informace o objektech

Přehled dílů
V této sekci se nachází základní informace o veškerých produktech na jednotlivých skladech, jedná se o dynamickou tabulku, kterou si uživatel může přizpůsobit dle aktuální potřeby.
Dosledovatelnost
Zde se nachází všechno co se týká zpětné dosledovatelností operací v rámci supermarketu. Konkrétně pak dosledovatelnot hledání ve skladě a hledání skladových operací.
- Dosledovatelnost -> Supermarket
- Hledání ve skladě
- Hledání skladových operací
Hledání ve skladě
Vyhledávání na podobném principuz jako např. Rodný list výrobku, kdy si zadáme vstupní parametry dle potřeby a najdeme si informace o supermarketu dle daného časového období atd.

Po vyhledání se nám zobrazí informace o supermarketu podle uživatelem zadaných parametrů. K těmto skladovým operacích zde nalezneme informace o:
- Jaký supermarket
- Jaká lokace
- Co je obsahem
- Datum vložení objektu
- Kód racku
- SN dílu
- Kód a název produktu
- Zahajení a ukončení výroby dílu
- Průběh výroby a stav dílu
- Job
- Zákaznický kód jobu
- Počet rework
- SN panelu

Hledání skladových operací
Vyhledávání na podobném principu jako např. Rodný list výrobku, kdy si zadáme vstupní parametry dle potřeby a najdeme si informace o skaldových oepůrací (zaskladnění, vyskladnění atd.) dle daného časového období atd.
Nastavení skriptu pracovišť
Skript pracoviště v sobě musí obsahovat modul PART_START, při vkládání dílů do racku, a modul RACK, který se stará o práci s RACKy. Požadavek na zaskladnění do supermarketu se odešle po naplnění či automatickém/manuálním dokončení RACKu a systémové pracoviště CHRON v nastavitelné časové periodě tyto požadavky vyřizuje. Nejnižší nastavitelný časový úsek je 1 minuta, na kterou je momentálně pracoviště u vás nastaveno.
Jakmile je požadavek na naskladnění RACKu vyřízen, RACK se reálně zobrazí na webu ve skladu a podle priority lokací a skladů systém zvolí lokaci s nejvyšší prioritou (priorita 1 je nejvyšší, priorita 99 nejnižší). Při shodné prioritě se systém rozhoduje na základě pořadí vytvoření locakace skladu.
Ve skriptu systémového pracoviště CHRON na záložce CoreModules je nový modul STORE_REQUESTS_EXECUTOR, kde se dá specifikovat jak často se požadavky budou vyřizovat. Ve skriptu každého pracoviště na záložce CoreModules je v modulu WORKPLACE_SETTING nový nastavitelný parametr StorageAction, kterým se dá definovat, jak má xTrace reagovat na pracovišti při načtení RACKu ze skladu.
Nastavení supermarketu u produktu – Procesy výroby
Pro zaskladňování do supermarketu je nutné mít u produktu definováno, do jakého supermarketu se po průchodu jakým pracovištěm má zaskladnit. Tohle nastavení se definuje na webu:
- Nastavení -> Produkty a součástky
- Vyberu si konkrétní produkt
- Sekce „Procesy výroby“
- Zde si přidáme, případně otevřeme nastavení pracoviště, po kterém chceme zaskladňovat
- Zde si do kolonky Sklad – OK / Sklad – NOK vložíme Supermarket, do kterého chceme vkládat racky
Databázová část
Tabulky pro Supermarket
| Název | Popis |
|---|---|
| dbo.Rack_Type | Nový číselník typů racků |
| dbo.Rack | Rozšíření číselníku racků o typ racku |
| dbo.t_Location | Číselník lokací |
| dbo.Store | Číselník mezioperačních skladů - nový |
| dbo.Store_Location | Přiřazení lokací do mezioperačního skladu |
| dbo.Store_Design | Nastavení rozložení mezioperačního skladu pro účely vizualizace |
| dbo.Store_Item | Obsah mezioperačního skladu |
| dbo.Store_Requests | Požadavky na sklad |
| dbo.Store_Documents | Pohyby na skladě pro zpětnou dosledovatelnost |
Číselník typů racků (dbo.Rack_Type)
Tento číselník zavedeme, abychom mohli rozdělit racky na různé typy.
| Název sloupce | Typ | NULL | Poznámka |
|---|---|---|---|
| OID | BIGINT | NE | Klíč |
| RackTypeCode | VARCHAR(20) | NE | Kód/označení typu. Musí být unikátní |
| Name | VARCHAR(100) | NE | Název / popis |
| Description | VARCHAR(500) | ANO | Popis / poznámka |
| StorageSize | INT | NE | Velikost pro uskladnění (1) |
| Deleted | BIT | NE | Příznak smazáno |
Z popisu zadání vyplývá požadavek na evidenci 3 různých typů racků.
| Klíč | Kód | Název | Poznámka |
|---|---|---|---|
| 1 | STANDARD | SMT/AX/RAD | Vstup/výstup dílu je automatický na stroji a je to standardní magazín, kde jsou díly nad sebou ve slotech/ pozicích |
| 2 | ESD | ESD bedna | Pro produkty, které mají routing BRD-SMT nebo BRD – pracoviště na back endu |
| 3 | METRO | Metro | Pojízdný vozík na větší množství dílů. Mohou být vloženy i díly různého produktu |
Dále je potřeba věnovat pozornost parametru „Velikost pro uskladnění“. Tímto parametrem se bude definovat kolik jednotek z celkové dostupné velikosti skladu-lokace ubereme
Číselník lokací (dbo.t_Location)
| Název sloupce | Typ | NULL | Poznámka |
|---|---|---|---|
| OID | BIGINT | NE | Klíč |
| LocationCode | VARCHAR(20) | NE | Kód/označení lokace. Musí být unikátní |
| Name | VARCHAR(100) | NE | Název lokace / popis |
| Description | VARCHAR(500) | ANO | Popis / poznámka |
| Deleted | BIT | NE | Příznak smazáno |
Číselník mezioperačních skladů (dbo.Store)
Uvedeny sloupce, které se přidají
| Název sloupce | Typ | NULL | Poznámka |
|---|---|---|---|
| OID | BIGINT | NE | ID skladu |
| StoreCD | VARCHAR(20) | NE | Kód skladu. Musí být unikátní |
| StoreName | VARCHAR(100) | NE | Název |
| DimensionX | INT | NE | Rozměr X (šířka) |
| DimensionY | INT | NE | Rozměr Y (délka) |
| DimenzionZ | INT | NE | Rozměr Z (výška/patro) |
| Deleted | BIT | NE | Příznak smazaný |
Nastavení lokací v mezioperačním skladu (dbo.Store_Location)
| Název sloupce | Typ | NULL | Poznámka |
|---|---|---|---|
| OID | BIGINT | NE | Klíč |
| StoreID | BIGINT | NE | ID mezioperačního skladu |
| LocationID | BIGINT | NE | ID lokace |
| LocationSize | INT | NE | Velikost lokace |
| UsedSize | INT | NE | Obsazeno (velikost-obsazeno=volná kapacita) |
| MixRacks | BIT | NE | Jestli může lokace obsahovat různé typy racků (NE) |
| MixOutCarriers | Jestli může lokace obsahovat různé typy balení nebo jen jedno (NE) | ||
| MixProducts | Jestli může lokace obsahovat různé produkty a je jedno jestli jsou v racku nebo je to balení, díl nebo panel (bere se panelový produkt) |
Nastavení obsahu lokace ve skladu (dbo.Store_Location_Design)
| Název sloupce | Typ | NULL | Poznámka |
|---|---|---|---|
| OID | BIGINT | NE | Klíč |
| StoreLocationID | BIGINT | NE | ID lokace ve skladu |
| ObjectType | BIGINT | NE | ID typu objektu, který může být v lokaci uložen. Nelze mixovat! |
| Priority | INT | NE | Priorita použití skladu pro operaci naskladnění. 1 má vyšší prioritu jak 2 |
| UsedSize | INT | NE | Obsazeno |
Priorita pro naskladnění bude využívána v rozhodovacím procesu, kterou volnou lokaci nabídne modul pro naskladnění, když najde více vhodných lokací pro naskladňovaný požadavek.
Typy možných objektů, které se mohou ve skladě vyskytovat
| ObjectType | Popis |
|---|---|
| 1 | Díl |
| 2 | Panel (nerozpadnutý) |
| 3 | Rack (RacTypeID upřesňuje jaký typ) |
| 4 | Balení (OutCarrierDefinitionID upřesňuje jaké balení) |
Nastavení rozložení lokací ve skladu (dbo.Store_Design)
| Název sloupce | Typ | NULL | Poznámka |
|---|---|---|---|
| OID | BIGINT | NE | Klíč |
| StoreLocationID | BIGINT | NE | ID lokace v mezioperačním skladu |
| PosX | INT | NE | Pozice X ve skladu podle nastavené DimensionX |
| PosY | INT | NE | Pozice Y ve skladu podle nastavené DimensionY |
| PosZ | INT | NE | Pozice X ve skladu podle nastavené DimensionZ |
| PosNotUsed | BIT | NE | Pozice ve skladě se nepoužívá (volné místo) |
Adresa lokace ve skladu je pak X-Y-Z, možná varianta je X-Y s tím, že Z=0 (přízemí)
Příklady nastavení lokací na mezioperačním skladu
Minimální nastavení rozložení je 1 x 1
Každé “buňce” pak bude možné nastavit lokaci. Více „buněk“ může mít nastavenou stejnou lokaci, přičemž definovat by se měly tak, aby byly buňky bedle sebe a tvořily pomyslný čtverec nebo obdélník, viz níže v ukázce.
Příklad rozložení
| Y | X | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 2 | LOKACE A | VOLNÉ MÍSTO | LOKACE C | VOLNÉ MÍSTO | LOKACE E | LOKACE G | |||
| 3 | |||||||||
| 4 | |||||||||
| 5 | LOKACE B | LOKACE D | LOKACE F | ||||||
| 6 | |||||||||
| 7 |
Vhodnou kombinací lze dosáhnou požadovaného rozložení skladu, který se blíží reálnému rozmístění lokací ve výrobě.
Obsah mezioperačního skladu (dbo.Store_Item)
| Název sloupce | Typ | NULL | Poznámka |
|---|---|---|---|
| OID | BIGINT | NE | Klíč |
| StoreID | BIGINT | NE | Klíč mezioperačního skladu |
| StoreLocationID | BIGINT | ID lokace v mezioperačním skladu | |
| SourceWorkPlaceID | BIGINT | ANO | Klíč pracoviště, ze kterého pochází díl, rack, balení |
| ObjectType | BIGINT | NE | Typ objektu |
| PartID | BIGINT | ANO | ID dílu |
| PanelID | BIGINT | ANO | |
| RackID | BIGINT | ANO | ID racku |
| OutCarrierID | BIGINT | ANO | ID balení |
| DT | DATETIME | NE | Datum a čas vložení do skladu |
| StorageTimeDays | INT | NE | Doba uskladnění ve dnech (výpočet) nebo-li stáří zásoby |
| ItemSize | INT | NE | Velikost jednotky podle nastavení (Part a panel má vždy 1) |
| State | BIGINT | NE | Stav objektu ve skladu |
Stavy objektu ve skladu
| Stav | Název | Popis |
|---|---|---|
| 1 | Naskladněno | Objekt je umístěn ve skladě na lokaci |
| 2 | Čeká na potvrzení požadavku naskladnění | Tento stav je přiřazen, když přišel požadavek na naskladnění a není ještě operátorem – skladníkem proveden - potvrzen |
| 3 | Čeká se na potvrzení požadavku na vyskladnění | Tento stav je přiřazen, když přišel požadavek na vyskladnění a není ještě operátorem – skladníkem proveden - potvrzen |
Stavy 1 a 2 může objekt dočasně nabývat než operátor potvrdí skladovou operaci.
Požadavky řízení skladu (dbo.Store_Requests)
| Název sloupce | Typ | NULL | Poznámka |
|---|---|---|---|
| OID | BIGINT | NE | Klíč požadavku |
| DT | BIGINT | NE | Časová známka |
| ParentID | BIGINT | ANO | ID nadřazeného požadavku |
| RequestType | CHAR | NE | Typ požadavku (naskladnění, vyskladnění, přeskladnění) |
| IsComfirmed | BIT | NE | 0=není potvrzeno, 1=je potvzeno |
| StoreID | BIGINT | NE | ID požadovaného skladu |
| LocationID | BIGINT | ANO | ID požadované lokace |
| SourceWorkPlaceID | BIGINT | NE | ID pracoviště |
| UserID | BIGINT | NE | ID uživatele |
| ObjectType | BIGINT | NE | Typ objektu |
| ObjectID | BIGINT | NE | ID objektu |
| ResultState | BIGINT | NE | Stav požadavku – výsledek zpracování |
| ResultMessage | VARCHAR | ANO | Zpráva |
| RequestType | Popis |
|---|---|
| 1 | Naskladnění |
| 2 | Vyskladnění |
| 2 | Přeskladnění |
| ResultState | Popis |
|---|---|
| 0 | Ve frontě na vyřízení |
| 1 | Vyřízeno (ResultMessage=“OK“) |
| 2 | Chyba (ResultMessage obsahuje zprávu) |
Zaskladňovací a vyskladňovací služba
Zaskladňování jako takové je prováděno službou běžící na aplikačním serveru. Jedná se o standardní xTrace službu, která spouští skript pracoviště CHRON, v němž se nachází coreový modul STORE_REQUESTS_EXECUTOR.
STORE_REQUEST_EXECUTOR
Parametry modulu:
- CronTabExpression – definice plánovače
- Period – perioda, po které se bude spouštět úloha
- RunOnStartup – je-li true, tak se úloha spustí ihned po startu
- ScheduleType – typ plánovače
- StartTime – základní
Po uplynutí periody služba zjistí, zda jsou v tabulce dbo.Store_Requests nějaké požadavky se stavem ResultState = 0. Pokud ano, tak si do paměti uloží OID všech těchto requestů a začne na všechny tyto hodnoty volat proceduru sg_Store_Item_Execute, čímž dochází k faktickému vyskladnění nebo zaskladnění daných objektů.
dbo.Store_Item_Execute
Vstupní parametry:
- StoreRequestID bigint
Výstupní parametry:
- MsgCD varchar(100)
- MsgParams varchar(128)
Popis funkce:
- Podle předaného vstupního parametru StoreRequestID se dohledají další potřebné informace z tabulky dbo.Store_Requests
- Pokud neexistuje request s takovým OID, tak se procedura ukončuje
- Pokud se jedná o typ požadavku Vyskladnění, jedná se o rack a požadavek nemá vyplněn StoreID
- Pokud ano, tak zjistí StoreID pomocí skladové lokace StoreLocation a klíče daného racku
- Pokud ani v tuto chvíli nebylo nalezeno žádné StoreID, tak se daný požadavek vyřídí se stavem ResultState=999 a ResultMessage=’Sklad nenalezen‘
- Dále se řídí logika procedury typem požadavku neboli RequestType a typem objektu neboli ObjectTypeID
- 1
