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

Ergebnis 1 bis 4 von 4

Thema: DB-Adresse zusammenfügen, indirekte Adressierung

  1. #1
    Registriert seit
    27.10.2006
    Ort
    Plauen
    Beiträge
    374
    Danke
    107
    Erhielt 13 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich möchte auf Daten aus einem DB zugreifen. Die Daten liegen in einem Array im DB. Die Adresse der Daten berechne ich mir. Ich möchte nun den Inhalt bestimmter Feldeinträge z.B. in ein MW übertragen.
    Ich scheitere momentan aber am zusammensetzen der Adresse.

    Bsp.:

    Berechnung von Ergeb

    AUF DB16
    L DBD[#Ergeb]
    T DB16.DBD2704

    Ab der Zeile "L DBD[#Ergeb]" steht im Akku nur noch 0. In der Hardware bekomme ich die Meldung: "Ausrichtungsfehler beim Lesen, Falsche Adresse 162".

    Was mache ich falsch?

    Danke Euch!
    Zitieren Zitieren DB-Adresse zusammenfügen, indirekte Adressierung  

  2. #2
    Registriert seit
    19.09.2006
    Beiträge
    49
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Servus,

    Ausrichtungsfehler heisst nichts anderes als das die nicht auf ein komplettes MW zugreiffst sondern auf eine Bitadresse die nicht bei Bit 0 beginnt.
    dein #Ergeb muss bei einer Adress anfangen die einer gültigen Adresse entspricht. wenn du also als #Ergeb 162 bekommst und auf die Adresse 162.0 zugreiffen willst musst du erst auf Pointerformat wandeln. Würdest du sie nicht wandeln greifst du mit deinem Beispiel auf die Adresse 16.2 zu und funktioniert bei einem Wortzugriff nicht.

    ich schreeibs als Beispiel was du machen musst.

    die Variable Ergeb muss im Dword-Format vorliegen, und beinhaltet nach der Wandlung die Adresse im Pointerformat. den Offset P#0.0 der nach dem Beistrich steht in ein zusätzlicher offset der zu der Variable Ergeb addiert wird.

    l #Ergeb
    sld 3
    t #Ergeb
    L DBD[#Ergeb,p#0.0]
    T DB16.DBD2704
    Kaum macht mans richtig, schon funktionierts...

  3. Folgender Benutzer sagt Danke zu stma77 für den nützlichen Beitrag:

    Grimsey (29.08.2007)

  4. #3
    Avatar von Grimsey
    Grimsey ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.10.2006
    Ort
    Plauen
    Beiträge
    374
    Danke
    107
    Erhielt 13 Danke für 11 Beiträge

    Standard

    Danke funktioniert. Allerdings kann ich bei mir nicht "L DBD[#ergeb,p#0.0] angeben. Ich muss stattdessen "L DBD[ar1,p#0.0]" schreiben.

    Mit #Ergeb mag er es nicht.

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Grimsey Beitrag anzeigen
    Danke funktioniert. Allerdings kann ich bei mir nicht "L DBD[#ergeb,p#0.0] angeben. Ich muss stattdessen "L DBD[ar1,p#0.0]" schreiben.

    Mit #Ergeb mag er es nicht.
    Das ist auch so richtig, es handelt sich hier um zwei verschiedene Adressierungsarten:

    Code:
    L    DBD [#erg] = Speicherindirekte Adressierung
     
    L    DBD [AR1,P#0.0] = Registerindirekte Adressierung
    Den Offset mit dem Zeiger P#0.0 gibt es nur bei der registerindirekten Adressierung.

    Hier noch einmal ein Vergleich der verschiedenen Adressierungsarten:

    Code:
    Speicherindirekte Adressierung:
     
    L    P#4.7
    T    MD 24
    S    A [MD24]
     
    Registerindirekte Adressierung bereichsintern:
     
    LAR1 P#4.7
    S    A [AR1,P#0.0]
     
    Registerindirekte Adressierung bereichsübergreifend:
     
    LAR1 P#A4.7
    S    [AR1,P#0.0]
    Gruß Kai

Ähnliche Themen

  1. S7 Indirekte Adressierung
    Von Rommani im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 02.05.2014, 22:05
  2. indirekte Adressierung AWL
    Von Tigerente1974 im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 14.08.2011, 01:40
  3. Indirekte Adressierung von Bit's in SCL
    Von tarzipan7 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 23.01.2009, 12:37
  4. Indirekte DB-Adresse als FC-Eingang
    Von Kniffo im Forum Programmierstrategien
    Antworten: 14
    Letzter Beitrag: 17.10.2007, 10:44
  5. Indirekte Adressierung !
    Von max1de im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 27.02.2007, 18:18

Lesezeichen

Berechtigungen

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