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

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

Thema: Wiedermal FIFO

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen.

    Ich habe mich jetzt schon eine komplette Woche darüber belesen und steige nicht so recht durch.
    Habe mir schon einige Möglichkeiten reingebaut und/oder selber dran versucht, es will einfach nicht klappen.

    Ich arbeite an einer 319F.

    Grundgedanke:
    - 5 INT Werte (im UDT zu einem STRUCT zusammengefasst -10 Byte) als eine, sagen wir mal "Messung" abspeichern
    - die Messungen sollen dann in einem FIFO gespeichert werden, der insgesamt 1000 Messergebnisse enthält .

    Ich habe damit angefangen die einzelnen Messungen in Form von je 10 Byte auf einen Zwischenspeicher für 10 Messungen zu
    laden, dann nach 10x10 Messungen diese dann in einen 100er Speicher ge-"Blockmoved".
    Anschliessend, wenn 100 Messungen voll sind, diese dann per Blockmove (im 1000er Byte-Verbund) um 1000 Byte versetzt nach hinten abzuspeichern.
    Hier machte mir die SPS einen Strich durch die Rechnung... Zu viele Move-Befehle... aber auch nach Abspecken des Programms gings nicht.

    ->Wieviele Bytes kann man eigentlich per "BLK_MOV"(SFC20) maximal verschieben?


    ->Ist es bei den bekannten FIFOs so, dass der neue Wert immer versetzt um einen Zählwert weiter hinten gespeichert wird?

    ->Gibt es eine Möglichkeit, dass der neue Wert z. Bsp. im DB auf dbx0.0 bis dbx4.7 gespeichert wird und bei positiver Flanke eines folgenden neuen Eintrages auf dbx5.0 bis dbx9.7 verschoben wird? Die Werte von dbx5.0 bis dbx9.7 dann auf dbx10.7 bis 14.7 usw. ?

    -> Wenn alles nichts hilft, dann würde ich zum normalen FIFO greifen, jedoch steige ich da nicht ganz durch. Ich habe hier schon sehr schöne Bausteine gesehen, komme aber teilweise mit der Anparametrierung nicht klar. Könnte mir da evtl. jmd. zur Seite stehen?

    Ich hoffe, das war jetzt nicht zu viel Input

    Beste Grüsse Dennsen
    Zitieren Zitieren Wiedermal FIFO  

  2. #2
    Dennsen ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.01.2014
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ich bitte um Entschuldigung.

    Habe mich mit den Bytes etwas verhaspelt... Es sollte natürlich heissen dbx0.0 bis dbx9.7 u.s.w. , sind ja immer 5Words
    Geändert von Dennsen (22.01.2014 um 18:52 Uhr)
    Zitieren Zitieren wiedereinmal FIFO  

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

    Standard

    .
    1.
    Falls du da noch nicht geschaut hast, in
    unserer FAQ-Rubrik stehen schöne Beispiele.

    2.
    Die Forumssuche hilft dir sicherlich auch weiter.

    3.
    Zeige uns doch mal, was du bisher gemacht
    hast.
    kind regards
    SoftMachine

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

    Standard

    .

    Die Hilfe zum BLOCKMOVE findest in der
    S7-Hilfe über die F1-Taste.

    Für einen Eintrag im FIFO-Speicher kannst
    du natürlich oben den benötigen Platz
    freischieben, du kannst einen neuen Eintrag
    aber auch unten anfügen.
    Um das FIFO-Prinzip zu erfüllen, musst du
    die Einträge jedoch jeweils in der richtigen
    Reihenfolge entnehmen.

    Dir ist aber auch klar, das du bei´einem
    Eintrag von DBX 0.0 bis DBX 4.7 lediglich
    5 Byte benutzt, während deine Messung
    10 Byte Länge hat ?

    P.S.: Wegen der 5 bzw. 10 Byte: kommt es zu
    Bereichsüberschneidungen beim SFC 20 ?
    Geändert von SoftMachine (22.01.2014 um 18:29 Uhr) Grund: weiterer Hinweis
    kind regards
    SoftMachine

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

    Standard

    Zitat Zitat von Dennsen Beitrag anzeigen
    ich bitte um Entschuldigung.

    Habe mich mit den Bytes etwas verhaspelt... Es sollte natürlich heissen dbx0.0 bis dbx9.7 u.s.w. , sind ja immer DWs
    Kein Problem.


    Ich sehe da gerade noch etwas:
    Wie macht dir die SPS einen Strich durch
    die Rechnung? Welcher Fehler ? Schon mal
    im Diagnosepuffer nachgeschaut?
    Kann es sein, das du mit 1000 Messungen a´
    10 Byte = 10kByte deine angelegten
    DB-Grenzen sprengst ?
    kind regards
    SoftMachine

  6. #6
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Es gibt zwei Möglichkeiten für den Ablauf des FIFOs:

    1. Fester Speicherplatz für den neuen Eintrag.
    Nachteil: Das erfordert vor dem Eintragen, alle bisherigen Einträge, um einen Speicherplatz zu verschieben. (zeitaufwendig)
    Vorteil: Beginn und Ende der Werteliste verschieben sich nicht. Beim Anzeigen auf dem HMI ist z.B. Speicherplatz 10 immer der 10. letzt gespeicherte Wert.

    2. Zeiger auf den nächsten Speicherplatz für einen neuen Wert = Fester Speicherplatz für jeden einzelnen Eintrag.
    Vorteil: Kein Verschieben der Werte nötig.
    Nachteil: Beginn und Ende der Werteliste verschieben sich ständig. Dadurch ist im festgelegten Speicherbereich das Ende des FIFOs meistens vor dessen Anfang. Er ist also geteilt.


    Für welche Variante Du Dich entscheidest, ist somit auch davon abhängig, was Du mit den Werten hinterher machen willst.

  7. #7
    Dennsen ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.01.2014
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    SoftMachine:
    -der Diagpuffer meinte dass eszu viele Move befehle seien.
    -von zu geringer Grösse des DB gehe ich mal nicht aus, da der DB mit der Struktur des zugehörigen UDTs aufgebaut ist
    -wie komme ich zur FAQ? Ich stell mich heute echt blöd an..

    Hucki:
    -der FIFO sollte eigentlich so sein, dass der neueste Werteblock auf 0.0 geschrieben wird, vorher alle anderen Werteblöcke
    um die Grösse eines Werteblock nach hinten (also der Werteblock vor dem neuen auf 10.0 geschoben wird) , mit normalem Blockmove schreibt man sich ja dusselig.
    Grund dafür wäre das Anzeigen der z. Bsp. letzten zehn Werteblöcke auf einer HMI. Das lässt sich auch (für nur 10 Werteblöcke mit blockmove realisieren)

  8. #8
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von Dennsen Beitrag anzeigen
    Hucki:
    -der FIFO sollte eigentlich so sein, dass der neueste Werteblock auf 0.0 geschrieben wird, vorher alle anderen Werteblöcke
    um die Grösse eines Werteblock nach hinten (also der Werteblock vor dem neuen auf 10.0 geschoben wird) , mit normalem Blockmove schreibt man sich ja dusselig.
    Grund dafür wäre das Anzeigen der z. Bsp. letzten zehn Werteblöcke auf einer HMI. Das lässt sich auch (für nur 10 Werteblöcke mit blockmove realisieren)
    Wofür brauchst Du die restlichen 990?

    Nach dem jetzigen Infostand würde ich das zweigeteilt machen:
    1. Die 1000 Werteblöcke würde ich über den beweglichen Zeiger auf feste Plätze eintragen und mir so die sehr aufwendige Verschieberei ersparen.
    2. Für die Anzeige würde ich dann die jeweils letzten 10 Einträge in ein separates Register für's HMI kopieren. Das wäre nur ein vergleichsweise kleiner BLOCKMOVE und als Start hat man ja den Zeiger vom FIFO.

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.338
    Danke
    932
    Erhielt 3.333 Danke für 2.691 Beiträge

    Standard

    Zitat Zitat von Dennsen Beitrag anzeigen
    -der Diagpuffer meinte dass eszu viele Move befehle seien.
    Echt?
    Kannst Du mal bitte den genauen Wortlaut des Diagnosepuffereintrags zeigen?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #10
    Dennsen ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.01.2014
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    es sollen ja 1000 Werteblöcke gespeichert werden.

    Blockinhalt:
    1. DW enthält eine ausgelesene Nummer der Teils
    2. DW enthält Messwert des Teiles von Sensor 1
    3. DW enthält Messwert des Teiles von Sensor 2
    4. DW enthält Messwert des Teiles von Sensor 3
    5. DW enthält Messwert des Teiles von Sensor 4

    Von dem nach hinten schieben bin ich nun abgekommen.
    Das separate Register für die HMI lässt sich ja mit in den gleichen DB schreiben/lesen.

Ähnliche Themen

  1. FIFO mit S7 ????
    Von moclam im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 24.10.2013, 10:43
  2. Wiedermal ein Programm problem
    Von COOLT im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 28.07.2009, 16:57
  3. Fifo S7
    Von stevexxx im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 18.03.2008, 14:45
  4. Fifo
    Von sweber im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 14.06.2007, 15:06
  5. Antworten: 0
    Letzter Beitrag: 09.11.2004, 20:12

Lesezeichen

Berechtigungen

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