Procesy przetwarzania danych

Nie musisz znać języków programowania, by samodzielnie tworzyć procesy przetwarzania i wydobywać z danych to, co dla Ciebie i Twojego zakładu produkcyjnego najważniejsze. Pomoże Ci w tym kreator ETL (ang. Extraction, Transformation and Load), w którym za pomocą elementów (tzw. węzłów przetwarzania) działających na zasadzie „przeciągnij i upuść” (drag&drop) stworzysz samodzielnie (lub ze wsparciem naszych ekspertów) własny proces. Możesz również skorzystać z gotowych szablonów wbudowanych w system IPLAS. 

Po uruchomieniu procesu z napływających strumieni danych przemysłowych otrzymasz to, co dla Ciebie najważniejsze – wiedzę, która pozwoli Ci usprawnić produkcję w Twoim zakładzie. To tutaj utworzysz indywidualny system alarmów i powiadomień, zweryfikujesz i zagregujesz dane. A co, jeśli w pewnym momencie stwierdzisz, że w ramach jednego procesu chciałbyś analizować coś innego? Nie ma problemu! Możesz go elastycznie modyfikować. Zobacz, jak to działa.

Przykład budowy procesu ETL

Zobacz, jak zbudowaliśmy prosty proces ETL, który generuje, a następnie zapisuje do bazy danych sumy wyprodukowanych sztuk w ramach zmiany dla konkretnej maszyny. 

Kilka słów wyjaśnienia do powyższego materiału wideo:

  • Dane wejściowe
  • Wykorzystane węzły i ich zastosowanie
  • Efekt

Zmienna określająca liczbę sztuk wyprodukowanych w pewnych okresach.

Węzeł 1. Kanał wejściowy, określa się w nim dane wejściowe oraz ich źródło, przekazuje zmienne na podstawie których tworzona jest pozostała część procesu przetwarzania.

Węzeł 2. Stempel czasowy, użytkownik określa dodatkowe zmienne tworzone na podstawie czasu wygenerowania ramek. Węzeł dodaje do procesu przetwarzania zmienne dotyczące czasu.

Węzeł 3. Zmiany pracy, ustala się w nim godziny pracy poszczególnych zmian oraz wybiera zmienne wynikowe, które ich dotyczą. Generuje nowe zmienne pozwalające określić dane dotyczące zmian.

Węzeł 4. Grupowanie, wybiera się w nim typ agregacji oraz zmienne grupujące dzielące dane na pewne grupy np. sumę wartości zmiennych dla podanych numerów zmian pracy.

Węzeł 5. Tabela wynikowa, tutaj określa się bazę danych, miejsce docelowe oraz przypisuje zmienne do konkretnych kolumn. Na podstawie danych zapisanych w bazie generowane są analizy.

Efektem są przetworzone, znajdujące się w bazie danych wartości, potrzebne do utworzenia analizy. Dane przedstawiają sumę wyprodukowanych sztuk dla poszczególnych zmian.

Dane wygenerowane przez proces ETL można zaprezentować na analizie, co zostało pokazane na filmie .

Dokumentacja

W graficznym kreatorze ETL wybierasz, a następnie przeciągasz do obszaru roboczego elementy, z których tworzysz własny proces przetwarzania danych.  Te wszystkie „bloczki”, „kwadraciki” czy jakkolwiek inaczej je określisz, to tzw. węzły przetwarzania. Można je podzielić na 4 kategorie ze względu na działanie: węzły wejściowe, filtry, transformacje i węzły wynikowe. Poniżej znajdziesz opis, dostępne opcje oraz przykład zastosowania każdego z nich. Jeśli coś jest dla Ciebie nadal niejasne, nie wahaj się do nas napisać: iplas@spiid.pl.

  • Węzły wejściowe
  • Filtry
  • Transformacje
  • Węzły wynikowe

Węzły wejściowe (Kanał wejściowy), odpowiadają za wprowadzenie zmiennych wejściowych do procesu przetwarzania.

OPIS:

Węzeł „Kanał wejściowy” służy do wprowadzenia ramek ze zmiennymi do procesu przetwarzania. Pozwala na wybór instalacji, kanału oraz wybranie konkretnych zmiennych. Węzeł jest wymagany w każdym przetwarzaniu.

PRZYKŁAD ZASTOSOWANIA:

W celu poprawnej konfiguracji węzła „Kanał wejściowy” w pierwszym kroku należy wybrać instalację, w tym przypadku „Linie_Produkcyjne” oraz kanał np. „Linia_nr_1”. Następnie wymagane jest zaznaczenie zmiennych potrzebnych użytkownikowi w dalszym procesie przetwarzania, tutaj – Sztuki  i Kod_produktu. Po zapisaniu konfiguracji do kolejnego węzła będą przesyłane ramki ze zmiennymi Sztuki oraz Kod_produktu.

OPCJE:

NazwaOpis
InstalacjaLogiczne odwzorowanie lokalizacji w której ustanawiane są połączenia między źródłem danych (np. sterownikiem PLC).
KanałPołączenie pomiędzy źródłem danych, a instalacją na serwerze IPLAS, za pomocą którego przesyłane są dane.
RamkiNiewymienione w węźle. Dane przesyłane są do przetwarzania za pomocą ramek zawierających zmienne z konkretnymi wartościami.
ZmienneElementy przetwarzania, przechowujące konkretne wartości.Części składowe ramek.

Filtry (Ostatnie ramki, Wartości wymagane), pozwalają na utrzymanie tylko bieżących danych, optymalizują przetwarzanie.

OPIS:

Filtr „Wymagane” pozwala na określenie zmiennych, które warunkują przepuszczenie danych do kolejnych węzłów.

Każda ramka danych, dla której w wyszczególnionych kolumnach wymaganych będzie brakowało wartości  (w dowolnej wyszczególnionej zmiennej), zostanie odrzucona przez filtr. Oznacza to, że cała ramka nie zostanie przekazana do kolejnych węzłów.

W konfiguracji węzła istnieje możliwość odwrócenia opisanej operacji. W takim przypadku ramki, w których dla zmiennych wymaganych nie zostały określone wartości, zostaną przekazane do następnych węzłów przetwarzania.

PRZYKŁAD ZASTOSOWANIA:

Jeżeli w filtrze ustawimy wymagane zmienne A i B, to każda ramka, która nie będzie posiadała określonej wartości A lub B zostanie odrzucona przez filtr. Wartość lub jej brak w zmiennej C nie będzie mieć wpływu na działanie filtra.

Włączenie trybu odwrotnego spowoduje, że każda ramka, nie posiadająca określonej wartości A i B zostanie przekazana do kolejnego węzła. W przeciwnym razie, nie zostanie przekazana dalej. Wartość lub jej brak w zmiennej C nie będzie miała wpływu na działanie filtra.

OPCJE:

NazwaOpis
Zmienne wejścioweJeśli zaznaczymy zmienną, która będzie przesyłała dane, filtr pozwoli przepuścić wszystkie pozostałe zmienne do dalszego bloku. W innym przypadku nie przepuści żadnej wartości.
Włączony tryb odwrotnyCheckbox służący do odwrócenia sytuacji – blok będzie przesyłał zmienne dalej, tylko w wypadku, w którym zaznaczona zmienna nie posiada wartości.

OPIS:

Filtr „Stare Ramki” pozwala na odfiltrowanie ramek, na podstawie limitu czasu życia ramki podanego przez użytkownika w konfiguracji węzła. Jeśli różnica czasu między aktualnym czasem zegarowym, a stemplem czasowym przetwarzanej ramki jest większa niż limit czasu życia ramki podany w węźle, ramka zostanie odrzucona.

Istotą działania filtra „stare ramki” jest przekazanie tylko bieżących ramek. Filtr znajduje zastosowanie wszędzie tam, gdzie konieczne jest zwizualizowanie aktualnych danych. Przykładem wykorzystania może być miernik, na którym widoczna jest temperatura pieca w danej chwili. Wówczas dane sprzed dziesięciu minut nie są istotne, do zobrazowania analizy tego odczytu.

PRZYKŁAD ZASTOSOWANIA:

Stare ramki ze zmiennymi A, B i C zostaną przekazane do kolejnych węzłów przetwarzania tylko wtedy, gdy nie będą starsze od czasu bieżącego o więcej niż minutę.

