Instrukcje TIA Portal

Operacje Porównania
Logika decyzyjna i Zakresy

Porównywanie wartości to silnik przemysłowej logiki decyzyjnej. Opanuj standardowe komparatory, testy zakresu i weryfikację poprawności.

Czym są operacje porównania w TIA Portal?

Operacje porównania pozwalają na porównanie dwóch wartości tego samego typu danych (Liczby całkowite, Rzeczywiste, Czas itp.) lub sprawdzenie, czy wartość znajduje się wewnątrz lub na zewnątrz zdefiniowanego zakresu. Są one fundamentalne dla tworzenia progów alarmowych, warunków przejścia i pętli regulacji.

TIA Portal oferuje standardowe komparatory (==, <>, >= itp.), instrukcje zakresu (IN_Range, OUT_Range), testy poprawności dla liczb zmiennoprzecinkowych oraz zaawansowane instrukcje dla typów danych Variant i wskaźników DB.

Standardowe Komparatory

Ocena równości i nierówności między dwoma operandami

CMP == — Równy (Equal)

==

Co robi

Porównuje dwa operandy (IN1 i IN2). Jeśli IN1 jest równy IN2, instrukcja zwraca TRUE. Obsługuje prawie wszystkie proste typy danych.

Kiedy używać

Sprawdzenie, czy licznik osiągnął cel, czy wartość zadana HMI odpowiada wartości aktualnej lub czy konkretny stan maszyny jest aktywny.

Porady Pro

Uwaga na typy Real: ścisła równość może zawieść z powodu precyzji. Preferuj margines lub zakres.

W SCL: IF value1 = value2 THEN ...

Możesz porównywać ciągi znaków (String), aby zweryfikować kody identyfikacyjne.

CMP <> — Nierówny (Not equal)

<>

Co robi

Zwraca TRUE, jeśli oba operandy IN1 i IN2 są różne. Jest to odwrotność równości.

Kiedy używać

Wykrycie zmiany wartości, upewnienie się, że czujnik nie zwraca 0 lub zweryfikowanie, czy tryb pracy nie jest tym zabronionym.

Porady Pro

Często używane do wyzwalania akcji, gdy tylko wartość odchyli się od zadanej.

W SCL: IF value1 <> value2 THEN ...

Może być użyte do porównywania znaczników czasu (DTL), aby sprawdzić, czy data się zmieniła.

CMP >= — Większy lub równy

>=

Co robi

Zwraca TRUE, jeśli pierwsza wartość (IN1) jest większa lub równa drugiej (IN2).

Kiedy używać

Wyzwalanie alarmu wysokiego poziomu, zezwolenie na grzanie, dopóki temperatura nie zostanie osiągnięta.

Porady Pro

Idealne dla progów bezpieczeństwa, gdzie wartość graniczna musi być zawarta w warunku.

W SCL: IF level >= setpoint THEN ...

Może być używane z typami Time, aby sprawdzić, czy upłynął minimalny czas.

CMP <= — Mniejszy lub równy

<=

Co robi

Zwraca TRUE, jeśli IN1 jest mniejszy lub równy IN2.

Kiedy używać

Monitorowanie niskiego poziomu, zatrzymanie pompy, walidacja minimalnego ciśnienia.

Porady Pro

Często łączone z histerezą, aby uniknąć drgań wyjścia.

Działa natywnie z typami Date i Time.

W SCL: IF pressure <= min_limit THEN ...

CMP > — Większy (Greater than)

>

Co robi

Zwraca TRUE, jeśli IN1 jest ściśle większy niż IN2.

Kiedy używać

Ścisłe porównanie, które nie powinno zawierać wartości docelowej.

Porady Pro

Rzadziej używane niż >= w automatyce, ale przydatne w algorytmach matematycznych.

W SCL: IF current > max THEN ...

Preferowane do porównywania indeksów pętli (FOR).

CMP < — Mniejszy (Less than)

<

Co robi

Zwraca TRUE, jeśli IN1 jest ściśle mniejszy niż IN2.

Kiedy używać

Testy ścisłych dolnych granic.

Porady Pro

Przydatne do sprawdzania, czy wartość jest 'ujemna' (val < 0).

W SCL: IF val < 0 THEN ...

Działa ze znakami (sortowanie alfabetyczne).

Operacje Zakresu

Sprawdzanie przynależności do przedziału [MIN..MAX]

IN_Range — W zakresie

IN_Range

Co robi

Sprawdza, czy wartość (VAL) znajduje się między dolną granicą (MIN) a górną granicą (MAX). Przedział jest domknięty: MIN <= VAL <= MAX.

Kiedy używać

Monitorowanie okna pracy (np. ciśnienie między 2 a 5 bar), walidacja prędkości maszyny.

Porady Pro

Korzystnie zastępuje dwa komparatory połączone szeregowo, czyniąc segment bardziej czytelnym.

Jeśli MIN > MAX, instrukcja zawsze zwraca FALSE.

Bardzo przydatne dla blokad 'Ready to Run', wymagających wielu warunków analogowych.

OUT_Range — Poza zakresem

OUT_Range

Co robi

Zwraca TRUE, jeśli wartość (VAL) znajduje się poza przedziałem zdefiniowanym przez MIN i MAX. Albo VAL < MIN, albo VAL > MAX.

Kiedy używać

Wykrywanie anomalii lub przekroczenia skrajnych progów (alarm zakresu).

