LabVIEWForum.de - Abbruchbedingung meiner While Schleife

LabVIEWForum.de

Normale Version: Abbruchbedingung meiner While Schleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
[attachment=50809]Hallo ,

ich bin neue bei LabView, habe jetzt vor 3 Monate jeweils knapp 4 Stunden in der Woche mich mit LabView beschäftigt. Ich habe die Aufgabe gerade paar Sachen in einem vorprogrammiertes LabView-Source zu korriegieren oder aufzubessern.
Untersucht wird die Lichtstärke eines Lasers und dabei das Signal als Gauß-intensitätsverteilung dargestellt werden, also mit Anfangspunkt und Endpunkt (0,01) und Maximum bzw. minimum. Ich hoffe es ist gut nachvollzierbar.
*- Die Abbruchbedingung klappt irgendwie nicht: Also das Programm soll sofort stoppen sobald die Bedingung "Daten größer oder 0,01" richtig ist (Das kann man in der Sequenz "Messen" meiner Source sehen), der Laser soll am Ende des Durchlaufs ausgehen, aber es bleibt trotzdem an bis ich das STOPP buttom bestätige, was aber eine Fehlermedlung hevorruft
Könnte jemanden mir dabei helfen? :-)
(19.09.2014 13:24 )LabVI schrieb: [ -> ]Hallo ,

ich bin neue bei LabView, habe jetzt vor 3 Monate jeweils knapp 4 Stunden in der Woche mich mit LabView beschäftigt. Ich habe die Aufgabe gerade paar Sachen in einem vorprogrammiertes LabView-Source zu korriegieren oder aufzubessern.
Untersucht wird die Lichtstärke eines Lasers und dabei das Signal als Gauß-intensitätsverteilung dargestellt werden, also mit Anfangspunkt und Endpunkt (0,01) und Maximum bzw. minimum. Ich hoffe es ist gut nachvollzierbar.
Nicht wirklich bei dem Wust von lokalen Variablen (Stichwort Race-Condition), Stacked- und Flat-Sequences.
(19.09.2014 13:24 )LabVI schrieb: [ -> ]*- Die Abbruchbedingung klappt irgendwie nicht: Also das Programm soll sofort stoppen sobald die Bedingung "Daten größer oder 0,01" richtig ist (Das kann man in der Sequenz "Messen" meiner Source sehen), der Laser soll am Ende des Durchlaufs ausgehen, aber es bleibt trotzdem an bis ich das STOPP buttom bestätige, was aber eine Fehlermedlung hevorruft
Könnte jemanden mir dabei helfen? :-)
Keine Ahnung, was wo stoppen soll und wo (vielleicht) der Laser ausgeschaltet wird.

Das einzige, was mir negativ auffällt: Die Abbruchbedingung deiner Zeilenmess(While)Schleife ist parallel zur Case-Struktur programmiert und wird somit aller Wahrscheinlichkeit nach schon jeweils beim Start der While Schleife ausgewertet (THINK Dataflow).

Gruß, Jens
Hallo,

Zitat:Nicht wirklich bei dem Wust von lokalen Variablen
Man beachte auch die kreative Art und Weise, wie diese "Variablen 3,4,5,6" benannt wurden!
Da kann natürlich jeder sofort nachvollziehen, was das Programm macht (bzw. machen soll)… Big Grin
Hallo Jens,

vielen Dank für die schnelle Antwort :-)
Also ich habe mich wahrscheinlich falsch ausgedrückt, liegt daran, dass ich französisch Muttersprachler bin entschuldige!!

ich verstehe nicht ganz was du mit THINK dataflow meinst, sollte man nicht eine Wheile Schleife parallel zu einer Case-Struktur laufen lassen? Habe da keine Ahnung....

Die Grundidee ist: es gibt ein Motor (Detektor), der den Bereich (60° in meinem Programm) anfährt, wo das Laserlicht emmittiert wird und es scannt den Bereich dabei soll es den Maximum bzw. die maxima finden.
Was ich mit dem Programm erreichen möchte ist das, er mir nur Werte ausgibt die größer oder gleich 0,01 sind (Punkt wo meine Messung anfangen soll), das tut er ja auch, aber das Problem ist, dass mein Laser, der am Anfang der Messung angeht, geht am Ende der Messung nicht wieder aus, es bleibt an (Laser ON) und ich möchte gerne, dass der Laser auch ausgeht sobald die Messung zu Ende ist.