OPCJE:

NazwaOpis
Zmienne wejścioweDo kolejnego węzła przetwarzania zostaną przekazane tylko te ramki, dla których różnica między nimi, a czasem bieżącym jest mniejsza niż „limit czasu życia ramki”.
Limit czasu życia ramkiPole tekstowe określające maksymalną różnicę czasu między bieżącą a poprzednią ramką w określonej jednostce czasu.
Określenie jednostki czasuMilisekunda, sekunda, minuta, godzina, dzień

OPIS:

Filtr „Ostatnie Ramki” pozwala na odfiltrowanie ramek w ilości jaka została podana w konfiguracji węzła. Z pakietu ramek, które trafiają do węzła, użytkownik definiuje ilość najświeższych ramek jaka ma zostać przekazana do kolejnych węzłów przetwarzania.

Filtr posiada również opcję aktywacji lub dezaktywacji – checkbox „Filtr aktywny”.

Filtr służy do optymalizacji przetwarzania. Pozwala na ograniczenie ilości danych, na jakich operujemy w procesie przetwarzania, w celu zwiększenia jego wydajności.

PRZYKŁAD ZASTOSOWANIA:

Do kolejnego węzła przekazane zostanie tylko ostatnie 15 ramek ze zmienną A. W przypadku gdy odznaczymy checkbox „Filtr aktywny”, filtr zostanie zdezaktywowany i przekaże wszystkie ramki dalej. Filtr znajduje zastosowanie w przetwarzaniach używanych do zasilenia analiz przedstawiających bieżącą sytuację np. miernik przedstawiający aktualną temperaturę.

OPCJE:

NazwaOpis
Ostatnie ramkiLiczba ramek przekazywanych do kolejnego węzła przetwarzania
Filtr aktywnyAktywuje lub dezaktywuje filtr
Zmienne wejścioweZmienne, których ramki zostaną przekazane do kolejnego węzła

Transformacje (Grupowanie, Wyznaczanie przyrostów), przetwarzają dane, generują nowe zmienne na podstawie zmiennych wejściowych.

OPIS:

Węzeł „Generator HeartBeat” służy do podtrzymywania informacji o działaniu przetwarzania. W przypadku, w którym ramki z danymi pojawiają się rzadko, węzeł generuje ramki nie zawierające wartości zmiennych. W konfiguracji należy określić opóźnienie – odstęp czasu między czasem obecnym, a momentem wygenerowania ramki, interwał – odstęp czasu pomiędzy generowanymi ramkami, jednostkę w ramach której zdefiniowano opóźnienie, oraz interwał. Dodatkowo można zaznaczyć opcję „Opóźnienie adaptacyjne”, które pozwoli na automatyczne dostosowanie wielkości opóźnienia na podstawie danych o częstotliwości pojawiania się kolejnych ramek z danymi, opóźnienie nigdy nie będzie mniejsze niż to podane przez użytkownika.

„Failmode” – w przypadku, w którym ramki zawierające dane przyszłyby z opóźnieniem większym niż przewidziane opóźnienie generowanych „heartbeatów” (pustych ramek), nastąpi zatrzymanie się przetwarzania. Przy wyłączonej opcji, przetwarzanie będzie działało dalej, ale czasy wygenerowania się ramek zostaną sztucznie zamienione w celu zachowania chronologii odczytów.

PRZYKŁAD ZASTOSOWANIA:

Na przedstawionym przykładzie zdefiniowano Opóźnienie o wartości 5, interwał równy 1, oraz jednostkę minuta. Oznacza to, że gdy w ciągu ostatnich pięciu minut nie pojawi się żadna ramka, węzeł wygeneruje pustą ramkę o czasie wygenerowania opóźnionym o pięć minut w stosunku do czasu bieżącego. Będzie to robił co minutę, o ile do przetwarzania nie zostanie dostarczona ramka z danymi. Wówczas cykl rozpocznie się od początku.

Zaznaczona opcja „Opóźnienie adaptacyjne” wpłynie na czas wygenerowania ramek bez wartości. Według przykładu, puste ramki zaczną pojawiać się najwcześniej po 5 minutach od pojawienia się ostatniej ramki zawierającej wartość. Funkcja sprawi, że w przypadku większego opóźnienia w dostarczeniu danych czas oczekiwania na spóźnione ramki wydłuży się, następnie, gdy zaczną one przychodzić w krótszym czasie, opóźnienie adaptacyjne będzie się stopniowo skracać do zdefiniowanej wyżej przez użytkownika wartości opóźnienia.

Zaznaczona opcja „failmode” sprawi, że w przypadku, gdy nastąpi problem z ustaleniem chronologii ramek z danymi oraz pustych ramek przetwarzanie zatrzyma się. Taka sytuacja może zaistnieć, gdy z jakiegoś powodu ramki z danymi zostaną dostarczone z opóźnieniem większym, niż przewidziany czas opóźnienia generowania pustych ramek.

OPCJE:

NazwaOpis
OpóźnienieLiczba całkowita, czas w jakim mają być generowane puste ramki w stosunku do czasu bieżącego, jednostkę czasu wybiera się w sekcji jednostka.
Opóźnienie adaptacyjneFunkcjonalność pozwalająca na automatyczne wydłużanie lub skracanie opóźnienia w stosunku do czasu bieżącego, zależnie od opóźnienia z jakim dostarczane są ramki. Opóźnienie to nigdy nie będzie mniejsze od opóźnienia zdefiniowanego przez użytkownika.
InterwałOdstęp czasu pomiędzy generowanymi ramkami, jednostkę czasu wybiera się w sekcji jednostka.
FailmodePowoduje zatrzymanie przetwarzania, w przypadku wystąpienia problemu z ustaleniem chronologii ramek.
JednostkaJednostka czasu w ramach której zostały podane interwał oraz opóźnienie. Dostępne jednostki to: milisekunda, sekunda, minuta, godzina, dzień.

OPIS:

Węzeł „Grupowanie” pozwala na wyznaczenie nowych zmiennych na podstawie zmiennych wejściowych, w pewnych określonych przez użytkownika grupach, na przykład dni/miesięcy/linii produkcyjnej. Do poprawnej konfiguracji węzła potrzebne są przynajmniej dwie zmienne – agregowana oraz grupująca. 

PRZYKŁAD ZASTOSOWANIA:

Według podanego przykładu, do kolejnego węzła zostaną przekazane 4 zmienne. Zmienne AVG, COUNT, MAX oraz godz. Zmienne AVG, COUNT, MAX będą wyliczane dla konkretnych wartości zmiennej godz. Oznacza to, że wartości zmiennych będą zmieniały się w ramach każdej z godzin (skutkuje to osobną średnią/sumą/innym rodzajem agregacji dla każdej godziny).

OPCJE:

NazwaOpis
Zmienne wejścioweWęzeł potrzebuje przynajmniej dwóch zmiennych wejściowych – do agregacji oraz do grupowania. Na ich podstawie użytkownik otrzyma zmienne wynikowe z wartością zależną od funkcji agregującej.
AgregacjaUżytkownik wybiera zmienną wejściową, a następnie funkcję agregującą oraz nazwę wynikową zmiennej, która ma powstać na podstawie zmiennej wejściowej.
ŚredniaZlicza średnią ze zmiennych przychodzących w pakiecie ramek, zmienna wynikowa to zawsze liczba zmiennoprzecinkowa. Funkcja dostępna w przypadku, gdy typem danych zmiennej jest liczba całkowita lub liczba zmiennoprzecinkowa.
ZliczZlicza ilość przychodzących ramek w pakiecie. Zmienna wynikowa to zawsze liczba całkowita. Dostępna dla każdego typu danych.
Pierwsza wartośćRamka wychodząca, zawiera pierwszą wartość zmiennej jaka została otrzymana w pakiecie ramek. Zmienna wynikowa będzie o tym samym typie danych co zmienna wejściowa.
Ostatnia wartośćRamka wychodząca, zawiera ostatnią wartość zmiennej jaka została otrzymana w pakiecie ramek. Zmienna wynikowa będzie o tym samym typie danych co zmienna wejściowa.
Maksymalna wartośćRamka wychodząca zawiera największą wartość zmiennej w dostarczonym pakiecie ramek. W przypadku tekstu największą wartością jest pierwsza wartość w kolejności alfabetycznej. Funkcja niedostępna dla zmiennych wejściowych o typach danych wartość logiczna oraz tablica.
Minimalna wartośćRamka wychodząca zawiera najmniejszą wartość zmiennej w dostarczonym pakiecie ramek. W przypadku tekstu wartością najmniejszą jest ostatnia wartość w kolejności alfabetycznej. Funkcja niedostępna dla zmiennych wejściowych o typach danych wartość logiczna oraz tablica.
SumaDodaje wartości zmiennych przychodzących w pakiecie ramek. Zmienna będzie o tym samym typie danych co zmienna wejściowa. Funkcja jest dostępna dla zmiennych o typach danych liczba całkowita oraz liczba zmiennoprzecinkowa.
Najczęściej występująceNajczęściej występujące wartości zmiennej w przychodzącym pakiecie ramek. Dostępne dla wszystkich typów danych.
GrupowanieZmienne na podstawie których zostanie przeprowadzone grupowanie. Nie mogą to być zmienne użyte do agregacji.

