AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi RealTimeChart mit TeeChart und großer Datenmenge

RealTimeChart mit TeeChart und großer Datenmenge

Ein Thema von Ro90 · begonnen am 14. Dez 2015 · letzter Beitrag vom 16. Dez 2015
 
Ro90

Registriert seit: 26. Jan 2015
6 Beiträge
 
#1

RealTimeChart mit TeeChart und großer Datenmenge

  Alt 14. Dez 2015, 21:28
Hallo,

ich bin Anfänger in Delphi, ich programmiere eigentlich SPS-Automatisierungssysteme, habe aber immer Visualisierungen in Delphi erstellt.

Ich habe jetzt eine Aufgabe bekommen eine Art Plotter für eine Industrieanlage zu Programmieren.

Ich bekomme ca. alle 10-50ms von einer SPS-Steuerung 16 Real Werte.
Dies habe ich mittels einem Thread auch schon schön hinbekommen dass alle Signale ziemlich schnell in Delphi ankommen.

Ich soll jetzt mittels TeeChart einen Plotter erstellen der mir diese Werte extrem schnell für 24h aufzeichnet,
die alten werte werden dann verworfen.

Meine Rechnung:
16 Werte alle 10ms einen Eintrag währen 1600 Werte pro Sekunde.
Weiters währen dass dann in 24h 138.240.000 Werte.
Kling für mich ein wenig unmöglich dies schnell zu verarbeiten.

alle 50ms einen Eintrag ins Chart wären auch noch akzeptabel,
dabei währen es aber in 24h auch noch 27.648.000 Einträge.

Aber ich wollte es dann einmal probieren es vielleicht eine Stunde hinzubekommen.

Zuerst habe ich es mittels TeeChart (RealTimeCharting mit Series AfterAdd usw.) versucht,
aber erfolglos weil dies sehr schnell sehr langsam wird.

Dann habe ich versucht einen Array mit 1.000.000 Werten ins Chart zu laden,
dies funktionierte dann auch in unglaublich schneller Zeit.
Jedoch müsste ich den Array als Ringpuffer realisieren:

Delphi-Quellcode:
// Array als Ringpuffer (alten Wert löschen, alles nachschieben)
procedure Thread_Array.movedArray(var temparray: array of double);
var i: integer;
begin
  for i := 0 to Length(temparray)-2 do temparray[i] := temparray[i+1];
end;
(vielen dank, diesen Code habe ich auch von hier )

aber bei 1.000.000 Werte ist dies dann auch ziemlich langsam, obwohl ich dies in einem Thread ausführe.
Klingt für mich auch logisch weil 999.999 Werte zu verschieben sicher kein klax ist.

Hat jemand eine Idee wie diese Aufgabe zu realisiere währe, ich habe leider wenig Erfahrungen mit TeeChart.
Ich habe mich auch schon ein wenig mittels Queue beschäftigt, aber ich weiß nicht ob dies der richtige Ansatz ist.

Und Entschuldigung wenn ich einen kapitalen Denkfehler habe, aber ich habe bisher nur einfache Projekte gemacht.

Vielen dank im Vorraus.
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 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