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

Ergebnis 1 bis 4 von 4

Thema: registerindirekte Adressierung

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    habe in einem Programm folgende Stelle:

    L P##E_Var
    LAR1
    L D[AR1,P#6.0]

    Die Variable E_Var ist vom Typ ANY und zeigt auf den E0.0.

    Meine Frage lautet:
    Was lade ich mit dem Befehl L D[AR1,P#6.0] in den Akku 1??

    Vielleicht kann mir irgend jemand Helfen? Danke!

    MFG
    Zitieren Zitieren Gelöst: registerindirekte Adressierung  

  2. "Beispiel: #E_Var ist P#DB10.DBX12.5 BOOL 27. Dies bedeutet: Zeiger auf 27 Bits (BOOL) in DB 10 ab Adresse DBX12.5

    ANY-Aufbau
    1 BYTE 0x10 (S7) (Offset 0.0)
    1 BYTE Datentyp BOOL (1) (Offset 1.0)
    1 WORT Wiederholungsfaktor (27) (Offset 2.0)
    1 WORT DB-Nummer (10) (Offset 4.0)
    1 DWORT Bereichsübergreifender Zeiger (P#DBX12.5) (Offset 6.0)

    eigentliche Antwort:
    L D[AR1,P#6.0] lädt den bereichsübergreifenden Zeiger (P#DBX12.5 an Offset 6.0) auf den adressierten Bereich in AKKU1.

    ABER: vor dem Zugriff mit dem geladenen Zeiger den entsprechenden DB aufmachen sonst wird die SPS böse und rot. Dies geschieht z.B mit

    Code:
    L W[AR1,P#4.0]
    T LW<ein freies Lokaldatenwort>
    AUF DB&#91;LW<...>&#93;
    Wenn der ANY-Zeiger nicht auf einen Datenbereich zeigt, dann steht bei der DB-Nummer 0, es passiert also kein Fehler. Vorausgesetzt, der ANY-Zeiger wurde von jemandem erzeugt, der weiß wie's sein soll."


  3. #2
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Beispiel: #E_Var ist P#DB10.DBX12.5 BOOL 27. Dies bedeutet: Zeiger auf 27 Bits (BOOL) in DB 10 ab Adresse DBX12.5

    ANY-Aufbau
    1 BYTE 0x10 (S7) (Offset 0.0)
    1 BYTE Datentyp BOOL (1) (Offset 1.0)
    1 WORT Wiederholungsfaktor (27) (Offset 2.0)
    1 WORT DB-Nummer (10) (Offset 4.0)
    1 DWORT Bereichsübergreifender Zeiger (P#DBX12.5) (Offset 6.0)

    eigentliche Antwort:
    L D[AR1,P#6.0] lädt den bereichsübergreifenden Zeiger (P#DBX12.5 an Offset 6.0) auf den adressierten Bereich in AKKU1.

    ABER: vor dem Zugriff mit dem geladenen Zeiger den entsprechenden DB aufmachen sonst wird die SPS böse und rot. Dies geschieht z.B mit

    Code:
    L W&#91;AR1,P#4.0&#93;
    T LW<ein freies Lokaldatenwort>
    AUF DB&#91;LW<...>&#93;
    Wenn der ANY-Zeiger nicht auf einen Datenbereich zeigt, dann steht bei der DB-Nummer 0, es passiert also kein Fehler. Vorausgesetzt, der ANY-Zeiger wurde von jemandem erzeugt, der weiß wie's sein soll.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  4. #3
    Anonymous Gast

    Standard

    Hallo,

    danke für die Antwort. Demnach müsste ich in folgendem Beispiel das ED6 in meinen Akku 1 laden? Stimmt das?

    L P##E_Var
    LAR1
    L D[AR1,P#6.0]

    Die Variable E_Var ist vom Typ ANY und zeigt auf den E0.0.

    MFG

  5. #4
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Anonymous
    Demnach müsste ich in folgendem Beispiel das ED6 in meinen Akku 1 laden? Stimmt das?

    L P##E_Var
    LAR1
    L D[AR1,P#6.0]

    Die Variable E_Var ist vom Typ ANY und zeigt auf den E0.0.
    Es wird ED 0 geladen. Der Offset 6 ist notwendig um auf den Zeiger in der Any-Struktur zuzugreifen (s.o. Strukturaufbau).
    Code:
    L P##E_Var 
    LAR1
    AR1 zeigt auf Any-Struktur
    P#6.0 ergibt den Offset
    Code:
    L D&#91;AR1,P#6.0&#93;
    lädt somit das Doppelwort auf das der Zeiger in der Any-Struktur zeigt (blöde Formulierung).
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

Ähnliche Themen

  1. Registerindirekte Adressierung in Multiinstanz
    Von Thomas_v2.1 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 05.05.2009, 21:16
  2. Adressierung - CPU 314 IFM-MC
    Von Andy Latte im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 11.01.2008, 11:06
  3. registerindirekte Adressierung
    Von Ibaxx im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 26.09.2007, 09:35
  4. SPS S5 Adressierung
    Von Krma1985 im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 13.04.2007, 20:51
  5. adressierung
    Von lister67 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 27.12.2006, 17:16

Lesezeichen

Berechtigungen

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