OPIS:

Węzeł „Kalkulator” pozwala na przeprowadzanie obliczeń, przetwarzanie informacji czy tworzenie nowych zmiennych, przez co znajduje wiele zastosowań.

PRZYKŁAD ZASTOSOWANIA:

tabela zmienne wejściowe pozwala zobaczyć wszystkie przychodzące w ramkach zmienne, oraz ich typy danych.

DOSTĘPNE FUNKCJE KALKULATORA:

Dostępne funkcje kalkulatora to tabela zawierająca gotowe do użycia w “Polu definiowania formuł” funkcje, które po wybraniu można umieścić w miejscu kursora za pomocą przycisku “wstaw” bez potrzeby kopiowania.

Funkcje matematyczne:

  • math:round(value,scale) – zaokrągla liczbę o podaną ilość miejsc po przecinku,
  • math:power(value,exponent) – potęguje liczbę o podaną wartość wykładnika potęgi.

Konwersje typu zmiennych:

  • string:toString(input) – konwertuje podaną wartość liczbową na wartość tekstową,
  • array:toString(array,separator) – konwertuje tablicę na tekst,
  • array:toJSON(array) – konwertuje tablicę do JSON,
  • array:toArray(string) – konwertuje zmienną tekstową do tablicy stringów używając domyślnych separatorów “,;”,
  • array:toArray(string,string) – konwertuje zmienną tekstową do tablicy stringów używając podanych separatorów,
  • array:toArray(string,separators,trimTokens,string) – konwertuje zmienną tekstową do tablicy stringów używając podanych separatorów,
  • date:parseDate(dateString,pattern) – zwraca datę utworzonej z zmiennej tekstowej według podanego formatu daty,
  • date:parseTimestamp(timestampString,pattern) – zwraca znacznik czasu utworzony z zmiennej tekstowej według podanego formatu.

Operacje na zmiennych czasu:

  • date:addDaysToDate(date,numberOfDays) – dodaje liczbę dni do podanej daty,
  • date:addDaysToTimestamp(timestamp,numberOfDays) – dodaje liczbę dni do podanego znacznika czasu,
  • date:addHoursToTimestamp(timestamp,numberOfHours) – dodaje liczbę godzin do podanego znacznika czasu,
  • date:addMinutesToTimestamp(timestamp,numberOfMinutes) – dodaje liczbę minut do podanego znacznika czasu,
  • date:addSecondsToTimestamp(timestamp,numberOfSeconds) – dodaje liczbę sekund do podanego znacznika czasu,
  • date:getYear(timestamp) – zwraca rok z podanego znacznika czasu,
  • date:getMonth(timestamp) – zwraca miesiąc z podanego znacznika czasu,
  • date:getWeek(timestamp) – zwraca numer tygodnia z podanego znacznika czasu,
  • date:getDay(timestamp) – zwraca dzień z podanego znacznika czasu,
  • date:getHour(timestamp) – zwraca godzinę z podanego znacznika czasu,
  • date:getMinute(timestamp) – zwraca minuty z podanego znacznika czasu,
  • date:getSecond(timestamp) – zwraca sekundy z podanego znacznika czasu,
  • date:getYear(date) – zwraca rok z podanej daty,
  • date:getMonth(date) – zwraca miesiąc z podanej daty,
  • date:getWeek(date) – zwraca numer tygodnia z podanej daty,
  • date:getDay(date) – zwraca dzień z podanej daty,
  • date:truncateToDate(timestamp) – przycina znacznik czasu do formatu daty,
  • date:toDate(timestamp) – konwertuje znacznik czasu do daty,
  • date:diffTS(ts1,ts2) – oblicza różnicę czasu w milisekundach pomiędzy podanymi znacznikami czasu,
  • date:diffTSWithWeeklyBreaks(ts1,ts2,exclusionArray) – oblicza różnicę czasu w milisekundach pomiędzy podanymi znacznikami czasu nie obejmując cotygodniowych przerw.

Funkcje Konwersji zmiennych czasu:

  • date:formatDate(date) – konwertuje datę do tekstu używając formatu “yyyy-MM-dd”,
  • date:formatDate(date,format) – konwertuje datę do tekstu używając podanego formatu,
  • date:formatTime(timestamp) – konwertuje znacznik czasu do tekstu używając formatu “HH:mm:ss”,
  • date:formatTimestamp(timestamp) – konwertuje znacznik czasu do tekstu używając formatu “yyyy-MM-dd HH:mm:ss”,
  • date:formatDate(timestamp,format) – konwertuje znacznik czasu do tekstu używając podanego formatu,

Szacowanie danych:

  • prod:estimateQty(startTime,endTime,actTime,soFar) – szacuje ilość wyprodukowanych sztuk po upływie podanego okresu czasu,
  • prod:estimateEndTime(startTime,actTime,expectedQty,actualQty) – szacuje czas zakończenia produkcji,
  • prod:avgProductionSpeed(startTime,endTime,quantity) – szacuje średnią prędkość produkcji w [sztukach/godzinę].

Funkcje związane z słownikami:

  • dict:checkKey(dicionaryId,key) – sprawdza, czy podany klucz istnieje w słowniku,
  • dict:get(dicionaryId,key) – zwraca nazwę dla podanego klucza,
  • dict:get(dicionaryId,key,defaultValue) – zwraca nazwę dla podanego klucza, lub daną wartością domyślną w przypadku gdy taki klucz w słowniku nie istnieje.

Wstawianie znaków specjalnych:

  • string:cr() – zwraca “\r” (carriage return),
  • string:lf() – zwraca “\n” (line feed),
  • string:eol() – zwraca “\r\n” (end of line).

Kodowanie base64:

  • string:encodeBase64(string) – koduje zmienną tekstową do base64,
  • string:decodeBase64(input) – dekoduje base64 do typu zmiennej tekstowej.

JĘZYK PROGRAMOWANIA:

Język programowania kalkulatora jest podobny do Javy, lecz ma kilka odstępstw:

  • Przy definiowaniu nowej zmiennej nie należy podawać jej typu, kalkulator sam przydziela jej postać.

  • Nie należy stosować znaku końca linii (eol)
  • Dostępne operacje matematyczne: dodawanie (“+”), odejmowanie (“-”), mnożenie(“*”), dzielenie (“/”), a także reszta z dzielenia (“%”). Należy pamiętać, że znak “^” to nie potęgowanie, a znak logiczny xor!

W kalkulatorze można zastosować short if (“ condition ? true : false”), lecz należy pamiętać, aby użyte zmienne były zdefiniowane w poprzednich węzłach i znajdowały się w tabeli “zmienne wejściowe”.

Na powyższym przykładzie widzimy zastosowanie takiego wyrażenia, jeżeli liczbaImpulsow będzie równa 10 to zmiennaTekstowa = “prawda”, jeżeli nie zmiennaTekstowa = “fałsz”

OPCJE:

