MEMCMP-Baustein
Kurz-Information
Name |
MEMCMP |
→POE-Typ |
|
Kategorie |
IEC-Baustein, MemoryEnh, Baustein mit interner Fehlerdiagnose |
Konform zur →IEC-Norm |
nicht in IEC-Norm vorgesehen |
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ür IN1 und IN2 automatisch berechnet.
Falls der Wert für LEN > als die maximal mögliche Größe der Eingangswerte IN1 und IN2 ist, wird bis zur maximalen Größe des Eingangswerts verglichen und der Ausgang ENO auf den Wert FALSE gesetzt.
Falls an IN1 oder IN2 ein STRING-Element mit einer Länge anliegt, wird die Länge des STRING-Buffers verwendet. Die Länge des STRING-Buffers wird durch die Deklaration bestimmt.
STRING-Elemente mit einer Länge sind von Ihnen deklarierte STRING-Variablen; siehe " Deklaration von STRING-Variablen (inkl. Zugriff)" .Falls an IN1 oder IN2 ein STRING-Element ohne einer Länge anliegt, wird ebenfalls die Länge des STRING-Buffers verwendet. Die Länge des STRING-Buffers wird jedoch durch den resultierenden Wert bestimmt.
STRING-Elemente ohne einer anwenderdefinierten Länge ergeben sich, wenn Sie STRING-Funktionen oder →Zeichenfolge-Literale verwenden.Falls Sie den MEMCMP-Baustein verwenden, um eine initialisierte Strukturvariable mit einer Variable zu vergleichen, die mit dem MEMSET-Baustein identisch initialisiert wurde, ergibt sich beim Vergleich durch MEMCMP, dass die beiden Strukturen unterschiedlich sind.
Eingänge, Ausgänge, Ergebniswert
|
Bezeichner |
Beschreibung |
|
Ein-/Ausgänge |
IN1 |
REAL, LREAL, USINT, UINT, UDINT, ULINT, SINT, INT, DINT, LINT, TIME, BOOL, BYTE, WORD, DWORD, LWORD, STRING, CHAR, DATE_AND_TIME, DATE, TIME_OF_DAY, ein →anwenderdefinierter Datentyp oder ein →Funktionsbaustein
Weitere Einschränkung: Bei Funktionsbausteinen
sind keine Funktionsbausteine mit einem →allgemeinen Datentyp zulässig. Als Folge dieser Einschränkung können Sie die folgenden Bausteine nicht als Eingang des aktuellen Bausteins verwenden: LIMITER_O, LIMITER_U, FORCEMRK, MAX_HOLD, MIN_HOLD und
→Vendor-Funktionsbausteine
, die mit einem allgemeinen Datentyp deklariert sind |
Eingangswert 1 |
IN2 |
REAL, LREAL, USINT, UINT, UDINT, ULINT, SINT, INT, DINT, LINT, TIME, BOOL, BYTE, WORD, DWORD, LWORD, STRING, CHAR, DATE_AND_TIME, DATE, TIME_OF_DAY, ein →anwenderdefinierter Datentyp oder ein →Funktionsbaustein
Weitere Einschränkung: Bei Funktionsbausteinen
sind keine Funktionsbausteine mit einem →allgemeinen Datentyp zulässig. Als Folge dieser Einschränkung können Sie die folgenden Bausteine nicht als Eingang des aktuellen Bausteins verwenden: LIMITER_O, LIMITER_U, FORCEMRK, MAX_HOLD, MIN_HOLD und
→Vendor-Funktionsbausteine
, die mit einem allgemeinen Datentyp deklariert sind |
Eingangswert 2 |
|
Eingänge: |
LEN |
UDINT |
Anzahl der zu vergleichenden Bytes; Standardwert = 0 |
Ergebniswert: |
- |
SINT |
0, falls IN1 = IN2-1, falls IN1 < IN21, 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.
Informieren Sie sich unter:
"Bausteine für sichere Logik", ob dieser Baustein für das Entwickeln von sicherheitsrelevanten Anwendungen unterstützt wird.
"Kennzeichnung von sicherer Logik im FBS-Editor", welche Auswirkung die Verwendung des Bausteins als Baustein für sichere Logik hat.
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.