Hallo jrraid,
- wenn du kontinuierlich lesen willst, musst du nur ganz ganz selten wirklich die Buffergröße über "Samples to read" am DAQmxCreateChannel festlegen. Das macht DAQmx schon selbst ganz gut.
- wenn du Daten lesen willst, dann hat es sich bewährt, feste Blockgrößen abzufragen - und nicht wie du "aufwendige" QR-Rechnungen in Statemachines durchzuführen. Einfach Blöcke mit 40k Samples abfragen und gut ist!
- Diese Blöcke dann in einer Producer-Consumer-Struktur an eine zweite Schleife zur Berechnung weiterrreichen.
- Notfalls Queue-Größe überwachen und (falls deine Rechnung nicht hinterherkommt) überzählige Blöcke verwerfen…
Zitat:Ich will darauf verzichten, da man nicht immer einen Inkrementalgeber mit so einer guten Auflösung zur verfügung hat. Ich aber trotzdem den Druckverlauf so genau wie möglich haben muss.
Wenn man eine Druckindizierung durchführen will, muss man sich um entsprechende Messtechnik (im Vorfeld) kümmern. Drehgeber mit nur 60Pulsen sollte man dafür verbieten…
Zitat:Würde ich beispielsweise einen 60 Inkremente/Umdrehung Drehgeber verwenden würde ich nur eine Kurbelwellenwinkelauflösung von 360°KW/60 = 6°KW. Das sind eindeutig viel zu wenig Messwerte pro Umdrehung als dass man eine gute Aussage über die Indizierung in einem Verbrennungsmotor treffen könnte.
Du kannst alternativ auch dein Drucksignal zwischen den Pulsen interpolieren. Ist erheblich weniger Rechenaufwand und funktioniert auch mit jedem Drehgeber!
Wir verwenden an unserem Prüfstand einen Geber mit 360Pulsen/Umdr. Meine Software interpoliert von diesen 1°KW auf <0.1°KW…