Vergleichen von DUT's/Struct in TwinCat3

Chris1803

New member
Beiträge
1
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo zusammen.

Ich suche eine Möglichkeit 2 DUT's miteinander zu vergleichen. Dieses soll dem Zweck einer Verriegelung dienen. Dies ist die Version die ich in TIA erfolgreich nutze:
- Ein UDT(PrgVrr) mit x-Boolschen Variabelen anlegen,
- Eine FC(VrrCheck) die als Temp sowie als Input Variable einen PrgVrr enthält anlegen. Als Programm lediglich: VrrCheck:= Input = Temp definieren.
- In zb einer Schrittkette ebenfalls als Temp eine PrgVrr(Bsp_vrr) anlegen und zb via scl beschreiben. (Bsp_vrr.Verriegelungsbit_1:= true;)
-Dann in der schritkette den FC aufrufen und die Bsp_vrr als input übergeben. Und den Returnwert nutzen.

Nun zur Frage; Wie erreiche ich es in Twincat diese Art des vergleichen von Anwenderdatentypen zu erreichen? Wenn ich den oben beschriebenen Weg gehe meldet Twincat während des kompilieren das ein Vergleich von DUT mit DUT nicht möglich ist.....

Memcmp habe ich schon versucht, das führt zu keinem Erfolg, ebenso mit Pointer to Byte.

Vielen Dank für die Hilfe.
 

Glasesba

Well-known member
Beiträge
247
Punkte Reaktionen
75
Ich mache das mit MEMCMP:

Code:
VAR_INPUT
Eingangsvariable:            TestDUT;           
END_VAR

VAR
Vergleichsvariable:            TestDUT;   
ADR_Eingangsvariable:       PVOID
SIZE_TestDUT:                 UDINT
ADR_Vergleichsvariable:     PVOID
END_VAR

ADR_Eingangsvariable     := ADR (Eingangsvariable);
SIZE_TestUDT             := SIZEOF (Eingangsvariable);
ADR_Vergleichsvariable     := ADR (Vergleichsvariable);

IF MEMCMP(pBuf1:=ADR_Eingangsvariable,pBuf2:=ADR_Vergleichsvariable, n:=SIZE_TestUDT) = 0 THEN
// Gleich
ELSE
// Ungleich
END_IF
 
Oben