-> Hier kostenlos registrieren
Hallo zusammen,
derzeit programmiere ich einen FB, der Werte aufnehmen und diese aufbereiten soll, um im Anschluss daran die Werte vom eigenen Instanz-DB in ein globalen DB zu schieben.
Um dies zu realisieren, will ich den SFC20 blkmov verwenden.
Leider habe ich es bis jetzt noch nicht geschafft und bin mit meinem Latein am Ende, weswegen ich hoffe, hier Hilfe zu finden.
Das habe ich bis jetzt (nur Code, welcher für den BlockMove relevant ist):
Variablendeklaration
Quellcode zum Befüllen des Quell-DBs
Zwar gibt mir der Kompiler keine Fehlermeldung aus, jedoch werden die erwarteten Werte auch nicht im DB2 geschrieben/angezeigt.
Ich weiß nicht, was ich noch falsch mache.
Ich hoffe hier kann mir jemand bei meinem Problem helfen. Vielen Dank dafür schonmal im Voraus!
derzeit programmiere ich einen FB, der Werte aufnehmen und diese aufbereiten soll, um im Anschluss daran die Werte vom eigenen Instanz-DB in ein globalen DB zu schieben.
Um dies zu realisieren, will ich den SFC20 blkmov verwenden.
Leider habe ich es bis jetzt noch nicht geschafft und bin mit meinem Latein am Ende, weswegen ich hoffe, hier Hilfe zu finden.
Das habe ich bis jetzt (nur Code, welcher für den BlockMove relevant ist):
Code:
VAR_INPUT
PV_COUNT : WORD; //exemplarische Input-Variable
END_VAR
VAR_TEMP
//ANY-Pointer zur Ermittlung der Nummer des Instanz-DBs
IDBPointer : ANY;
AnyPointerIDB AT IDBPointer: STRUCT
BYTE0 :BYTE;
TYP :BYTE;
ANZ :WORD;
DBNR :WORD;
BZ :DWORD;
END_STRUCT;
//ANY-Pointer auf den Quell-DB (Instanz-DB)
SourcePointer: STRUCT
BYTE0 :BYTE;
TYP :BYTE;
ANZ :WORD;
DBNR :WORD;
BZ :DWORD;
END_STRUCT;
AnyPointerSource AT SourcePointer: ANY;
//ANY-Pointer auf den Ziel-DB
DestinPointer: STRUCT
BYTE0 :BYTE;
TYP :BYTE;
ANZ :WORD;
DBNR :WORD;
BZ :DWORD;
END_STRUCT;
AnyPointerDestin AT DestinPointer: ANY;
END_VAR
Code:
IDBPointer := PV_COUNT; //Zuweisung des Instanz-DB-Pointers zur Ermittlung der Nummer des Instanz-DBs
//Initialisierung des ANY-Pointers auf den Quell-DB (Instanz-DB)
SourcePointer.BYTE0 := 16#10; //Syntax-ID
SourcePointer.TYP := 16#02; //02 für Datentyp BYTE
SourcePointer.ANZ := 16#a; //Länge der zu kopierenden Daten 10Byte
SourcePointer.DBNR := AnyPointerIDB.DBNR; //DB-Nummer (Nummer des eigenen Instanz-DBs)
SourcePointer.BZ := 16#2a; //Startadresse des Quell-DBs 42
//Initialisierung des ANY-Pointers auf den Ziel-DB
DestinPointer.BYTE0 := 16#10; //Syntax-ID
DestinPointer.TYP := 16#02; //02 für Datentyp BYTE
DestinPointer.ANZ := 16#a; //Länge der zu empfangenden Daten 10Byte
DestinPointer.DBNR := 16#2; //DB-Nummer DB2
DestinPointer.BZ := 16#22; //Startadresse des Ziel-DBs 34
erg := SFC20(srcblk := AnyPointerSource, dstblk := AnyPointerDestin); //Schiebe den Quell-DB in Ziel-DB
Zwar gibt mir der Kompiler keine Fehlermeldung aus, jedoch werden die erwarteten Werte auch nicht im DB2 geschrieben/angezeigt.
Ich weiß nicht, was ich noch falsch mache.
Ich hoffe hier kann mir jemand bei meinem Problem helfen. Vielen Dank dafür schonmal im Voraus!