Gaspruefstand - Programm
Hehe, ich muss das hier kurz mal aufgreifen:
Rekapitulation:
Ein Loop, dass Analog-DAQ mit hoher Samplerate ausliest und mit moderater Rate (1-100 Hz) in eine Datei schreibt.
Ein anderes Loop, das CAN - Daten ausliest und diese in einen Notifier schreibt.
Das AnalogDAQ Loop liest den Notifier und schreibt dessen Werte mit in die selbe Datei wie die AI-Werte.
CAN Daten sind aber pro Schreibvorgang weniger/mehr (je nach eingestellen Sampleraten) vorhanden als AI Daten. Also die Loops laufen mit verschiedenen Geschwindigkeiten
Meine Idee war jetzt, die Anzahl der Werte die aus dem Puffer gelesen werden bei beiden Loops identisch zu machen. Dann sind die Daten Arrays wenigstens gleich lang.
Allerdings hat man damit gravierende Probleme:
Z. B. wenn CAN nur mit 1 Hz laueft, aber das AI/DAQ Loop mit 100 Hz schreibt: Dann dauert es jedesmal 100 Sekunden bis ein neues CAN Paket fertig ist.
1. Wenn der Anwender zwischenzeitlich abbricht, muss er a)100 Sekunden warten und b) ist das Schreiben-Loop schon laengst vom Stop-Befehl beendet worden, die letzen Daten gehen also verloren.
2. Das Schreiben-Loop schreibt solang bis der Notifier aktualisiert wurde 100 x das 100er-Paket CAN Daten in Folge in die Ausgabedatei. Man hat also ein Muster dass sich wiederholt und einfach nur falsch ist.
3. Die Zeitinformation passt ja sowieso dann ueberhaupt nicht mehr...
Insofern verwerfe ich meine Idee sofort wieder - war quatsch.
Gibts da irgendwie eine geschickte Moeglichkeit das hinzubiegen? Meine Notloesung ist, CAN nicht individuell in der Samplerate zu gestalten sondern an die Datei-Schreib-Rate zu koppeln.
Dann hat man keine Probleme, kann aber auch nur maximal CAN mit 100 Hz lesen
|