Indirekte Adressierung über einen ANY Pointer

sventek

Level-2
Beiträge
98
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen!

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!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo HaDi!

Genial! Superschnelle Hilfe!

Ich habe mir immer wieder die Tabelle für die verschiedenen Kennungen angesehen und habe sie einfach falsch interpretiert.


Danke!

Gruß
sventek
 
Zurück
Oben