LabVIEWForum.de - DAQ-Frequenzmessung im Hintergrund/parallele While-Schleife

LabVIEWForum.de

Normale Version: DAQ-Frequenzmessung im Hintergrund/parallele While-Schleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Moin!

ich habe folgendes Problem: Ich erfasse in meinem Programm mittels DAQ eine Signalfrequenz mit der 2-counter-methode. Die Erfassung ist in eine While-schleife gepackt. Die Messung dauert 500ms. Parallel dazu soll eine While-Schleife laufen, die die Frequenz verarbeitet. Diese Schleife soll in Anhängigkeit davon, ob ein neuer Frequenzwert vorliegt oder nicht eine bestimmte Funktion ausfüllen (unwichtig hier). Die Schleife zur Erfassung läuft deutlich langsamer (500ms) als die Verarbeitungsschleife. Beide Schleifen sollen mit dem gleichen Stopp-Knopf gestoppt werden können. Nun passiert es aber oft, dass das Drücken des Stopp-Knopfes von der Erfassungsschleife ignoriert wird, da sie sich gerade in einer Messung befindet und nicht den Stopp-Knopf abfragt. Wie kann ich das Problem lösen?? Bin für jede Hilfe dankbar!

Ich brauche es so, dass egal in welchem zustand sich die Erfassungsschleife befindet, die Stopp-Funktion auf jeden Fall durchgeführt wird und die Messung abgebrochen wird. Ich habs schon mit Ereignisstrukturen versucht, allerdings tuts das nicht, da die Frontpanelsperre nicht aufgehoben wird.

Hat jemand ne Idee oder schon mal ein ähnliches Problem gehabt? Kann das Programm nicht posten, da zu groß sorry.
Ich denke so löst du dein Problem.

[attachment=24870]

Lv86_img[attachment=24871]

ach ja... wenn du mit queuer arbeitest brauchst du nicht mal eine lokale variable. schau dir das beispiel zur erzeuger-verbraucher-struktur an...

[attachment=24872]

gruß
hallo NoD,

kannst du das programm bitte mal in einer älteren LV-versoin posten. ich benutze 8.5.1 und kann es leider nicht öffnen. danke!!! ich hoffe mal es hilft :-)
Lv85_img[attachment=24881]

OfftopicRulez
LVF-Regeln lesen und beachten! Bitte keine Beiträge im SMS-Stil (d.h. alles klein geschrieben!).

Gruß, Jens
' schrieb:hallo NoD,

kannst du das programm bitte mal in einer älteren LV-versoin posten. ich benutze 8.5.1 und kann es leider nicht öffnen. danke!!! ich hoffe mal es hilft :-)

Hallo,

kann ich leider nicht, aber ich denke du kannst es in 2 min selber nachbauen (mit 8.5) du musst aber darauf achten, das Schaltverhalten des stopp buttons zu ändern. von latch auf schalten. sonst ist keine weitere gemeinheit darin enthalten. kannst es ja anhand des screenshots aufbauen!
[font="Arial"][/font]

Hallo,

ja hat einwandfrei funktioniert, das mit den Queues war entscheidend, da hatte ich vorher noch nie mitgearbeitet :-). Danke!!! Aber wie das so schön ist, ist das eine Problem gelöst, gibts gleich das nächste :-)).


Ich gebe einen Spannungswert über DAq aus (in der verbraucherschleife) und will, wenn ich stopp betätige, das stoppen, also füge ich "Reset-Device" in dem case "Fehler" ein (erzeugerschleife). um das ganze habe ich noch eine casestruktur zum anschalten. wenn ich jetzt anschalte, dann ausschalte und dann wieder anschalte, bekomme ich bei DAq-lesen( in erzeugerschleife) eine Fehlermeldung, dass die funktion nicht beendet werden konntem weil das Gerät entfernt wurde. das darf nicht sein. Hat da jemand vllt noch eine Idee?? Wäre lieb danke!!
kannst du bitte einen screenshot hochladen?
Bitte sehr.

In dem Fehler-Case ist dann "Reset Device". Der Fehler kommt beim erneuten Starten ohne das Programm vorher abzubrechen. Fehler bei DAQ-read: "Operation kann nicht ausgeführt werden, weil entweder ein Gerät aus dem System entfernt wurde oder ein Task abgebrochen wurde."
Ich würde im "Fehler"-Case den DAQmx-Task sauber beenden, nicht nur über ein Reset-Device.

Gruß, Jens
Naja... die Queuer, so wie du das aufgebaut hast sind eigentlich nutzlos.
1. du musst nicht eine string konstante übertragen, sondern deine gemessene frequenz. Dazu musst du dem queuer "sagen" welchen datentyp du übertragen willst
2. 1 ungleich 0 ??? wenn du hier ein bedienelment anschliesst, kannst du die übertragung starten und unterbrechen
Seiten: 1 2
Referenz-URLs