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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Pointer Problem??

  1. #11
    INST ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.01.2004
    Ort
    Bodensee
    Beiträge
    260
    Danke
    18
    Erhielt 15 Danke für 13 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Buh,

    danke für deine ausführliche Antworten und deine Mühe!!

    Frage:

    Folgendes Programm habe ich geschrieben zum Verständnis.

    Auf DB10

    L 4
    LAR1

    L 2
    T DBB [AR1,P#12.0]

    Laut deiner Aussage sollte als Ergebnis 6 im DB10,DBB12 stehen.
    Wenn ich das ganze Online anschaue, dann steht im Adressregister 1 die 4 und im DBB12 steht die 2 drin.

    Habe ich da irgendein Denkfehler???

  2. #12
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Dein Denkfehler liegt darin, dass Du den "Byte.Bit" Format nicht berücksichtigt hast. Dein "4" setzt die Adresse Byte 0. Bit 4 in AR1. Um Byte 4 zu adressieren must Du zwischen L4 und LAR1 ein SLD 3 einsetzen, wie in Buh's Beispiel. (In diesem Fall tut's SLW 3 auch, aber Pointers sind DWORDs).

    Dein zweiter Denkfehler ist, dass Du 6 in DBB12 erwartest. Die "4" was Du in LAR1 geschrieben hast (wenn Du es mit SLD 3 angepasst hast) wird mit Dein Offset P#12.0 addiert und zeigt nun auf DBB16. Hier wird die "2" was Du in AKKU1 geladen hast geschrieben. Die "4" die Du ursprunglich in AKKU1 geladen hast liegt nun in AKKU2 und Du hast die nicht mit AKKU1 addiert, deswegen wird 2 und nicht 6 in DBB16 (oder auch 12, ohne SLD 3) geschrieben.

    Das ist nicht so klar wie ich's gern hätte, aber vielleicht reicht es!

  3. #13
    Burn Gast

    Standard

    Achso,
    wenn der Profibus läuft, kann ich dann die PAWs(Bits) auch einfach erstmal über eine Variablentabelle Steuern. Bisher macht der MM4 nämlich keinen Mucks.
    Auch mit dem DriveMonitor von Siemens habe ich nicht wirklich erfolg.

  4. #14
    Anonymous Gast

    Standard

    zu 4.)

    Ein FIFO stellt einen Speicher dar, in dem die Daten nacheinander eingetragen werden. z.B. ein Schieberegister, dort werden die Daten die zuerst eingetragen werden auch als erstes ausgelesen. Solche Speicher werden z.B. für Stacks verwendet.
    Für Stacks werden eigentlich LIFO 's verwendet (Last In First Out).

    MfG Gast

  5. #15
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von INST
    Hallo Buh,

    danke für deine ausführliche Antworten und deine Mühe!!

    Frage:

    Folgendes Programm habe ich geschrieben zum Verständnis.

    Auf DB10

    L 4
    LAR1

    L 2
    T DBB [AR1,P#12.0]

    Laut deiner Aussage sollte als Ergebnis 6 im DB10,DBB12 stehen.
    Wenn ich das ganze Online anschaue, dann steht im Adressregister 1 die 4 und im DBB12 steht die 2 drin.

    Habe ich da irgendein Denkfehler???
    In der Siemens Step7-Hilfe steht ein schönes Beispiel zu Pointern (Datei: s7bashda.chm unter Topic "Baustein zum Verändern des Pointers") und in der AWL-Hilfe existieren mind. drei Beispiele zur indirekten Adressierung. Einfach unter Index "Indirekte Adressierung" eingeben.

    Darin sind diese beiden Themen ganz gut erklärt (inkl. Quellcode).
    Zitieren Zitieren Read the manual  

Ähnliche Themen

  1. Problem bei Übergabe von Wert an Pointer
    Von rapser im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 26.08.2009, 15:30
  2. Problem mit Pointer
    Von Mathias im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 06.02.2009, 10:03
  3. Antworten: 1
    Letzter Beitrag: 28.10.2008, 21:57
  4. Parametrierter FC - Problem mit Pointer
    Von kaufmann-michael im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 30.01.2004, 11:50

Lesezeichen

Berechtigungen

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