' schrieb:was meinst du genau mit konzept ändern?die schleife mit task lesen meinst du bestimmt.
Jawohl.
Zitat:kannst du bitte näher erklären, was ich da ändern soll?
Das ist ganz einfach gesagt: Das Lesen der Daten aus der Task, also das DaqMX-Rd, aus diesem Datenfluß entfernen. Dieses Entfernen entspricht einem Herausnehmen aus der Schleife.
Versuch mal folgendes:
Mach eine weitere parallele While-Schleife, in der du die Task ausliest. Du ließt hier aber nicht einen (1) Wert aus, sondern gleich 100 oder tausend Werte. Beachte, dass dann ein Timeout am LeseVI angegeben werden muss. (Am besten gefiele mir allerdings mit -1 als Anzahl auszulesen und in diese While-Schleife eine Wartezeit von z.B. 100ms einzufügen). Die Daten, die du hier ausließt, schreibst du - wie sie aus dem Lese-VI herauskommen in eine Queue.
In der bestehenden While-Schleife ersetzt du das bisheriege LeseVI durch das Element "Queue auslesen". Aus der Queue kommt prinzipiell das selbe heraus wie aus dem LeseVI. Die Queue bewirkt eine Entkopplung des (notwendigen) Auslesens der Task von der (zeitraubenden) Verarbeitung in der großen Schleife. Sie stellt praktisch einen vergrößerten Task-Puffer dar.
Kennst du dich mit Queues (und Meldern) aus? Nein? Dann wird's Zeit!
Zitat:PS: Ich will eigentlich beim LESEN mit 1000 HZ. genau 1000 werte in der Sekunde speichern. sind dann meine einstellungen für Sampels Pro kanal beim DAQ Lesen und Timing und Einzelwerte HW getaktet richtig?
Ich würde die Task auf kontinuierlich einstellen mit einer Taktrate von 1kHz und einem Puffer für 5 Sekunden.
Zitat:und dann mittels software abtastung nochmal mit 100 / 10 / 1 Hz abtasten! für langsame sensoren.
Wenn das denn unbedingt sein muss, dann kann man das Messwertarray entsprechend reduzieren. Für 100Hz jeden 10ten nehmen, für 10Hz jeden 100ten usw.
Anhang:
Jetzt hab ich was so schönen geschrieben. Das lass ich jetzt aber so stehen.^_^