-> Hier kostenlos registrieren
Hallo Zusammen!
Ich habe Schwierigkeiten mit einer indirekten Adressierung mittels ANY Pointer:
Im Orginalen stammt der Code aus dem Berger Buch. Nur wird in diesem Orginalcode das Datenziel dynamisch adressiert. Ich möchte aber gern die Datenquelle dynamisch adressieren. Ich habe versucht das entsprechend zu modifizieren. Leider funktioniert es nicht.
Bei entsprechender Parameterversorgung (ANY, 20, 0, 8) sollte der Quellpointer eigentlich so aussehen: P#DB20.DBX0.0 Byte 8. Bei meinem Beispiel sieht er so aus: P#DB20.DBX 0.0 ARRAY 8 und das kann eigentlich nicht sein, da das Format des ANY Pointers kein "ARRAY" kennt.
Hat jemand einen Tipp?
Danke!
Ich habe Schwierigkeiten mit einer indirekten Adressierung mittels ANY Pointer:
Code:
VAR_INPUT
Ziel : ANY;
Datenbaustein : INT;
Datenanfang : INT;
AnzahlByte : INT;
END_VAR
VAR_TEMP
SFC_ERROR : INT;
Quelldaten : ANY;
Zeiger AT Quelldaten : STRUCT
Kennung : WORD;
Anzahl : INT;
Baustein: INT;
Bereich : DWORD;
END_STRUCT;
END_VAR
BEGIN
//Beschreiben des ANY-Zeigers
Zeiger.Kennung := 16#1020;
Zeiger.Anzahl := AnzahlByte;
Zeiger.Baustein := Datenbaustein;
Zeiger.Bereich := INT_TO_WORD(Datenanfang) OR 16#8400_0000;
//Datenbereich kopieren
SFC_ERROR := BLKMOV(
SRCBLK := Quelldaten,
DSTBLK := Ziel);
END_FUNCTION_BLOCK
DATA_BLOCK CopyData
TITLE = 'Beispiel für indirekte Adressierung'
//Datenziel zum Funktionsbaustein FB "Copy"
Copy
BEGIN
END_DATA_BLOCK
Im Orginalen stammt der Code aus dem Berger Buch. Nur wird in diesem Orginalcode das Datenziel dynamisch adressiert. Ich möchte aber gern die Datenquelle dynamisch adressieren. Ich habe versucht das entsprechend zu modifizieren. Leider funktioniert es nicht.
Bei entsprechender Parameterversorgung (ANY, 20, 0, 8) sollte der Quellpointer eigentlich so aussehen: P#DB20.DBX0.0 Byte 8. Bei meinem Beispiel sieht er so aus: P#DB20.DBX 0.0 ARRAY 8 und das kann eigentlich nicht sein, da das Format des ANY Pointers kein "ARRAY" kennt.
Hat jemand einen Tipp?
Danke!