![]() |
[Konzeptfrage] Messwerte speichern?
Hallo,
welche Möglichkeiten gibt es Messwerte abzuspeichern? In unserer Firma fallen am Tag ca. 2.880 * 280 Messstellen (806.400) Messwerte an, das sind im Jahr ca. 28.224.000 Messwerte. Diese Messwerte würde ich gerne abspeichern. Jetzt überlege ich schon eine ganze Weile, wie ich diese Masse an Messwerte sinnvoll abspeichern kann. Da die Datensätze nicht sehr groß sind, bin ich nicht sicher, ob es sich lohnt eine Datenbank dafür einzusetzen. Außerdem würde ich gerne wissen, wie man es am besten anstellt auf alle Messwerte zu warten die in 30sek. übermittelt worden sind und diese dann in einem Datensatz abzuspeichern. Für Ideen und Anregungen wehre ich dankbar. Bis bald Chemiker |
Re: [Konzeptfrage] Messwerte speichern?
Bei solch einer Datenmenge bietet sich eine Datenbank doch gerade zu an.
Dann sind auch später Auswertungen einfach möglich und das System ist zusätzlich noch sicher und einfach Erweiterbar. Deine 30 Sekunden verstehe ich nicht so ganz. Willst du da den Mittelwert bilden und diesen dann abspeichern? |
Re: [Konzeptfrage] Messwerte speichern?
Hallo omata,
habe das etwas missverständlich ausgedrückt, es werden alle 30sek. alle 280 Messwerte übermittelt. Diese müssen dann noch aufbereitet werden und mit einem Zeitstempel versehen werden. Bis bald Chemiker |
Re: [Konzeptfrage] Messwerte speichern?
Dann würde ich aber einen Zeitstempel ablegen und diesem eine ID zuweisen.
Dieser ZeitID können dann alle Messwerte zugewiesen werden. Wenn die 280 Messwerte unterschiedlicher Art sind, aber sich immer wiederholen, würde ich für jede Art eine ArtID anlegen und eben die ZeitID, ArtID und den eigentlichen Messwert dann in eine dritte Tabelle schreiben. So wäre deine Datenbank normalisiert und du kannst später Auswertungen durchführen, die dir jetzt nichtmal in den Sinn kommen. |
Re: [Konzeptfrage] Messwerte speichern?
Hallo omata,
die Auswertung ist eigentlich nicht das Problem, die Daten müssen nur gespeichert werden. Die Messstellen-ID besteht aus 5 Zeichen und der Messwert ist ein Double, also insgesamt ist der Datensatz nicht groß. Wenn ich das in eine Datenbank mit 3 Tabellen unterbringe so müssten ja noch zusätzlich die Indexe angelegt und gepflegt werden und beim Zurückholen die Datensätze wieder zusammengesetzt werden. Erschwerend kommt hinzu, dass einige Datensatz nicht regelmäßig übermittelt werden, das ist zwar nicht die Masse, aber die gibt es auch (Ventil auf / Ventil zu // Als Messwert wird die Zeit übertragen). Dann kann es vorkommen das ein Messfühler ausfällt und gar keine Messwerte übertragen werden, oder nur Blödsinn. Wie kann das Programm dann feststellen, dass keine weiteren Daten mehr übertragen werden? Bis bald Chemiker |
Re: [Konzeptfrage] Messwerte speichern?
Die Idizes werden, wenn du Fremdschlüssel verwendest automatisch aktualisiert
|
Re: [Konzeptfrage] Messwerte speichern?
Hallo mkinzler,
nur geht bei der Masse von Datensätze die Geschwindigkeit der Datenbank in den Keller? Bis bald Chemiker |
Re: [Konzeptfrage] Messwerte speichern?
Zitat:
Gruss KH |
Re: [Konzeptfrage] Messwerte speichern?
Zitat:
|
Re: [Konzeptfrage] Messwerte speichern?
Hallo khh,
Zitat:
Bis bald Chemiker |
Re: [Konzeptfrage] Messwerte speichern?
In diesem Bereich sollte es kein Problem darstellen ( kommt natürlich auch auf den Serverrechner an
|
Re: [Konzeptfrage] Messwerte speichern?
Nix vielleicht, dafür sind Datenbanken nunmal da. Große Datenmengen schnell zuverarbeiten und sicher abzuspeichern. Ich verstehe deine Bedenken und zaghaften Vormulierungen einfach nicht. Probier es doch einfach mal aus. Das sollte doch super fix umsetzbar sein.
|
Re: [Konzeptfrage] Messwerte speichern?
Hallo khh,
Zitat:
Wenn ich Datensätze in einem Stream so wie sie anfallen wegschreibe, dann ist es erst mal egal ob ein Messfühler ausgefallen ist, oder nicht. Bis bald Chemiker |
Re: [Konzeptfrage] Messwerte speichern?
Zitat:
ich würde ja nicht ungeprüft den Stream in die DB schreiben Bischen genauere Info wäre sicher hilfreich |
Re: [Konzeptfrage] Messwerte speichern?
Wenn keine daten kommen, brauchst du diese ja nicht wegzuschreiben
|
Re: [Konzeptfrage] Messwerte speichern?
@Chemiker: Wie sieht denn der Gesamtaufbau des Systems aus? Ich habe das Gefühl, dass du irgendwie unbedingt eine bestimmte Zeitspanne einhalten musst.
Eigentlich sollte es doch so ablaufen:
Code:
Oder? Kann das Programm denn die Messwerte über eine entsprechende Schnittstelle anfordern, oder muss das Programm permanent "horchen"?
| |-> Alles Ok => Werte in die Datenbank
|Messwerte (Roh) => Programm verarbeitet die Daten | | |-> Fehler => Fehler in das entspr. Log |
Re: [Konzeptfrage] Messwerte speichern?
Hallo,
Messwerte kommen an der seriellen Schnittstelle an, werden mit einem aktuellen Datum/Zeit-Stempel versehen und in einem TChart angezeigt, anschließend sollen diese Messwerte abgespeichert werden. Zitat:
Bis bald Chemiker |
Re: [Konzeptfrage] Messwerte speichern?
Ich würde nicht zuerst darstellen, sondern zuerst speichern und die Daten der DB darstellen.
Mit welcher Comport-Kompo arbeitest du. Nur wenn diese triggert würde ich Spiechern. Wie khk schon sagte, hat das mit der DB nichts zu tun |
Re: [Konzeptfrage] Messwerte speichern?
Hallo mkinzler,
Zitat:
Zitat:
Ich muss es wie Ometa es geschrieben hat einfach ausprobieren und mir eine Datenbank mit 30 Mio. Datensätze erstellen und mal sehen, ob die Performens ausreicht für mein Vorhaben. Bis bald Chemiker |
Re: [Konzeptfrage] Messwerte speichern?
Die absolute Anzahl stellt gar kein Problem dar. Wenn es eine Engpass gibt, liegt der am Durchsatz, also der Anzahl pro Zeit. Messe doch einmal wieviele Datensätze du pro Sekunde maximal Verarbeiten, Schreiben und darstellen kannst
|
Re: [Konzeptfrage] Messwerte speichern?
Zitat:
Wir haben da seit geraumer Zeit eine Kühlhausüberwachung laufen, die mehrfach pro Sekunde die Daten aller Kühlhäuser speichert. Schluckt in dem Fall der Firebird so weg. Ein weiterer Vorteil ist, dass Du die Auswertung zeitgleich auf beliebig vielen Rechnern visualisieren kannst, solange diese Zugriff auf die DB haben. |
Re: [Konzeptfrage] Messwerte speichern?
zur Speicerhung von Messwerten fällt mir spontan „Round-Robin-Database“ ein.
Dort fallen natürlich dann die Einzelwerte nach einiger Zeit weg, jedoch sind Summen, Mittwerte, etc. verfügbar. (evtl. Wäre das ja ein Alternative) Gruß tr909 |
Re: [Konzeptfrage] Messwerte speichern?
Hallo Chemiker...
Zitat:
Zitat:
Wenn die Visualisierung parallel läuft könntest du das Speichern der Werte in einen Thread auslagern und dein Chart im Formular aktualisiert sich in gewissen Zeitabständen aus der DB. :hi: |
Re: [Konzeptfrage] Messwerte speichern?
Hallo,
erst mal Danke an alle, für die tolle Ideen. Werde mal versuchen das mit Firebird und FIBPlus umzusetzen. Bis bald Chemiker |
Re: [Konzeptfrage] Messwerte speichern?
Zitat:
![]() Auch ist die Datenbank dann nicht mehr ein Single Point of Failure - man kann sie zu Sicherungszwecken herunterfahren, während der Message Broker weiter die Daten annimmt (oder auch mehrere Broker mit automatischem "failover"). Nachrichten, die man nicht dauerhaft speichern will, kann man dabei als 'nicht-persistent' kennzeichnen, und gängige Message Broker unterstützen auch Transaktionen (z.B. Apache ActiveMQ). Clients Libraries gibt es - je nach Broker - für fast alle Plattformen und Sprachen. Ist vielleicht zu spät für das aktuelle Projekt, aber später eventuell mal interessant. Schönes & erfolgreiches neues Jahr |
Re: [Konzeptfrage] Messwerte speichern?
Moin, Moin, Chemiker,
kannst Du bitte mal einen Beispieldatensatz bringen, wie das aussehen wird, was Dir die Messstationen zurückbringen. Ausserdem wären ein paar Erläuterungen sinnvoll, über das was Du mit diesen Daten machen würdest, welche Auswertungen, ob Auswertungen überhaupt, maschinelle Weiterleitung etc. Denn die Weiterverarbeitung deiner Daten bestimmen das zugrunde liegende Modell. |
Re: [Konzeptfrage] Messwerte speichern?
Hallo WInfo,
der Datensatz der von der SPS kommt sieht wie folgt aus: 3 Zeichen Maschinen-ID 2 Zeichen Messstelle-ID der Maschinen Double-Wert = MW Mit diesen Werten werden zum Beispiel Temperatur – Kurven im TChart dargestellt. Füllstandsanzeigen von Tanks angezeigt und aufgezeichnet, Stromverbrauch von Maschinen aufgezeichnet usw. Es ist also eine reine MW-Aufzeichnung keine Steuerung. Im Kleinen Maßstab läuft das Programm das Problem ist jetzt nur die Masse an Daten, die jetzt anfallen. Bis bald Chemiker |
Re: [Konzeptfrage] Messwerte speichern?
Moin Moin Chemiker,
danke für deine Ausführungen, wollte zuerst schreiben, ob Du deine Auswertungen nur eine Maschine benötigst, um ggf. die Daten maschinenbezogen abzuspeichern, aber da dürfte es wohl Probleme mit den Filehandels geben, daher wird man nicht dran vorbeikommen die Daten in ein File zu schreiben. Wie möchtest Du denn gerne die Historie auswerten, nur rückwirkend auf 30 Tage oder permanent beginnend von Adam und Eva. Denke, hier sollte man zweigeteilt vorgehen, eine Datei mit den Daten für Auswertungen und ggf. noch eine für die Historie, auf welche nur selten schreibend zugegriffen wird. Da die Daten alle lesend sind, kann man auf ein Transaction Processing verzichten, es wird bei einem Flatfile jedoh schwierig die Daten herauszuholen, aber bei der Dateigrösse (3 + 3 + 4 + 4)* 2880 * 280 = 10,8 MB je Jahr tendiere ich zu einer strukturieren Datei. Da die paar MB sehr schnell gelesen werden können und die Datensätze schnell hinzugefügt werden können, ohne weitere Indexe mit fortzuschreiben. Einen Datenbank sehe ich für diesen Einsatzbereich aktuell nicht, wäre oversized und würde zu viel Performance schlucken. Edit: Hier noch die Datendefinition, wie ich sie verstand in der Luxusausführung mit 23 Byte Recordlänge.
Delphi-Quellcode:
Schöne Grüße
TYPE
STR3 = string[3]; STR2 = string[2]; TMachineInfo = PACKED RECORD MachineID: STR3; ControlPoint: STR2; TimeStamp: tDateTime; Measurement: double; END; VAR MachineInfoFile: FILE OF TMachineInfo; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz