TIA Daten Speicherung und auslesen aus dem internen Speicher S7 1214C

BaumimGarten

Level-2
Beiträge
63
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leute,

kurze Frage. Vielleicht find ich es einfach gerade nicht aber gibt es eine Möglichkeit Daten auf den internen Speicher der SPS abzuspeichern und diesen nachträglich auszulesen? Das einzige was ich finde ist das Datalogging über "DataLogWrite" oder das schreiben und lesen über Rezept Funktionen (damit würde ich ungerne arbeiten wollen : /.
Ich arbeite mit TIA 16 und eine S71214C DC7DC/Rly
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt in der SPS die Bausteine RecipeExport und RecipeImport.
Die haben nichts mit den Rezepten des HMI zu tun. Man kann damit Daten in eine CSV-Datei schreiben, die auf der Memory-Card der SPS liegt und diese Daten auch wieder Zurücklesen. Man legt hier zwar "Rezepte" in einem Rezept-DB an, aber man kann ja auch nur das erste nutzen, dann ist das wie ein Schreiben und Lesen einer CSV-Datei.
 
Ich will im Endeffekt Strings mit Zeitstempel in den internen Speicher der SPS schreiben und auch wieder auslesen.
Am besten in eine CSV oder txt Datei innerhalb der SPS
Auf der 1500 gibt es meines Wissens den Befehl FileWriteC / FileReadC gibt es dafür alternativen für die 1200?
 
Warum willst Du die Daten auf die Speicherkarte der SPS-CPU schreiben? Man kann auch Daten "ganz normal" im Arbeitsspeicher der SPS sammeln, z.B. in einem DB in einem Array of Struct/UDT.

Wie lang ist ein Datensatz?
Wie oft musst Du einen Datensatz schreiben?
Wie lange müssen die Datensätze in der SPS verfügbar bleiben?
Wieviele Datensätze können in der Zeit in der SPS auflaufen und müssen gepuffert/gespeichert werden?
Womit bzw. mit welchem System willst Du die Daten aus der SPS auslesen (hatte DeltaMikeAir auch schon in #2 gefragt)?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hat er das nicht beantwortet?
Ja genau schon mit der SPS (sry wenn das nicht klar wurde)
Ich will halt für MQTT einen Zwischenpuffer erstellen, der im Endeffekt bei keiner Verbindung zum Broker die Daten weiter im internen Speicher speichert.
Klar ich könnte zwar das auch alles im Array oder so Zwischenpuffern aber würde gerne auch auf den Speicher über den Webserver zugreifen können also dann auf eine txt oder CSV Datei.
 
Warum willst Du die Daten auf die Speicherkarte der SPS-CPU schreiben? Man kann auch Daten "ganz normal" im Arbeitsspeicher der SPS sammeln, z.B. in einem DB in einem Array of Struct/UDT.

Wie lang ist ein Datensatz?
Wie oft musst Du einen Datensatz schreiben?
Wie lange müssen die Datensätze in der SPS verfügbar bleiben?
Wieviele Datensätze können in der Zeit in der SPS auflaufen und müssen gepuffert/gespeichert werden?
Womit bzw. mit welchem System willst Du die Daten aus der SPS auslesen (hatte DeltaMikeAir auch schon in #2 gefragt)?

Harald
Über die Länge hab ich mir jetzt noch keine gedanken gemacht aber der würde nicht allzu lang sein und würde ich dann begrenzen.
Der Datensatz soll ca. alle 10 sekunden geschrieben werden.
Soll am ende ein Ringpuffer sein also wenn eine vorgegebene Länge erreicht ist soll über speichert werden. Kommt also auf Länge des Datensatzes und Speichergeschwindigkeit drauf an.
 
Soll am ende ein Ringpuffer sein also wenn eine vorgegebene Länge erreicht ist soll über speichert werden. Kommt also auf Länge des Datensatzes und Speichergeschwindigkeit drauf an.
RingPuffer in csv- oder txt-Datei abbilden?
Stelle mir gerade vor, dass Du bei jeder Änderung am Inhalt des RingPuffers die Datei komplett neu (bzw. über-) schreiben müsstest ... :cry:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Über die Länge hab ich mir jetzt noch keine gedanken gemacht aber der würde nicht allzu lang sein und würde ich dann begrenzen.
Der Datensatz soll ca. alle 10 sekunden geschrieben werden.
Da würdest Du in einem Jahr reichlich 3 Millionen mal auf die Speicherkarte schreiben wollen? Hast Du Dir schon Gedanken gemacht, wie lange die Speicherkarte das mitmacht?

Harald
 
Idee kommt leider nicht von mir 😅
aber hab auch auf die begrenzten Schreibzyklen hingewiesen.
Soll aber trotzdem so gemacht werden.

Es steht bis jetzt auch noch nicht zu 100% fest, mit welcher Geschwindigkeit geschrieben werden soll, aber momentan wird unter 30 Sekunden gerechnet.

RingPuffer in csv- oder txt-Datei abbilden?
ist recht egal, das soll auch nur dafür da sein um "eventuell" die Daten in eine Datenbank einzupflegen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Über die Länge hab ich mir jetzt noch keine gedanken gemacht ...
Worüber gibt es denn schon konkrete Ideen bzw. Vorstellungen?
- DateiNamen?
- Umfang des Inhalts pro Datei? Z.B. 1 Datei pro Tag oder 1 Datei pro Schicht?
- Wer holt die Dateien auf welchem Wege ab?
- Wer löscht auf welchem Wege die nicht mehr benötigten Dateien?
- Genügt es z.B., wenn Dateien zu den zurückliegenden Tagen vorliegen, aber (noch) nicht zum aktuellen Tag?
- Was, wenn doch schon Daten des aktuellen Tages in Form einer csv-Datei abgeholt werden müssen (obwohl sie noch nicht vollständig sind)?
- Für wie viele Tage rückwirkend können/müssen die Daten in der SPS verfügbar sein, ohne sie aus den csv-Dateien rekonstruieren zu müssen?
- Muss die SPS sich wirklich die Daten vergangener Tage aus einer [/ mehreren] Datei[en] wieder einlesen können?
- u.s.w.

Mir würde z.B. vorschweben, zu Beginn eines neuen Tages die Daten des Vortages in "einem Rutsch" in eine csv-Datei mit dem entsprechenden Datum [und der Schicht-Nr?] im DateiNamen zu schreiben.
Ferner, in der SPS die Daten für n Tage noch beizubehalten, ehe sie (automatisch) gelöscht werden.

Ich kenne die Anforderungen nicht. Um die Aufgabe aber lösen zu können, müsste man schon derartige "Details" vorab klären, da sie organisatorisch relevant sind.
 
An sich soll die Datei jeder Zeit ausgelesen werden können (egal ob vollständig oder nicht) und eine zeitliche Einordnung durch Tage wird nicht gebraucht, da die Daten mit einem Zeitstempel abgespeichert werden sollen. Die Daten sollen ja nur "eventuell" mal in Datenbanken abgespeichert werden von daher soll einfach nur der File dann aus dem Webserver gezogen werden, um die Daten zu archivieren etc.
Wie auch schon beschrieben habe soll es im Endeffekt ein Ringpuffer werden.

Ich find das ja echt nett und bedanke mich auch dafür, dass ihr mir versucht mir bei der gesamten Aufgabe weiter zu helfen, aber eigentlich wollte ich nur wissen ob es neben dem DataLogging und der Rezeptfunktion noch weitere Speicherungsbausteine für die 1200er gibt 😅. (Hatte es bis jetzt eigentlich nur mit 1500 zu tun und dort dann ähnliche Aufgaben mit FileWriteC / FileReadC gemacht)
Wenn es die nicht gibt werde ich wohl meine Programmierung bzw. meine Struktur auf einen der beiden Funktionen anpassen.
 
An sich soll die Datei jeder Zeit ausgelesen werden können (egal ob vollständig oder nicht) und eine zeitliche Einordnung durch Tage wird nicht gebraucht, da die Daten mit einem Zeitstempel abgespeichert werden sollen.
Das könnte man so lösen, dass die Datei einerseits regelmässig (aber "selten") automatisch komplett geschrieben wird, aber andererseits auch gelegentlich "sofort" auf Anforderung (aber unvollständig). Diese ZweiGleisigkeit bedeutet aber einen MehrAufwand, der gut überlegt werden sollte.
Eine Zerstückelung der Datei in Abschnitte von z.B. Tagen dürfte auch hilfreich sein, wenn der Speicher in der SPS knapp ist, aber dennoch weiter zurückliegende Daten in der SPS/HMI zum Ansehen wieder eingelesen werden müssen.
Für diesen Zweck sollte man aber einen eigenen SpeicherBereich vorsehen, damit nicht im ohnehin vollen RingPuffer mit Gewalt Platz geschaffen werden muss und auf diesem Wege Lücken in der Aufzeichnung im RingPuffer entstehen, die man nicht beabsichtigt.
Wie auch schon beschrieben habe soll es im Endeffekt ein Ringpuffer werden.
Die Datei als RingPuffer zu gestalten finde ich wenig sinnvoll. SPS-intern hingegen ist die RingPufferIdee schon sehr naheliegend.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
eigentlich wollte ich nur wissen ob es neben dem DataLogging und der Rezeptfunktion noch weitere Speicherungsbausteine für die 1200er gibt 😅.
Es gibt hervorragend einfach implemetierbare "Speicherungsbausteine" in der S7-1200: Datenbausteine im Arbeitsspeicher. Da speichert man normalerweise alles Mögliche drin, auch Logs mit Zeitstempel in Ringpuffern. Nur wenn es ganz besondere Anforderungen gibt, die mit den Datenbausteinen im Arbeitsspeicher nicht erfüllbar sind, dann schreibt man Daten auf die Speicherkarte - wegen den begrenzten Schreibzyklen der Speicherkarten macht man das aber nicht häufig oder gar zyklisch im Sekundenbereich.

Klar ich könnte zwar das auch alles im Array oder so Zwischenpuffern aber würde gerne auch auf den Speicher über den Webserver zugreifen können also dann auf eine txt oder CSV Datei.
Der Wunsch "würde gerne per Webserver zugreifen" ist der einzige Grund, warum Du die Daten als Datei(en) auf die Speicherkarte schreiben willst? Für Webzugriff gibt es auch andere Möglichkeiten ohne Speicherkarte. Oder man könnte das Schreiben der Daten in Dateien auf die Speicherkarte nur bei Bedarf anfordern.
Vielleicht schreibst Du endlich mal die wirklichen Anforderungen, was da gemacht werden muß, welches System die Daten lesen will, was damit erreicht werden soll, ...

Harald
 
Zurück
Oben