Hallo,
ich hab erst vor kurzem angefangen mich mit labview zu beschäftigen und hab schon gleich mein erstes Problem.
Ich hab ein VI, das entweder eine steigende oder eine fallende e-Funktion als Diagramm ausgibt.
Dafür hab ich eine Casestruktur in eine For-Schleife gepackt, und die einzelnen Iterationsschritte sind meine Eingangsgröße für die beiden e-Funktionen.
Mit einem Schalter will ich jetzt zwischen der fallenden und steigenden e-Funktion hin und her schalten können, und zwar während meine Schleife weiterläuft, d.h. meine Iteration nicht immer wieder von neu anfängt, sondern beim Schalten mit dem aktuellen Iterationswert weitergemacht wird.
Mein Problem ist jetzt, dass ich den Schalter nur betätigen kann (bzw. das VI nur dann reagiert), wenn das Programm noch nicht gestartet ist. Ich kann also nicht, z.b. bei der 473ten Iteration von meiner steigenden auf meine fallende Funktion wechseln.
Hat jemand eine Idee wie ich das machen könnte?
Ich hoffe ich hab mein Problem verständlich geschildert, ich häng zum bessern Verständnis noch ein Anhang dran.
Grüße an Alle
Case-Wechsel innerhalb einer For-Schleife
Правила форума
In unserem Forum ist es möglich Foren zu verbergen. Für jede Sprache gibt es eine Gruppe:
hide XXX forums
Wenn du also ein Forum in einer Sprache nicht sehen möchtest, dann musst du einfach in die richtige Gruppe(n) eintreten. Das kannst du in den Profileinstellungen machen.
In unserem Forum ist es möglich Foren zu verbergen. Für jede Sprache gibt es eine Gruppe:
hide XXX forums
Wenn du also ein Forum in einer Sprache nicht sehen möchtest, dann musst du einfach in die richtige Gruppe(n) eintreten. Das kannst du in den Profileinstellungen machen.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Case-Wechsel innerhalb einer For-Schleife
Hi!
Kann leider dein Beispiel nicht öffnen, aber 2 theoretische Ideen:
1. Schalter soll in der Schleife liegen, nicht ausserhalb
2. Die Schleife soll zeitlich lange laufen, damit du die Möglichkeit bekommst den Schalter umzulegen
Gruß, Eugen
Kann leider dein Beispiel nicht öffnen, aber 2 theoretische Ideen:
1. Schalter soll in der Schleife liegen, nicht ausserhalb
2. Die Schleife soll zeitlich lange laufen, damit du die Möglichkeit bekommst den Schalter umzulegen
Gruß, Eugen
-
- interested
- Сообщения: 7
- Зарегистрирован: 30 май 2012, 11:33
- Версия LabVIEW: 2011
- Контактная информация:
Re: Case-Wechsel innerhalb einer For-Schleife
das hat funktioniert, also dass ich da nich selber draufgekommen bin1. Schalter soll in der Schleife liegen, nicht ausserhalb
vielen dank
-
- interested
- Сообщения: 7
- Зарегистрирован: 30 май 2012, 11:33
- Версия LabVIEW: 2011
- Контактная информация:
Re: Case-Wechsel innerhalb einer For-Schleife
Hallo,
jetzt hab ich ein neues Problem:
Ich will, dass beim Schalten der letzte Wert, den meine Funktion davor hatte, gespeichert wird. So dass bei einem Case-Wechsel dieser Wert als neuer Startwert hergenommen wird.
Ich hab versucht den aktuellen Wert über ein Schieberegister zurückzuführen, allerdings ändert er sich dann weiter mit, und nach jeder Schleifeniteration bekomm ich dann ein neuen Startwert, so dass die Funktion dann viel zu schnell konvergiert.
Gibt es eine Möglichkeit den Wert so zu speichern, bzw festzuhalten, ohne dass er sich weiter ändert?
Grüße
jetzt hab ich ein neues Problem:
Ich will, dass beim Schalten der letzte Wert, den meine Funktion davor hatte, gespeichert wird. So dass bei einem Case-Wechsel dieser Wert als neuer Startwert hergenommen wird.
Ich hab versucht den aktuellen Wert über ein Schieberegister zurückzuführen, allerdings ändert er sich dann weiter mit, und nach jeder Schleifeniteration bekomm ich dann ein neuen Startwert, so dass die Funktion dann viel zu schnell konvergiert.
Gibt es eine Möglichkeit den Wert so zu speichern, bzw festzuhalten, ohne dass er sich weiter ändert?
Grüße
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Case-Wechsel innerhalb einer For-Schleife
Hi!
Mach mal ein Screenshot deines Block Diagramms, so kann ich leider nichts dazu sagen.
Mach mal ein Screenshot deines Block Diagramms, so kann ich leider nichts dazu sagen.
-
- interested
- Сообщения: 7
- Зарегистрирован: 30 май 2012, 11:33
- Версия LabVIEW: 2011
- Контактная информация:
Re: Case-Wechsel innerhalb einer For-Schleife
klar, hier der Screenshot und des VI, ich hab den false-case drunter kopiert, der ist natürlich beim Ausführen des VIs nicht dort unten.
Beim Wechsel von steigend auf fallend, soll nach dem Start nicht mehr der Startwert (von im Beispiel 20) hergenommen werden, sondern der Funktionsgraph soll ohne Sprünge beim alten Wert weitermachen.
Beim Wechsel von steigend auf fallend, soll nach dem Start nicht mehr der Startwert (von im Beispiel 20) hergenommen werden, sondern der Funktionsgraph soll ohne Sprünge beim alten Wert weitermachen.
- Вложения
-
- beispiel.vi
- (15.36 КБ) 239 скачиваний
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Case-Wechsel innerhalb einer For-Schleife
Mache dir nur ein Schieberegister, anstatt wie jetzt zwei. Plus und Minus (z.Z. vor der Case-Struktur) mach je in das richtige Case.
-
- interested
- Сообщения: 7
- Зарегистрирован: 30 май 2012, 11:33
- Версия LabVIEW: 2011
- Контактная информация:
Re: Case-Wechsel innerhalb einer For-Schleife
Meinst du mit dem Plus und Minus ein Inkrement und Dekrement? Aber des meinte ich gar nicht. Die beiden Schieberegister lassen ja nur meine Zeitvariable durchlaufen, des funktioniert schon so wie ich es wollte.
Lass mich mein Problem nochmal anders formulieren.
Im Moment sieht mein Funktionsverlauf aus, wie in bsp1. Die Funktion macht hier beim Umschalten einen Sprung. Den will ich aber nicht haben. Die Funktion soll, hier im Beispiel, bei ca. 13,9 weitermachen, und nicht zurück auf den Startwert von 20 springen.
Mein Versuch das zu lösen, war ein Schieberegister einzubauen, dass mir meinen aktuellen Funktionswert beim Umschalten als neuen Startwert ausgibt (wie in bsp2 mit dem roten Kreis markiert).
Jedoch will ich dass beim Umschalten der EINE aktuelle Wert für jede weitere Iteration hergenommen wird. So wie es jetzt ist wird bei jedem neuen Schleifendruchlauf mein Startwert auf den aktuellen Funktionswert geändert und so konvergiert meine Funktion, wie in bsp2 zu sehen, viel zu schnell.
Lass mich mein Problem nochmal anders formulieren.
Im Moment sieht mein Funktionsverlauf aus, wie in bsp1. Die Funktion macht hier beim Umschalten einen Sprung. Den will ich aber nicht haben. Die Funktion soll, hier im Beispiel, bei ca. 13,9 weitermachen, und nicht zurück auf den Startwert von 20 springen.
Mein Versuch das zu lösen, war ein Schieberegister einzubauen, dass mir meinen aktuellen Funktionswert beim Umschalten als neuen Startwert ausgibt (wie in bsp2 mit dem roten Kreis markiert).
Jedoch will ich dass beim Umschalten der EINE aktuelle Wert für jede weitere Iteration hergenommen wird. So wie es jetzt ist wird bei jedem neuen Schleifendruchlauf mein Startwert auf den aktuellen Funktionswert geändert und so konvergiert meine Funktion, wie in bsp2 zu sehen, viel zu schnell.