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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: AWL; Laden und Aufschlagen von Datenbausteinen

  1. #1
    Registriert seit
    07.12.2011
    Beiträge
    25
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo AWLer

    ich bin noch ein Neuling in AWL und versuche gerade einen vorhanden Code nachzuvollziehen. Dabei ist mir folgender Beispielcode unklar:

    L "ABC".VAR; // DB900.DBW66
    T #Eine_Var;
    L DBD 110; //DB900.DBD 110
    T #Andere_Var;

    Woher weiß ich, dass das Statement 'L DBD 110; //DB900.DBD 110 auf den DB900 zugreift? Bisher dachte ich, dass man mit "L DBD" auf aufgeschlagenen Datenbausteinen arbeitet. In dem Code wurde aber kein DB aufgeschlagen (AUF)! Schlägt das Statement "L "ABC".VAR; // DB900.DBW66" den DB 900 automatisch auf, so dass ich in den darauffolgenden Statements direkt auf dem Datenbaustein arbeiten kann? Leider habe ich in der Doku dazu überhaupt nichts gefunden. Über Hinweise und Aufklärung wäre ich sehr dankbar!

    Vielen Dank!
    Sven
    Zitieren Zitieren AWL; Laden und Aufschlagen von Datenbausteinen  

  2. #2
    Registriert seit
    22.01.2008
    Ort
    Allgäu, da wo die Kühe schöner sind als die Mädels
    Beiträge
    1.774
    Danke
    50
    Erhielt 729 Danke für 434 Beiträge

    Standard

    sauber ist das nicht, aber gehten tut das

    L DB1.DBD 0

    sind eigentlich 2 befehle

    auf db 1
    und L dbd0

    Das DB Register bleibt auf dem DB bei dir 900 stehen

    drumm kannst du L DBD 110 machen und er greift auf die richtige variable zu

    aber wehe da ändert jemand was

    und setzt z.B.

    U DB901.dbx2.0
    = M1.0

    zwischen rein, dann gibt es Crash
    Gruss Audsuperuser

    Herzlich Willkommen im Chat:
    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

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

    svkers (14.02.2012)

  4. #3
    svkers ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.12.2011
    Beiträge
    25
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Okay, vielen Dank!

    Das mit dem ändern ist mir allerdings noch nicht ganz klar geworden.

    L DB1.DBD 0;
    U DB2.DBD 0
    = M1.0;
    L DBD 110; //soll sein DB1.DBD 110

    Wenn ich es richtig verstanden habe, funktioniert obiges nun nicht mehr. L DBD 110, würde auf auf Grund des vorstehenden UNDs auf DB2 zugreifen, ja?

    Wenn der Code stattdessen so geschrieben wäre, würde es wieder richtig funktionieren? Oder habe ich da dann etwas falsch verstanden?

    AUF DB1
    L DBD 0;
    U DB2.DBD 0
    = M1.0;
    L DBD 110; //soll sein DB1.DBD 110


    Vielen Dank!
    Grüße

  5. #4
    Registriert seit
    22.01.2008
    Ort
    Allgäu, da wo die Kühe schöner sind als die Mädels
    Beiträge
    1.774
    Danke
    50
    Erhielt 729 Danke für 434 Beiträge

    Standard

    Zitat Zitat von svkers Beitrag anzeigen
    Okay, vielen Dank!

    Das mit dem ändern ist mir allerdings noch nicht ganz klar geworden.

    L DB1.DBD 0;
    U DB2.DBD 0
    = M1.0;
    L DBD 110; //soll sein DB1.DBD 110

    Wenn ich es richtig verstanden habe, funktioniert obiges nun nicht mehr. L DBD 110, würde auf auf Grund des vorstehenden UNDs auf DB2 zugreifen, ja?

    Wenn der Code stattdessen so geschrieben wäre, würde es wieder richtig funktionieren? Oder habe ich da dann etwas falsch verstanden?

    AUF DB1
    L DBD 0;
    U DB2.DBD 0
    = M1.0;
    L DBD 110; //soll sein DB1.DBD 110


    Vielen Dank!
    Grüße

    ob du das so schreibst oder so das ändert nichts

    Mit U DB2.dbd 0 (was sowie so nicht geht)
    läds du den DB2 in das DB Register
    Wenn du dann nur schriebst

    L DBD 110
    läd die steuerung dir das datendoppelwort 110 im db 2

    wenn du doch den db 1 haben willst musst du entweder

    L db1.dbd110

    oder

    Auf DB1
    L dbd110

    programmieren
    Gruss Audsuperuser

    Herzlich Willkommen im Chat:
    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  6. Folgender Benutzer sagt Danke zu AUDSUPERUSER für den nützlichen Beitrag:

    svkers (14.02.2012)

  7. #5
    Registriert seit
    21.07.2008
    Beiträge
    1.066
    Danke
    51
    Erhielt 140 Danke für 136 Beiträge

    Standard

    Probiere es aus.. imho wird das DBD110 aus dem DB2 gelesen.

    Ich würde generell ohne "AUF" arbeiten..

  8. #6
    svkers ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.12.2011
    Beiträge
    25
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Okay, alles klar! Hab ich verstanden! D.h. bei jeweiligen Zugriff auf einem DB (egal, ob U, O, ... L), das DB-Register würde gesetzt werden.

    Vielen Dank!
    Grüße

  9. #7
    Registriert seit
    11.03.2011
    Beiträge
    384
    Danke
    32
    Erhielt 80 Danke für 69 Beiträge

    Standard

    Zitat Zitat von svkers Beitrag anzeigen
    Okay, alles klar! Hab ich verstanden! D.h. bei jeweiligen Zugriff auf einem DB (egal, ob U, O, ... L), das DB-Register würde gesetzt werden.
    Ja, das DB-Register (genauer das Adressregister 1 (AR1) ) zeigt immer auf den aktuell geöfneten (globalen) DB.
    Es ist egal ob Du "AUF DB1" oder "U DB1.DBX0.0" oder "L DB1.DW2" verwendet immer zeigt danach das Adressregister 1 auf den DB1.
    Ein Zugriff ohne DB-Spezifikation, wie "L DBW66" nutzt immer den aktuellen (globalen) DB.

    Fortgeschrittene Anwender können das Adressregister auch selber nutzen, dann taucht im Programm irgend was mit "AR1" auf, z.B. "TAR1" dann wird der Zeiger auf den aktuellen DB überschrieben.

  10. #8
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Zitat Zitat von miami Beitrag anzeigen
    Ja, das DB-Register (genauer das Adressregister 1 (AR1) ) ....
    DB-Register = Adressregister
    Bist du sicher ?
    kind regards
    SoftMachine

  11. #9
    Registriert seit
    11.03.2011
    Beiträge
    384
    Danke
    32
    Erhielt 80 Danke für 69 Beiträge

    Standard

    Ja, das Register, das auf den aktuellen (globalen) DB zeigt heißt Adressregister 1.
    Nur der Name "DB-Register" ist nicht richtig, die Funktion die Du damit meinst aber stimmt.

  12. #10
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bin gerade mal online im PLC-Sim...

    - die Anweisung L DB101.DBW34 wird ausgeführt
    - die Spalte DB-Register füllt sich mit "101"
    - die Spalte AR1 bzw. AR2 bleibt auf 0.0 --> hier zeigt nix auf DB 101
    Geändert von SoftMachine (14.02.2012 um 19:54 Uhr) Grund: Schreibfehler
    kind regards
    SoftMachine

Ähnliche Themen

  1. Länge von Datenbausteinen mit libnodave
    Von bike im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 18.11.2008, 12:25
  2. Fragen zu Datenbausteinen und WIN CC
    Von Keeper im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 23.09.2008, 09:15
  3. Inhalt von Datenbausteinen kopieren
    Von minix0 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 24.06.2008, 17:00
  4. Typ als DW laden / awl
    Von kiestumpe im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 10.03.2006, 14:28
  5. Arten von Datenbausteinen
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 07.05.2005, 20:38

Stichworte

Lesezeichen

Berechtigungen

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