-> Hier kostenlos registrieren
Hallo Zusammen, ich bin gerade dabei mir ein Programm zu schreiben, bei dem zwei Strukturen verglichen werden. Hierfür habe ich eine Lösung hier aus dem Forum gefunden (https://www.sps-forum.de/beckhoff-c...trukturinhalte-vergleichen-unter-twincat.html)
Somit kann ich super Strukturen vergleichen.
Mein Problem ist das eine Struktur wie folgt aussieht:
die andere Struktur sieht wie folgt aus:
Beinhaltet meine erste Struktur ("St_Daten ") keine Arrays kann ich diese super mit meiner zweiten Struktur ("St_Positionen") vergleichen.
Aber Sobald die Arrays in der ersten Struktur vorhanden sind, ist der vergleich nie gleich, weil ja in der ersten Struktur Arrays drin sind und die Werte dann im Vergleich zur zweiten Struktur unterschiedlich sind.
Meine Frage ist, kann ich bei meinem Vergleich irgendwie sagen er soll nur auf das z.B. 4.Array von Struktur eins("St_Daten") mit der zweiten Struktur ("St_Positionen") vergleichen??
Code:
FUNCTION CompareStruct : BOOL
VAR_INPUT
adrS1: POINTER TO BYTE; (* Bekommt mit dem ADR Operator die Adresse von der 1. Struktur*)
adrS2: POINTER TO BYTE; (* Bekommt mit dem ADR Operator die Adresse von der 2. Struktur*)
uiSize: UINT; (* Bekommt die mit SIZEOF ermittelte Größe einer der beiden Strukturen*)
END_VAR
VAR
i: UINT;
END_VAR
CompareStruct := TRUE;
FOR i:= 1 TO uiSize DO
IF adrS1^ <> adrS2^ THEN
CompareStruct:= FALSE;
EXIT;
END_IF
adrS1:= adrS1 + 1;
adrS2:= adrS2 + 1;
END_FOR
Mein Problem ist das eine Struktur wie folgt aussieht:
Code:
TYPE St_Daten :
STRUCT
SAR_Rezeptname: ARRAY[1..20] OF STRING;
LRAR_Pos_X_Achse: ARRAY[1..20] OF LREAL;
LRAR_Pos_Z_Achse: ARRAY[1..20] OF LREAL;
LRAR_Pos_Y_Achse: ARRAY[1..20] OF LREAL;
LRAR_Spanndruck: ARRAY[1..20] OF LREAL;
XAR_Gas_On: ARRAY[1..20] OF BOOL;
XAR_Lampe_On: ARRAY[1..20] OF BOOL;
END_STRUCT
END_TYPE
die andere Struktur sieht wie folgt aus:
Code:
TYPE St_Positionen :
STRUCT
SAR_Rezeptname: STRING;
LRAR_Pos_X_Achse: LREAL;
LRAR_Pos_Z_Achse: LREAL;
LRAR_Pos_Y_Achse: LREAL;
LRAR_Spanndruck: LREAL;
XAR_Gas_On: BOOL;
XAR_Lampe_On: BOOL;
END_STRUCT
END_TYPE
Beinhaltet meine erste Struktur ("St_Daten ") keine Arrays kann ich diese super mit meiner zweiten Struktur ("St_Positionen") vergleichen.
Aber Sobald die Arrays in der ersten Struktur vorhanden sind, ist der vergleich nie gleich, weil ja in der ersten Struktur Arrays drin sind und die Werte dann im Vergleich zur zweiten Struktur unterschiedlich sind.
Meine Frage ist, kann ich bei meinem Vergleich irgendwie sagen er soll nur auf das z.B. 4.Array von Struktur eins("St_Daten") mit der zweiten Struktur ("St_Positionen") vergleichen??