Logen und Visualisieren

Atlas

Level-1
Beiträge
65
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi!

Bis jetzt hab ich mit meinen Kentnissen noch jedes mir gestellt Problem lößen können, doch hier komm ich nicht weiter...

Benötigt wird ein Tool, dass mit auf der Steuerung läuft und dort Signalzustände von Digitalen Ein- und Ausgängen zusammen mit einem Timestamp mitlogt. Da der Interne Speicher begrenzt ist, müssen die Daten in einen Ringspeicher. Dann kann zwar nur ein begrenzter Zeitraum mitgeschrieben werden aber ein vollaufen des Speichers ist so ausgeschlossen. Des weiteren müssen Signaländerungen auch in kleinst möglichen Abständen erkannt werden (Zykluszeit).

So weit, so gut. Nun fangen meine Probleme aber auch schon an...

1. Gibt es einen Timestamp in einer so hohen Auflößung oder müsste der selbst erstellt werden? Wenn es ihn gibt, wo und wie?

2. Wohin speichere ich am besten die Daten? Dachte bisher an einen DB dessen größe dem noch zur verfügung stehenden Speicherplatz angepasst wird. Wie bekomme ich hier die Daten dann am besten wieder raus um sie am PC darstellen zu können (z.B. als csv Datei mit Excel)?

Das Programm um die Daten zu speichen müsste in Prosa dann in etwa so aussehen:

1. Erfassen ob sich irgend ein Eingang geändert hat
2. Wenn das der Fall ist, alle Zustände in DB abspeichern mit folgendem Format:

ID [INT] - Timestamp [???] - Zustand [BOOL]

3. Bei erneuter Änderung wieder alles abspeichern, nur einen "Platz" im DB weiter..

Wie kann ich einen DB dynamisch adressieren? Also das die Daten nicht immer auf die selbe adresse gespeichert werden sondern jeweils eins weiter als beim letzten mal.

Wenn dann mit pointern vermut ich mal. Deren Funktion ist mir allerdings noch nicht ganz klar :(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da der Interne Speicher begrenzt ist, müssen die Daten in einen Ringspeicher. Dann kann zwar nur ein begrenzter Zeitraum mitgeschrieben werden aber ein vollaufen des Speichers ist so ausgeschlossen.
Willst Du in jedem Zyklus speichern oder nur wenn eine Änderung gegenüber dem letzten Zyklus eingetreten ist?
Des weiteren müssen Signaländerungen auch in kleinst möglichen Abständen erkannt werden (Zykluszeit)
Mit ner Vipa Speed7 solltest Du, wenn Dein Prg nicht allzu umfangreich wird bei einer Zykluszeit von 1ms liegen - Das sollte doch reichen oder?
1. Gibt es einen Timestamp in einer so hohen Auflößung oder müsste der selbst erstellt werden? Wenn es ihn gibt, wo und wie?
Die Systemzeit ist mit 1ms aufgelöst, das sollte doch ebenfalls reichen
2. Wohin speichere ich am besten die Daten? Dachte bisher an einen DB dessen größe dem noch zur verfügung stehenden Speicherplatz angepasst wird. Wie bekomme ich hier die Daten dann am besten wieder raus um sie am PC darstellen zu können (z.B. als csv Datei mit Excel)?
Sollen die Daten zur Laufzeit parallel visualisiert werden?
Oder reicht hinterher eine Datei, in der alle Änderungsereignisse aufgelistet sind?
Dann könntest Du gleich auf eine Speicherkarte schreiben, die später am PC ausgelesen werden kann.
Wie kann ich einen DB dynamisch adressieren? Also das die Daten nicht immer auf die selbe adresse gespeichert werden sondern jeweils eins weiter als beim letzten mal.
Wenn dann mit pointern vermut ich mal. Deren Funktion ist mir allerdings noch nicht ganz klar :(
Schonmal nach Ringspeicher hier im Forum gesucht - kann mir nicht vorstellen, das da nichts zu finden ist.
 
hallo,
das wirst du wohl selbststricken müßen, ansatz zur lösung auf ralles homepage http://www.sps-automatisierung.de/Download/download.html auch mal ralles bde anschauen

Danke! Hab schon einen ersten Blick drauf geworfen kann aber noch nichts genaueres sagen solange ich nicht im Büro bin mit ner S7 Software :)


Willst Du in jedem Zyklus speichern oder nur wenn eine Änderung gegenüber dem letzten Zyklus eingetreten ist?
Nur nach einer Änderung

Mit ner Vipa Speed7 solltest Du, wenn Dein Prg nicht allzu umfangreich wird bei einer Zykluszeit von 1ms liegen - Das sollte doch reichen oder?

Das war ein wenig anders gemeint... Änderungen sollen auch gelogt werden wenn sie nur für einen Zyklus anstehen. Die Zykluszeit ist natürlich abhängig vom Programm :)

Die Systemzeit ist mit 1ms aufgelöst, das sollte doch ebenfalls reichen
Super Tip, danke!! Jetzt muss ich nurnoch ganz doof fragen wie ich die auslesen kann, bzw was das für ein Format ist.

Sollen die Daten zur Laufzeit parallel visualisiert werden?
Oder reicht hinterher eine Datei, in der alle Änderungsereignisse aufgelistet sind?
Dann könntest Du gleich auf eine Speicherkarte schreiben, die später am PC ausgelesen werden kann.

Die Daten sollen nicht paralell visualisiert werden. Wäre sicher nicht schlecht wenn das auch möglich wäre. Aber hauptaugenmerkt liegt im speichern der daten und auslesen zu einem beliebigen zeitpunkt.

Schonmal nach Ringspeicher hier im Forum gesucht - kann mir nicht vorstellen, das da nichts zu finden ist.

Gute Idee, ich bin dabei...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Super Tip, danke!! Jetzt muss ich nurnoch ganz doof fragen wie ich die auslesen kann, bzw was das für ein Format ist.
Auch hier ist die Suchfunktion Dein Freund:rolleyes:
F1 ist auch schonmal hilfreich
Tipp: SFC1

Das war ein wenig anders gemeint... Änderungen sollen auch gelogt werden wenn sie nur für einen Zyklus anstehen
Wenn die CPU jede ms einmal nachschaut ob Änderungen eingetreten sind ist schon Hammerschnell, ansonsten helfen Dir da nurnoch Interrupts
 
Ok, denke das sollte machbar sein.

Wie ist dann der beste weg die daten aus einem DB wieder auszulesen. z.B: DB -> CSV
 
Zurück
Oben