LabVIEWForum.de
Schalter in bestimmten Rahmen einer Sequenz "latchen"? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Schalter in bestimmten Rahmen einer Sequenz "latchen"? (/Thread-Schalter-in-bestimmten-Rahmen-einer-Sequenz-latchen)

Seiten: 1 2 3 4 5


Schalter in bestimmten Rahmen einer Sequenz "latchen"? - Jansen83 - 23.03.2010 10:54

Hat niemand mit routiniertem Blick einen Tipp? Bin hier nahezu am verzweifeln.
Der Case des Sub-Vis wird im ersten Durchlauf auf `true´ gesetzt und trotz alledem wird der Wert zum Zeitpunkt NULL zum letzten Lauf fortgesetzt. Sad


Schalter in bestimmten Rahmen einer Sequenz "latchen"? - IchSelbst - 23.03.2010 23:02

' schrieb:Laut geschriebener Tabelle wird der True Case einmalig ausgeführt, danach aber nicht mehr.
Der True-Case, der einmalig True in die Tabelle schreibt, wird ständig durchlaufen. Die False-Werte kommen daher, weil vom Hauptprogramm eben nur ein einziges Mal True kommt. Beim zweiten Aufruf und allen weiteren Aufrufen wird False übergeben - und deswegen False in die Tabelle geschrieben.


' schrieb:Der Case des Sub-Vis wird im ersten Durchlauf auf `true´ gesetzt
Ein Case kann nicht auf True gesetzt werden. Ein Case kann abgearbeitet werden.
Zitat:und trotz alledem wird der Wert zum Zeitpunkt NULL zum letzten Lauf fortgesetzt.
Diesen Teil des Satzes verstehe ich gar nicht.

Kannst du nochmal sagen, was falsch geht? Die gestapelte Sequenz jedenfalls wird kontinuierlich abgearbeitet.

Wenn du haben willst, dass der zweite Durchlauf (also beim zweiten Mal klicken auf START) auch von 0 bis 1000 zählt, dann musst du das Express-VI "Verstrichene Zeit" resetten. (Schließe an I ein "Ist Null"-Vergleicher an. Das Ergebnis auf Reset geben)


Schalter in bestimmten Rahmen einer Sequenz "latchen"? - Jansen83 - 24.03.2010 09:13

' schrieb:Der True-Case, der einmalig True in die Tabelle schreibt, wird ständig durchlaufen. Die False-Werte kommen daher, weil vom Hauptprogramm eben nur ein einziges Mal True kommt. Beim zweiten Aufruf und allen weiteren Aufrufen wird False übergeben - und deswegen False in die Tabelle geschrieben.
Ein Case kann nicht auf True gesetzt werden. Ein Case kann abgearbeitet werden.
Diesen Teil des Satzes verstehe ich gar nicht.
Okay, das kann ich denke ich nachvollziehen

' schrieb:Kannst du nochmal sagen, was falsch geht? Die gestapelte Sequenz jedenfalls wird kontinuierlich abgearbeitet.

Wenn du haben willst, dass der zweite Durchlauf (also beim zweiten Mal klicken auf START) auch von 0 bis 1000 zählt, dann musst du das Express-VI "Verstrichene Zeit" resetten. (Schließe an I ein "Ist Null"-Vergleicher an. Das Ergebnis auf Reset geben)

Hab im Beispiel vergessen, die verstrichene Zeit zu resetten. Hab im Hauptprogramm den Start Button mit dem "zurücksetzen" des Express-VIs verbunden, damit funktioniert es auch.

Meine Vorstellung, was passieren soll hast du formuliert.
Beim 2. Mal soll ebenfalls von 0 bis 1000 hochgezählt werden.
Der Fehler liegt bei mir, dass meine Hilfsvarible anscheinend beim zweiten Mal "START" erst im 2. Durchlauf der Sequenz zurückgesetzt wird.
Also beim zweiten Mal klicken auf START geht die Hilfsgröße zunächst mit dem alten Wert vom ersten "Klick START" (irgenmdwas um 1000) ein und springt im Rahmen 2 somit erst in die letzte Berechnungsvorschrift (Hilfsposition > S_Beschleunigung+S_Constant) und wirft somit einen falschen Wert aus.
Mir fehlt das Verständnis der Strukturen etwas, warum LV dies tut. Sad


Schalter in bestimmten Rahmen einer Sequenz "latchen"? - IchSelbst - 24.03.2010 09:45

' schrieb:Mir fehlt das Verständnis der Strukturen etwas, warum LV dies tut. Sad
Das ist ganz einfach: LabVIEW arbeitet nach dem Datenflußprinzip.

So einfach das klinkt, so schwierig kann das in der tatsächlichen Umsetzung aussehen.

Der abstrakte Begriff "Fluss" entspricht immer einem kontinuierlicher Vorgang, der zeitlich gesehen stetig ist (vergleiche: stetig steigend). Ein Fluss, konkret dann ein Datum, kann demzufolge einen Zeitraum nicht überspringen. Weder vorwärts noch rückwärts. Der Inhalt des Flusses, also das Datum, ist immer da. Nicht da, gibt es nicht. (Wäre das Datum nicht mehr da, gäbe es den Fluss nicht mehr.)

