Zitat:Zitat:Entsprechend erwarte ich, dass der Durchflusssensor 50 Werte (dt = 0,1) liefert. Leider sind es bei Letzterem immer etwas weniger.
Worauf beruht diese Erwartung?
Darauf, dass das Programm keine nennenswert komplexe Operationen beinhaltet und daher die einzelnen Komponenten im Millisekundenbereich (meinetwegen auch im Zehntelsekunden-Bereich) abgearbeitet werden müssten. Daher sollten die beiden Gruppen maximal einen unterschied von 1/10 bis 2/10 Sekunden aufweisen. Es sind allerdings einige Sekunden.
Ich konnte das ganze verbessern, in dem ich die "Datenerfassung" der ersten Schleife nicht durch eine lokale Variable beende, sondern dann, wenn die DAQ/Analyse-Queue zerstört wird.
Zitat:- Wieso nennst du einen Notifier "Queue1"?
Copy-Paste-Fehler
Zitat:- Du schreibst Zufallswerte in diesen Notifier und wartest dann auf ein zufälliges Vielfaches von Miilisekunden. Dummerweise wird diese Wartezeit stark variieren und nur selten etwas mit der gewollten Wartezeit zu tun haben!
Ja, genau so ist das beabsichtigt. Wenn du dich erinnerst, liefert der Durchflussmesser eine dem Durchfluss äquivalente Samplerate, die also nicht konstant ist. Um dieses verhalten schnell und einfach zu simulieren, ist mir auf anhieb nix besseres eingefallen.
Zitat:- Diesen Notifier fragst du dann mit einem TimeOut von 95ms ab. Hast du mal geprüft, ob/wie oft du in den TimeOut hineinläufst? Wie verträgt sich dieser TimeOut mit deiner Erwartung von dt=0.1?
Im realen Programm sollte das hinkommen. D.h. liefert der Sensor weniger als 1 Wert pro 100 ms wird dies als kein Durchfluss interpretiert. Klar verliere ich ein kleines Stück der unteren Messbereich, aber das sollte vernachlässigbar sein. Zumal der Sensor selbst erst ab einem gewissen Mindestdurchfluss arbeitet.
Zitat:- Auch bei einem TimeOut wertest du den Pulszähler aus…
Ja, um den null-Durchfluss abzufangen, s.o.
Zitat:Es gibt da den Beispielfinder. Und dar hat auch Beispiele zum synchronen Starten von DAQmx-Tasks…
Ja, dort sind exakt zwei Beispiele vorhanden. Das eine bringt mir nix, da die verschiedenen Sensoren in einem Task zusammengefasst sind. Und beim anderen wird die Synchronisation nach der Art der Geräte eingestellt - dummerweise sind meine Geräte (cDAQ) nicht enthalten.