Funkcje Matematyczne
Obliczenia i Algorytmy
Od prostego dodawania po złożone równania — funkcje matematyczne przekształcają surowe dane w użyteczne informacje do sterowania procesami.
Czym są funkcje matematyczne w TIA Portal?
Funkcje matematyczne w TIA Portal umożliwiają wykonywanie obliczeń arytmetycznych, trygonometrycznych i logarytmicznych na różnych typach danych (liczby całkowite, rzeczywiste). Są one niezbędne do skalowania czujników, obliczania trajektorii czy regulacji pętli PID.
TIA Portal wyróżnia się instrukcją CALCULATE, która pozwala na zapisanie złożonego wyrażenia (np. (in1 + in2) * in3 / in4) w jednym bloku, co poprawia czytelność w porównaniu z ciągiem pojedynczych bloków ADD/MUL.
Podstawowa Arytmetyka
Fundamentalne operacje przetwarzania danych
CALCULATE — Oblicz
CALCCo robi
Pozwala zdefiniować dowolne wyrażenie matematyczne łączące wiele wejść (IN1...INn). Wprowadzasz formułę, a TIA Portal generuje odpowiednie piny.
Kiedy używać
Gdy obliczenie wymaga więcej niż dwóch kroków. Idealne do obliczeń przepływu, objętości lub dowolnych złożonych formuł fizycznych.
Porady Pro
Możesz używać funkcji takich jak ABS, SQRT lub SIN bezpośrednio w wyrażeniu CALCULATE.
Zawsze sprawdzaj wyjściowy typ danych (OUT), aby uniknąć przepełnienia (Overflow).
W SCL jest to naturalny odpowiednik bezpośredniego przypisania: out := (in1 + in2) * in3;
ADD / SUB / MUL / DIV
+Co robią
Standardowe instrukcje arytmetyczne: Dodawanie, Odejmowanie, Mnożenie i Dzielenie.
Kiedy używać
Do prostych i szybkich operacji między dwiema wartościami.
Porady Pro
Przy dzieleniu (DIV) zawsze używaj testu |OK| lub sprawdzaj, czy dzielnik nie jest zerem, aby uniknąć zatrzymania CPU.
Instrukcja ADD może przyjąć więcej niż dwa wejścia po kliknięciu żółtej ikony na bloku.
Dla liczb całkowitych DIV zwraca iloraz całkowity. Użyj MOD dla reszty.
MOD — Modulo
MODCo robi
Zwraca resztę z dzielenia całkowitego między IN1 a IN2.
Kiedy używać
Zarządzanie buforami cyklicznymi, naprzemienna praca (np. pompy 1 i 2) lub konwersja jednostek (np. sekundy na minuty/sekundy).
Porady Pro
Bardzo przydatne do wyzwalania akcji co 'N' cykli.
Dostępne tylko dla całkowitoliczbowych typów danych (Int, DInt itp.).
SCL: remainder := value1 MOD value2;
Znak i Inkrementacja
Zarządzanie znakiem i szybkie operacje jednostkowe
INC / DEC — Inkrementacja / Dekrementacja
++Co robi
Dodaje lub odejmuje 1 od określonej zmiennej (typu InOut).
Kiedy używać
Proste liczniki sztuk, indeksy pętli, zarządzanie kolejkami.
Porady Pro
Szybsze w zapisie niż pełny blok ADD lub SUB.
Uwaga na typ danych: inkrementacja Int przy 32767 spowoduje przejście na -32768.
W SCL: i := i + 1; lub INC(i);
ABS — Wartość Bezwzględna
ABSCo robi
Zwraca dodatnią wartość liczby, niezależnie od tego, czy pierwotnie była dodatnia czy ujemna.
Kiedy używać
Obliczanie odchyłki między pomiarem a wartością zadaną, pomiar odległości, obliczanie błędu PID.
Porady Pro
Niezbędne do obliczania błędu bezwzględnego (|wartość zadana - pomiar|).
Obsługuje liczby całkowite i rzeczywiste.
SCL: positiveVal := ABS(originalVal);
Min / Max / Limit
Wybór i ograniczanie wartości
MIN / MAX — Minimum / Maksimum
MINCo robi
Porównuje N wartości i zwraca najmniejszą (MIN) lub największą (MAX).
Kiedy używać
Wybór najwyższej temperatury spośród kilku sond, określanie minimalnej dozwolonej prędkości.
Porady Pro
Do bloku można dodać tyle wejść, ile potrzeba.
Bardzo przydatne w diagnostyce wieloczujnikowej.
SCL: peakValue := MAX(val1, val2, val3);
LIMIT — Ogranicz
LIMITCo robi
Ogranicza (clamp) wartość wejściową (IN) między minimum (MN) a maksimum (MX).
Kiedy używać
Bezpieczeństwo na wyjściach analogowych (np. zapobieganie otwarciu zaworu powyżej 80%), ograniczanie nastaw użytkownika.
Porady Pro
Korzystnie zastępuje kombinację MIN i MAX.
Jeśli MN > MX, wyjście zależy od typu CPU, ale zazwyczaj brany jest MX.
SCL: safeVal := LIMIT(MN:=0.0, IN:=rawVal, MX:=100.0);
Potęgi i Pierwiastki
Obliczenia wykładnicze i pierwiastkowe
SQRT / SQR / EXPT
SQRTCo robią
SQRT (Pierwiastek kwadratowy), SQR (Kwadrat), EXPT (Dowolna potęga).
Kiedy używać
Obliczenia geometryczne, konwersja sygnałów nieliniowych, fizyka płynów.
Porady Pro
SQRT z liczby ujemnej daje NaN. Zawsze sprawdzaj wejście lub użyj ABS.
EXPT jest zasobożerne dla CPU, używaj SQR dla zwykłych kwadratów.
SCL: area := 3.14 * SQR(radius);
Trygonometria
Obliczenia kątów i rotacji
SIN / COS / TAN / ASIN...
SINCo robią
Standardowe obliczenia trygonometryczne i ich odwrotności (arcsin, arccos, arctan). Kąty są zawsze w RADIANACH.
Kiedy używać
Kinematyka robotów, obliczenia pozycjonowania kątowego, przetwarzanie sygnałów oscylacyjnych.
Porady Pro
Aby przeliczyć stopnie na radiany: Radiany = Stopnie * (PI / 180).
TAN(PI/2) dąży do nieskończoności, monitoruj wejścia.
Używaj stałych systemowych dla PI, aby zagwarantować precyzję.
Funkcje Zaawansowane
Logarytmy i części ułamkowe
LN / EXP / FRAC
LNCo robią
LN (Logarytm naturalny), EXP (Wykładnicza e^x), FRAC (Wyodrębnia część dziesiętną).
Kiedy używać
Modelowanie procesów chemicznych, wzrost wykładniczy lub separacja jednostek (FRAC).
Porady Pro
FRAC(12.34) zwraca 0.34. Bardzo praktyczne przy obliczeniach precyzji czasowej.
EXP jest dokładną odwrotnością LN.
SCL: fraction := FRAC(totalValue);
Porównanie podejść obliczeniowych
LAD vs SCL — Którą metodę wybrać?
| Typ obliczeń | Zalecana metoda | Dlaczego? |
|---|---|---|
| Proste dodawanie | Blok ADD (LAD) | Wizualne i łatwe do śledzenia |
| Złożona formuła | Blok CALCULATE | Kompaktowy i redukuje liczbę segmentów |
| Algorytm matematyczny | Język SCL | Składnia zbliżona do C/Pascal, idealna do formuł |
| Obliczenia trygonometryczne | SCL lub CALCULATE | Pojedyncze bloki zajmują zbyt dużo miejsca |
| Ograniczanie sygnału | Blok LIMIT | Standard Siemens, bardzo solidny |
| Resetowanie indeksu | Instrukcja INC/DEC | Bardzo szybka implementacja |
Często Zadawane Pytania
Jaka jest przewaga CALCULATE nad wieloma blokami ADD/MUL?
CALCULATE znacznie redukuje miejsce zajmowane w programie. Zamiast 5 segmentów z pośrednimi zmiennymi tymczasowymi, masz jeden blok z czytelną formułą. Jest też łatwiejszy w utrzymaniu, jeśli formuła ulegnie zmianie.
Jak TIA Portal radzi sobie z błędami obliczeniowymi (np. dzielenie przez zero)?
W S7-1200/1500 błąd matematyczny nie musi zatrzymywać CPU (zależy od konfiguracji), ale wynik staje się NaN. KLUCZOWE jest użycie instrukcji |OK| po czułym obliczeniu, aby zweryfikować wynik przed jego użyciem.
Czy funkcje trygonometryczne używają stopni czy radianów?
Wszystkie funkcje (SIN, COS, TAN itp.) używają wyłącznie RADIANÓW. Jeśli HMI dostarcza stopnie, musisz pomnożyć wartość przez 0.01745329 (PI/180) przed podaniem jej do bloku.
Czy mogę wykonywać obliczenia na 64 bitach (LReal)?
Tak, S7-1500 natywnie obsługują typ LReal (Long Real) dla zwiększonej precyzji. Większość funkcji matematycznych akceptuje ten typ.