MEMCMP-Baustein
Kurz-Information
Name | MEMCMP |
---|---|
→POE-Typ | →Funktion |
Kategorie | IEC-Baustein, MemoryEnh, Baustein mit interner Fehlerdiagnose |
Konform zur →IEC-Norm |
|
Grafische Schnittstelle |
|
Verfügbar ab |
|
Funktionalität
Der Baustein vergleicht Bytes eines Eingangswerts mit jenen eines anderen Eingangswerts und liefert einen entsprechenden Wert als Information über den Vergleich (siehe die folgende Tabelle unter "Ergebniswert").
Sie geben den ersten Eingangswert über den Eingang IN1
ein und den zweiten Eingangswert über den Eingang IN2
. Die Anzahl der Bytes, die zu vergleichen sind, geben Sie über den Eingang LEN
ein.
Standardmäßig ist der Wert 0
für die Anzahl der Bytes vorgegeben.
Spezialfälle:
Bei
LEN = 0
wird die Anzahl der zu vergleichenden Bytes fürIN1
undIN2
automatisch berechnet.Falls der Wert für
LEN
> als die maximal mögliche Größe der EingangswerteIN1
undIN2
ist, wird bis zur maximalen Größe des Eingangswerts verglichen und der AusgangENO
auf den WertFALSE
gesetzt.- Falls an
IN1
oderIN2
einSTRING
-Element mit einer Länge anliegt, wird die Länge desSTRING
-Buffers verwendet. Die Länge desSTRING
-Buffers wird durch die Deklaration bestimmt.STRING
-Elemente mit einer Länge sind von Ihnen deklarierteSTRING
-Variablen; siehe "Deklaration von STRING-Variablen (inkl. Zugriff)". - Falls an
IN1
oderIN2
einSTRING
-Element ohne einer Länge anliegt, wird ebenfalls die Länge desSTRING
-Buffers verwendet. Die Länge desSTRING
-Buffers wird jedoch durch den resultierenden Wert bestimmt.STRING
-Elemente ohne einer anwenderdefinierten Länge ergeben sich, wenn SieSTRING
-Funktionen oder →Zeichenfolge-Literale verwenden. - Falls Sie den
MEMCMP
-Baustein verwenden, um eine initialisierte Strukturvariable mit einer Variable zu vergleichen, die mit demMEMSET
-Baustein identisch initialisiert wurde, ergibt sich beim Vergleich durchMEMCMP
, dass die beiden Strukturen unterschiedlich sind.
Eingänge, Ausgänge, Ergebniswert
Bezeichner | →Datentyp | Beschreibung | |
---|---|---|---|
Ein-/Ausgänge (VAR_IN_OUT): | IN1 | REAL , LREAL , USINT , UINT , UDINT , ULINT , SINT , INT , DINT , LINT , TIME , BOOL , BYTE , WORD , DWORD , LWORD , STRING , CHAR , , DATE , oder ein →anwenderdefinierter DatentypEinschränkung: Bei →ARRAY-Datentypen sind nur ein-dimensionale Arrays zulässig. | Eingangswert 1 |
IN2 | REAL , LREAL , USINT , UINT , UDINT , ULINT , SINT , INT , DINT , LINT , TIME , BOOL , BYTE , WORD , DWORD , LWORD , STRING , CHAR , , DATE , oder ein →anwenderdefinierter DatentypEinschränkung: Bei →ARRAY-Datentypen sind nur ein-dimensionale Arrays zulässig. | Eingangswert 2 | |
Eingänge: | LEN | UDINT | Anzahl der zu vergleichenden Bytes; Standardwert = |
Ergebniswert: | - | SINT | 0 , falls IN1 = IN2 -1 , falls IN1 < IN2 1 , falls IN2 > IN1 |
Der Eingang EN
und der Ausgang ENO
sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN
und zum Ausgang ENO
.
Interne Fehlerdiagnose für Baustein
Der Baustein prüft vor der Ausführung die anliegenden Werte.
Falls der Wert für LEN
> als die maximal mögliche Größe der Eingangswerte IN1
und IN2
ist, wird der Ausgang ENO
des Bausteins auf den Wert FALSE
(oder eine Entsprechung) zurückgesetzt.
Beispiel für Verwendung im ST-Editor
PROGRAM Test VAR Var1, Var2 : BYTE := 0; Var3 : DINT := 0; Var4 : DINT := 10; result1, result2, result3 : SINT; END_VAR result1 := MEMCMP(IN1 := Var1, IN2 := Var2, LEN := 1); (* The variable 'result1' evaluates to '0'. *) result2 := MEMCMP(IN1 := Var3, IN2:= Var4, LEN := 3); (* The variable 'result2' evaluates to '-1'. *) result3 := MEMCMP(IN1 := Var4, IN2:= Var3, LEN := 3); (* The variable 'result3' evaluates to '1'. *) END_PROGRAM
Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.