Często pojawiają się pytania o pewne przekłamania w raportach generowanych w systemie Golem. Na przykład jak to jest że robię raport dla 30 minut a suma czasów
wynosi 60 minut !!!???
Aby to wyjaśnić omówimy sposób tworzenia raportów przez system Golem OEE.
Są dwa źródła danych dla raportów - baza podręczna stacji i baza danych SQL. Część raportów robiona jest na podstawie danych pobieranych bezpośrednio ze stacji -
to te dane i te raporty które pokazują to co się dzieje TERAZ.
Większość raportów tworzona jest jednak na podstawie danych z bazy SQL i powinniśmy znać sposób ich zapisu aby móc właściwie interpretować pewne niuanse w raportach.
Zapis przyrostów
Aby określić czas trwania jakiegoś wydarzenia mamy do dyspozycji dwie metody – zapisać kiedy owe zdarzenie miało swój początek i kiedy miało swój koniec a potem policzyć
czas od początku do końca.
Metoda taka ma jednak jeden feler – jeśli z jakiegokolwiek powodu nie nastąpi zapis informacji o końcu zdarzenia to możemy w konsekwencji uzyskać abstrakcyjne wyniki.
Powiedzmy że o 16:35, 1 marca zmieniono status na pracę a o 17:00 na awarię. Odejmujemy więc od jednej daty drugą i mamy 25 minut pracy.
Ale jeśli z jakiegoś powodu nie zapiszemy tego drugiego znacznika czasu to nastąpi bardzo poważny błąd bo się okaże że mamy początek ale nie mamy końca i dane się „rozjadą”.
Inną metodą jest cykliczne zapisywanie przyrostów liczników – co jakiś czas zapisujemy o ile się one zmieniły a jeśli chcemy poznać wartość dla jakiegoś zakresu czasu
to sumujemy wszystkie zapisane w tym czasie przyrosty. Jeżeli przy takiej metodzie nastąpi błąd i nie będzie jakiegoś zapisu to dane i owszem – błędne będą,
ale nie będzie to błąd który spowoduje tzw. utratę integralności - np. suma zapisanych w czasie doby czasów będzie miała 23 a nie 24 godziny ale nie będzie to godzin 500 albo 0.
Każdy z liczników w systemie (liczniki czasów pracy, czasów statusów, liczniki produktu, braków energii etc.) ma swoją kopię – tzw. liczniki delta.
Kiedy zwiększany jest jakiś licznik zwiększany też jest jego licznik delta. Liczniki te są co godzinę zapisywane do bazy i kasowane.
Inaczej mówiąc program co godzinę zapisuje ile w ciągu tej godziny było produktu, czasu pracy, czasu postoju , czasu awarii, braków itd.
Zapis ten następuje zawsze pod koniec pełnej godziny oraz w dwu przypadkach o których za niżej.
Kiedy robimy raport dla wybranego zakresu czasu program sumuje wszystkie zapisy które zostały poczynione w wybranym czasie.
Pamiętajmy jednak o tym że są to zapisy cogodzinne. Jeżeli ustawimy filtr czasu od godziny 6:00 do 13:59 to dostaniemy sumę wszystkich przyrostów zmiany bo (patrz rysunek )
filtr ten „złapie’ wszystkie zapisy w danym zakresie.
Jeśli jednak ustawimy filtr na zakres od 9:00 do 9:30 to wynik będzie zero!!!! Dlaczego ? Bo pomiędzy 9 a 9:30 nie było żadnego zapisu !
Jeśli ustawimy filtr na zakres od 9:30 do 10:00 to odczytamy że efektywny czas pracy wynosił 60 minut ! Jak to – 60 minut w ciągu pół godziny ?
Ano tak. Bo został odczytany rekord stworzony o godzinie 9:59 który dotyczy CAŁEJ godziny.
Może się jednak okazać że drugi podany przykład jest nieprawdziwy, że dane nie będą zerowe. A to dla tego że system zapisuje dane nie tylko pod koniec pełnej godziny.
Zapis przy zmianie zlecenia i pracownika
Każdy zapis liczników przyrostów opatrywany jest kodem zlecenia i kodem operatora, o ile oczywiście skonfigurowano maszyny z ich użyciem.
Poza zapisem pod koniec każdej godziny system zapisuje liczniki przyrostów przy każdej zmianie zlecenia i / lub operatora.
Wyżej pokazałem jak system generuje raport dla wybranego zakresu czasu – raport dla zlecenia robiony jest w ten sposób że system sumuje wszystkie zapisy które
opatrzone są numerem ID zlecenia. Raport dla operatora robiony jest w taki sam sposób jak w przykładzie wyżej, czyli sumowane są zapisy z wybranego zakresu czasu,
z tym że tylko te które są opatrzone numerem ID operatora dla którego raport jest robiony.
Dlaczego właśnie tak?
Zapyta czytelnik – dlaczego właśnie tak? Dlaczego zapis jest robiony co godzinę a nie co minutę? Przecież gdyby był robiony co minutę to dla dowolnego zakresu czasu
dostalibyśmy poprawny wynik i moglibyśmy zawęzić badany czas do np. 15 minut.
Powiedzmy że mamy 30 maszyn. Co godzinę zapisujemy więc 30 rekordów z przyrostami liczników, czyli 720 na dobę, czyli ponad 17 tysięcy miesięcznie.
To dla bazy SQL żadna ilość. Za serwer może nam służyć dowolny komputer z dowolnym systemem a agregacja danych (ich podliczenie) jest prawie natychmiastowa.
Gdyby jednak zapis następował co minutę to byłby to milion zapisów miesięcznie a dyski serwera pracowały by non-stop pochłaniając przeogromne ilości danych.
Wymagało by to zastosowanie silnego serwera z szybkimi dyskami i szybkich sieci.
Naszym celem nie było jednak stworzenie kolejnego, koszmarnie drogiego systemu – być może dla Ciebie szanowny użytkowniku zakup serwera z odpowiednim oprogramowaniem
dla Golema za kilkanaście tysięcy nie stanowi żadnego problemu ale dla innego klienta i owszem, tym bardziej że wartość dodana była by niewielka – na palcach jednej ręki
można by wyliczyć zastosowanie dla tak dokładnego zapisu.