Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 3 von 3

Thema: Indirekte Adressierung über einen ANY Pointer

  1. #1
    Registriert seit
    26.09.2009
    Beiträge
    61
    Danke
    20
    Erhielt 4 Danke für 4 Beiträge

    Standard


    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, 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!
    Zitieren Zitieren Indirekte Adressierung über einen ANY Pointer  

  2. #2
    Registriert seit
    01.11.2007
    Beiträge
    1.237
    Danke
    91
    Erhielt 407 Danke für 368 Beiträge

    Standard

    Zitat Zitat von sventek Beitrag anzeigen
    Zeiger.Kennung := 16#1020;
    Ich denke, die Kennung sollte 1002 sein.

    Grüße von HaDi

  3. Folgender Benutzer sagt Danke zu HaDi für den nützlichen Beitrag:

    sventek (11.12.2009)

  4. #3
    Registriert seit
    26.09.2009
    Beiträge
    61
    Danke
    20
    Erhielt 4 Danke für 4 Beiträge

    Standard


    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

Ähnliche Themen

  1. Antworten: 20
    Letzter Beitrag: 03.08.2011, 13:26
  2. cpu stop indirekte adressierung pointer
    Von falk.jaeger im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 23.02.2009, 07:22
  3. Indirekte Adressierung
    Von wusel220983 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 18.05.2007, 18:19
  4. adressierung DB über Pointer
    Von TonyMono im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 13.06.2006, 22:24
  5. indirekte Adressierung und Pointer ??????????????
    Von Mathias W. im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 13.10.2003, 20:21

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •