math
Opis
Bloczek math wykonuje proste operacje matematyczne na wartościach liczbowych doprowadzonych do jego wejścia. W zależności od parametru operation może obliczać średnią, sumę, minimum, maksimum albo różnicę.
Bloczek posiada jedno wyjście. Do wejścia można podłączyć wiele źródeł sygnału, ale wymagania dotyczące liczby połączeń zależą od wybranego trybu pracy.
Bloczek akceptuje wyłącznie wartości liczbowe. Wartości logiczne, tekstowe, daty i inne wartości, których nie da się odczytać jako liczby, nie biorą udziału w obliczeniach.
Parametry konfiguracyjne
| Nazwa parametru | Wartość |
|---|---|
Tryb operacji (operation) |
Parametr obowiązkowy określający rodzaj obliczeń. Dozwolone wartości to: avg, diff_smaller_than_bigger, diff_tags, max, min, sum. |
Blokuj powtarzające się wartości (filter_duplicated_values) |
Obowiązkowa wartość logiczna true albo false. Gdy ustawione jest true, bloczek nie wyśle na wyjście kolejnej wartości identycznej z ostatnio wyemitowaną. Gdy ustawione jest false, wynik zostanie wysłany przy każdym przeliczeniu, nawet jeśli jest taki sam jak poprzednio. |
Znaczenie parametru operation:
avg: średnia arytmetyczna ze wszystkich poprawnie odczytanych wartości liczbowychdiff_smaller_than_bigger: różnica większej i mniejszej z dwóch wartości wejściowych, zawsze nieujemnadiff_tags: różnicatag1 - tag2max: największa z poprawnie odczytanych wartości liczbowychmin: najmniejsza z poprawnie odczytanych wartości liczbowychsum: suma wszystkich poprawnie odczytanych wartości liczbowych
Obsługa wejścia
Bloczek po każdej zmianie wejściowej przelicza wynik ponownie. Dla wejścia, na którym właśnie pojawiła się nowa wartość, używana jest ta nowa wartość. Dla pozostałych połączeń używane są ich ostatnie zapamiętane wartości.
Obsługiwane są wyłącznie wejścia liczbowe typu całkowitego, zmiennoprzecinkowego, temperatury albo procentu. Wartości nieliczbowe są ignorowane albo powodują brak wyniku, zależnie od wybranego trybu:
- w trybach
avg,max,minisumkażda wartość nieliczbowa jest po prostu pomijana - w trybach
diff_smaller_than_biggeridiff_tagsobie wartości muszą być liczbowe; jeśli którejś nie da się odczytać liczbowo, wynik nie zostanie wyznaczony
Wymagania dotyczące połączeń:
- dla
avg,max,minisumdo wejścia musi być podłączony co najmniej jeden bloczek; dopuszczalne są więcej niż dwa połączenia - dla
diff_smaller_than_biggerwymagane są dokładnie dwa połączenia wejściowe - dla
diff_tagswymagane są dokładnie dwa połączenia wejściowe i muszą to być dokładnie linietag1oraztag2
Wejścia oznaczane za pomocą bloczka tag mają znaczenie wyłącznie w trybie diff_tags.
| Numer i nazwa wejścia | Opis działania |
|---|---|
tag1: Pierwszy składnik różnicy. |
Tylko w trybie diff_tags. Z tego wejścia pobierana jest wartość odejmowana od wyniku końcowego jako lewa strona działania tag1 - tag2. |
tag2: Drugi składnik różnicy. |
Tylko w trybie diff_tags. Z tego wejścia pobierana jest wartość odejmowana od tag1. |
Dodatkowe zasady działania:
- tryb
avgliczy średnią wyłącznie z tych wejść, z których udało się odczytać wartość liczbową - tryb
sumsumuje wyłącznie poprawne wartości liczbowe - tryby
maximinbiorą pod uwagę wyłącznie poprawne wartości liczbowe - jeśli w trybach
avg,sum,maxalbominnie ma ani jednej poprawnej wartości liczbowej, na wyjściu pojawia sięnull - jeśli w trybach
diff_smaller_than_biggeralbodiff_tagsnie da się odczytać jednej z wymaganych wartości liczbowych, na wyjściu pojawia sięnull
Precyzja i typ wyniku
Bloczek wykonuje obliczenia na wewnętrznej reprezentacji liczbowej z dokładnością do 3 miejsc po przecinku.
Zasady precyzji:
sum,max,min,diff_smaller_than_biggeridiff_tagszwracają wynik dokładny w granicach tej precyzjiavgdzieli sumę wartości przez liczbę poprawnych wejść przy użyciu dzielenia całkowitego na wewnętrznej reprezentacji, więc wynik jest obcinany do maksymalnie 3 miejsc po przecinku; bloczek nie wykonuje dodatkowego zaokrąglenia
Typ i jednostka wyniku:
- wyjście ma postać zwykłej wartości numerycznej
integeralbodouble - jeśli wynik nie ma części ułamkowej, bloczek zwraca liczbę całkowitą
- jeśli wynik ma część ułamkową, bloczek zwraca liczbę zmiennoprzecinkową
- jednostki wejściowe, takie jak temperatura czy procent, nie są zachowywane na wyjściu
Wyjścia bloczka
Bloczek posiada jedno wyjście.
Na wyjściu pojawia się wynik obliczenia wybranego przez parametr operation. Jeśli nie uda się wyznaczyć wyniku zgodnie z zasadami danego trybu, na wyjściu pojawia się null.
Opis statusu bloczka
Opis widoczny pod bloczkiem pokazuje tekstową reprezentację ostatnio obliczonego wyniku.
Przykłady:
2518.50
Jeśli ostatniego wyniku nie da się przedstawić tekstowo, opis przyjmuje postać Unknown value.. Dzieje się tak między innymi wtedy, gdy bieżący wynik jest null.
Błędy widoczne dla użytkownika
Bloczek może pokazywać następujące komunikaty błędów:
| Kod błędu | Opis błędu |
|---|---|
Failed read operation. |
W konfiguracji brakuje parametru operation albo nie da się go odczytać jako tekst. |
Invalid operation. |
Parametr operation ma wartość spoza obsługiwanej listy. |
Missing filter_duplicated_values configuration. |
W konfiguracji brakuje parametru filter_duplicated_values. |
Input disconnected. |
Do wejścia bloczka nie podłączono żadnego innego bloczka. |
Diff requires two connections. |
Tryb diff_smaller_than_bigger został wybrany, ale do wejścia nie podłączono dokładnie dwóch źródeł. |
Tag1 and tag2 required. |
Tryb diff_tags został wybrany, ale do wejścia nie podłączono dokładnie dwóch linii tag1 i tag2, albo jedna z tych linii przestała być dostępna. |
Przykłady działania
- Jeśli
operation = sumi na wejściach dostępne są wartości2,3.5i4, to na wyjściu pojawi się9.5. - Jeśli
operation = avgi poprawne wartości wejściowe to1,2i2, to na wyjściu pojawi się1.666. - Jeśli
operation = maxi do bloczka docierają wartości21,18i tekstopen, to tekst zostanie pominięty, a na wyjściu pojawi się21. - Jeśli
operation = diff_smaller_than_biggeri dwa wejścia mają wartości7oraz10, to na wyjściu pojawi się3. - Jeśli
operation = diff_tags,tag1 = 24.5, atag2 = 20, to na wyjściu pojawi się4.5. - Jeśli
operation = min, ale wszystkie wejścia mają wartości nieliczbowe, to na wyjściu pojawi sięnull, a opis bloczka zmieni się naUnknown value..