Navigation:  Program główny (Klient) > Raporty i zestawienia >

Dane dla raportów

Previous pageReturn to chapter overviewNext page

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.

 

sql1

 

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.