# LGF_CompareVariant (FC / 3.0.1)

Übersicht

Autor: Siemens Digital Industry

## Kurzbeschreibung

Die Funktion vergleicht zwei strukturierte Aktualparameter (Array, PLC-Datentyp) und gibt aus, ob sie dem gleichen Typ entsprechen und gleiche Werte haben.

Vergleich von Arrays oder PLC Datentypen mit einer Länge von maximal 200 Bytes. Sobald eines der verglichenen Bytes unterschiedlich ist, ist das Funktionsergebniss FALSE.

Einschränkungen: Die verschlatenen Strukturen dürfen keine `Strings` enthalten Die verschaltenen Strukturen dürfen eine größe von 200 Bytes nicht überschreiden wegen der Internen Nuffergröße

### Baustein Schnittstelle

| LGF_CompareVariant (FC) |
--- | --- | ---
|  |  |  |  | Ret_Val |  |  | Bool
|  |  |  |  | error |  |  | Bool
|  |  |  |  | status |  |  | Word
|  |  |  |  | subFunctionStatus |  |  | Word
Variant |  |  | variableA |  |  | Variant
Variant |  |  | variableB |  |  | Variant

### Output Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
Ret_Val | Bool | FALSE: Werte der Vergleichsvariablen oder PLC-Datentypen sind unterschiedlich.TRUE: Werte der Vergleichsvariablen sind gleich und PLC-Datentypen sind identisch.
error | Bool | FALSE: Kein Fehler / TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten
status | Word | 16#0000-16#7FFF: Status des FB / 16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle)
subFunctionStatus | Word | Status oder Rückgabewert von aufgerufenen FB's / FC's und Systemfunktionen

### In/Out Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
variableA | Variant | Erste Vergleichsvariable mit beliebigen Datentyp
variableB | Variant | Zweite Vergleichsvariable mit beliebigen Datentyp

### Status & Error Meldungen

Code / Wert | Bezeichner / Beschreibung
--- | ---
16#0000 | STATUS_NO_ERROR Abarbeitung ohne Fehler beendet
16#8201 | ERR_INPUT_TYPES_MUST_MATCH Fehler, die Eingabetypen müssen übereinstimmen, z.B. Struct
16#8202 | ERR_INPUT_TYPES_LENGTH_NOT_EQUAL Fehler, die Eingabetypen haben nach der Serialisierung unterschiedliche Längen.`subFunctionStatus` liefert einen Indikator für die unterschiedliche Länge.
16#8601 | ERR_SERIALIZE_VARIABLE_A Fehler während der Serialisierung von `variableA` - weitere infos in `subFunctionStatus`
16#8602 | ERR_SERIALIZE_VARIABLE_B Fehler während der Serialisierung von `variableB` - weitere infos in `subFunctionStatus`

## Funktionsbeschreibung

Hinweis
  In `subFunctionStatus` wird der Status von aufgerufenen Anweisungen ausge-geben. Der Ausgangswert in `status` gibt in diesem Fall an, welche Anweisung den Fehler verursacht hat. Holen Sie sich in diesem Fall die Informationen aus der TIA Portal Online Hilfe zu den jeweiligen Anweisungen.

Dieser Baustein vergleicht zwei (strukturierte) Aktualparameter und gibt aus, ob sie dem gleichen Wert entsprechen.

Hinweis

  Folgende Unterschiede können mit der Vergleichsmethode (Bytelevel) nicht erkannt werden:

  - Variablen vom Datentyp `Struct` können nicht verglichen werden.
  - Bei Strings können im Bereich zwischen tatsächlicher Länge und Maximallänge Unterschiede vorhanden sein.
  - Bei `REAL` Zahlen in der Struktur kann auch bei "gleichen" Variablen eine Ungleichheit angezeigt werden.
  - Variablen vom Typ `ARRAY of BOOL` können mit der Funktion nicht auf Gleichheit geprüft werden, da die verwendete Anweisung `CountOfElements` auch die Füllelemente mitzählt (z.B. bei einem `ARRAY[0..1] of BOOL` wird 8 zurückgegeben).

## Änderungshistorie

Version & Datum | Änderungsbeschreibung
--- | ---
| 1.0.0 | Siemens Industry Online Support
| 03.09.2015 | First released version
| 1.0.1 | Siemens Industry Online Support
| 11.02.2015 | Bug fix
| 1.0.2 | Siemens Industry Online Support
| 02.01.2017 | Upgrade: TIA V14 Update 1
| 1.0.3 | Siemens Industry Online Support
| 17.08.2018 | Upgrade: TIA V15 Update 2
| 1.0.4 | Siemens Industry Online Support
| 23.11.2018 | Upgrade: TIA V15.1
| 1.0.5 | Simatic Systems Support
| 03.06.2019 | Refactoring and performance improvment Change error handling to status and subFctStatus update serialize instruction add eno handling
| 3.0.0 | Simatic Systems Support
| 23.04.2020 | Set version to V3.0.0, harmonize the version of the whole library
| 3.0.1 | Simatic Systems Support
| 19.01.2020 | Insert documentation