Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#14

AW: RealTimeChart mit TeeChart und großer Datenmenge

  Alt 15. Dez 2015, 17:25
Also nochmal, damit ich's (hoffentlich) verstehe.

Ein Maschine hat ein undefiniertes Problem.

Ein Elektriker schließt die Überwachungssoftware an und geht.

Der Bediener beobachtet die Anzeige und reagiert bei einem Ausreißer.

Hier könnte man auch ohne Datenbank auskommen.

Mal folgende Annahme:

Du kannst die Daten schnell genug sammeln.

Sagen wir, Du sammelst sie immer für eine Minute, dann kannst Du jede Minute die Daten einer Minute in eine Datei schreiben. Dateien, die älter als 24 Stunden sind werden (sporadisch) gelöscht.

Die Daten einer Minute zeigst Du für eine Minute im Chart an. Dann hat der Bediener Zeit, jede Minute nach Ausreißern zu suchen und 'ne Taste zu betätigen oder sich die Zeit aufzuschreiben. Bei der Datenmenge "live" zuzuschauen und zu reagieren, halte ich für extrem anstrengend und dürfte recht schnell zu einer Ermüdung führen, die bei einem Maschinenbediener sicherlich nicht risikofrei ist.

Wenn jetzt per Tastendruck oder Aufschreiben der Zeitpunkt des Ausreißers bekannt ist, kann sich der Elektriker zu einem späteren Zeitpunkt die Daten aus der Datei des "Ausreißerzeitpunktes" anzeigen lassen und per scrollen jeweils eine Minute vor- oder zurückscrollen.

Je nach Implementierung könnte daraus dann (eventuell) auch eine fließende Darstellung werden.

Da Du ja bereits größere Datenmenge in 'nem Chart anzeigen konntest, wäre es sinnvoll den Aufbau der Dateien so zu gestalten, dass Du die Daten aus den Dateien einfach in das Chart einlesen kannst.

Wie sieht denn das Array aus, welches zu schon eingelesen hast?

Eventuell kann man ja eine einfache und schnelle Schreibmethode für die Dateien entwickeln.

Zeigst Du die Daten aus dem Array so ähnlich an?
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  temparray: array of double;
  i : Integer;
  k : Integer;
begin
  Setlength(temparray,10000);
  for k := 0 to Chart1.SeriesCount - 1 do begin
    for i := 0 to Length(temparray) - 1 do begin
      temparray[i] := i * k;
    end;
    Chart1.Series[k].Clear;
    Chart1.Series[k].AddArray(temparray);
  end;
end;
Dann könnte es hilfreich sein, für jeden Messwert eine eigene Datei zu erstellen.

Das Lesen könnte dann so, wie hier beschrieben dynamisches Array aus Filestream lesen, erfolgen.
  Mit Zitat antworten Zitat