NazwaOpis
Zmienne wejścioweWęzeł przesyła dalej ramki ze zmiennymi wejściowymi, dokonując na nich zmiany lub dodając zmienne zdefiniowane przez użytkownika (w języku programistycznym podobnym do Java).
Nazwa wynikowaNazwa zmiennej, powstałej w wyniku przetwarzania w węźle. Musi być unikalna w obrębie całego procesu przetwarzania. Inaczej istniejąca już zmienna o tej nazwie zostanie nadpisana.
Przycisk “Pokaż”Rozwija tabelę zawierającą dostępne do użycia funkcje.
Przycisk “Wstaw”Pozwala na umieszczenie funkcji z tabeli na “Pole definiowania formuł” bez kopiowania.
Przycisk “Ukryj”Ukrywa tabelę dostępnych funkcji, aby usprawnić korzystanie z kalkulatora.

OPIS:

Węzeł „Łączenie strumieni danych” do poprawnego działania wymaga podłączenia dwóch węzłów z różnymi zmiennymi wejściowymi. Łączy on ramki na podstawie pierwszego wejścia. Pozwala to na przykład na zapisanie dwóch równolegle działających przetwarzań do jednej tabeli wynikowej. Nazwy zmiennych wejściowych w poszczególnych przetwarzaniach muszą być od siebie różne.

PRZYKŁAD ZASTOSOWANIA:

Na podstawie pierwszego wejścia, węzeł będzie generował ramki zawierające kolumny z drugiego wejścia. Oznacza to, że gdy dostarczona zostanie ramka z drugiego wejścia i nie będzie można dopasować do niej ramki z wejścia pierwszego, ramka ta zostanie pominięta. Jako zmienne wyjściowe przekazywane będą ramki zawierające kolumny z obu wejść.

Na rysunku poniżej przedstawione zostały trzy sytuacje, obrazujące w jaki sposób mogą być generowane ramki z danymi z dwóch wejść.

W pierwszym przypadku ramki z obu wejść przychodzą w podobnych odstępach czasowych, jednak ramki z wejścia drugiego są nieznacznie opóźnienie w stosunku do ramek z wejścia drugiego. W zaistniałej sytuacji ostatnia ramka z pierwszego wejścia będzie łączyć się z ostatnią ramką z wejścia drugiego.

Innym przypadkiem może być sytuacja, w której ramki z danymi będą przychodzić z różną częstotliwością- tak jak na rysunku. Gdy częstotliwość generowania ramek z wejścia drugiego jest rzadsza niż z wejścia pierwszego. W wyniku takiego generowania ramek z danymi kolejne ramki z wejścia pierwszego będą łączyć się z ostatnią ramką z wejścia drugiego, do momentu, aż na drugim wejściu nie zostanie wygenerowana nowa ramka.

Odwrotna sytuacja będzie miała miejsce, gdy ramki z wejścia pierwszego będą generowane rzadziej, niż ramki z wejścia drugiego. W takim przypadku ramki z wejścia drugiego, które zostały wygenerowane w czasie, gdy nie dostarczono żadnej ramki z wejścia pierwszego, nie będą łączyć się z innymi ramkami i zostaną pominięte.

OPCJE:

NazwaOpis
Zmienne wejścioweWęzeł wymaga podłączenia 2 węzłów ze zmiennymi wejściowymi.
Wejście pierwszeNa podstawie jego ramek będą generowane ramki z kolumnami obu wejść.
Wejście drugieDrugie wejście zawierające ramki ze zmiennymi wejściowymi, jego ramki przypisywane są do ramek wejścia pierwszego.
Zmienne wynikoweRamki zawierające kolumny obu wejść, ramki wyjściowe tworzone są na podstawie ramek przychodzących w wejściu pierwszym.

OPIS:

Węzeł „Okno agregacji” pozwala na zdefiniowanie okna czasowego, wyznaczenie nowych zmiennych agregowanych w podanym oknie oraz grupowanie. W wyniku zastosowania węzła użytkownik może otrzymać różne zmienne wynikowe (np. średnia, minimalna wartość, zliczenie ramek z daną zmienną), w ramach zdefiniowanego okna czasu(czas wstecz od bieżącej chwili) i zmiennej grupującej. Pozwala to na przeprowadzenie szczegółowej analizy danych w danym okresie jak dzień, miesiąc czy godzina (rozmiar okna czasu) oraz w kontekście np. Linii produkcyjnej (zmienna grupująca zawierająca nazwę linii). Do poprawnej konfiguracji wymagane jest zdefiniowanie okna czasu i wybranie zmiennej agregowanej w ramach podanego czasu. W odróżnieniu od węzła „Grupowanie”, „Okno agregacji” przekazuje dalej wszystkie zmienne wejściowe oraz zmienne utworzone w ramach agregacji. 

PRZYKŁAD ZASTOSOWANIA:

W wyniku działania tego węzła, kolejny węzeł otrzyma wszystkie zmienne wejściowe oraz pojawią się zmienna AVG będąca średnią z dostarczonych w ciągu ostatniego dnia zmiennych A, zmienna SUM – wynik dodawania wartości B z ostatnich dwudziestu minut oraz zmienna SUM_5, zawierającą sumę zmiennych A z ostatnich pięciu przychodzących ramek.

Węzeł umożliwia także zastosowanie operacji grupowania. Na zamieszczonym przykładzie jako zmienną grupującą wybrano zmienną Produkt. Oznacza to, że wartość średnia dla zmiennej AVG oraz wartości sumy dla zmiennych SUM i SUM5 będą wyliczane w ramach tego samego produktu.

OPCJE:

NazwaOpis
Zmienne wejścioweNa ich podstawie użytkownik otrzyma zmienne wynikowe z wartością zależną od wybranej funkcji agregującej. Do poprawnego skonfigurowania bloczka wystarczy jedna zmienna.
Okno czasoweCzas brany pod uwagę podczas agregacji zmiennych.
Jednostki w oknie czasowymMilisekundy, sekundy, minuty, godziny, dni, wiersze (ramki).
AgregacjaUżytkownik wybiera zmienną wejściową, a następnie funkcję agregującą oraz nazwę wynikową zmiennej, która ma powstać na podstawie zmiennej wejściowej.
ŚredniaZlicza średnią ze zmiennych przychodzących w pakiecie ramek, zmienna wynikowa to zawsze liczba zmiennoprzecinkowa. Funkcja dostępna w przypadku, gdy typem danych zmiennej jest liczba całkowita lub liczba zmiennoprzecinkowa.
ZliczZlicza ilość przychodzących ramek w pakiecie. Zmienna wynikowa to zawsze liczba całkowita. Dostępna dla każdego typu danych.
Pierwsza wartośćRamka wychodząca, zawiera pierwszą wartość zmiennej jaka została otrzymana w pakiecie ramek. Zmienna wynikowa będzie o tym samym typie danych co zmienna wejściowa.
Ostatnia wartośćRamka wychodząca, zawiera ostatnią wartość zmiennej jaka została otrzymana w pakiecie ramek. Zmienna wynikowa będzie o tym samym typie danych co zmienna wejściowa.
Maksymalna wartośćRamka wychodząca zawiera największą wartość zmiennej w dostarczonym pakiecie ramek. W przypadku tekstu największą wartością jest pierwsza wartość w kolejności alfabetycznej. Funkcja jest niedostępna dla zmiennych wejściowych o typach danych wartość logiczna oraz tablica.
Minimalna wartośćRamka wychodząca zawiera najmniejszą wartość zmiennej w dostarczonym pakiecie ramek. W przypadku tekstu wartością najmniejszą jest ostatnia wartość w kolejności alfabetycznej. Funkcja jest niedostępna dla zmiennych wejściowych o typach danych wartość logiczna oraz tablica.
SumaDodaje wartości zmiennych przychodzących w pakiecie ramek. Zmienna będzie o tym samym typie danych co zmienna wejściowa. Funkcja jest dostępna dla zmiennych o typach danych liczba całkowita oraz liczba zmiennoprzecinkowa.
GrupowanieZmienne na podstawie których zostanie przeprowadzone grupowanie.

OPIS:

Węzeł „Okresy pracy maszyny” służy do uzyskania odpowiednich danych dla analizy typu wykres Gantt. Pozwala na określenie cykli w jakich pracowała maszyna oraz określenie zmiennej alternatywnej, zawierającej dane na temat czasu przestoju. Węzeł na podstawie ramek ze zmienną wybraną jako „zmienna impulsów” generuje i przekazuje do kolejnych węzłów informacje o dacie, nazwie serii, czasie rozpoczęcia, zakończenia okresu pracy oraz o liczbie impulsów.

Określenie czasu pracy maszyny może być rozpatrywane na dwóch płaszczyznach. W przypadku w którym opcja „tylko zmiany” jest wyłączona, w okresie pracy znajdą się wszystkie ramki zawierające zmienną impulsów, dla których różnica między jedną, a kolejną mieści się w limicie czasu. W przeciwnym razie, aby zmienna trafiła do okresu, poza koniecznością spełnienia warunku limitu czasu, wartość zmiennej impulsów musi różnić się w stosunku do poprzedniej zarejestrowanej w okresie.

Użytkownik ma również możliwość zaznaczenia opcji „dzielenie według dat”. Po użyciu tej funkcji, jeśli okres pracy maszyny będzie trwał na przełomie dwóch dat, zostanie rozdzielony na dwa osobne okresy o godzinie 00:00:00, co ułatwi późniejsze filtrowanie na podstawie dat.

PRZYKŁAD ZASTOSOWANIA:

Według podanego przykładu dodano dwie serie danych. Wybrano dla nich zmienne impulsów – linia_A oraz linia_B, po czym je nazwano – Maszyna_A, Maszyna_B. Dla serii Maszyna_A ustalono limit czasu 30 sekund oraz zaznaczono opcję tylko zmiany. Oznacza to, że do jednego okresu pracy zaliczane będą zmienne, dla których różnica czasu między poprzednią ramką, a bieżącą mieści się w zakresie trzydziestu sekund oraz wartość zmiennej impulsów w bieżącej ramce zmieniła się w stosunku do poprzedniej w danym okresie. Dla serii Maszyna_B limit czasu to jedna minuta, a opcja „tylko zmiany” jest wyłączona. Zatem zmienne będą zaliczane do okresów tylko jeśli różnica czasu między dwiema kolejnymi ramkami mieści się w zakresie jednej minuty. W odróżnieniu do serii Maszyna_A różnica wartości zmiennej impulsów nie ma tutaj znaczenia.

Wybrano nazwę serii alternatywnej „STOP”. Zostanie ona wyświetlona na wykresie w przypadku, gdy zmienne impulsów obu serii nie będą spełniały warunków różnicy czasu, lub zmiany wartości (Maszyna_A).

Na przykładzie zaznaczono również opcję „Dzielenie według dat”. Gdyby któryś z okresów zaczynał się jednego dnia, a kończył kolejnego zostanie on podzielony na 2 okresy, co ułatwi późniejsze filtrowanie na podstawie dat.

Ostatnią zaznaczoną opcją jest grupowanie. Wybrano tutaj zmienną grupującą „dzień”. Oznacza to, że wygenerowane zmienne, będą liczone w ramach poszczególnych wartości zmiennej dzień.

Według podanego przykładu zostaną wygenerowane zmienne date (data), seriesName (tekst), startTS (znacznik czasu), endTS (znacznik czasu), pulses (liczba całkowita). Po przypisaniu wszystkich wymienionych zmiennych do miejsca docelowego – używając węzła „Tabela wynikowa”, możliwe jest stworzenie analizy typu „wykres Gantt”.

OPCJE:

NazwaOpis
Nazwa seriiNazwa okresu pracy maszyny dla danej zmiennej impulsów
Zmienna impulsówZmienna traktowana jako impuls. Na podstawie różnicy czasu pomiędzy impulsami generowany jest okres pracy – jeśli różnica mieści się w limicie czasu.
Tylko zmianyImpulsy będą brane pod uwagę tylko w przypadku, w którym wartość zmiennej impulsów będzie się zmieniać.
Limit czasuMaksymalny czas od dostarczenia ostatniej ramki ze zmienną impulsów do kolejnej, zliczanej do tego samego okresu pracy
Jednostka czasuMilisekunda, Sekunda, Minuta, Godzina, Dzień
Nazwa serii alternatywnejNazwa okresu przestoju maszyny
Dzielenie według datW przypadku, gdy okres pracy będzie zaczynał się jednego dnia, a kończył następnego węzeł podzieli go na poszczególne dni.
Zmienne grupująceZmienne w ramach których liczone będą wygenerowane przez węzeł zmienne, np. numer linii, zmiana, brygada, data. W grupowaniu nie można użyć zmiennych o nazwach: date, seriesName, startTS, endTS, pulses.

OPIS:

Węzeł „Operacje na kolumnach” pozwala na:

  • zmianę nazwy istniejących kolumn,
  • definiowanie wartości stałych,
  • oraz na ustalenie wartości domyślnych dla istniejących kolumn.

Zmiana nazwy kolumny powoduje aktualizację jej nazwy i sprawia, że w kolejnych węzłach przetwarzania kolumna ta będzie figurować pod nową nazwą nadaną przez użytkownika. Zabieg ten pozwala w prosty sposób na spersonalizowanie nazw zmiennych w obrębie tworzonego przetwarzania.

W węźle możliwe jest zdefiniowanie nowej zmiennej o wybranym typie danych (wartość logiczna, liczba całkowita, liczba zmiennoprzecinkowa lub tekst) i przypisane jej wartości stałej, która będzie występować w całym utworzonym przetwarzaniu.

Węzeł pozwala także na dopisanie domyślnych wartości do istniejących kolumn (o typie danych wartość logiczna, liczba całkowita, liczba zmiennoprzecinkowa lub tekst). W sytuacji, gdy do istniejącego kanału instalacji zostanie dopisana nowa zmienna, wówczas ramki danych wygenerowane przed jej dopisaniem będą niekompletne. Dzięki określeniu wartości domyślnych w węźle „Operacje na kolumnach” w ramkach gdzie wybrana zmienna nie posiada wartości zostanie wpisana wartość podana przez użytkownika, co pozwoli na poprawne działanie całego przetwarzania

PRZYKŁAD ZASTOSOWANIA:

Konfiguracja węzła „Operacje na kolumnach” podzielona jest na 3 sekcje. W pierwszej z nich możliwa jest zmiana nazwy istniejących kolumn. Po wybraniu zmiennej z poprzedniego węzła użytkownik podaje nową nazwę, która będzie obowiązywać w kolejnych węzłach przetwarzania. Zgodnie z przedstawionym przykładem zmienna A_01 będzie figurować dalej w przetwarzaniu pod nazwą zmienna_1, zmienna C_03 pod nazwą zmienna_3, a zmienna G_07 pod nazwą zmienna_7.

W kolejnej sekcji użytkownik ma możliwość zadeklarowania nowych zmiennych o wybranym przez siebie typie danych i ustalonej wartości stałej. Dostępne są 4 typy danych – wartość logiczna, liczba całkowita, liczba zmiennoprzecinkowa lub tekst.

W ostatniej sekcji użytkownik może nadać wartości domyślne dla poszczególnych kolumn. Oznacza to, że dla ramek z wyżej podanymi zmiennymi, brak wartości zostanie zastąpiony wartością domyślną, zarówno w przypadku przeszłych jak i bieżących ramek. Według przedstawionego przykładu w przypadku, w którym ramki nie będą zawierały wartości w którejkolwiek ze zmiennych (zmienna_A, zmienna_B, zmienna_C lub zmienna_D) brak wartości zostanie zamieniony na podaną przez użytkownika wartość (odpowiednio 9, 9.99, Produkt_C, false).

OPCJE:

NazwaOpis
Zmiana nazwy istniejących kolumn
Nazwa wynikowaWybór zmiennej z poprzedniego węzła, której nazwa ma zostać zmieniona
Nowa nazwaNowa nazwa kolumny nadana przez użytkownika, która będzie występować w obrębie tworzonego przetwarzania
Wartości stałe
Nazwa zmiennejPole do zdefiniowania nazwy nowej zmiennej
TypWybór jednego z 4 typów danych jaki ma przyjąć deklarowana zmienna – wartość logiczna, liczba całkowita, liczba zmiennoprzecinkowa lub tekst.
WartośćWartość stała jaką ma przyjąć definiowana zmienna w zależności od wybranego typu danych. W przypadku wartości logicznej możliwe jest podanie wartości – true/false, 0 lub 1. Dla liczb całkowitych należy podać tylko liczby całkowite, dla zmiennoprzecinkowych – liczby wymierne, a dla tekstu wartość tekstową.
Wartości domyślne dla istniejących kolumn
Nazwa zmiennejWybór zmiennej z poprzedniego węzła, dla której mają zostać dopisane domyślne wartości do istniejącej kolumny. W przypadku, gdy nazwa zmiennej została już zmieniona w obrębie konfigurowanego węzła, w polu tym będzie figurować już pod nowo nadaną nazwą.
TypPole uzupełniane automatycznie na podstawie wyboru dokonanego w polu Nazwa zmiennej.
WartośćUstalenie jaką wartość domyślną ma przyjąć zmienna w zależności od wybranego typu danych. W przypadku wartości logicznej możliwe jest podanie wartości – true/false, 0 lub 1. Dla liczb całkowitych należy podać tylko liczby całkowite, dla zmiennoprzecinkowych – liczby wymierne, a dla tekstu wartość tekstową.

OPIS:

Węzeł „Powtórz dane” znajduje zastosowanie w przypadku, gdy czas pomiędzy przychodzącymi ramkami jest na tyle długi, że analiza nie odwzorowywałaby właściwie kontrolowanego procesu. Dzięki użyciu węzła „Powtórz dane” możliwe jest ustalenie interwału, w czasie którego węzeł będzie powtarzał przesyłanie ramek zawierających ostatnią zanotowaną wartość.

Węzeł „Powtórz dane” zawiera również opcję „HB mode”, która sprawia że wysyłane są puste ramki, zamiast ramek z powtórzoną zmienną. Daje to informację kolejnym węzłom przetwarzania o upływie czasu.

PRZYKŁAD ZASTOSOWANIA:

Jeżeli w węźle ustawiony zostanie interwał 5, w jednostce minuta to o ile nie nadejdzie nowsza ramka danych, to poprzednia ramka będzie powtarzana co 5 minut.

Włączenie trybu „HB mode”, spowoduje wysyłanie pustych ramek, zamiast ramek z powtórzoną zmienną. Dzięki temu pozostałe węzły przetwarzania otrzymają informację o upływie czasu.

OPCJE:

NazwaOpis
Zmienne wejścioweRamka ze zmienną będzie powtarzana co określony interwał.
InterwałCzas opóźnienia w stosunku do czasu bieżącego z jakim będą generowane ramki.
JednostkaJednostka w jakiej definiowany jest interwał (milisekunda, sekunda, minuta, godzina, dzień).
HB mode – HeartBeat modeOpcja która zmienia powtarzanie ramek ze zmienną, na powtarzanie pustych ramek(ramki zawsze zawierają określenie czasu w którym zostały stworzone). W przypadku w którym wartości miałyby być zliczane/sumowane, lepiej powtórzyć ramkę nie podając kolejnej wartości do działania. Da to informację o upływie czasu, jednocześnie nie fałszując wyniku.

OPIS:

Węzeł „Przedziały czasu cyklu” służy do uzyskania odpowiednich danych dla analizy typu wykres Gantt. Konfiguracja węzła jest bardzo zbliżona do „Okresy pracy maszyny”, jednak w przypadku przedziałów czasu cyklu celem jest przedstawienie wydajności konkretnej maszyny zamiast przedstawiania okresów jej pracy lub przestoju. 

W węźle określa się:

  • Zmienną impulsów – na podstawie wartości tejże zmiennej w danej ramce określa się czy maszyna jest w trakcie pracy, czy przestoju.
  • Opcję „Tylko zmiana wartości” – jeśli wartość zmiennej impulsów dla dwóch ramek nie ulegnie zmianie druga nie zostanie naliczona jako czas pracy.
  • Opcję dzielenie według dat. Po użyciu tej funkcji, jeśli okres pracy maszyny będzie trwał na przełomie dwóch dat, zostanie rozdzielony na dwa osobne okresy o godzinie 00:00:00, co ułatwi późniejsze filtrowanie na podstawie dat.
  • Limit czasu oraz jednostkę interwału – maksymalny odstęp czasu od poprzedniej ramki uznanej jako czas pracy wymagany do zakwalifikowania do danej serii.
  • Kod interwału – nazwa serii na wykresie Gantt dla danego interwału.
  • Nazwę serii alternatywnej – nazwę serii generującej się w przypadku gdy okres pomiędzy dostarczeniem ramek jest dłuższy niż zdefiniowane limity czasu – czas przestoju.
  • Zmienne grupujące – zmienne wejściowe dla których zmienne wynikowe będą podzielone na grupy.

Użytkownik na podstawie wprowadzonych danych otrzymuje zmienne zawierające informacje o dacie, nazwie serii, czasie rozpoczęcia, zakończenia okresu pracy oraz o liczbie impulsów.

PRZYKŁAD ZASTOSOWANIA:

Na podanym przykładzie wybrano zmienną impulsów „MaszynaNr1”, zaznaczono opcję „Tylko zmiana wartości”, oraz dodano 3 zakresy interwałów – Wysoka o limicie czasu 20 sekund, Przecietna o limicie 40 sekund oraz Niska z limitem 1 minuta. Oznacza to, że jeśli kolejne ramki będą dostarczane w odstępie mniejszym niż 20 sekund oraz wartość zmiennej będzie ulegać zmianie, zostaną one zakwalifikowane do serii „Wysoka”, jeśli zostanie przekroczony odstęp 20 sekund i wartość zmiennej ulegnie zmianie, ramka trafi do serii Przecietna, po przekroczeniu 40 sekund i zmianie wartości zmiennej trafią do serii Niska, a po przekroczeniu zdefiniowanej minuty, wygenerowana zostanie seria alternatywna – „Przestoj”.

Jeśli wartość zmiennej nie ulegnie zmianie w kolejnych ramkach, są traktowane tak, jak gdyby nie zostały dostarczone.

Według podanego przykładu zostaną wygenerowane zmienne date (data), seriesName (tekst), startTS (znacznik czasu), endTS (znacznik czasu), pulses (liczba całkowita). Po przypisaniu wszystkich wymienionych zmiennych do miejsca docelowego – używając węzła „Tabela wynikowa”, możliwe jest stworzenie analizy typu „wykres Gantt”.

OPCJE:

NazwaOpis
Zmienne wejścioweLista zmiennych przekazanych z poprzedniego węzła, z których wybierana jedna, na podstawie której wyznaczane będą interwały czasu
Nazwa kolumnyWybrana zmienna, dla której wyznaczane są interwały czasu
Tylko zmiana wartościRamka rozpoczyna najkrótszą serię tylko gdy wartość zmiennej impulsów uległa zmianie w stosunku do poprzedniej.
Dzielenie według datW przypadku, gdy przedział czasu pracy będzie zaczynał się jednego dnia, a kończył następnego węzeł podzieli go na poszczególne dni.
Zakresy interwałówSekcja w której użytkownik definiuje limit czasu, kod(nazwę), oraz jednostkę dla limitu czasu w danym interwale.
Kod interwałuNazwa interwału
Limit czasuLiczba całkowita wyrażająca limit czasu, w którym musi zmieścić się kolejna ramka by trafić do danej serii.
Jednostka czasuMilisekunda, Sekunda, Minuta, Godzina, Dzień
Nazwa serii alternatywnejNazwa okresu przestoju maszyny
Zmienne grupująceZmienne w ramach których liczone będą wygenerowane przez węzeł zmienne, np. numer linii, zmiana, brygada, data. W grupowaniu nie można użyć zmiennych o nazwach: date, seriesName, startTS, endTS, pulses.

OPIS:

Węzeł „Pusta transformacja” przesyła ramki dalej, nie wprowadzając w nich żadnych zmian.

PRZYKŁAD ZASTOSOWANIA:

Można w nim zobaczyć wszystkie przychodzące w ramkach zmienne, oraz ich typy danych.

OPCJE:

NazwaOpis
Zmienne wejścioweWęzeł przesyła ramki dalej nie dokonując w nich zmian.

OPIS:

