OEE - Předpočítaná data¶
Některé přehledy v TracePRO jsou náročnější na výpočet a jejich data jsou proto předpočítávána dávkovými skripty do speciálních tabulek. Tyto tabulky slouží jako zdroj dat pro samotné sestavy a jsou určeny i pro přímý přístup z externích nástrojů (BI nástroje, Excel, vlastní skripty apod.).
Tabulky jsou přepočítávány periodicky – při každém spuštění skriptu se data v daném časovém okně smažou a přepočítají znovu. Data v tabulkách tedy nejsou živá, ale odpovídají stavu v době posledního výpočtu.
Poznámka
Sloupec id je ve všech tabulkách automaticky generované celé číslo
(auto-increment primární klíč). Nemá věcný význam, slouží pouze jako
interní identifikátor řádku. Při každém přepočtu se hodnoty id mění.
Tabulka rep_oee_data¶
Předpočítaná data pro OEE přehledy. Tabulku plní dva různé skripty, každý
zapisuje jiný typ záznamu (sloupec tp):
python -m tracecar.scripts.calc_oee_lsline production.ini– zapisuje záznamy typulslineagap(data z LS linek).python -m tracecar.scripts.calc_oee_report production.ini– zapisuje záznamy typurepwork(data z repwork pracovišť).
Oba skripty při přepočtu smažou existující záznamy svého typu pro daná pracoviště a časové období a vloží nové. Záznamy různých typů si vzájemně nepřekáží.
Indexy:
(wp_id, period_tm0)– pro dotazy na konkrétní pracoviště a časové období(order_id, op)– pro dotazy na konkrétní objednávku a operaci
Sloupce¶
Sloupec |
Typ |
Popis |
|---|---|---|
|
INT |
Primární klíč, bez věcného významu. |
|
VARCHAR(10) |
Typ záznamu:
|
|
INT |
ID pracoviště ( |
|
INT |
ID výrobní objednávky ( |
|
INT |
Číslo operace. NULL u záznamu typu |
|
INT |
ID pracovní skupiny ( |
|
DATETIME |
Začátek časového období, do kterého řádek patří (směna, den, týden). |
|
DATETIME |
Konec časového období. |
|
DOUBLE |
Skutečná doba přípravy (sekundy) připadající na toto období. |
|
DOUBLE |
Normovaná doba přípravy (sekundy) přiřazená tomuto období. |
|
DOUBLE |
Celková doba přípravy (sekundy) přes všechna období tohoto záznamu. |
|
DOUBLE |
Skutečná doba výroby ve stavu ST_RUN (sekundy). |
|
DOUBLE |
Normovaná doba výroby = STD_1PC * počet vyrobených kusů (sekundy). |
|
DOUBLE |
Pracovní čas = |
|
DOUBLE |
Potvrzený čas prostoje (sekundy). U záznamu |
|
DOUBLE |
Čas přestávek připadající na toto období (sekundy). |
|
DATETIME |
Okamžik zahájení přípravy v tomto období. NULL pokud příprava nezasahuje. |
|
DATETIME |
Okamžik zahájení výroby v tomto období. U záznamu |
|
DATETIME |
Konec záznamu v tomto období. U záznamu |
|
INT |
Počet dobrých kusů vyrobených v tomto období. |
|
INT |
Počet kusů NG v tomto období. |
Výpočet OEE ukazatelů z tabulky¶
Přehledy zobrazují hodnoty Dostupnost (Availability), Výkon (Performance), Kvalita (Quality) a OEE, které nejsou v tabulce uloženy – vypočítávají se za běhu ze sloupců výše. Vzorce se liší podle typu záznamu.
Záznamy typu lsline (a jejich součty):
Agregujte řádky podle (wp_id, period_tm0) (nebo libovolné hrubší granularity).
Pro každý agregát platí:
avail_base = SUM(work_tm) - SUM(stop_tm) - SUM(break_tm)
Dostupnost = avail_base / (SUM(work_tm) + SUM(prep_tm))
Výkon = (SUM(run_std_tm) + SUM(prep_std_tm)) / avail_base
Kvalita = (SUM(produced_pcs) - SUM(ng_pcs)) / SUM(produced_pcs)
OEE = MIN(1, Dostupnost * Výkon * Kvalita)
Pokud je jmenovatel nulový, příslušný ukazatel je 0 (resp. NULL).
work_tm u záznamu gap je roven stop_tm, takže mezery se správně
promítají do Dostupnosti při součtu.
Záznamy typu repwork:
Sloupce mají jiné sémantické obsazení. Pro jeden řádek (nebo agregát):
-- work_tm zde = end_start = celková délka záznamu (end_tm - run_start)
-- stop_tm = čas prostojů uvnitř záznamu
-- break_tm = čas přestávek uvnitř záznamu
-- run_std_tm = STD_1PC * produced_pcs (normovaný čas výroby)
avail_base = SUM(work_tm) - SUM(stop_tm) - SUM(break_tm)
Dostupnost = avail_base / SUM(work_tm)
Výkon = SUM(run_std_tm) / avail_base
Kvalita = (SUM(produced_pcs) - SUM(ng_pcs)) / SUM(produced_pcs)
OEE = MIN(1, Dostupnost * Výkon * Kvalita)
Hlavní rozdíl oproti lsline: prep_tm a prep_std_tm nejsou u
repwork záznamů plněny (jsou NULL), jmenovatel Dostupnosti je tedy jen
SUM(work_tm), nikoli SUM(work_tm) + SUM(prep_tm).
Rozdíl je vlastně jen v tom, že data typu lsline mají časy přípravy.
Jinak by výpočet měl být stejný.
Tabulka rep_downtime_data¶
Předpočítaná data pro přehled prostojů. Jeden řádek = jeden prostoj na jednom pracovišti jako celistvý časový interval (není rozdělen na směny). Přehled prostojů pak při zobrazení tyto intervaly ořezává na hranice směn/dnů/týdnů sám.
Skript pro přepočet: python -m tracecar.scripts.calc_downtime_data production.ini
Skript přepočítává posledních 7 dní (lze změnit parametrem --days). Záznamy
s is_ongoing = 1 (stroj byl stále v prostoji v okamžiku výpočtu) se při každém
přepočtu smažou a přepočítají, i když nespadají do časového okna.
Index:
(wp_id, start)– pro dotazy na prostoje konkrétního pracoviště v časovém rozsahu
Sloupce¶
Sloupec |
Typ |
Popis |
|---|---|---|
|
INT |
Primární klíč, bez věcného významu. |
|
INT |
ID pracoviště ( |
|
DATETIME |
Začátek prostoje. |
|
DATETIME |
Konec prostoje. NULL pokud prostoj stále probíhal v okamžiku výpočtu
(viz |
|
INT |
ID výrobní objednávky ( |
|
INT |
Číslo operace aktivní v době prostoje. NULL pokud nebyla zahájena žádná operace. |
|
INT |
ID pracovníka ( |
|
VARCHAR(100) |
Kód důvodu prostoje (interní klíč z číselníku prostojů). NULL nebo prázdný řetězec znamená „jiný důvod“. |
|
VARCHAR(255) |
Volný text zadaný obsluhou při hlášení prostoje. |
|
TINYINT(1) |
|
|
TINYINT(1) |
|
|
DATETIME |
Okamžik, kdy byl řádek vypočítán (čas spuštění skriptu). |