Porady Pro

Jest to dokładna odwrotność IN_Range.

Użyj go do uproszczenia logiki alarmów procesowych.

W SCL: res := (val < min) OR (val > max);

Testy Poprawności

Sprawdzanie integralności liczb zmiennoprzecinkowych

|OK| — Sprawdź poprawność

|OK|

Co robi

Sprawdza, czy wartość zmiennoprzecinkowa (Real lub LReal) jest poprawną liczbą. Zwraca FALSE, jeśli wartością jest NaN (Not a Number) lub Inf (Infinity).

Kiedy używać

Po złożonych obliczeniach (dzielenie, pierwiastkowanie, log), aby uniknąć propagacji błędów matematycznych, które mogłyby zatrzymać PLC.

Porady Pro

Niezbędne przed wysłaniem wartości Real do wyjścia analogowego lub napędu.

Pozwala wykryć pośrednie dzielenie przez zero.

Pomocne przy filtrowaniu sygnałów z uszkodzonych czujników.

|NOT_OK| — Sprawdź niepoprawność

|NOT_OK|

Co robi

Zwraca TRUE, jeśli wartość zmiennoprzecinkowa jest niepoprawna (NaN lub Inf).

Kiedy używać

Wyzwalanie bitu błędu obliczeń lub wymuszenie wartości bezpiecznej.

Porady Pro

Użyj go, aby wprowadzić maszynę w stan bezpieczny, jeśli obliczenie trajektorii zawiedzie.

Jest to odpowiednik IS_NAN w innych językach.

W SCL: IF NOT OK(value) THEN ...

Zaawansowane porównania (Variant)

Instrukcje do programowania dynamicznego i typów złożonych

EQ_Type / NE_Type

Co robi

Porównuje typ danych zmiennej Variant z typem innej zmiennej lub typem zdefiniowanym.

Kiedy używać

W blokach generycznych, które muszą przetwarzać różne typy danych (np. blok logowania akceptujący Int lub Real).

Porady Pro

Kluczowe dla programowania obiektowego i bibliotek wielokrotnego użytku.

Pozwala na zabezpieczenie dynamicznego dostępu do pamięci.

Używane z instrukcją VariantGet.

IS_NULL / NOT_NULL

Co robi

Sprawdza, czy wskaźnik (Variant lub DB_ANY) jest pusty (nie wskazuje na nic).

Kiedy używać

Unikanie błędów dostępu przy używaniu bloków DB adresowanych pośrednio.

Porady Pro

Zawsze testuj NOT_NULL przed wywołaniem metody lub odczytem danych przez wskaźnik.

Odpowiednik obiektu 'Nothing' lub 'null' w C#/Java.

Niezbędne do zarządzania listami powiązanymi lub strukturami dynamicznymi w PLC.

IS_ARRAY

Co robi

Sprawdza, czy zmienna Variant wskazuje na tablicę (Array).

Kiedy używać

Programowanie funkcji przetwarzania wsadowego lub buforów danych.

Porady Pro

Połącz z CountOfElements, aby poznać rozmiar tablicy.

Pozwala na tworzenie uniwersalnych funkcji sortowania.

Działa również dla tablic struktur (UDT).

Porównanie komparatorów — Którego użyć?

Wybór odpowiedniej instrukcji dla Twojej logiki PLC

Chcesz...Użyj tegoPrzykład
Testować ścisłą równośćCMP ==Kod produktu poprawny
Wysoki próg bezpieczeństwaCMP >=Ciśnienie > 10 bar
Utrzymać w strefieIN_RangeTemp między 18 a 24°C
Monitorować błędy Real|OK|Sprawdzić wynik dzielenia
Zweryfikować wskaźnik DBNOT_NULLDB receptury załadowany
Sprawdzić typ VariantEQ_TypeWejście to rzeczywiście Int

Często Zadawane Pytania

Dlaczego moje porównanie == czasem zawodzi przy liczbach Real?

Liczby Real (zmiennoprzecinkowe) mają ograniczoną precyzję. Obliczenie może dać wynik 10.000001 zamiast 10.0. Zawsze używaj IN_Range z małą tolerancją (np. między 9.99 a 10.01) do porównywania wartości zmiennoprzecinkowych.

Jaka jest różnica między IN_Range a dwoma komparatorami w szeregu?

Funkcjonalnie jest to identyczne. Jednakże IN_Range jest graficznie bardziej kompaktowy, łatwiejszy do odczytania i wydajniejszy, ponieważ PLC przetwarza instrukcję w jednym kroku.

Do czego służą instrukcje |OK| i |NOT_OK|?

Służą do wykrywania 'cichych' błędów w obliczeniach Real. Jeśli wyciągniesz pierwiastek kwadratowy z liczby ujemnej, wynikiem jest NaN. Bez testu |OK|, to NaN zanieczyści wszystkie Twoje inne obliczenia i może spowodować zatrzymanie CPU.

Czy można porównywać kompletne struktury (UDT)?

Instrukcja CMP == nie pozwala na bezpośrednie porównanie dwóch struktur. Musisz porównać każdy składnik indywidualnie lub użyć specyficznego bloku, który porównuje obszary pamięci.

Generuj swoją logikę porównania przez SI

Opisz swoje progi i warunki w języku naturalnym, T-IA Connect wygeneruje zoptymalizowane sieci porównawcze z obsługą błędów.