Sekvenční vychystávání

From PlcWiki

Revision as of 08:11, 1 April 2019 by Jan (Talk | contribs)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

Úvod

Sekvenční vychystávání je způsob přípravy dílů pro kokpit často ještě v momentu kdy výroba samotného kokpitu nebyla na výrobní lince zahájena. V SAS se používá buď sekvenční vychystávání, což znamená přípravu dílů do palet na základě produkčních dat přijatých do kernelu. Každá paleta obsahuje díly pro více kokpitů. Druhý způsob přípravy dílů je založen na tzv. tablet kitting metodě, kdy se připravují boxy pro konkrétní kokpity a pro data se používá aplikace na tabletu. Tento článek pojednává sekvenčním vychystávání tak, jak je implementováno na linkách SAS například v Saarlouis, Boleslavi či Wolfsburgu.



Dataflow

File:slsdataflow_small.png

Data přijatá z JISu (či jiného zdroje) putují skrz dataflow do hlavního kernelu. V rámci dataflow existuje odbočka, která přísluší sekvenčnímu kernelu plc_skrnl. Z důvodu přehlednosti se používá druhé instance kernelu jako kernelu pro sekvenční vychystávání, ale i klasický kernel obsahuje sekvenční vychystávání a může pracovat v tomto režimu.


Kernel a jeho konfigurace

Kernel přijímá data tak, jak přicházejí do systému. Postupně v sekvenci připravuje díly a řadí je do palet. To - do jaké palety jaký díl přijde se řídí pomocí konfiguračního souboru splan.

File:splan.png

Výše je ukázka takové konfigurace převzatá ze závodu SAS SLS.

WPID = S2
Name = Clusters
MaxPalletItems = 24

Toto jsou základní údaje: identifikátor a název palety. Počet dílů na paletě.

PickingPartCheck = Yes

Toto je parametr odpovídající za to, zda se budou díly na paletě po jejím zkompletování ještě skenovat pro kontrolu. Při nastavení na Yes musí pracovník pro zkompletování palety vzít scanner a postupně naskenovat všechny díly. Právě pro správné přiřazení skenování ke konkrétní paletě, je v konfiguraci obsažen i SelectPattern a ReplacePattern, který ze skenování vezme konkrétní část určenou k porovnávání. SelectPattern musí mít shodu s celým vstupem, jinak nefunguje korektně ReplacePattern.

SelectPattern[0] = ^_((BM5T|CM5T|F1ET|G1ET)-10849-\w{2}).*$
ReplacePattern[0] =

Další parametr v kunfiguraci je

AutomaticPrintWhenReady = No

Ten určuje, zda pracovník na sekvenční stanici musí naskenovat barcode pro paletu (např. PLCPALS2) aby ji započal vychystávát. Pokud je tento parametr nastaven na Yes, tak je paleta připravena k naplnění okamžitě, jak se v kernelu naplní všechny pozice. Důsledek toho je, že se rovnou vytiskne soupiska vychystávaných dílů (ta se jinak tiskne v momentě, kdy pracovník naskenuje barcode pro paletu).

Printer = presequencing_printer2

Tento parametr udává tiskárnu, na které se bude tisknout průvodka k paletě (pracovní ve skutečnosti vychystává díly na základě průvodky, na obrazovku v podstatě nekouká). Tiskárna musí být definována v CUPSu na všech sekvenčních stanicích. Funguje to tak, že všechny stanice připojené k sekvenčnímu kernelu zobrazují to samé a v momentě, kdy má dojít k tisku, se začnou sápat po tiskárně - první, které se to podaří, bude fyzicky tisknout. Proto musí být tiskárna definována na všech, nikdy není jistota, od kuď se vlastně bude tisknout, může to být jakákoliv sekvenční stanice připojená ke konkrétnímu skernelu.

Jednou z nejdůležitějších součástí konfigurace je i výčet dílů pro danou paletu

BM5T 10849 FU:<>BM5T - F
BM5T 10849 GU:<>BM5T - G
BM5T 10849 H+:<>BM5T - H
BM5T 10849 L+:<>BM5T - L
BM5T 10849 BA+:<>BM5T - BA+

Ten funguje stejně jako PartDistribution. Pokud kernel najde v datech auta příslušný díl (na základě prvního sloupce) převede jej na číslo dílu (druhý sloupec) a tuto informaci použije pro porovnání se skenováním ze stanice. Tam pracovník musí (při nastavení PickingPartCheck = Yes) naskenovat všechny díly, které vyskládal do palety. Skenování se přiřadí na základě SelectPatternu a následně se část naskenovaného barcodu převádí na PartNumber pomocí standardní PartDistribution. První shoda (Bez ohledu na pozici. Může být problém pokud v PartDitribution je více záznamů které se mohou shodovat ...) vygeneruje PartNumber (údaj z druhého sloupce) a tato data jsou porovnána s daty vygenerovanými v kernelu. Pokud vzájemně souhlasí, je to OK a díl zezelená. Pokud pracovník omylem naskenuje něco jiného či třeba přeskočí pozici, musí naskenovat PLCSPCBRK a začít kontrolovat znova od začátku. Lze použít i autorizovaný barcod, který funguje jako responsible confirmation a pracovníkovi umožní upravit chybnou pozici (v takovém případě nemusí skenovat vše od začátku).

Generování sequence.dat se provádí takto: Pokud se v datech nalezne díl z splan.cfg (první sloupec), převede se na cleverpart (druhý sloupec v splan.cfg). Cleverpart se potom hledá v PartDistribution (POZOR mezery se berou v potaz), bez ohledu na operaci - kdekoliv. Pokud nalezne, použije definovaný barkód z PartDistribution pro poslední sloupec v sequence.dat.

V základu platí logika, že co kokpit to pozice na paletě. V případě, že ve výčtu dílů budou některé chybět a žádný z patternů nebude sedět na obdržená data z kernelu. Může to produkovat prázdné pozice na platě. Viz tento screen obrazovky sekvenčního klienta

File:conditionsmissing.png

Vyhnout se tomu dá pomocí uvedení podmínek, které definují které kokpity se mají na paletu vychystávat.

Condition = DA05
Condition = INDI|UKRA
Condition = !INDI

Pouze ty kokpity, které vyhovují podmínkám se budou na paletu vychystávat. Ostatní se neberou v potaz a nebudou vytvářet ani prázdné pozice. Pro definování podmínky lze užít regulární výraz. Například toto

Condition = (?!^.*INDI.*$|^.*UKRA.*$)^.*$

je to samé jako toto

Condition = !INDI
Condition = !UKRA

Důležité produkční soubory sekvenčního kernelu

Jsou situovány ve standardním /usr/local/plc/var adresáři. Jedná se o soubory

pallet.dat
sequence.dat
supply.dat

Struktura sequence.dat

1. číslo kokpitu

2. podmínka

3. paleta

4. paleta v řadě

5. číslo použito pro součet kokpitů na paletě. Pouze první díl na pozici má význam (při pickingParchecku) a při počítání. Zbytek má 0 a je jen pro informaci.

6. sekvenční číslo

Barvy sekvenčního klienta

File:seqclient.png

Horní okna klienta jsou určeny pro palety, každé okono znamená jeden typ palety definovaný jako pozice v kernelu. Celkem se používá pět barev pro zvýraznění stavu palety.


modrá - založená paleta v kernelu, kam stále přibývají data

zelená - připravená k vychystávání, kernel naplnil všechny pozice

fialová - aktálně vychystávaná, tedy paleta ke které je vytištěna průvodka a pracovník aktuálně fyzicky plní jednotlivé pozice

bílá - fyzicky hotová paleta, všechny díly jsou na svých pozicích

šedá - z palety jsou na produkční lince postupně odebírány díly (číslo v závorce postupně klesá)


Číslo v pravém horním rohu u okna palety označuje aktuální zásobu dílů na lince, jinými slovy je součten všech dílu na bílých a šedých paletách. Pokud je zásoba dílů kriticky nízká (5 a méně dílů) číslo zčervená.


Vybírání dílů z palety

Klienti na lince vybírají díly z palety pro konkrétní produkt. Před vybíráním z palety je nutno načíst ID palety. Vybírání se poté omezí na otevřenou paletu. Pořadí palet není kontrolováno.

Výjimkou je WorkPlace.AlienSeqWPID. Při použití tohoto parametru není třeba otevírat paletu, vybírá se z jakékoliv.

Spojení se sekvenčním kernelem je zajištěno níže uvedenými parametry.

 line.SeqServer = plcpamkrnl
 line.SeqServerPort = 6799

Výběr dílů se děje dvěma možnými způsoby:

a) Operací PartCheck

Splněním konkrétní operace na pracovišti se odebere jeden kus dané pozice z aktuálně otevřené (šedá) palety pro otevřený produkt. Při výběru se kontroluje i číslo dílu. Po vybrání všech pozic je třeba otevřít další paletu naskenováním jejího ID.

  operation.sequencing.seqwpid = seznam pozic na paletě oddělený čárkami

b) Načtením produktu na pracovišti

Po načtení produktu na pracovišti se z aktuálně otevřené (šedá) palety odebere jeden kus dané pozice. Po vybrání všech pozic je třeba otevřít další paletu naskenováním jejího ID.

  WorkPlace.AlienSeqWPID = seznam pozic na paletě oddělený čárkami
  WorkPlace.SeqWPID = seznam pozic na paletě oddělený čárkami
  Workplace.PalletSelect = defines the begining of a string of a palette number
Personal tools