Węzeł „Różnica czasu” wyprowadza nową zmienną określającą w milisekundach różnicę czasu pomiędzy poszczególnymi przychodzącymi ramkami. Ponadto węzeł umożliwia grupowanie na podstawie wyznaczonych zmiennych wejściowych (różnice czasu są dzielone na grupy według wartości wybranej zmiennej, różnice liczone są dla ramek należących do tej samej grupy). Funkcja grupowania nie jest wymagana do poprawnego działania konfiguracji węzła.

PRZYKŁAD ZASTOSOWANIA:

Do zmiennej wynikowej będą zapisywane różnice czasu między ramkami w ramach wartości zmiennej Linia_1. Różnice czasu są dzielone na grupy – w tym przypadku będą liczone osobno dla poszczególnych wartości zmiennej Linia_1. Przykładowo dla zmiennej Linia_1 równej 4 różnica może wynosić 3000 milisekund, po zmianie wartości zmiennej Linia_1na 5 różnica nie będzie już brana pod uwagę, ponieważ zaczynamy obliczać różnicę dla zmiennej Linia_1 o wartości 5.

W przypadku, gdy w sekcji „Zmienne grupujące” nie zostanie wybrana żadna zmienna, wówczas różnica czasu będzie obliczana dla każdej kolejnej ramki względem ramki poprzedniej.

OPCJE:

NazwaOpis
Nazwa zmiennejUżytkownik definiuje nazwę zmiennej wyjściowej, zawierającej różnicę czasu pomiędzy ramkami. Zmienna wychodząca to liczba całkowita, określająca ilość milisekund jakie upłynęły od czasu przyjścia poprzedniej ramki do obecnej.
Zmienne wejścioweW węźle pod uwagę brane są całe ramki, na ich podstawie wyliczana jest różnica czasu.
GrupowanieUżytkownik wybiera zmienną grupującą, której wartości dzielą ramki na zbiory – różnice czasu są obliczane w ramach konkretnego zbioru.

OPIS:

Węzeł „Stempel czasowy” pozwala na wygenerowanie dodatkowych zmiennych określających czas zarejestrowania ramki. Z jego pomocą można uzyskać zmienne wyjściowe takie jak minuty, sekundy, znacznik czasu, sekwencję czy datę.

PRZYKŁAD ZASTOSOWANIA:

ęzeł „Stempel czasowy” znajduje praktyczne zastosowanie w przetwarzaniu zawierającym węzeł „Zmiana pracy”. Do poprawnego działania węzła „Zmiana pracy” potrzebna jest zmienna o typie danych znacznik czasu, którą można uzyskać przy zaznaczeniu opcji „Data i czas” w węźle „Stempel czasowy”.

Węzeł „Stempel czasowy” może zostać użyty, w sytuacji gdy chcemy znać dokładny czas, lub przyrównać dane w podobnym okresie.

Węzeł „Stempel czasowy” może być także stosowany w przetwarzaniach z użyciem węzłów grupujących, grupując daną zmienną lub zmienne wejściowe w wybranej jednostce czasu. W celu uzyskania potrzebnej jednostki czasu, należy wybrać w konfiguracji adekwatną zmienną wyjściową.

Na przedstawionym przykładzie, zliczane zmienne A będą grupowane na podstawie dni.

OPCJE:

NazwaOpis
Zmienne wejścioweNa podstawie czasu zarejestrowania ramek generowane są wybrane przez użytkownika zmienne wyjściowe, zawierające dokładne informacje na temat czasu.
Nazwa wynikowaNazwa zmiennej, powstałej w wyniku przetwarzania w węźle. Musi być unikalna w obrębie całego procesu przetwarzania.
DataData w formacie RRRR-MM-DD.
Data i czasZnacznik czasu w formacie RRRR-MM-DD GG-MM-SS.
RokRok jako liczba całkowita.
MiesiącMiesiąc jako liczba całkowita.
DzieńDzień jako liczba całkowita.
GodzinaGodzina jako liczba całkowita.
MinutaMinuta jako liczba całkowita.
SekundaSekunda jako liczba całkowita.
SekwencjaWartość przybierana w momencie, gdy więcej niż jedna ramka zostanie zarejestrowana w dokładnie tym samym czasie. Domyślnie wynosi 0, przyjmuje wyższe wartości, w zależności od ilości zarejestrowanych w tym samym czasie ramek.
Czas w milisekundachCzas w milisekundach w formie liczby całkowitej.

OPIS:

Węzeł „Unia” służy do łączenia zmiennych w ramkach pochodzących z kilku strumieni.

PRZYKŁAD ZASTOSOWANIA:

Po podpięciu do węzła „Unia” kilku kanałów widoczne są w nim wszystkie przychodzące w ramkach zmienne oraz ich typy danych z każdego z podłączonych kanałów. Do zmiennych z pierwszego wejścia należy przyporządkować zmienne z kolejnych wejść, tak, aby ich typy danych były takie same. Kolejność wejść zależy od użytkownika, który może ją modyfikować w dowolny sposób.

OPCJE:

NazwaOpis
Zmienne wejścioweDo zmiennych ze źródła wybranego jako pierwsze w kolejności wejść, należy przyporządkować zmienne z pozostałych źródeł. Typy danych zmiennych muszą się ze sobą zgadzać.
Kolejność wejśćKolejność porządkowania wejść. Można ją dowolnie modyfikować używając strzałek z lewej strony okna.

OPIS:

Węzeł „Wyznaczanie przyrostów” wyznacza nowe zmienne, określające różnicę wartości między aktualną, a poprzednią ramką. Pozwala na określenie maksymalnego odstępu czasu między ramkami, z których obliczane są wartości oraz na grupowanie na podstawie dostarczonych zmiennych.

PRZYKŁAD ZASTOSOWANIA:

Do zmiennej C będą zapisywane przyrosty wartości (różnica między poprzednią, a kolejną wartością) zmiennej A w ramach wartości zmiennej Godzina. Przyrosty są dzielone na grupy – w tym przypadku będą liczone osobno dla poszczególnych godzin. O 11:59:59 przyrost może przykładowo wynosić 30, o 12:00:00 ramka z poprzednim przyrostem nie będzie już brana pod uwagę, ponieważ zaczynamy obliczać przyrosty dla zmiennej Godzina o wartości 12. Dodatkowym warunkiem obliczania przyrostów jest różnica czasu pomiędzy obecną, a poprzednią ramką(w tej samej grupie), która nie może wynosić więcej niż 10 minut. 

OPCJE:

NazwaOpis
Zmienne dla których należy wyznaczyć przyrostyUżytkownik wybiera zmienne z których chce uzyskać przyrosty, a następnie nadaje nazwy wynikowe dla zmiennych zawierających przyrosty.
Maksymalny odstęp czasuOdstęp czasu definiowany przez użytkownika, na podstawie którego wybierane są ramki dla których liczony jest przyrost.Przyrost będzie liczony między pierwszą a ostatnią ramką w zadanym okresie licząc od czasu bieżącego.
Dostępne jednostki czasuSekundy, minuty, godziny, dni.
Zmienne grupująceZmienne na podstawie których zostanie przeprowadzone grupowanie.

OPIS:

Węzeł „Zbocze sygnału” pozwala dokonać użytkownikowi analizy zmian kształtu sygnału. W szczególności pozwala na określenie progów górnych i dolnych. Na tej podstawie węzeł rejestruje zmiany i informuje o przekroczeniu zadanych progów. Dzięki temu użytkownik ma możliwość np. monitorowania ile razy w pełni wykonany został proces maszyny, z której pobierane są dane.

PRZYKŁAD ZASTOSOWANIA:

Węzeł „Zbocze sygnału” może znaleźć zastosowanie w sytuacji, kiedy użytkownik nie jest w stanie podać dokładnej wartości, której przekroczenie oznaczałoby wykonanie pełnego cyklu pracy maszyny. „Zbocze sygnału” stwarza możliwość zliczania ilości cykli na podstawie przekroczenia wartości progowych, z progów – dolnego, górnego lub obu z nich, w zależności od potrzeby użytkownika.

