DB's abwechselnd füllen und auslesen

Karli

Level-1
Beiträge
46
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bin mal wieder auf Eure Hilfe angewiesen.

Ich möchte für ein Projekt Daten in die S7 einlesen, mit denen einen DB vollschreiben lassen und diesen DB anschliessend über ein VB-Skript (im Pro Tool) auslesen lassen.
Um die enorme Datenmenge handeln zu können, ist es notwendig, mindestens zwei DB's zu beschreiben. Ich möchte den ersten DB vollschreiben, während der zweite ausgelesen wird. Ist der erste DB vollständig gefüllt und der zweite vollständig ausgelesen, soll gewechselt werden. Die Daten sollen also abwechselnd in die beiden DB's geschrieben werden.
Sollte sich herausstellen, dass die Datenmenge hierfür zu groß ist & der entsprechende DB nicht schnell genug geleert werden kann, kann auch noch ein dritter DB eingeführt werden.

Ich bin ein Anfänger in der S7-Programmierung und habe bisher noch keine Idee, wie ich das realisieren könnte. Kann mir vielleicht jemand eine Hilfestellung geben?

Außerdem stellt sich mir die Frage: Wie können die Daten im DB sinnvoll sortiert werden, damit sie wieder korrekt ausgelesen werden können? Es werden pro Sekunde zwei Messdaten von insgesamt 13 verschiedenen Größen eingelesen.


Danke im Voraus!
 
Ein DB könnte eine Größe von 16 KB bis 64 KB haben (SPS abhängig)
wie groß ist deine Datenmenge??
Nur ein DB könnte reichen statt 2 DB´s :rolleyes:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Johnny,
danke für die schnelle Antwort.

Ein DB wird sicherlich nicht reichen, da die Daten über einige Stunden (mindestens 24) aufgenommen werden sollen.

Außerdem will ich mir die Option der Erweiterung offen halten, falls mein Chef dann auf die Idee kommt aus den 13 Messwerten 23 zu machen. Das halte ich nämlich für sehr wahrscheinlich.
 
Hallo,

du solltest noch einmal den Ansatz für das Problem überprüfen.
Hier gibt es noch viele andere Lösungen.

Deine Messdatenerfassungsmethode ist jedoch sehr interessant, aber halt etwas unkonvertionell.

Ich hoffe dies ist dir hilfreich.
 
Was ist denn an diesem Ansatz nicht in Ordnung?

Meine Intention war es, die sehr große Datenmenge zuverlässig zu verarbeitun und zu exportieren.
Die Daten nur zwischenzuspeichern und dann gleich über ein VB-Skript auszulesen funktioniert nicht, denn hierfür sind es zu viele Daten und das Skript arbeitet zu langsam. (Das ist schon ausprobiert worden)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist denn an diesem Ansatz nicht in Ordnung?

Meine Intention war es, die sehr große Datenmenge zuverlässig zu verarbeitun und zu exportieren.
Die Daten nur zwischenzuspeichern und dann gleich über ein VB-Skript auszulesen funktioniert nicht, denn hierfür sind es zu viele Daten und das Skript arbeitet zu langsam. (Das ist schon ausprobiert worden)

Dazu hab ich mal eine Frage.
Du sagst, das Auslesen von zwischengespeicherten Daten per Script ist zu langsam. Ist das Auslesen aller Daten gemeinsam aus dem DB per Script schneller?

Weiterhin sagst du, 13 Meßwerte je 2 pro Sekunde über 24 Stunden.

Das heißt, wenn ein Meßwert ein Word hat 2246400 Word pro Tag.

1560 Word pro Minute, da ist der DB alle paar Minuten voll!
 
Zuletzt bearbeitet:
Was ist denn an diesem Ansatz nicht in Ordnung?

Meine Intention war es, die sehr große Datenmenge zuverlässig zu verarbeitun und zu exportieren.
Die Daten nur zwischenzuspeichern und dann gleich über ein VB-Skript auszulesen funktioniert nicht, denn hierfür sind es zu viele Daten und das Skript arbeitet zu langsam. (Das ist schon ausprobiert worden)

Hallo,

schaue dir mal bei Siemens dafür OPC und SQL an.

Hoffe ist dir hilfreich

Grüsse
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mensch maxi, darum gehts hier doch, also laß doch mal den dusseligen Spruch weg!

Hallo Ralle,

ich möchte doch nur höflich sein.
Habe ldier nicht die Zeit um eine bessere Lösung zu schrieben. Daher hoffe ich, dass mein kleines hineinschmeissen einer Information mehr hilfreich ist als verwirrt.

Grüsse dir
 
@ralle: du hast den zeitstempel bei deiner berechnung vergessen ...

das zwischenspeichern bringt hier wirklich überhaupt nichts, macht das system nur träger. hier muß ein externer zugriff her, der sekündlich die beiden messwerte abholt ... ich könnte mir hier sogar eine libnodave-lösung vorstellen :rolleyes:

...aber ich bin immer noch nicht dazu gekommen libnodave auf winCE und damit auf panels zum laufen zu bringen, aber mit der .net compact sollte das eigentlich auch möglich sein
 
Danke für die schnellen Antowrten.

@Ralle: Ich bin mir bewußt, dass der DB im (geschätzten) 5-Minuten-Takt voll ist. Wenn ich von eine 3-DB-Lösung ausgehe, kann der 1.DB vollgeschrieben werden & inzwischen ist der nächste mit Sicherheit geleert. Wieviele DB's letztenendes notwendig sein werden wollte ich dann am Beispiel ausprobieren.

@maxi: OPC uns MSQL sind bei dieser Aufgabenstellung leider nicht erlaubt.

Wie würde das DB-wechseln denn grundsätzlich funktionieren? Oder seht ihr da prinzipiell Probleme?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie würde das DB-wechseln denn grundsätzlich funktionieren?

Du machst einen Pointer für die DB-Nummer und einen für die Schreib-Adresse im DB.
Ist die Schreib-Adresse > Schreib-Adresse_max. dann setzt du die Schreib-Adresse auf Anfang zurück und erhöhst die DB-Nummer.
Ist die DB-Nummer > DB-Nummer_max. dann setzt du die DB-Nummer wieder auf Anfang.

Gruß
LL
 
Danke für die Hilfestellung.
Ich habe zwar noch nie Pointer programmiert, aber es gibt ja immer ein erstes Mal & ich versuche mal mein Glück.

Schönes Wochenende.
 
Zurück
Oben