LabVIEWForum.de - ein gemeinsames Abbruchkriterium für 2 while Schleifen

LabVIEWForum.de

Normale Version: ein gemeinsames Abbruchkriterium für 2 while Schleifen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute!

Zuerst einmal ein großes Sorry für die nicht wirklich deutliche Überschrift.

Mein Problem ist folgendes: Ich lese mit einer Whileschleife Daten von einem analogen eingangsport mit 100 Hz. Mit einer anderen Whileschleife toggle ich alle 750ms einen digitalen Port zwischen High und Low. Prinzipiell erlaubt LabVIEW ja Multithreading und die zwei Sachen laufen paralell ab und funktionieren. Jetzt möchte ich aber egrne mit einer Stopptaste (Abbruchbedingung für Datenerfassungsschleife) auch die andere Schleife abbrechen. Wie kann ich das machen???

Weiters würde ich auch gerne bei einem Toggle der Whileschleife für den digitalen Port einen Trigger in der Datenerfassungsschleife auslösen können. Das stellt glaube ich dass selbe Problem wie das Stoppen der While Schleife dar. Wäre echt toll wenn mir da wer helfen könnte.

Eine Frage hätte ich noch zu der Datenerfassungsschleife:
Ich lese meine Daten Wert für Wert ein (das heißt ohne Buffer). Das funktioniert eigentlich recht gut bis auf einen Fall. Wenn ich bei der Anzahl der zu erfassenden Scans nicht 0 (für unendliche Datenaufzeichnung) sondern irgendeinen bestimmten Samplewert eingebe (z.B. 100), lest er mir 100 Samples + einen fehlerhaften Sample ein und es erscheint folgende Fehlermeldung:

Fehler -10802 ist bei AI SingleScan aufgetreten
Mögliche Ursachen:

NI-DAQ LV: Die angeforderte Datenmenge wurde bis jetzt noch nicht erfaßt.


Vielen Dank im Vorraus für eure Anregungen
Christian
Hallo!

Mal eben auf die Schnelle: Deine Idee mit dem Abbrechen der Schleifen und dem Togglesignal kannst Du z.B. mit sogenannten "Lokalen Variablen" erschlagen:

Auf den Abbrechen-Button --> Rechtsklick --> Erstellen --> Lokale Variable.

Diese kannst Du dann wie die Bedienelemte benutzen. Da gibt es aber auch noch die Möglichkeit mit Shared Variables (seit LV8.0). In diesem Fall sind die aber nicht so Performant.

Gruß!
' schrieb:Hallo!

Mal eben auf die Schnelle: Deine Idee mit dem Abbrechen der Schleifen und dem Togglesignal kannst Du z.B. mit sogenannten "Lokalen Variablen" erschlagen:

Auf den Abbrechen-Button --> Rechtsklick --> Erstellen --> Lokale Variable.

Diese kannst Du dann wie die Bedienelemte benutzen. Da gibt es aber auch noch die Möglichkeit mit Shared Variables (seit LV8.0). In diesem Fall sind die aber nicht so Performant.

Gruß!

Danke erstmal!

Hab das ausprobiert. LabVIEW lässt mich dann aber nicht die lokale Vraiable mit der Abbruchbedingung in der anderen Schleife verbinden.
Er meint ich verbinde 2 Anschlüsse unterschiedlichen typs???

Ich glaube, dass das erstellen der lokalen Variable auch nicht richtig funktioniert. Bekomme als rgebnis nur eine lokale Variable mit einem Fragezeichen im Kästchen. Aus irgendeinem Grund, kann ich vom boolschen Schalter keine korrekte lokale Variable erstellen?

Lade mal meine Datei mit hoch, vielleicht kannst du es ja dranfügen. Bringe es aus irgendeinem Grund nicht hin.
Guten Morgen!

Hat von euch vielleicht noch wer eine Idee zu meinem Problem? Bin leider nicht weiter gekommen und aus irgend einem Grund funktioniert das mit den lokalen Variablen bei dem Stop Button nicht. Vielleicht kann es ja jemand ausprobieren, hab bei meinem ommentar das File angehängt!!!

thx

Christian
<div align="left">Hallo, Christian,

kann dein Problem mit der lokalen Variablen nachvollziehen.

Du musst folgendes ändern: Gib dem Stopp-Button erst mal wieder ein Label (und somit einen Variablen-Namen). Dann kannst du auch eine lokale Variable erstellen.
Dann musst du noch die Schalteigenschaft des Buttons ändern, von Latch auch Switch, sonst funktioniert das nicht mit der lokalen Variablen.

MfG, Jens</div>
' schrieb:<div align="left">Dann musst du noch die Schalteigenschaft des Buttons ändern, von Latch auch Switch, sonst funktioniert das nicht mit der lokalen Variablen
</div>Ja richtig, aber dann springt er nicht wieder von selbst heraus, das sollte man also mit einer weiteren lokalen Variablen programmieren. Damit alles ganz wasserdicht ist, soll der Knopf erst dann herausgenommen werden, wenn beide Schleifen beendet sind. Das sieht dann also so aus:
[attachment=4487]
Vielen Dank für eure Tips! Das mit dem gelichzeitigen beenden funktioniert jetzt einwandfrei!

Aber noch mal kurz zu meiner 2ten Frage am Anfang bezüglich der Fehlermeldung beim Einlesen der Daten. Wenn ich nicht "unendlich" einlese sondern nur eine vordefinierte Anzahl von Samples kommt immer die Fehlermeldung

Fehler -10802 ist bei AI SingleScan aufgetreten
Mögliche Ursachen:

NI-DAQ LV: Die angeforderte Datenmenge wurde bis jetzt noch nicht erfaßt.

Das heißt, wenn ich jetzt 100 Samples einlesen will, liest er 100 + 1 fehlerhaftes -> dann kommt der Fehler! Anscheinend fordert er 101 Samples an, warum verstehe ich allerdings nicht!
Hat da von euch jemand eine Antwort darauf???

mfg
Christian
Referenz-URLs