Na przedstawionym przykładzie, wybrana została zmienna wejściowa A, określono próg dolny – 10 oraz próg górny – 20. W pierwszym przypadku (dla nazwy wynikowej LiczbaCykli) ustawiono typ zbocza sygnału na rosnące i rodzaj wyniku- suma. Oznacza to, że węzeł będzie zliczał ilość wystąpień sytuacji, w których zarejestruje przekroczenie górnego progu (20), gdy wcześniej przekroczony został próg dolny (10). Natomiast w drugim przypadku (dla nazwy wynikowej MomentCyklu) ustawiono typ zbocza sygnału na opadające i rodzaj wyniku- flaga. Oznacza to, że węzeł będzie zwracał wartość -1 za każdym razem gdy zostanie zarejestrowane przekroczenie dolnego progu (10) , gdy wcześniej przekroczony został próg górny (20).

OPCJE:

NazwaOpis
Zmienne wejścioweWybór zmiennej dostarczonej z poprzednich węzłów przetwarzania
Próg dolnyWartość liczbowa – dolna granica poniżej której zliczane mają być spadki zmiennej
Próg górnyWartość liczbowa – górna granica powyżej której zliczane mają być wzrosty zmiennej
Zbocze sygnałuRosnące, malejące, oba.
Rosnące rejestruje przekroczenie górnego progu, pod warunkiem przekroczenia wcześniej progu dolnego.
Malejące rejestruje przekroczenie dolnego progu, pod warunkiem przekroczenia wcześniej progu górnego.
Oba rejestruje wartości z obu przypadków.
Zmienna wynikowaPodawana przez użytkownika nazwa zmiennej wynikowej.
Rodzaj wynikuFlaga lub suma, gdzie flaga jest odzwierciedleniem bieżącej sytuacji, może przybierać wartości -1,0,1.
Flaga zwróci wartość -1 gdy zostało zarejestrowane przekroczenie dolnego progu, pod warunkiem przekroczenia wcześniej progu górnego.
Flaga zwróci wartość 1 gdy zostało zarejestrowane przekroczenie górnego progu, pod warunkiem przekroczenia wcześniej progu dolnego.
Flaga zwróci wartość 0 za każdym razem, gdy nie spełni warunku dla wartości 1 lub -1.
Suma to łączna ilość wejść w stany -1 lub 1, w zależności od wyboru zbocza sygnału.

OPIS:

Węzeł „Zmiana pracy” pozwala na określenie schematu pracy zmianowej w zakładzie produkcyjnym. Na podstawie zmiennej typu znacznik czasu węzeł przesyła ramki zawierające określone przez użytkownika szczegółowe dane, takie jak dokładny czas, numer, czy data rozpoczęcia zmiany pracy.

PRZYKŁAD ZASTOSOWANIA:

W celu poprawnego skonfigurowania węzła „Zmiana pracy”, należy określić schemat zmian pracy, wprowadzając godziny ich rozpoczęcia. Na tej podstawie godziny zakończenia zostaną wygenerowane po użyciu przycisku „Przelicz zmiany”.

Użytkownik powinien wybrać zmienną zawierającą znacznik czasu, spośród dostępnych zmiennych.

Ostatnim krokiem jest wybór, oraz nazwanie zmiennych wynikowych zmiany i zapisanie węzła.

Zgodnie z zaprezentowanym przykładem, na podstawie dostarczonych ramek, węzeł wygeneruje dwie dodatkowe zmienne wyjściowe, zawierające informacje dotyczące daty rozpoczęcia, oraz numery zmiany. Zmienne wyjściowe będą zgodne z utworzonym schematem pracy zmianowej.

OPCJE:

NazwaOpis
Schemat pracy zmianowej
Rozpoczęcie zmiany [h]Godzina zdefiniowana przez użytkownika. W celu dodania godziny rozpoczynającą daną zmianę należy użyć przycisku „Dodaj nowy”, wprowadzić godzinę, a następnie zatwierdzić ją przyciskiem „Przelicz zmianę”
Zakończenie zmiany [h]Godzina generowana automatycznie na podstawie podanych przez użytkownika godzin rozpoczęcia zmiany. Pojawia się po użyciu przycisku „Przelicz zmianę”
Wybierz zmienną określającą czas
Dostępne zmienneDla poprawnego działania węzła niezbędne jest dostarczenie przynajmniej jednej zmiennej typu znacznik czasu. Użytkownik wybiera spośród dostarczonych do węzła zmiennych odpowiednią dla przetwarzania zmienną ze znacznikiem czasu.
Zmienne wynikowe zmiany
Data rozpoczęcia zmianyZmienna typu date, podaje datę rozpoczęcia zmiany z dokładnością do dnia w formacie RRRR-MM-DD
Numer zmianyLiczba całkowita, określająca numer zmiany na podstawie zdefiniowanego przez użytkownika schematu pracy zmianowej
Znacznik czasu rozpoczęciaZmienna typu timestamp, podaje dokładny czas rozpoczęcia zmiany z dokładnością do milisekundy w formacie RRRR:MM:DD GG:MM:SS.MS
Znacznik czasu zakończeniaZmienna typu timestamp, podaje dokładny czas zakończenia zmiany z dokładnością do milisekundy w formacie RRRR:MM:DD GG:MM:SS.MS
Czas rozpoczęcia (milisekundy)Liczba całkowita, podaje czas jaki upłynął od 01.01.1970 do czasu rozpoczęcia zmiany w milisekundach (EPOCH)
Czas zakończenia (milisekundy)Liczba całkowita, podaje czas jaki upłynął od 01.01.1970 do czasu zakończenia zmiany w milisekundach (EPOCH)

Węzły wynikowe (Tabela wynikowa), służą do zapisania wyników procesu przetwarzania.

OPIS:

Węzeł „Tabela wynikowa” jest jednym z dwóch węzłów wyjściowych. Pozwala na wybór bazy danych, do której mają trafić ramki ze zmiennymi.

Użytkownik ma do dyspozycji zarówno bazę wewnętrzną jak i zewnętrzną. W pierwszym przypadku przed rozpoczęciem tworzenia procesu przetwarzania powinno zostać utworzone lub zaimportowane miejsce docelowe, do którego zapisywane będą zmienne. Natomiast przy wyborze bazy zewnętrznej należy pamiętać o utworzeniu odpowiedniej tabeli (w wybranej bazie danych), do której trafiać będą ramki z danymi. Po wyborze miejsca docelowego użytkownik wybiera zmienne, które mają zostać zapisane oraz kolumny do których będą przypisane. Zmienna może zostać oznaczona jako zmienna kluczowa – wartości pozostałych zmiennych będą aktualizowane dla tych samych wartości zmiennej kluczowej (np. tej samej nazwy miesiąca lub linii produkcyjnej).

PRZYKŁAD ZASTOSOWANIA:

Na podanym przykładzie do bazy danych trafią 3 zmienne (l_szt, kod, data). Będzie można znaleźć je w analizach wybierając miejsce docelowe Produkcja_Katowice. Wiersze będą aktualizowane na podstawie kodu produktu oraz daty. Powstaną dzięki temu wiersze z aktualnymi informacjami na temat produktów danego typu, wyprodukowanych danego dnia(dla każdej pary różnych wartości zmiennych kod oraz data otrzymamy osobny wiersz). Gdyby zmienne kluczowe nie zostały wskazane otrzymalibyśmy tyle wierszy, ile zostało zapisanych ramek. Na przykładzie wybrano zakres danych „Kwadrans”. W przypadku ciągłego działania przetwarzania ramki z danymi trafiają do bazy danych na bieżąco. Gdyby jednak zatrzymać przetwarzanie i uruchomić je ponownie np. po godzinie, brane pod uwagę będą tylko dane z ostatnich 15 minut od czasu przyjścia ostatniej ramki.

OPCJE:

NazwaOpis
Zmienne wejścioweDostarczone ramki trafią do wybranego miejsca docelowego na bazie danych.
Miejsce doceloweTabela na bazie danych, do której trafią ramki ze zmiennymi.
Zakres danychW przypadku, gdy do procesu przetwarzania dostarczane są stare, nieistotne dane, możemy je wyfiltrować wybierając okres jaki nas interesuje.
Zmienna kluczowaZmienna w ramach której zliczane są wartości.
Typ danychTyp danych zmiennej – musi zgadzać się z typem danych kolumny w miejscu docelowym.
Zmienne zapisane do miejsca docelowegoTabela ze zmiennymi dostarczonymi w procesie przetwarzania do tabeli wynikowej.