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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Fragen zu Any-Zeiger

  1. #1
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich gehe gerade das Beispiel (Kopiere mithilfe des SFC20 einen variablen Merkerbereich (im Beispiel ab MB 20) mit 8 Byte Länge in den DB10 ab DBB4.) von Volker durch:

    http://sps-forum.de/showthread.php?t=12923

    Meine Fragen dazu:

    Warum wird hier eine Variable (myZeiger) deklariert und warum belegt diese den Bereich 0.0 bis 9.7?

    Könnte man nicht direkt eingeben:

    Call SFC 20
    SRCBLK := P#M20.0 BYTE8 // Quelle
    RET_VAL := MW200
    DSTBLK := P#DB10.DBX 4.0 BYTE 8 // Ziel

    Vielen Dank für eine Erklärung!

    LG

    petzi
    Zitieren Zitieren Fragen zu Any-Zeiger  

  2. #2
    Registriert seit
    19.04.2009
    Beiträge
    302
    Danke
    31
    Erhielt 40 Danke für 32 Beiträge

    Standard

    Das macht er damit er diesen Zeiger verändern kann. So kann er im Lokaldatenstack die einzelnen Bytes verändern so wie er es braucht. Hat schon seine richtigkeit.

  3. #3
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ok Proxy,
    aber warum belegt die Variable (myZeiger) genau den Bereich 0.0 bis 9.7 - das wären ja 10 Byte; warum ist das gefordert, bzw. wo ist das ersichtlich?

    Danke

    petzi

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Das ist so, weil die Größe des ANY-Pointers so definiert ist.
    Vielleicht schaust du zu dem Thema auch mal in die Step7-Hilfe. Dort wird der Aufbau des Zeigers auch gut erklärt ...

    Gruß
    LL

  5. #5
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ok, Larry Laffer - das heißt also Byte 0 bis Byte 9. Soweit OK.

    Mir ist allerdings noch immer nicht ganz klar, was mit dieser temporären Variable (myZeiger) bezweckt werden soll?

    Wo steckt denn nun der "gebastelte Any-Zeiger" P#M20.0 BYTE8 drin? Das hat doch nichts mit dieser Variablen zu tun - oder doch?

    Würde denn dann der Quellcode der Funktion so aussehen:

    VAR_TEMP
    myZeiger : Any;
    END_VAR

    Netzwerk 1:

    L B#16#10
    T LB 0
    L B#16#2
    T LB 1
    L 8
    T LW 2
    L 0
    T LW 4
    L 20
    SLD 3
    T LD 6
    L B#16#83
    T LB 6

    Netzwerk 2:

    CALL "BLKMOV"
    SRCBLK :=#myZeiger
    RET_VAL:=MW200
    DSTBLK :=P#DB10.DBX 4.0 BYTE 8



    Blicke das irgendwie noch nicht...

    petzi
    Geändert von petzi (30.06.2009 um 15:21 Uhr)

  6. #6
    Registriert seit
    09.06.2007
    Ort
    Usa
    Beiträge
    111
    Danke
    9
    Erhielt 4 Danke für 2 Beiträge

    Standard

    http://sps-forum.de/showthread.php?t=12923

    Ganz oben steht der Aufbau eines Any Zeigers schau dir das nochmal an.

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    @Petzi:
    vielleicht noch einmal grundsätzlich :
    Volkers Beispiel ist so gemacht, weil der ANY-Pointer in vielen Fällen variabel benötigt wird. Deshalb hat er das Beispiel gemacht um zu verdeutlichen, wie das geht.
    Wenn du allerdings nur "fest" einen Bereich X in einen Bereich Y verschieben willst, dann geht es so, wie du es grundsätzlich (Beitrag #1) vorhattest.

    Gruß
    LL

  8. #8
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke für die Hilfe,
    mir ist der Aufbau des Any-Zeigers im Grunde jetzt schon klar.

    Ich habe nur mein Problem mit dieser Variable (myZeiger), weil ich nicht genau verstehe, was es mit ihr auf sich hat.

    Wenn ich euch also richtig verstanden habe, so wird einfach eine temporäre Variable in einer Funktion (FC) angelegt, um dieser dann beliebige "Any-Zeiger" zuweisen zu können.

    Wenn dem so ist, dann könnte der Quellcode z.B. so lauten:

    LAR1 P##myZeiger
    L B#16#10
    T LB 0
    L B#16#2
    T LB 1
    L 8
    T LW 2
    L 0
    T LW 4
    L 20
    SLD 3
    T LD 6
    L B#16#83
    T LB 6

    Somit würde ich also jetzt den Any-Zeiger P#M20.0 BYTE8 in das Adressregister 1 laden - ist das korrekt?
    petzi
    Geändert von petzi (30.06.2009 um 16:03 Uhr)

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Zitat Zitat von petzi Beitrag anzeigen
    Wenn dem so ist, wo kann ich dann dieser Variable so einen Any-Zeiger übergeben?
    Gar nicht, den kannst du nur manuell erzeugen. Alle direkten Zugriffen mit eier größeren Breite als 4 Byte funktionieren nicht mit Lade-Transferiere.

    Gruß
    LL

  10. #10
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... das heißt diese Variable (myZeiger) steht sozusagen nur als "Platzhalter" und ich könnte diese im Programm dann z.B. durch den Any-Zeiger P#M20.0 BYTE8 (oder irgend einen anderen) ersetzen?

    Danke,

    petzi

Ähnliche Themen

  1. Zeiger
    Von snowleopard1702 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 10.05.2011, 17:07
  2. Zeiger für Anfänger
    Von OKL im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 11.04.2010, 00:44
  3. ANY-Zeiger
    Von RAN im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 20.07.2006, 17:42
  4. Zeiger???
    Von Jochen Kühner im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 03.09.2004, 08:33
  5. Any-Zeiger
    Von Anonymous im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 16.10.2003, 20:28

Lesezeichen

Berechtigungen

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