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

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

Thema: kleine Zeigerfrage

  1. #11
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    //Adresse der DP in Adressregister
          L     DID  134                    // DID134 => AKKU 1
          L     DIW  138                    // AKKU 1 => AKKU 2 / DIW138 => AKKU 1
          LAR2                              // AKKU 1 => AR2
    Also ich denke mal, ich weiß jetzt, was er beabsichtigt hat.

    Auf Adresse 134 ist ein Pointer als IN (das sind 6 Byte) definiert.
    Am IN steht: P#344.0
    Dort soll also ein kompletter Pointer geladen werden.
    Ich mein es funktioniert, weil letztendlich kein kompletter Pointer (DB-Information) gebraucht wird. Was meint ihr?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  2. #12
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Auf Adresse 134 ist ein Pointer als IN (das sind 6 Byte) definiert.
    Am IN steht: P#344.0
    Dort soll also ein kompletter Pointer geladen werden.
    Ich mein es funktioniert, weil letztendlich kein kompletter Pointer (DB-Information) gebraucht wird. Was meint ihr?
    Er lädt mit dem DIW 138 also nur die Byte-Adresse und die Bit-Adresse des Pointers. Die DB-Nummer und der Operandenbereich werden nicht gebraucht.

    Das sollte tatsächlich funktionieren, solange die Byte-Adresse des Pointers nicht zu groß wird. Die Byte-Adresse und die Bit-Adresse liegen ja in den Bytes DIB 137 - DIB 139 und nicht nur in den Bytes DIB 138 - DIB 139.

    Folgender Programmcode sollte aber auch funktionieren:

    Code:
    //Adresse der DP in Adressregister
          L     DIW  138                    // POINTER Byte-Adresse + Bit-Adresse
          LAR2
    Gruß Kai

  3. #13
    Registriert seit
    24.11.2006
    Ort
    57072 Siegen
    Beiträge
    466
    Danke
    59
    Erhielt 121 Danke für 109 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Ich denke mal, ein Teil des DID 134 bleibt ja stehen im Akku1, da ja in der zweiten Zeile nur noch ein DIW geschrieben wird. Wer sich sowas nur einfallen läßt?
    Hallo Ralle,

    wie Kai schon richtig sagte, dass stimmt nicht.

    Auszug aus der S7 Hilfe zum Ladebefehl:

    Code:
    Beschreibung 
    
    L <Operand> lädt den Inhalt des adressierten Bytes, Wortes oder Doppelwortes in AKKU 1, nachdem zuvor der alte Inhalt von 
    AKKU 1 in AKKU 2 gespeichert wurde und AKKU 1 auf "0" zurückgesetzt wurde.
    
    Inhalt von Akkumulator 1 
    
    Inhalt von AKKU 1 	AKKU1-H-H	AKKU1-H-L	AKKU1-L-H	AKKU1-L-L
    vor Ausführung der Ladeoperation	XXXXXXXX	XXXXXXXX	XXXXXXXX	XXXXXXXX
    nach Ausführung von L MB10 (L <Byte>)	00000000	00000000	00000000	<MB10>
    nach Ausführung von L MW10  (L <Wort>)	00000000	00000000	<MB10>	<MB11>
    nach Ausführung von L MD10  
    (L <Doppelwort>)	<MB10>	<MB11>	<MB12>	<MB13>

    Zur Beachtung:
    Ich distanziere mich ausdrücklich von allen Aussagen in diesem Forum
    welche nicht von mir stammen und mache mir deren Inhalte nicht zu eigen.


    www.ibn-service.com

  4. #14
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Kai Beitrag anzeigen
    Er lädt mit dem DIW 138 also nur die Byte-Adresse und die Bit-Adresse des Pointers. Die DB-Nummer und der Operandenbereich werden nicht gebraucht.

    Das sollte tatsächlich funktionieren, solange die Byte-Adresse des Pointers nicht zu groß wird. Die Byte-Adresse und die Bit-Adresse liegen ja in den Bytes DIB 137 - DIB 139 und nicht nur in den Bytes DIB 138 - DIB 139.

    Folgender Programmcode sollte aber auch funktionieren:

    Code:
    //Adresse der DP in Adressregister
          L     DIW  138                    // POINTER Byte-Adresse + Bit-Adresse
          LAR2
    Gruß Kai
    Seh ich auch so.


    @IBN

    Ja, alles klar, war mal so meiner erste Vermutung, bevor ich drauf kam, daß dort versucht wurde einen 6-Byte-Pointer zu laden. Das mit dem Akku ist ja eingentlich auch klar, sonst müßte man den selbst auf Null setzen, bevor man 1 Byte lädt und transferiert.
    Geändert von Ralle (04.03.2008 um 18:51 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. SPS für kleine Hobbybrauerei
    Von borsti27 im Forum Elektronik
    Antworten: 74
    Letzter Beitrag: 23.02.2009, 18:30
  2. Mal ne kleine Zwischenfrage
    Von arcis im Forum Stammtisch
    Antworten: 51
    Letzter Beitrag: 27.06.2008, 19:04
  3. kleine Laptop für DOS und S5
    Von huggy im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.05.2008, 18:23
  4. Kleine Stanzvorrichtung
    Von stefand im Forum Elektronik
    Antworten: 40
    Letzter Beitrag: 17.08.2007, 22:18
  5. Kleine Rechenaufgabe
    Von Flo im Forum Programmierstrategien
    Antworten: 8
    Letzter Beitrag: 05.08.2007, 21:46

Lesezeichen

Berechtigungen

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