AOI KohYoung¶
Zde popíšeme integraci AOI KohYoung. Předpokládáme AOI KohYoung, který automaticky otestuje desku a uloží výsledek do databáze. Chyby na výsledku jsou pak dodatečně rozhodnuty na rozhodovacím pracovišti. TracePRO se k datům připojuje přes databázi MS SQL, která je lokálně na počítači připojeném k zařízení KohYoung.
Výrobní linka v TracePRO¶
Pro zpracování výsledků KohYoung je třeba zařadit zařízení do výrobní linky a nainstalovat výrobní linku na serveru. Použije se obsluha KohyoungAoiHandler, který funguje následovně:
Každých 30 sekund zkontroluje, jestli je nový záznam v tabulce KY_AOI. Hledá záznam s vyšším číslem pcbid, než je poslední známé.
Každý nový záznam zpracuje následovně:
Z řádku tabulky KY_AOI vezme údaje: pcbguid , resultdbname , imagedbname.
Otevře databázi v resultdbname a vyčte z ní údaje k výsledku pod pcbguid.
Pokud řádek nemá vyplněn program (jobfileidshare), tak jej odloží na později (docházelo tam patrně k nějakému souběhu - TracePRO zpracovalo záznamy dřív, než byly hotové, a nenašlo k výsledku Výrobní objednávku / příkaz)
Z tabulky TB_AOIResult vyčteme: barcode (nebo allbarcode pokud je bacode prázdný, nebo pcbid pokud je allbarcode prázdný), startdatetime, enddatetime, jobfileidshare - použije se jako jméno programu, userid, lot, resultdbname, imagedbname, pcbguid. Také informace o review: reviewstartdatetime, reviewenddatetime, a reviewuserid
Jestliže je lot rovno
skip
nebotest
, výsledek je ignorován.Dále z tabulky TB_AOIDefect spojené s TB_AOIDefectDetail přes ComponentGUID vyčteme jednotlivé výsledky pro desku. Bereme pouze výsledky, které nejsou dobré.
Pokud je výsledek rozhodnut, zapíšeme jej pod operací AOI z postupu.
Pokud ještě výsledek není rozhodnut, zapíšeme jej jako operaci aoi_unresolved, a zároveň jej vložíme do fronty k pozdějšímu zpracování.
Frontu ke zpracování zpracováváme přibližně každé 3 minuty.
Nejprve znovu načteme výsledek z databáze.
Zjistíme, zda je rozhodnut.
Pokud ano, zapíšeme v rámci postupu a smažeme z fronty k pozdějšímu zpracování.
Pokud, znovu jej zapíšeme do fronty ke zpracování s aktualizovaným časem posledního pokusu.
Záznamy starší, než několik dní, se už automaticky nezpracovávají.
Zpracování výsledků detailně¶
Předpokládáme režim, kdy celou skupinu označujeme zaráz (tedy označení jednoho detailu v TB_AOIDefectDetail způsobí označení celé skupiny TB_AOIDefect toho detailu).
##FIXME: screenshot
Co se děje v databázi¶
Zajímají nás detaily u TB_AOIDefect ( + TB_AOIDefectDetail).
Pokud je pole ResultBefore GOOD, nebo PASS (11000000, 12000000), je výsledek bez chyby, ignorujeme jej.
Po otestování: Pokud je výsledek chybový, ResultBefore je 13000000, a zůstane tak i po review a opravách.
ResultAfter: Nelze použít. Pokud chyba, tak po otestování je 13000000, jenže pozor, když se udělá review na kterékoliv desce, tak to nastaví ResultAfter = 12000000 na úplně všech!!!
ResultRepair: Po otestování 0, po review nastaveno na 12000000 pokud OK, 13000000, pokud NG, ale pozor. My při review neoznačíme jako GOOD nebo NG, my mačkáme next. Kdybychom zmáčkli GOOD nebo NG, tak by se výsledek uzavřel, a už by nebyl vidět na repair station. Každopádně, vypadá to, že když je tohle nastaveno na 12000000, tak je chyba rozhodnutá jako GOOD, jinak to zůstává 0.
InspType je typ chyby odhadnuté strojem, použijeme.
Failure: 13000000 po celou dobu života záznamu.
Defect (u detailu): Na začátku nastaven na 30000000. Po review nastaven buď na 12000000 pokud je GOOD, nebo zůstane 30000000, nebo může mít konkretizovanou chybu (300000XX), pak ji použijeme místo InspType.
Repair: No, tohle je asi zase nepoužitelé, protože při review nebo opravě se to sice nastavuje na 1, jenže když je víc výsledků pod jedním, tak se na repair nastaví 1 jenom na jeden.
ReDefect: Po otestování je zde 0. Po rozhodnutí je zde: 30000000, ikdyž je třeba ten řádek rozhodnutý jako dobrý. Vypadá to, že tato hodnota se nastavuje na 30000000 průběžně během toho rozhodování. Když je částečně rozhodnuto, tak sem se zapisuje 30000000 jen u rozhodnutých řádků. Když je tady 12000000, tak to bylo opraveno na repair station.
Status: Na začátku 0, potom to vypadá, že při opravě se to nastaví na 1.
Jak tedy na to¶
Dorazil nový výsledek. Jak ho zpracujeme?
Má nějaké řádky v TB_AOIDefect? Pokud ne, tak je rozhodnuto a bez chyb. Zapíšeme přímo AOI.
Pokud má řádky v TB_AOIDefect, tak je projdeme, a v této fázi tam jistě budou nerozhodnuté záznamy. Zapíšeme tedy operaci AOI Nerozhodnuté, a zapíšeme si záznam do fronty k překontrolování.
Procházíme frontu k překontrolování. Zde:
Pokud už mají všechny záznamy redefect !=0, tak je aspoň reviewed. Pokud nemají, tak končíme, a zkontrolujeme to později znovu.
Pro jednotlivé záznamy:
Pokud je defect = 12000000, tak je rozhodnuto (reviewed) jako OK (bez opravy)
Pokud je defect = 300000XX, tak je rozhodnuto jako s chybou, a defect obsahuje typ chyby. Speciální případ je defect = 30000000, což je unknown, ale řekl bych, že je rozhodnuto, jenom neoznačen typ chyby.
Pokud je defect 300000XX a redefect 12000000, tak je opraveno.
Chybový řádek?¶
V tabulce TB_AOIDefect pole ResultBefore říká, jak stroj vyhodnotil výsledek. 11000000 (GOOD) a 12000000 (PASS) znamená, že výsledek není chybový. Takové výsledky přeskočíme.
Pokud je hned po otestování všechno GOOD nebo PASS, nebo nejsou žádné defekty v tabulce, tak bereme výsledek jako rozhodnutý už na testu, a rovnou zapíšeme operaci AOI.
Rozhodnuto?¶
Výsledky v databázi jsou označeny číslem chyby. My se konkrétně díváme na výsledek jednotlivých řádků (v tabulkách TB_AOIDefect pole ResultBefore a ResultAfter). Zdá se, že výsledek 11000000 (GOOD) a 12000000 (PASS) znamená, že výsledek není chybový. Jestliže ResultAfter je 0, tak výsledek ještě nebyl rozhodnut. Jinak může být výsledek GOOD nebo PASS - bereme jej jako dobrý, nebo jiný - bereme jako chybu.
Kus byl rozhodnut, pokud byly rozhodnuty všechny řádky.
Fronta na pozdější zpracování¶
Pokud ještě výsledek nebyl rozhodnut, jsou informace o něm odloženy do pomocné databáze. Data z ní jsou periodicky kontrolována. Při každé kontrole je celý výsledek načten z databáze KohYoungu. TracePRO zkontroluje, jestli už byl zpracován. Pokud ano, uloží se do TracePRO jako výrobní operace z postupu. Pokud ještě ne, je znovu odložen do fronty.
Testovací výsledky¶
Pokud chcete testovat program bez zapsání výsledků do TracePRO, použijte
pro lot jméno skip
nebo test
. Takové výsledky jsou úplně
ignorovány.