Uvolňovací vzorky¶
Uvolňovací vzorky slouží k ověření správné funkce pracoviště před zahájením výroby. Jde o kusy se známými vlastnostmi (záměrně vadné i bezchybné), které se testují na pracovišti. Systém porovnává naměřené výsledky s očekávanými hodnotami. Teprve když všechny vzorky projdou s očekávaným výsledkem, je pracoviště uvolněno pro výrobu.
Použití uvolňovacích vzorků musí vyvolat klient. V základním TracePRO se uvolňovací vzorky nepoužívají, jejich použití je implementováno až na přání klientů v rámci jejich obrazovek pro testovací pracoviště.
Zavedení¶
Uvolňovací vzorky musí být zavedeny ve speciálních výrobních objednávkách,
jejichž jméno začíná RELSAMPLE. Další část jména je libovolná. Navrhujeme
schéma RELSAMPLE-<ARTICLE>-<SADA>, kde:
ARTICLEje kód výrobku, který se uvolňuje.SADAje číslo sady vzorků.
Jedna výrobní objednávka bude vždy obsahovat jednu sadu vzorků. To znamená, že pokud je na uvolnění potřeba jen jeden vzorek, musí být opravdu vytvořena výrobní objednávka pro tento jeden vzorek.
Do postupu výrobní objednávky musí být vložena operace pro zavedení, např. operace č. 10, úkon 100. Použije se pro zavedení kusů do objednávky. (Na čísle operace ani na čísle úkonu nezáleží.)
Použijte obrazovku Práce, v ní akci Zavést položky a normálně
ty kusy načtěte. Pokud se spletete, a omylem zavedete něco, co sem
nepatří, nebo pokud potřebujete nahradit starý vzorek novým, můžete
ten špatný kód vyzmetkovat.
Jestliže potřebujete uvolňovací vzorek pro test, který používá pak bude
posílat výsledky pro jednotlivé PCB odděleně,
tak je potřeba vzorek založit jako multipanel. To lze udělat také přes
obrazovku Zavést položky. Do levé části obrazovky vložíte multipanel
(nebo více multipanelů) ve formátu:
MASTERCODE:PCB1,PCB2,PCB3,PCB4
A dáte Prohlédnout, a potom Zapsat.
Předcházení kolizím¶
To, co jsme zavedli jako uvolňovací vzorek, byl vlastně původně kus v normální objednávce. Takže teď můžeme mít dva kusy se stejným sériovým číslem. To lze, nemělo by to způsobovat problémy, ale přesto doporučujeme tomu původnímu kusu (v původní objednávce) dát jiné sériové číslo (např. příponu -UVZ).
První test¶
Dříve, než začnete definovat očekávané výsledky testů, udělejte jeden test uvolňovacích vzorků. Načtěte na pracovišti libovolnou objednávku na stejný typ/operaci, a prostě vzorky otestujte.
Jak to funguje¶
Má to fungovat tak, že při přihlášení na pracoviště a zadaní výrobní objednávky se vynuluje stav pracoviště - uvolněno. (jen za předpokladu, že pracoviště + typ položky + operace má nastaveno, že se pracoviště uvolňuje).
Pak se očekává, že se na pracovišti otestují vzorky (v libovolném pořadí). Pokud mají všechny vzorky očekávaný výsledek, pracoviště se uvolní. Dokud se to nestane, pracoviště zůstává neuvolněné.
Nastavení uvolňovacích vzorků¶
Najdete jej v Moduly / Uvolňovací vzorky.
Skupiny pracovišť¶
Myšlenka je ta, že sada uvolňovacích vzorků může být přiřazena skupině pracovišť (např. jedna sada pro všechna TRIčka). Ikdyž je sada jen pro jedno pracoviště, musí se pro to pracoviště definovat skupina. No a skupina je prostě skupina pracovišť, nic víc.
Nastavení očekávaných výsledků¶
Pro každý vzorek je potřeba nastavit jakým způsobem se kontroluje, zda vzorek prošel. Klikněte na vzorek. Vyberte typ porovnání výsledků. Může to být jeden z:
Očekává se PASS
NG/Podmnožina - výsledek musí být NG, musí obsahovat všechny zde definované vady, a může i nějaké další.
NG/Přesně - výsledek musí být NG, musí obsahovat všechny zde definované vady, a nesmí mít žádné další.
Jakýkoliv výsledek - můžete použít pokud testujete nové uvolňovací vzorky a chcete dostat data do systému.
Definice vad může probíhat trojím způsobem, všechno je popsané na obrazovce, kde se data definují:
buď to bude přesná hodnota
nebo to bude rozsah od - do
nebo podřetězec (případně libovolná hodnota)
Přiřazení vzorků¶
Sada vzorků (neboli výrobní objednávka RELSAMPLE-...) se přiřadí kombinaci:
skupina pracovišť
testovaný article
operace
Je možné mít přiřazené různé sady (objednávky) pro jednu kombinaci skupina pracovišť + article + operace.
Nastavení¶
Úkon testu uvolňovacího vzorku se nastavuje parameters.ini v sekci [acts].
Bere se hodnota z klíče relsample_test, výchozí hodnota je 100.
API funkce¶
Modul poskytuje čtyři JSON-RPC funkce pro práci s uvolňovacími vzorky.
Příklad použití¶
Typický postup volání API funkcí v klientovi:
# 1. Při výběru objednávky a operace
client.rs_startworkplace(wp_id=wp_id, order_id=order_id, op=op)
# 2. Při načtení barkódu - zjistit, zda jde o uvolňovací vzorek
sample = client.rs_isrelsample(barcode=barcode)
if sample:
# 3a. Je to uvolňovací vzorek - provést test a zapsat výsledek
result = client.rs_result(
proc_order_id=order_id,
proc_op=op,
item_id=sample["id"],
wp_id=wp_id,
workers=workers,
tm0=tm0,
tm1=tm1,
result=test_result,
data=test_data,
)
if result.get("released") == 1:
# Pracoviště uvolněno, oznamte uživateli
pass
else:
# Pracoviště není uvolněno, oznamte uživateli
pass
else:
# 3b. Není to uvolňovací vzorek - ověřit, zda je pracoviště uvolněno
if not client.rs_isreleased(wp_id=wp_id, item_type=item_type, op=op):
# Pracoviště není uvolněno, nelze pokračovat
raise Exception("Pracoviště není uvolněno")
# zapsat výsledek testu k normálnímu kusu
rs_startworkplace¶
Zahájí proces uvolňování pro pracoviště. Tato funkce se volá při přihlášení
na pracoviště a zadání výrobní objednávky. Podle nastavení v modulu
uvolňovacích vzorků určí, zda je pro danou kombinaci pracoviště/výrobek/operace
potřeba uvolnění, a případně vynuluje stav pracoviště. V klientech by se měla volat
v set_production.
Parametry:
wp_id- ID pracovištěorder_id- ID výrobní objednávky, která se bude na pracovišti zpracovávatop- číslo operace
Návratová hodnota: Žádná (None).
Chování:
Pokud pro danou kombinaci pracoviště/výrobek/operace existuje záznam v nastavení uvolňovacích vzorků (
RelSampleMatching), pracoviště se označí jako neuvolněné a čeká se na otestování vzorků.Pokud záznam neexistuje, pracoviště se automaticky označí jako uvolněné (uvolňování není potřeba).
Příklad volání:
client.rs_startworkplace(wp_id=123, order_id=1000, op=20)
rs_isreleased¶
Zjistí, zda je pracoviště uvolněno pro daný typ výrobku a operaci.
Parametry:
wp_id- ID pracovištěitem_type- typ výrobku (article)op- číslo operace
Návratová hodnota: True pokud je pracoviště uvolněno, jinak False.
Příklad volání:
result = client.rs_isreleased(wp_id=123, item_type="ARTICLE-001", op=20)
rs_isrelsample¶
Zjistí, zda barkód patří k uvolňovacímu vzorku (výrobní objednávka začínající
na RELSAMPLE).
Parametry:
barcode- barkód položky
Návratová hodnota: Objekt položky (Item), pokud se jedná o uvolňovací
vzorek, jinak None.
Příklad volání:
sample = client.rs_isrelsample(barcode="SN123456")
if sample:
print("Je to uvolňovací vzorek")
rs_result¶
Zapíše výsledek testu uvolňovacího vzorku. Po zapsání výsledku se automaticky
vyhodnotí, zda jsou splněny podmínky pro uvolnění pracoviště.
Pozor, proc_order_id a proc_op patří objednávce, která se na pracovišti
dělá, ne objednávce, do které patří uvolňovací vzorek.
Parametry:
proc_order_id- ID výrobní objednávky, která se uvolňujeproc_op- číslo operace, která se uvolňujeitem_id- ID položky uvolňovacího vzorkuwp_id- ID pracovištěworkers- seznam pracovníků, kteří provedli testtm0- čas začátku testutm1- čas konce testuresult- výsledek testu (např."PASS","NG")data- data testu (seznam trojic[typ, klíč, hodnota])
Návratová hodnota: Slovník s výsledkem operace:
__error__- kód chyby (prázdný řetězec při úspěchu):""- operace proběhla úspěšně"info-bad-result"- špatný výsledek uvolňovacího vzorku"missing-operation"- chybějící operace v postupu"bad-workers"- neplatní pracovníci
relsample- příznak, že se jedná o uvolňovací vzorek (hodnota1)released- příznak uvolnění pracoviště (1= uvolněno,0= neuvolněno)info- textový popis výsledkudata- při chybě obsahuje dodatečné informace (např. chybějící operace)
Příklad volání:
result = client.rs_result(
proc_order_id=1000,
proc_op=20,
item_id=5000,
wp_id=123,
workers=["OP001", "OP002"],
tm0="2024-01-15 08:00:00",
tm1="2024-01-15 08:05:00",
result="PASS",
data=[
[1, "voltage", "12.05"],
[1, "current", "0.5"],
]
)
if result.get("released") == 1:
print("Pracoviště uvolněno!")
elif result.get("__error__"):
print(f"Chyba: {result.get('info')}")