Jak działa instrukcja CMP == w PLC Siemens?

Udostępnij
Jak działa instrukcja CMP == w PLC Siemens?

Wprowadzenie do instrukcji CMP PLC

Możesz użyć instrukcji “Equal” do określenia, czy pierwsza wartość porównawcza (<Operand1>) jest równa drugiej wartości porównawczej (<Operand2>).

Jeśli warunek porównania jest spełniony, instrukcja zwraca wynik operacji logicznej (RLO) “1”. Jeśli warunek porównania nie jest spełniony, instrukcja zwraca RLO “0”. RLO instrukcji jest logicznie połączone z RLO całego rzędu w następujący sposób:

  • Przez AND, gdy instrukcja porównania jest połączona w szereg.
  • Przez OR, gdy instrukcja porównania jest połączona równolegle.

Określ pierwszą wartość porównawczą (<Operand1>) w miejscu na operand powyżej instrukcji. Określ drugą wartość porównawczą (<Operand2>) w miejscu na operand poniżej instrukcji.

Jeśli sprawdzenie IEC jest włączone, porównywane operandy muszą być tego samego typu danych. Jeśli sprawdzenie IEC nie jest włączone, szerokość operandów musi być taka sama.

Jeśli chcesz porównać typy danych REAL lub LREAL, zamiast instrukcji “CMP ==: Equal” zaleca się użycie instrukcji “IN_RANGE: Wartość w zakresie”.

Podczas porównywania liczb zmiennoprzecinkowych, porównywane operandy muszą mieć ten sam typ danych, niezależnie od ustawienia dla sprawdzenia IEC.

Specjalne wzory bitowe nieważnych liczb zmiennoprzecinkowych (NaN), które są wynikiem nieokreślonych wyników (np. pierwiastek z -1), nie mogą być porównywane. Oznacza to, że jeśli jeden z operandów ma wartość NaN, instrukcja “CMP ==: Equal” ma wynik FALSE.

Indywidualne znaki są porównywane na podstawie ich kodu (na przykład ‘a’ jest większe niż ‘A’) podczas porównywania łańcuchów. Porównanie odbywa się od lewej do prawej. Pierwszy różniący się znak decyduje o wyniku porównania.

Poniższa tabela pokazuje przykłady porównań łańcuchów:

<Operand1><Operand2>RLO instrukcji
‘AA’‘AA’1
‘Hello World’‘HelloWorld’0
‘AA’‘aa’0
‘aa’‘aaa’0

Możesz również porównywać poszczególne znaki łańcucha. Numer znaku do porównania jest określony w nawiasach kwadratowych obok nazwy operandów. “MyString[2]”, na przykład, porównuje drugi znak łańcucha “MyString”.

Uwaga: Możliwość porównania struktur jest dostępna dla CPU serii S7-1200 od wersji oprogramowania >= 4.2, a dla CPU serii S7-1500 od wersji oprogramowania >= 2.0.

Możesz porównywać wartości dwóch złożonych operandów, gdy oba tagi są tego samego typu danych strukturalnych. Takie porównania są także istotnym elementem przy pracy z językiem scl. Programowanie w języku SCL często obejmuje obsługę złożonych struktur danych. Gdy struktury są porównywane, porównywane operandy muszą mieć ten sam typ danych, niezależnie od ustawienia dla sprawdzenia IEC. Wyjątkiem są porównania, w których jeden z dwóch operandów jest VARIANT lub ANY.

Poniższa tabela pokazuje parametry instrukcji “Equal”:

ParametryDeklaracjaTyp danychObszar pamięciOpis
<Operand1>WejścieBit strings, integers, floating-point numbers, character strings, timers, date and time, ARRAY of <data type> with fixed and variable ARRAY limits, STRUCT, VARIANT, ANY, PLC data typeI, Q, M, D, L, P lub stałaPierwsza wartość porównawcza
<Operand2>WejścieBit strings, integers, floating-point numbers, character strings, timers, date and time, ARRAY of <data type> with fixed and variable ARRAY limits, STRUCT, VARIANT, ANY, PLC data typeI, Q, M, D, L, P lub stałaDruga wartość do porównania

Przykład: Następujący przykład pokazuje, jak działa instrukcja:

Przykład działania instrukcji

Wyjście “TagOut” jest ustawione, gdy spełnione są następujące warunki:

  • Operandy “TagIn_1” i “TagIn_2” mają stan sygnału “1”.
  • Warunek instrukcji porównania jest spełniony, jeśli “Tag_Value1” = “Tag_Value2”.
Udostępnij
Polecany kurs!
Do 20.09.2022 rabat -15% na:

SIMATIC S7 w akcji

Zapisz się na newsletter!
Autor wpisów
Tomasz Gilewski

Witam, nazywam się Tomasz Gilewski. Jestem autorem książek o sterowniku S7-1200 oraz panelach HMI (czyli sprzęt firmy Siemens). Od kilkunastu lat zajmuję się programowaniem wyłącznie na sprzęcie oraz narzędziach inżynieryjnych firmy Siemens.

Zostaw komentarz

Wybierz walutę
Przewiń do góry

Wyszukaj na stronie