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

Ergebnis 1 bis 5 von 5

Thema: DB Daten zyklisch mit Weckalarm(OB35) kopieren

  1. #1
    Registriert seit
    13.04.2010
    Beiträge
    5
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebes Forum!

    Ich sitze gerade vor einem für mich nicht so einfach lösenden Problem.
    Folgendes:

    Ich möchte im OB35 (auf 20ms) ein kleines Programm schreiben welches mir alle 20ms einen Messwert von einem, nennen wir ihn DB1.DBW106 in einen anderen, nennen wir ihn DB201 schreibt. Es sollen genau 180 Messwerte erfasst werden. Im DB201 habe ich ein Array mit mit diesen 180 "freien Messwertplätzen" ab DB201.DBW16. Diese Werte sollen dann auch solange erhalten bleiben, bis ich sie wieder löschen möchte, d.h. beispielsweise mein 1 automatikdurchlauf beendet ist.

    Wie könnte ein solches Programm aussehen, denn ich komme absolut auf keinen grünen Zweig

    Vielen Dank schonmal im Vorraus!
    Zitieren Zitieren DB Daten zyklisch mit Weckalarm(OB35) kopieren  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Hallo,
    du brauchst dafür einen Schreib-Pointer, den du nach jedem Schreiben um die Breite deiner Daten erhöhst. Löscht du den Ziel-DB, dann mußt du auch den Pointer wieder rücksetzen.

    Das Schreiben ginge dann in etwa so :
    Code:
    L #Pointer
    L p#2.0
    +D
    T #Pointer
     
    L DB1.DBW106
    AUF DB201
    T DBW[#Pointer]
    gut wäre auch die Max.Anzahl von Werten zu überwachen ...

    Gruß
    LL

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Antworten doch am Besten im Thread und nicht als PN ...

    Die Variable #Pointer ist ein Doppelwort - idealerweise hast du sie mit in deinem DB stehen.
    Bei Reset mußt du die auf den Wert der ersten zu beschreibenden Speicherstelle setzen - bei dir also auf :
    Code:
    L p#16.0
    T #Pointer
    mit der Anweisung :
    Code:
    L #Pointer
    L p#2.0
    +D
    T #Pointer
    erhöhe ich den Pointer um die Breite eines Datenwortes ...

    Gruß
    LL

  4. #4
    marcel_s84 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.04.2010
    Beiträge
    5
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    und muss ich dann nicht noch meinen pointer erhöhen, dass beim nächsten aufruf des ob35 dann der wert ins nächste doppelwort geschrieben wird (also db201.dbw20) und dann immer so weiter bis ich die 180 voll habe?

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    neinn ... das ist schon drin - du mußt nur überwachen, ob und wann du die 180 erreicht hast ...

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 24.01.2011, 19:42
  2. Antworten: 31
    Letzter Beitrag: 21.09.2010, 09:38
  3. Daten in DB schreiben /aus DB lesen/ kopieren
    Von Heizerfraktion im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 28.03.2010, 23:36
  4. Mit Adressregister von Daten von DBx in einen DBy kopieren
    Von iga-graz im Forum Programmierstrategien
    Antworten: 11
    Letzter Beitrag: 15.10.2007, 21:17
  5. OB35 lässt sich nicht in CPU313 kopieren ?
    Von kirk42 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 27.05.2007, 11:48

Stichworte

Lesezeichen

Berechtigungen

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