-> Hier kostenlos registrieren
Hallo,
ich habe ein Problem mit dem SFC20 (BLKMOV).
Folgende Ausgangssituation:
- FC geschrieben in SCL
- im FC rufe ich über einen Pointer einen Datenbaustein auf
- den Inhalt möchte ich in eine Lokalvariabel ablegen (zum weiterverarbeiten)
- es handelt sich dabei um STRING-Variablen
hier die Struktur meiner VAR_TEMP
Hier ein Auszug ais meinem Programm – hinter dem / habe ich die aktuellen Wert von „Beobachten“ geschrieben
Wo ist mein Fehler, das der BLKMOV nicht ausgeführt wird?
Vielen Dank schon mal im Voraus! Dirk
ich habe ein Problem mit dem SFC20 (BLKMOV).
Folgende Ausgangssituation:
- FC geschrieben in SCL
- im FC rufe ich über einen Pointer einen Datenbaustein auf
- den Inhalt möchte ich in eine Lokalvariabel ablegen (zum weiterverarbeiten)
- es handelt sich dabei um STRING-Variablen
hier die Struktur meiner VAR_TEMP
Code:
VAR_TEMP
Pointer_Struct_in: STRUCT
ID: BYTE;
DataTyp: BYTE;
laenge: INT;
DB_Nummer: INT;
Byte_Bit: DWORD;
END_STRUCT;
Pointer_Source AT Pointer_Struct_in: ANY;
Pointer_Struct_out: STRUCT
ID: BYTE;
DataTyp: BYTE;
laenge: INT;
DB_Nummer: INT;
Byte_Bit: DWORD;
END_STRUCT;
Pointer_Meldung AT Pointer_Struct_out: ANY;
Meldung: STRING[32];
END_VAR
Hier ein Auszug ais meinem Programm – hinter dem / habe ich die aktuellen Wert von „Beobachten“ geschrieben
Code:
// Aufrug des DB wo der String her kommt
Pointer_Struct_in.ID:= 16#10; / 16#10
Pointer_Struct_in.DataTyp:= 16#13; / 16#13
Pointer_Struct_in.laenge:= 6; / 6
Pointer_Struct_in.DB_Nummer:= 60 / 60
Pointer_Struct_in.Byte_Bit:= 16#84000000 / 16#84000000
// Pointer auf Lokalvariable kopieren
Pointer_Meldung:= Meldung; /
// Anzeige zur Kontrolle
HM_Byte:= Pointer_Struct_out.ID; / 16#10
HM_Byte:= Pointer_Struct_out.DataTyp; / 16#13
HM_INT:= Pointer_Struct_out.laenge; / 1
HM_INT:= Pointer_Struct_out.DB_Nummer; / 0
HM_DWord:= Pointer_Struct_out.Byte_Bit; / 16#870000E0
Pointer_Struct_out.laenge:= 6; / 6
// Test ob etwas kopiert wurde
HM_INT:= LEN(Meldung); / 0
// BLKMOV
HM_INT:= BLKMOV(SRCBLK := Pointer_Source / -31873
,DSTBLK := Pointer_Meldung
);
// RET_VAL in Hex wandeln
HM_Word:= INT_TO_WORD(HM_INT); / 16#837F
// Test ob etwas kopiert wurde
HM_INT:= LEN(Meldung); / 0
Wo ist mein Fehler, das der BLKMOV nicht ausgeführt wird?
Vielen Dank schon mal im Voraus! Dirk