Ist das einigermaße verständlich?

P.S: Für den Bereich wo der Laser angeschaltet werden soll, habe ich einen Anhang hinzugefügt, bitte schauen unter "Start Befehl".


Viele Grüße
Marcelle
Hallo LabVI,

Zitat:Was ich mit dem Programm erreichen möchte ist das, er mir nur Werte ausgibt die größer oder gleich 0,01 sind (Punkt wo meine Messung anfangen soll), das tut er ja auch, aber das Problem ist, dass mein Laser, der am Anfang der Messung angeht, geht am Ende der Messung nicht wieder aus, es bleibt an (Laser ON) und ich möchte gerne, dass der Laser auch ausgeht sobald die Messung zu Ende ist.
Wenn du das möchtest, dann solltest du es auch programmieren.

Bei dem, was man da im Bild sieht, kann man nur sagen, dass du eine Statemachine programmieren solltest!

Zitat:ich verstehe nicht ganz was du mit THINK dataflow meinst
Schau in meine Signatur…
Hallo GerdW,

ich habe leider das Programm nicht selber geschrieben, und es fehlt mir super schwer das ganze zu entziffern, was der Programmierer sich dabei gedacht hat, da er keine Dokumentation dazu hinterlassen hat :-(

Aber ein teil des Programm habe ich vergessen hinzufügen, vielleicht versteht man ja ein bisschen , weiß ich nicht....

Im Anhang ist der vergessene Teil des Programms
(19.09.2014 14:24 )LabVI schrieb: [ -> ]Was ich mit dem Programm erreichen möchte ist das, er mir nur Werte ausgibt die größer oder gleich 0,01 sind (Punkt wo meine Messung anfangen soll), das tut er ja auch, aber das Problem ist, dass mein Laser, der am Anfang der Messung angeht, geht am Ende der Messung nicht wieder aus, es bleibt an (Laser ON) und ich möchte gerne, dass der Laser auch ausgeht sobald die Messung zu Ende ist.

Ist das einigermaße verständlich?

P.S: Für den Bereich wo der Laser angeschaltet werden soll, habe ich einen Anhang hinzugefügt, bitte schauen unter "Start Befehl".
Und wieso zeigst du jetzt den Bereich, wo der Laser angeht (das funktioniert ja, wenn ich dich richtig verstehe), und nicht, wo der Laser ausgeht? Oder hast du das gar nicht programmiert? Dann siehe Gerds letzten Beitrag...
Gruß, Jens


EDIT:
AHA, da werden "Daten" erfasst, ich dachte schon, die lokale Variable ist "konstant"...
Hallo Marcelle,

aha, es gibt auch eine "Variable 2"… Big Grin

Dort wird (ziemlich schlecht programmiert) ein Spannungs-Wert von deiner DAQ-Hardware eingelesen.
Zur Verdeutlichung meiner Aussage...
(19.09.2014 13:53 )jg schrieb: [ -> ]Das einzige, was mir negativ auffällt: Die Abbruchbedingung deiner Zeilenmess(While)Schleife ist parallel zur Case-Struktur programmiert und wird somit aller Wahrscheinlichkeit nach schon jeweils beim Start der While Schleife ausgewertet (THINK Dataflow).
dieses Code Schnippsel:

[attachment=50817]

Was steht am Ende in Numeric? Es ist nicht 2!!!
Soviel zu Think Dataflow, Race Conditions und paralleler Abarbeitung in LabVIEW.

Gruß, Jens
Hallo GerdW,

vielen Dank, ich schaue mir erst mal deine Anmerkungen in Ruhe und melde mich wieder wenn es nicht klappt :-)

Viele Grüße

Marcelle
Hallo Jens,

danke erstmal und ich muss denke ich die ganze Sachen mit Think Dataflow , paralleler Abarbeitung..... durchlesen ersmal, denn ich weiß überhaupt nicht was das alles bedeutet und wie ich es einsetzen kann/soll


Viele liebe Grüße

Marcelle
Referenz-URLs