Werte auf MMC speichern

Drexta

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
gibt es eine Möglichkeit die Werte bzw. die kompletten DB´s auf die MMC speichern. Unsere DB´s müssen non retain gespeichert werden, da wir eine große Menge an daten speichern müssen. Unser Ziel ist es das die Daten auch nach einer SPannungsunterbrechung noch auf der MMC sind und man sie dort auslesen kann.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok das übertragen am Ende der Aufzeichnung mit dem SFC 84 geht schonmal. Ich kann jedoch nur einen DB übertragen. Gibt es da eine Funktion das man direkt alle DB´s auf die MMC speichert - ca. +100 stück.

Des weiteren stelle ich mir folgende Frage: Wenn man die Db´s nun nach der Reihe voll schreiben lässt und dann die S7 manuell auf Stopp stellt, dann kann man online auf die einzelnen DB s zugreifen und die erfassten Werte auslesen. Die DB´s wurden als nicht Remanent gespeichert. Wo speichert die SPS die DB´s mit den Werten denn, der Arbeitsspeicher ist ja nicht groß genug?
 
Gibt es da eine Funktion das man direkt alle DB´s auf die MMC speichert - ca. +100 stück.
Ja --> "RAM-nach-ROM-kopieren"
geht allerdings nur mit einem PG im STOP der CPU
;)

Spaß beiseite.
Die S7-300 kann nur in DB schreiben, welche sich im Arbeitsspeicher befinden. Das hat nichts mit Remanenz zu tun.
Sollen mehr Daten protokolliert werden als in den Arbeitsspeicher reinpassen, dann kann man u.U. trickreich in den Ladespeicher MMC auslagern, wenn nur selten gespeichert werden soll. Sollen aber häufig mehr Daten gespeichert werden, dann ist die S7-300 nicht die geeignete Maschine. Man benötigt einen Massenspeicher.

Um wieviele Daten in welcher Geschwindigkeit geht es bei Dir? Hast Du eine HMI (Panel oder RT auf PC)? Müssen die Daten von der SPS wiedergefunden werden oder nur erfasst und an ein Archiv übergeben werden?

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich möchte 5 verschiedene Druckstufen über einen längeren Zeitraum aufnehmen und auf der MMC speichern. Der Druck soll nicht selektiert - sondern nur mit dem FC105 skalliert werden. Am Ende der Messung werden die Daten direkt von der MMC mittels PC ausgelesen. Im Moment steht nur die reine SPS 314 + Analogkarte (SM 331 8x12Bit) zur verfügung. Es sind pro Druckstufe 3900 Signale pro Minute das * 5 Stufen ergibt 19500 Signale pro Minute. Der Arbeitsspeicher wäre somit nach ca. 2 Minuten voll.
Mein Gedanke wäre gewesen den Arbeitsspeicher bzw. die einzelnen Db´s alle 2 Minuten - solange der Motor läuft - auf die MMC zu übertragen.


Gruß :cool:
 
Es sind pro Druckstufe 3900 Signale pro Minute das * 5 Stufen ergibt 19500 Signale pro Minute.
65 Meßwerte pro Sekunde und Kanal - ganz schön sportlich geplant! Da ist Deine Hardware aber voll ausgereizt, wenn Du sie auf 5 Kanäle und nur 9 Bit Auflösung begrenzt.
19.500 Meßwerte pro Minute sind 39.000 Byte/Minute Rohwerte vom PEW (INT) und 78.000 Byte/Minute nach dem FC105 (REAL).

Brauchst Du TATSÄCHLICH alle 15ms neue Meßwerte?

Am Ende der Messung werden die Daten direkt von der MMC mittels PC ausgelesen.
Ich meine, das ist so nicht möglich. Mit "normaler" Kommunikation können imho nur Daten aus dem Arbeitsspeicher gelesen werden, jedoch nicht aus dem Ladespeicher. Du bräuchtest eine Software, welche "unlinked" DB aus dem Ladespeicher (MMC) lesen kann - das kann meines Wissens nur der SIMATIC Manager umständlich per Variablentabelle oder aus der Online-Ansicht. Oder Du baust die MMC aus und liest sie in einem PG ;). Oder Du programmierst auch noch das Zurücklesen aus dem Ladespeicher in den Arbeitsspeicher zwecks herauskopieren aus der CPU.

Nun denn, wenn es denn unbedingt sein soll, dann ist dies sicher interessant für Dich:
Beispielprogramm: Prozessdaten auf der Micro Memory Card (MMC) speichern
Wie kann der Programmablauf optimiert werden, wenn der Arbeitsspeicher der CPU für das ablaufrelevante STEP 7 Programm zu klein ist?
Welche Punkte sind beim Handling der Micro Memory Cards zu beachten?

Harald
 
Habe jetzt mal versucht einen DB Zähler für den Ladespeicher und einen für die beiden Wechselpuffer zu bauen. Dabei ist folgender Code rausgekommen (progge normalerweise in FUB/KOP)
Code:
U(          UN    M      1.7
      R     "hm_sr"			M1.6		-- setze REQ zurück wenn BUSY wieder aus ist
      U     "merker DB voll"		M4.0		-- "1" wenn Zeiger am Ende des DB´s ist
      S     "hm_sr"			M1.6
      U     "hm_sr"			M1.6
      )     
      =     L      0.0
      BLD   103
      U     "Eins"			M1.0
      SPBNB _008
      CALL  "WRIT_DBL"			SFC 84
       REQ    :=L0.0
       SRCBLK :="WP Auswahl"		MW12		-- Wechesel puffer auswählen (DB2 oder DB3)
       RET_VAL:="MW200"			MW200		-- Fehlercode
       BUSY   :=M1.7
       DSTBLK :="DB-POINTER"		MW8		-- DB im Ladespeicher hoch zählen
_008: NOP   0

Das Problem ist nur das er keinen DB einließt und keinen ausgibt. Denke das Problem liegt an dem MW 8 bzw. MW 12, da dort ja nur eine Zahl und keine Adresse vorgegeben wird. Man konnte sonst auch immer einen Db mit z.B. DB[MW8] aufrufen nur geht das hier natürlich nicht.

Meine Frage ist nun wie ich es Adressieren muss damit er es auch als DB anerkennt, und wie man daraus dann einen Zähler bauen kann.

Danke

Gruß:cool:
 
Zurück
Oben