TIA Messwerte von der 300er auf USB-Stick speichern

Gargamel_

Level-1
Beiträge
48
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Angenommen, ich möchte alle paar Sekunden oder Minuten Messwerte meines SM331 aufzeichnen, und das über einen längeren Zeitraum, am liebsten als CSV.
Welche Methode - und die muß jetzt hier nicht Industriestandards genügen - könnte ihr mir empfehlen, und diese Daten auf einen USB Stick zu bekommen und später am PC weiterzuverarbeiten (der allerdings nicht permanent laufen soll).


Gewissermassen eine primitive Form von Qualitätskontrolle, SCADA für Anfänger...

Die Station selber hat ja kaum Speicher...


Falls ich mit dem CP343-1 nicht klarkomme bekomme hätte die Station auch noch eine Profibus Schnittstelle.
 
Welche Methode - und die muß jetzt hier nicht Industriestandards genügen - könnte ihr mir empfehlen, und diese Daten auf einen USB Stick zu bekommen und später am PC weiterzuverarbeiten (der allerdings nicht permanent laufen soll).
z.b. mit einem skriptfähigen Panel ( MP277 / MP377 / Comfort Panel ... )

mal als Beispiel.
 
Zuletzt bearbeitet:
Suche mal über die Forensuche nach Snap7, Excel, Libnodave.
Accon-AGLink kannst du im Netz finden und auch eine Testversion downloaden, wenn ich mich richtig erinnere.
 
Wenn die PC in Dauerbetrieb gefahren werden kann, dann ist Deltalogic Easylog ein fix-und-fertige Lösung für 310 €:
 
Zuletzt bearbeitet:
Die Station selber hat ja kaum Speicher...
Wieviele KB Daten willst Du wie lange sammeln/speichern?

Wenn Du eine größere MMC in die CPU steckst, dann kannst Du DBs aus dem Arbeitsspeicher auf die MMC auslagern: SFC84 "WRIT_DBL" und von Zeit zu Zeit mit dem PG auslesen.

Du könntest auch Daten im Arbeitsspeicher sammeln (z.B. Ringpuffer) und nur einmal am Tag oder alle paar Tage die Daten mit externen Programmen oder PG auslesen.

Falls es hier um Deinen CP 343-1 IT (343-1GX20) geht: theoretisch müsste man da auch Prozessdaten als Datei speichern können und per FTP oder Webserver drankommen. Habe ich aber noch nicht gemacht.

Harald
 
Wenn Du eine größere MMC in die CPU steckst, dann kannst Du DBs aus dem Arbeitsspeicher auf die MMC auslagern: SFC84 "WRIT_DBL" und von Zeit zu Zeit mit dem PG auslesen.
Pass nur auf dass die maximale Anzahl Schreibzykeln nicht überschritten wird. Ist 100000 für eine S7-300 MMC Karte.
"Alle Paar Sekunden" ist nur 55 Stunden
"Alle Paar Minuten" ist nur 138 Tagen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es soll nicht alle paar Sekunden auf die MMC geschrieben werden, sondern vielleicht einmal am Tag, wenn der DB im Arbeitsspeicher voll ist. Dann diesen DB auf die MMC auslagern.

Harald
 
z.b. mit einem skriptfähigen Panel ( MP277 / MP377 / Comfort Panel ... )

mal als Beispiel.
Die Anforderung geht sogar mit einem Basic-Panel 2nd Gen.
Hatte ich schonmal als "Kleinstanwendung" mit einem KTP400 Basic 2nd Gen und einem SLC 8GB USB gemacht.
Anwendungsfall war die Aufzeichnung eines Prüfzyklus über mehrere Tage. Eine CSV war ein Prüfzyklus.
Der Bediener musste den USB am Panel ziehen und am PC auslesen.
Die Aufzeichnung wurde manuell gestartet am KTP.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also es soll schon eine Billiglösung zum Experimentieren sein.

Mit den Raspberrys wollte ich mich auch schon länger mal befassen...
Sind nur leider alle auf unbestimmte Zeit ausverkauft. Der kleinste würde ja genügen...


Die Panels sind alle relativ teuer... Das KTP400 vielleicht gerade noch... Das hat vor allem einen USB-Anschluss, das gilt ja leider nicht für alle...


Wieviele KB Daten willst Du wie lange sammeln/speichern?
Sagen wir mal alle 2min 3Messwerte mit jeweils 13bit + Zeitstempel

Falls es hier um Deinen CP 343-1 IT (343-1GX20) geht: theoretisch müsste man da auch Prozessdaten als Datei speichern können und per FTP oder Webserver drankommen. Habe ich aber noch nicht gemacht.
Ja sowas in der Art hab ich auch schon gedacht.
Wenn man die Daten alle paar Tage auslesen würde...