Wenn du also eine Änderung von Daten im 2. Sequenzrahmen machst, dann haben diese Daten im ersten Sequenzrahmen ihre ursprünglichen Werte. Diese Werte sind die Werte, die entstanden sind beim vorhergehenden Aufruf des SubVIs. Du muss dir also den Datenfluss aufrufübergreifend vorstellen: dann kommt genau das heraus, was du beschrieben hast.

Wenn du jetzt bemerkst, dass da was falsch ist, heißt das ganz einfach: Du siehst, dass dein Algorithmus falsch ist. Du musst also den Algorithmus anpassen. Wenn du willst, dass die Hilfvariable bereits im ersten Rahmen einen entsprechenden Wert hat, muss du das halt so programmieren.


Schalter in bestimmten Rahmen einer Sequenz "latchen"? - Jansen83 - 24.03.2010 10:54

' schrieb:Wenn du jetzt bemerkst, dass da was falsch ist, heißt das ganz einfach: Du siehst, dass dein Algorithmus falsch ist. Du musst also den Algorithmus anpassen. Wenn du willst, dass die Hilfvariable bereits im ersten Rahmen einen entsprechenden Wert hat, muss du das halt so programmieren.

Danke für die klasse Definition!

Nach meinem Verständnis würde dies heißen, wenn die Hilfsvariable bereits im ersten Rahmen den Wert "NULL" haben soll, muss diese Übergabe bereits außerhalb oder vor diesem Rahmen stattfinden?
Sprich, bereits bevor der Anschluss an die gestapelte Sequenz abgefragt wird müsste die Hilfsvariable zurückgesetzt werden, wenn ich dich richtig verstanden hab?
Hast du vielleicht noch einen Tipp, wie und wo? Ich würde nicht fragen, wenn ich nicht bereits schon einge Zeit, eher hilflos, mit Schleifen, Eigenschafts-& Methodenknoten herumexperimentiert hätte. Unsure

Hier nochmal ein Bild vom Problem in Tabellenform und das "aktuelle" Beispiel.

Lv86_img


Schalter in bestimmten Rahmen einer Sequenz "latchen"? - IchSelbst - 24.03.2010 11:27

' schrieb:Nach meinem Verständnis würde dies heißen, wenn die Hilfsvariable bereits im ersten Rahmen den Wert "NULL" haben soll, muss diese Übergabe bereits außerhalb oder vor diesem Rahmen stattfinden?
Genau so. Im übrigen heißt dieses Denkeweise "Logik".

Zitat:Hast du vielleicht noch einen Tipp, wie und wo?
Klar. Aber erst später. Auch ich muss zwischendurch was arbeiten.

Zitat:Hier nochmal ein Bild vom Problem in Tabellenform und das "aktuelle" Beispiel.
Na kuck, das ist doch mal ein Hinweis.


Schalter in bestimmten Rahmen einer Sequenz "latchen"? - Jansen83 - 24.03.2010 12:06

' schrieb:Klar. Aber erst später. Auch ich muss zwischendurch was arbeiten.

Super!Smile
Werde noch was rumexperimentieren, wobei ich nicht glaube, dass mir noch was einfällt, was ich die letzten Tage nicht schon versucht habe.
Aber hab ja auch noch ein paar andere Programmelemente zu gestalten.
Vielen Dank schon mal!

Gruß Jan


Schalter in bestimmten Rahmen einer Sequenz "latchen"? - IchSelbst - 24.03.2010 20:28

' schrieb:Hast du vielleicht noch einen Tipp, wie und wo?
z.B. so:


Schalter in bestimmten Rahmen einer Sequenz "latchen"? - Jansen83 - 25.03.2010 10:59

Hat das bei dir so funktioniert? Bei mir sehen die ersten beiden Werte für das 2. "START" so aus Unsure
Oder liegt es daran, dass ich den False Case der Struktur falsch verbunden hab (habe die Tunnel einfach nur direkt verdrahtet).
Entschuldige, stoße bei diesem Problem einfach an meine Grenzen.


Schalter in bestimmten Rahmen einer Sequenz "latchen"? - IchSelbst - 25.03.2010 11:50

' schrieb:Hat das bei dir so funktioniert? Bei mir sehen die ersten beiden Werte für das 2. "START" so aus
Bei mir kommt genau das selbe raus, wie bei dir.

Erster Schritt war ja auch nur, diese eine 1 beim zweiten Start zu eliminieren.

Jetzt kommt der zweite Schritt. Und der lautet: Was erwartest du denn an diesen beiden Stellen? Sollen die Werte, die beim ersten Start generiert worden sind, so weitergeführt werden, dass es in der ersten Spalte mit 3,436 3,437 usw. weitergeht? Was soll in der letzten Spalte stehen: Neubeginn bei 0 oder weiter bei 1000,0?

Was also erwartest du ab dem 2. Start in Spalte eins und drei?