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

Ergebnis 1 bis 3 von 3

Thema: Grundlegendes zur indirekten Adressierung

  1. #1
    Registriert seit
    08.03.2005
    Beiträge
    11
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    Ich hab ein paar grundlegende Fragen zur indirekten Adressierung in AWL:

    1. Warum geht:
    L DB30.DBW45
    und
    L DB30.DBW[MD20] nicht
    aber
    L DBW[MD20] geht wieder
    ==>Ein Zeiger hat 32 Bit.

    Nun möchte ich im FB einen eigenen Zeiger deklarieren, der im Programm dynamisch hochgezählt wird.
    Beispiel:
    Variablenansicht: STAT: #zeiger (Datentyp DWord bzw. DINT)

    Und warum geht dann
    L DBW[#zeiger] nicht?

    3. Wie funktioniert die Umwandlung eines Integerwertes ins Zeigerformat?
    Beispiel: Möchte das DB-Doppelwort an der Adresse 20 auslesen.

    Habe schon folgendes erfolglos probiert:
    ...
    AUF DB30 //DB aufschlagen
    L #zeiger //Hier steht jetzt "20" (dezimal) drin
    LAR1 //#zeiger ins Adressregister 1
    L DBD[ar1,p#0.0] //AR1 mit 0.0Bit Offset
    ...
    Wenn ich den Zeiger erst mit 32 multipliziere (32Bit) also (640 dezimal) gehts nicht.
    Und wenn ich das ganze im Hex-Format mache gehts auch nicht.
    ???

    Ich denke, mir fehlen da ein paar Grundlagen, versuche gerade, mir das Ganze selbst beizubringen.
    Wäre nett, wenn ihr mir ein paar Tips geben könntet.
    Danke!
    Zitieren Zitieren Grundlegendes zur indirekten Adressierung  

  2. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.752
    Danke
    323
    Erhielt 1.526 Danke für 1.286 Beiträge

    Standard

    Antwort zu 1:
    Musst du Siemens fragen.

    Antwort zu 2:
    Step 7 akzeptiert keine "Pointer" im STAT-Bereich, normalerweise schreibt man den eigentlichen Pointer in den TEMP-Bereich,
    oder arbeitet mit den Adressregistern.

    Antwort zu 3:
    Sollte so funktionieren:
    Code:
    AUF DB30                                     //DB aufschlagen
    L #zeiger                                     //Hier steht jetzt "20" (dezimal) drin
    SLD 3
    LAR1                                           //#zeiger ins Adressregister 1
    L DBD[ar1,p#0.0]                          //AR1 mit 0.0Bit Offset
    Im Pointerformat sind die 3 Rechten Bits praktisch die Bit-Adresse.
    Darum das SLD 3.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  3. #3
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!
    Zitat Zitat von ms25

    3. Wie funktioniert die Umwandlung eines Integerwertes ins Zeigerformat?
    Beispiel: Möchte das DB-Doppelwort an der Adresse 20 auslesen.

    Habe schon folgendes erfolglos probiert:
    ...
    AUF DB30 //DB aufschlagen
    L #zeiger //Hier steht jetzt "20" (dezimal) drin
    LAR1 //#zeiger ins Adressregister 1
    L DBD[ar1,p#0.0] //AR1 mit 0.0Bit Offset
    ...
    Wenn ich den Zeiger erst mit 32 multipliziere (32Bit) also (640 dezimal) gehts nicht.
    Und wenn ich das ganze im Hex-Format mache gehts auch nicht.
    ???
    Der Zeiger ist so aufgebaut:
    yyyyyyyyyyyyyyyyxxx
    y=Byteadresse
    x=Bitadresse

    Wenn du einen Wert hast den du in Pointer umwandeln willst dann musst du den Wert um 3 Stellen nach links verschieben (mit SLD 3) Danach ist dein Wert die Byteadresse.

Ähnliche Themen

  1. Adressierung
    Von ssound1de im Forum Feldbusse
    Antworten: 7
    Letzter Beitrag: 17.09.2008, 08:42
  2. Grundlegendes zu FB's
    Von Phil im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 28.09.2006, 10:29
  3. Grundlegendes zu FB's
    Von Phil im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 27.09.2006, 14:36
  4. ASi Adressierung
    Von capri-fan im Forum Feldbusse
    Antworten: 1
    Letzter Beitrag: 28.09.2005, 15:11
  5. ? Grundlegendes zu Ethernet Kommunikation
    Von Kurt im Forum Feldbusse
    Antworten: 1
    Letzter Beitrag: 28.12.2004, 10:52

Lesezeichen

Berechtigungen

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