Wenn ich den CP im Netzwerk per Browser aufrufe, steht da unter anderem was von einem "volatilen" und einem "nichtvolatilen" Filesystem mit jeweils 30MB.
Könnte man irgendwas davon zum Zwischenspeichern der Messwerte missbrauchen? 30MB ist ja viel...


Ich finde den 6GK7343-1GX20-0XE0 nicht bei Siemens, bzw. die Unterlagen sind nicht verfügbar.
Hat da vielleicht jemand das Handbuch dafür?
 
Wieviele KB Daten willst Du wie lange sammeln/speichern?
Sagen wir mal alle 2min 3Messwerte mit jeweils 13bit + Zeitstempel
also 3x 2 Byte INT + 8 Byte Zeitstempel DT
= 420 Byte / Stunde
~ 10 kB / Tag
~ 70 kB (in 2 DB) pro Woche

PS:
Den Zeitstempel kann man eigentlich auch weglassen oder nur einmal je Stunde speichern.
Da reduziert sich der Speicherbedarf auf weniger als die Hälfte:
= 188 Byte / Stunde
~ 4,5 kB / Tag
~ 31,5 kB pro Woche

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Den Zeitstempel kann man eigentlich auch weglassen oder nur einmal je Stunde speichern.
Weglassen ist klar, aber nur einmal je Stunde speichern? Wie macht man das?
Auf "csv-Ebene" (ASCII) wäre es auch klar: in den Zeilen, in denen in der Spalte "Zeitstempel" nichts eingetragen wird, erscheint platzsparend nur ein Semikolon als Platzhalter.
Meinst Du die Zeitstempel in einem separaten Array sammeln und bei der Umwandlung in csv diese Werte dann wieder richtig zuordnen?
Evtl. in der Tabelle der Messwerte (ArrayA) eine Spalte hinzufügen, in der die Verweise auf das ArrayB (Zeitstempel) stehen?
Oder lieber eine im Programm festgelegte Zuordnung schaffen, die diese zusätzliche Spalte in ArrayA nicht benötigt
(Z.B. ArrayB[IdxB] gehört zu ArrayA[n * IdxB])?
Mir wäre die Variante mit der zusätzlichen "IndexSpalte" sympathischer, aber sie spart nicht ganz so viel SpeicherPlatz.
 
Wie der Zeitstempel gespeichert wird gibt es einige Möglichkeiten, da will ich jetzt nicht detailliert drauf eingehen.
Für die csv-Datei müsste der Zeitstempel dann für jeden Datensatz (Zeile) rekonstruiert/weitergerechnet werden auf Basis des letzten Zeitstempels (z.B. volle Stunde) + Index-Differenz des Datensatz seit dem Zeitstempel * 2 Minuten.

Harald
 
Gut, mal angenommen ich kann den volatilen Speicher des CP benutzen.
Dann gäbs ja ohnehin mehr als genug davon, egal wie man das mit den Zeitstempeln regelt...

Danke für die Unterlagen, ich muss mich da mal einlsesen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also es soll schon eine Billiglösung zum Experimentieren sein.

Mit den Raspberrys wollte ich mich auch schon länger mal befassen...
Sind nur leider alle auf unbestimmte Zeit ausverkauft. Der kleinste würde ja genügen...

Die billigste Lösung, die ich aber selbst noch nicht getestet hab, ist wohl mit einem Arduino oder ESP8266 / ESP32 Microcontroller.
http://settimino.sourceforge.net/
Da bist du dann mit <10€ dabei.
 
Ich habe so etwas mit dem CP und dem FTP-Server schon einmal umgesetzt. Da wurden bei Start eines Vorgangs eine Datei mit der Chargennummer und den Parametern geschrieben, und zusätzlich eine Datei mit einem Messwert während des Vorgangs, ich meine das waren ein Wert mit Zeitstempel alle 5 Sekunden für 15 Minuten.

Ich weiß nicht ob es da noch andere Möglichkeiten gibt, aber ich habe es so gemacht, dass ich die Messwerte erst als Real-Werte gespeichert habe, dann anschließend in ein großes Char-Array weil ein String dafür zu klein ist, und das Char-Array kannst du dann als Datei auf dem FTP-Server ablegen.

Das Umwandeln der Werte in die Strings benötigt recht viel Rechenzeit, ich habe dann pro Zyklus nur eine Zeile verarbeitet, da zwischen den Vorgängen genug Zeit war. Du brauchst auf jeden Fall etwas freien Speicher in der CPU für den Puffer. Du kannst aber auch direkt bei Aufzeichnung in den DB schon alles fix und fertig als Chars eintragen. Ggf. würde ich dann z.B. zu jeder vollen Stunde eine neue Datei schreiben, auch in Abhängigkeit davon wie viel Speicher du in deiner CPU noch frei hast.
 
Zurück
Oben