AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Echtzeitanwendung - Welche Struktur beim Dateizugriff?
Thema durchsuchen
Ansicht
Themen-Optionen

Echtzeitanwendung - Welche Struktur beim Dateizugriff?

Ein Thema von Matze · begonnen am 6. Nov 2010 · letzter Beitrag vom 6. Nov 2010
 
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Echtzeitanwendung - Welche Struktur beim Dateizugriff?

  Alt 6. Nov 2010, 10:37
Hi zusammen,

auch wenn ich vermute, dass die meisten von euch von Echtzeitsystemen keine Ahnung haben, versuche ich dennoch mein Glück. Ich hoffe, ihr könnt mir folgen.
Ich erfasse sehr viele Messwerte und muss dieses auswerten und speichern.
.
Aktuell habe ich eine Schleife, in der Datenerfassung, Auswertung und Protokollierung erfolgen. Die Messdaten werden teils parallel, teils nacheinander eingelesen.

Aktuell habe ich das in der Schleife sequenziell so aufgebaut. Ihr müsst euch vorstellen, dass die Schleife pro Messung mehrmals durchlaufen wird:

1. Datenerfassung aller Sensoren (Daten werden gepuffert und z.B. alls 100 ms 100 Werte ausgelesen)
2. Prüfen, welche Daten relevant sind bzw. welche Sensoren auszuwerten sind
3. Pufferung der relevanten Messwerte
4. Messzeit abwarten
5. Wenn Messzeit(en) abgelaufen, Daten speichern (binär, also nicht im ASCII-Format o.ä.)
6. Schleife von vorne beginnen und erneut prüfen, ob das Messende vorliegt, eine neue Messung beginnen soll o.ä.

Es kann folgendes sein: Messzeit 5 Sekunden
Und z.B. nach 1 Sekunde beginnt die Messung von Sensor 1, nach 2 weiteren Seunden die von Sensor 2. Wenn die Messung von Sensor 1 dann zu Ende ist und die Daten protokolliert werden, läuft die Messung von Sensor 2 noch weitere 3 Sekunden und wird dann protokolliert. In der Zeit kann aber die Messung von Sensor 1 wieder beginnen.

Mein Problem ist nun, dass das Speichern der Datei sehr lange dauert (ca. 100 - 500 ms), selbst bei einer Dateigröße von 300 Bytes.
Die Messwerte werden zwar gepuffert und gehen auch bei Verzögerungen nicht verloren, aber die Messzeit variiert, da aufgrund der Verzögerungen der Schleifendurchlauf stark variieren kann.

Nun dachte ich mir, ich nehme eine Schleife für Erfassung und Bewertung (deteministisch) und eine parallele While-Schleife, die die Protokollierung übernimmt. Ich habe übrigens eine Single-Core-CPU.
In der Erfassungs-Schleife (höchste Priorität) würde ich z.B. alls 100 ms meine Messwerte auslesen und dann auswerten. In der Zeit, in der auf die Messwerte gewartet wird, könnten eventuelle Speichervorgänge in der parallelen Schleife durchgeführt werden.

Die CPU würde vermutlich in der Wartezeit der Erfassungs-Schleife die parallele Speichern-Schleife abarbeiten, sofern ich dieser Daten übergebe.

Ich hoffe, ihr konntet mir nun halbwegs folgen.
Habt ihr 'ne Ahnung, ob dieses Vorgehen sinnvoll ist der kennt ihr Alternativen?

Grüße
Matze
  Mit Zitat antworten Zitat
 


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 01:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz