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

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

Thema: Zählwerte hintereinander in einem DB ablegen

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe das Problem, dass ich jede Minute einen neuen Zählwert in einem Datenbaustein ablegen soll.
    In meiner derzeitigen Realisierung rufe ich jede Minute einen FB über einem Weckalarm auf.

    Leider ist mir bisher noch kein gescheiter Algorithmus für das Ablegen in dem DB eingefallen.

    Zum Schluss soll das Ergebnis wie folgt aussehen:

    - im DB10.DBD0 soll der Zählwert x stehen
    - im DB10.DBD4 soll der Zählwert y stehen
    - im DB10.DBD8 soll der Zählwert z stehen
    - usw.

    Nach 20 abgelegten Werten soll wieder mit DB10.DBD0 begonnen werden.

    Ich bitte um Hilfe.
    Zitieren Zitieren Gelöst: Zählwerte hintereinander in einem DB ablegen  

  2. "Ich arbeite auf einer 400er. Also liege ich noch im Merkerbereich.

    Wie kann ich die Länge de DB´s festlegen?

    @Ralle: Wie meinst du das mit den DB falsch öffen?"


  3. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Schau mal hier nach:

    http://www.sps-forum.de/phpBB2/viewt...light=schieber
    http://www.sps-forum.de/phpBB2/viewt...light=schieber

    oder suche im Forum einmal nach "Schieber", bzw. FIFO
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #3
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Du brauchst einen Index (oder einen Pointer), der angibt, wo der nächste Wert hinkommt.
    Das sei mal z.B. MD8

    AUF DB10
    T DBD[MD8] schreibt nun den Wert in das Datenword, dessen Nummer in MD0 steht.
    L MD8
    L 32 // Die Nummerierung erfolgt sozusagen in Bits. Das nächste DBD ist dann 32
    // Bits weiter..
    +D // Nummer hochzählen
    T MD8

    L MD8
    L 640 //20*32, dann sind wir am Ende
    <D // eigentlich reicht hier ungleich, aber wer weiß, was im MD8 zufällig stehen könnte
    SPB gut

    L 0
    T MD8 // geht wieder mit 0 los
    gut: NOP 0


    Du solltest diesen Code besser an den Anfang stellen, dann bist du sicher, daß niemals
    versucht wird, mit einem zu großen Index zu arbeiten:
    L MD8
    L 640 //20*32, dann sind wir am Ende
    <D // eigentlich reicht hier ungleich, aber wer weiß, was im MD8 zufällig stehen könnte
    SPB gut

    L 0
    T MD8 // geht wieder mit 0 los
    gut: NOP 0

    AUF DB10
    T DBD[MD8] schreibt nun den Wert in das Datenword, dessen Nummer in MD0 steht.
    L MD8
    L 32 // Die Nummerierung erfolgt sozusagen in Bits. Das nächste DBD ist dann 32
    // Bits weiter..
    +D // Nummer hochzählen
    T MD8

  5. #4
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    @Ralle:
    Ich habe ihn so verstanden, daß er einen Ringspeicher will und keinen FIFO.

  6. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    @Zottel

    stimmt, aber dort wurde eine Menge besprochen. Wer das liest kommt hinterher evtl. alleine durch.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #6
    Anonymous Gast

    Standard

    Vielen Dank,

    mein Fehler war, dass ich nicht mit 32 sondern mit 4 (wegen 4 Byte) addiert habe.
    Zitieren Zitieren Danke, Fehler gefunden  

  8. #7
    Anonymous Gast

    Standard

    Ich habe das Programm wie folgt eigegeben:

    L MD 404 //Adresspointer
    L 640
    <D
    SPB gut

    L 0
    T MD 404
    gut: NOP 0

    AUF DB 1
    L MD 400 //Zählwert

    T DBD [MD 404]
    L MD 404
    L 32
    +D
    T MD 404


    Ich bekomme nun einen Bereichslängenfehler beim Schreiben.
    Woher kommt das?
    Zitieren Zitieren Bereichslängenfehler beim Schreiben  

  9. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Ich denke mal, dein DB ist zu kurz oder du öffnest den falschen DB.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  10. #9
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    MD400 liegt auch nicht bei allen CPU´s im zulässigen Bereich. Schau dir mal den Merkerbereich an, falls der DB OK ist.

    pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  11. #10
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich arbeite auf einer 400er. Also liege ich noch im Merkerbereich.

    Wie kann ich die Länge de DB´s festlegen?

    @Ralle: Wie meinst du das mit den DB falsch öffen?

Ähnliche Themen

  1. Zählwerte archivieren - wie?
    Von softwareheini im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 14.09.2011, 10:36
  2. S7-200 Zählwerte in OP73 mirco anzeigen
    Von Schmaddis im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.11.2010, 15:11
  3. Zählwerte von FM 350
    Von Felse im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 26.11.2009, 14:23
  4. 2 PID regler hintereinander
    Von hank12 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 17.05.2009, 22:24
  5. FC hintereinander
    Von Pinguino im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 12.03.2008, 14:37

Lesezeichen

Berechtigungen

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