LabVIEWForum.de - zu langssame Aktivierung der Messerfassungskarte

LabVIEWForum.de

Normale Version: zu langssame Aktivierung der Messerfassungskarte
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,

ich bin hier auch wieder mal ein "Neuer" und hoffe auf eure Hilfe

Für meine Projektarbeit muss ich unter anderem einen piezoelektrischen Kraftsensor über einen externen Ladungsverstärker für einen Aufprallsimulator auslesen. Dieses soll über den Computer bzw. Labview gesteuert und ausgewertet werden.

Für den Beginn der Messaufzeichnung muss der Ladungsverstärker mit einer log 1 beschaltet werden damit er ein analoges Signal erzeugen kann. Dieses Signal soll dann mit der Messkarte (NI 6254) aufgezeichnet werden. Das Starten der Anwendung soll mit dem START-Taster realisiert werden. Das Anhalten der Messaufzeichnung und das "zurücksetzten" des Ditialen Ausgangs auf log 0 soll mit einem STOPP-Taster realisiert werden. (Das Rücksetzten des Ladungsverstärker ist notwendig, damit die Ladungen komplett abfließen können)

Der Ablauf habe ich im Bild beigefügt.

Soweit funktioniert mein Programm auch. Aber leider verstehe ich nicht, warum die Aktivierung der analogen Messerfassung mehrere Sekunden (ca. 7 s) dauert. Leider benötige ich eine kurze Aktivierungszeit (kleiner 0,5 s). Als ich die einzelnen Module (Ditialer Ausgang - Analoge Signalerfassung) getestet habe, war die Performance zufriedenstellend.

Gerne bin ich auch für weitere Tipps offen.

Vielen Dank im vorraus.

Gruß Thomas
Hallo Thomas,

Grundregel:
DAQ-Task immer vor der Schleife initialisieren und nach der Schleife stoppen/löschen/etc.!

Du dagegen erstellst in jeder Iteration neue Tasks, die brav immer wieder gelöscht werden. Was soll das?
"Stopp Messdatenerfassung" heißt nicht, dass der Task gelöscht und die Messkarte quasi abgeschaltet werden muss. Es reicht aus, den Task an- und für weitere Messungen bereitzuhalten...

Zweite Grundregel:
Aufgaben, die länger dauern können (und damit bremsen), in eine zweite Schleife auslagern - hier z.B. dein Dateiexport. Erst wenn der abgearbeitet ist, kann die nächste Iteration beginnen und dein VI auf die Schalter reagieren...
Hallo Gerd,

vielen Dank für die Antwort.

Ich habe versucht dein Grundregel umzusetzten, aber leider gibt es bei mir immer noch das Problem.
Wenn ich das richtig verstanden habe, muss also nur der Funktionsblock "DAQmx schreiben" innerhalb der while-Schleife sein, oder?
Also wenn ich die "Highlight-Funktion" aktiviere, sehe ich immer, das die Bearbeitung des Funktionsblock "DAQmx - Task starten" bei der "analogen Signalerfassung" so lange dauert. Bei dem "digitalen Ausgang" geht dieses sehr schnell. Ich versteh immer noch nicht warum das einen Unterschied macht? Das sind doch zwei parallel abzuarbeitende Prozesse.
Dieser Task ist doch außerhalb der while-Schleife, oder muss er außerhalb der äußersten while Schleife liegen?

Sorry, ich tu mir da einfach schwer. Ich will auch nicht ausschließen, dass mir dazu auch ein paar Grundkenntnisse fehlen könnten.

Gruß Thomas
Hab es dann jetzt mit einer weiteren Unterstützung gelöst gekommen.

Folgende Tipps haben mir weitergeholfen.

1) Konfiguration von DAQmx außerhalb der Schleife, da dadurch viel Ressourcenschonender programmiert wird, weil nicht bei jedem Schleifendurchlauf neu konfiguriert wird.

2) Das High Signal vor den Start setzten und nach der Signalerfassung wieder auf Low setzen. Dadurch wird das Datenflussprinzip eingehalten. So wie der Code derzeit gestaltet ist wird die Erzeugung des High Signals parallel ausgeführt und somit zu einem "unbestimmten" Zeitpunkt.

3) Der Schalter "Abbruch" funktioniert nicht, da Sie sich bei der Verarbeitung der Einlesung von DAQmx sich innerhalb der Schleife befinden und es keine Verbindung nach außen gibt. Hier wäre die Möglichkeit gegeben, dass Sie dies durch die Einbindung von Lokalen Variablen realisieren. Zu beachten ist hierbei, dass der Button kein Latchverhalten hat, da die Schleife dann nur für kurze Zeit unterbrochen wird.

4) Den Task würde ich grundsätzlich nicht löschen sondern stoppen, da Sie ihn nach einem Stopp wieder ausführen wollen.

5) Die acquisition bei der Signalerfassung würde ich auf einen fixen Wert einstellen. Derzeit ist er auf dem Default wert.

Das Hinzufügen einer Sequenz hat Abhilfe gebracht. Big Grin

Trotzdem nochmals danke!
Referenz-URLs