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

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

Thema: Mehrere Zählerwerte in DB speichern

  1. #1
    Registriert seit
    03.10.2008
    Beiträge
    232
    Danke
    8
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo SPSler
    Ich bekomme von einem Zähler einen Wert, der als DInt in einen DB(DB2.DBD0) gespeichert wird. Über einen Eingang(E0.0)
    wird der Zähler wieder auf 0 gesetzt. Wenn E0.0 true wird, soll der Zählwert aber noch in einen DB3 gespeichert werden. Bis hierher kein Problem. Der Zählwert soll aber bei jedem Rücksetzen des Zählers im DB3 gespeichert werden ohne den vorhergehenden Wert zu überschreiben, also fortlaufend
    Wert1=db3.dbd0
    Wert2=db3.dbd4
    usw.
    Wie kann ich dieses "fortlaufende Speichern" realisieren?
    Danke schonmal für Eure Hilfe.

    MfG
    bastlerp
    Zitieren Zitieren Mehrere Zählerwerte in DB speichern  

  2. #2
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Darf es auch AWL mit ein bisschen indirekter Adressierung sein?
    Oder muss es in KOP sein?
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  3. #3
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Hab grad Zeit.
    Hier mal eine Lösung in AWL:
    Code:
       U E 0.0
       FP M0.0
       SPBN WERT
       L DB2.DBW 4   // Dieses Datenwort merkt sich den Eintrag im DB
       SLD 3
       LAR1
     
       L DB2.DBD0 // Zahlerwert
       AUF DB3
       T DBD [AR1, P#0.0]  // Auf den nächsten freien Platz in dem DB
     
       L DB2.DBW 4
       L 4
       +I
       T DB2.DBW 4   // Nächsten freien Platz
     
    WERT:NOP 0
    Der Datenbaustein sollte natürlich groß genug sein.
    Wenn der Datenbaustein voll ist das DB2.DB4 wieder mit 0 vorbelegen. Dann werden die alten Werte überschrieben.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  4. #4
    bastler ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.10.2008
    Beiträge
    232
    Danke
    8
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Paule
    Danke für deine Mühe, ich werds heute noch testen.
    Könntest du den Code mal noch etwas erklären, z.B. wieso wird mit
    SLD3 drei Stellen nach links verschoben usw.

    MfG
    bastler

  5. #5
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    L DB2.DBW 4
    sld3 ----> für das pointerformat notwendig!!
    LAR1 ---> ins Adressregister 1 laden
    alles klar?
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

  6. #6
    bastler ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.10.2008
    Beiträge
    232
    Danke
    8
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Habe jetzt mal testen können und es läuft genau so, wie ich es wollte. Super, vielen Dank.
    Eine Frage hätte ich noch. Da ja irgendwann der DB3 "überlaufen" würde und damit die CPU in Stop schicken würde, hätte ich noch gern, das nach dem letzten möglichen Eintrag, alle Werte gelöscht werden und wieder von vorn beschrieben werden. Könnt ihr mir da nochmal helfen?

    MfG
    bastler

  7. #7
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Hallo bastler,
    ich gehe jetzt mal davon aus der DB3 hat 5000 Doppelworte = 20000 Byte

    Code:
       L DB2.DBW 4 // Zeiger für nächsten Eintrag
       L 20000 // Byteadresse für letzten Eintrag 
       <=I
       SPB Geht
     
       L L#0
       T #Temp_Variable_DWORD
       call SFC21 // FILL Baustein
       Weiß gerade nicht wie der Parameter heißt : #Temp_Variable_DWORD
       Ret_Val: #TEMP_INT
       Weiß gerade nicht wie der Parameter heißt : P#DB3.DBX0.0 Byte 20000
       (Wenn der DB3 eine Symbolbezeichnung hat wird es schöner dargestellt)
     
       L 0
       T DB2.DBW 4 // Zeiger für nächsten Eintrag
     
    Geht:NOP 0
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  8. #8
    bastler ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.10.2008
    Beiträge
    232
    Danke
    8
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Super, jetzt klappt alles.
    Tausend Dank.

    MfG
    bastler

  9. #9
    Registriert seit
    17.01.2010
    Beiträge
    197
    Danke
    81
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Zitat Zitat von Gerhard K Beitrag anzeigen
    L DB2.DBW 4
    sld3 ----> für das pointerformat notwendig!!
    Die drei niederwertigsten Bits der Adresse ist die Bitadresse.

  10. #10
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von bimbo Beitrag anzeigen
    Die drei niederwertigsten Bits der Adresse ist die Bitadresse.
    ja und was sagt uns das jetzt??
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

Ähnliche Themen

  1. Antworten: 40
    Letzter Beitrag: 08.12.2008, 13:38
  2. Zählerwerte digital kodiert ausgeben S7 312
    Von Christian_Paetzold im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 22.09.2008, 16:54
  3. Fernwartung für mehrere S7
    Von Solaris im Forum Simatic
    Antworten: 49
    Letzter Beitrag: 25.06.2008, 11:37
  4. Zählerwerte richtig setzen
    Von CheGuevara83 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 18.04.2007, 07:43
  5. Antworten: 6
    Letzter Beitrag: 20.04.2006, 20:47

Lesezeichen

Berechtigungen

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