17.04.2010, 18:34
Beitrag #1
|
Sennar
LVF-Grünschnabel
Beiträge: 11
Registriert seit: Apr 2010
7.0
2010
de
Deutschland
|
Iterationszähler
Hallo ihr Lieben,
ich habe ein VI, bei dem es mehrere Schleifen gibt. Ich möchte den Gesamt-Iterationszähler (also die äußerste Schleife) pro Sekunde um 1 erhöhen. Innerhalb dieser Schleife ist eine weitere, die 5 mal wiederholt wird. In dieser Zeit läuft ja der äußere Zähler nicht weiter, da zunächst die innere 5 mal wiederholt wird (pro Durchlauf ebenfalls 1 sekunde). Das soll auch so beibehalten werden, dass jeder Durchlauf 1 Sekunde dauert aber halt auch der äußere Zähler jedesmal um 1 nach oben geht. Wenn ich die innere Schleife durch einen Button anhalte, soll der äußere Iterationszähler weiterhin um 1 pro Sekunde steigen. Ich hoff ich konnte beschreiben was ich meine:)Kann man da was machen? Wahrscheinlich ist es total simpel und ich steh auf dem Schlauch...
|
|
|
17.04.2010, 21:10
Beitrag #2
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Iterationszähler
So wie Du Dir das vorstellst geht das nicht. Wenn Du so was haben möchtest, dann musst Du die Schleifen parallel laufen lassen und nicht eine Schleife in der anderen. Vielleicht kannst Du ja kurz sagen, was Du damit erreichen möchtest, dann kann man Dir bestimmt einen Tip geben, wie Du das besser lösen könntest.
Gruß Markus
' schrieb:Kann man da was machen?
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
17.04.2010, 21:22
Beitrag #3
|
Sennar
LVF-Grünschnabel
Beiträge: 11
Registriert seit: Apr 2010
7.0
2010
de
Deutschland
|
Iterationszähler
Also ich habe einen Tank der je nach Wert eines bestimmten Quotienten entweder einen Zulauf erhält oder nicht. Wenn der Quotient kleiner als 1 ist, ist der Zulauf geöffnet und wird für 5 Durchläufe einer Schleife so beibehalten. Wenn er kleiner ist als 1 dann bleibt der Zulauf geschlossen ebenfalls für 5 Durchläufe. Außerdem hat das System einen Schalter um den zulauf manuell zu stoppen. Ich habe eine numerische und graphische Volumenanzeige und eine Uhr für die vergangene Zeit in Form des Iterationszählers. Der Iterationszähler soll immer weiter zählen und die graphische Anzeige jede Sekunde jegliche Veränderung anzeigen auch wenn es keine gibts da der Quotient über 1 ist.
So soll es am Ende ausehen.
|
|
|
18.04.2010, 08:33
(Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2010 08:34 von IchSelbst.)
Beitrag #4
|
IchSelbst
LVF-Guru
Beiträge: 3.695
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Iterationszähler
' schrieb:Ich möchte den Gesamt-Iterationszähler (also die äußerste Schleife) pro Sekunde um 1 erhöhen. Innerhalb dieser Schleife ist eine weitere, die 5 mal wiederholt wird. In dieser Zeit läuft ja der äußere Zähler nicht weiter, da zunächst die innere 5 mal wiederholt wird (pro Durchlauf ebenfalls 1 sekunde). Das soll auch so beibehalten werden, dass jeder Durchlauf 1 Sekunde dauert aber halt auch der äußere Zähler jedesmal um 1 nach oben geht. Wenn ich die innere Schleife durch einen Button anhalte, soll der äußere Iterationszähler weiterhin um 1 pro Sekunde steigen.
Einfach den Wire für den Zähler der äußeren Schleife mit Schieberegister durch die innere Schleife führen und dort beide Zähler erhöhen? Am Außgang der inneren Scheife den äußeren Zähler in Abhängigkeit "Abbruch" erhöhen?
Oder:
Eine FGV machen mit integrierter Anzeige (Referenz auf Anzeigeelement in der FGV hinterlegen) und die überall dort platzieren, an der hochgezählt werden soll.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
18.04.2010, 08:58
Beitrag #5
|
|
|
18.04.2010, 10:45
Beitrag #6
|
Sennar
LVF-Grünschnabel
Beiträge: 11
Registriert seit: Apr 2010
7.0
2010
de
Deutschland
|
Iterationszähler
@Lucki danke, das hab ich bereits es geht wirklich nur um den Iterationszähler
@IchSelbst was ist eine FGV?
|
|
|
18.04.2010, 11:21
Beitrag #7
|
IchSelbst
LVF-Guru
Beiträge: 3.695
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Iterationszähler
' schrieb:was ist eine FGV?
Eine "Funktionale Globale Variable".
Vom Gültigkeitsbereich her ist es eine "Globale Variable" - und somit überall verfügbar. Überall heißt in deinem Falle, dass der Wert sowohl in der äußeren als auch in der inneren Schleife verfügbar ist. Er kann also in beiden Schleifen gelesen bzw. manipuliert werden.
Eine FGV besteht aus einer While-Schleife mit Bedingungsanschluss = TRUE (also so, dass die Schleife nur ein einziges Mal durchlaufen wird). Wichtig ist lediglich ein Schieberegister auf der Whileschleife. Hierin liegt nämlich der Wert der "globalen Variable". Eine FGV hat einen Steuereingang, der sinnvollerweise mindestens die Zustände "Variable schreiben" (mit Daten von Dateneingang) und "Variable lesen" (=> FGV-Wert geht an Datenausgang) beinhaltet. Man kann die FGV jetzt aufbohren um einen Enumeratoreingang und eine Case-Struktur in der While-Schleife. Dann kann man so Sachen machen wie "Erhöhe Datenwert", "Resette Datenwert", "Merke Referenz zur Anzeige des Datenwertes" etc. Praktisch ist das mit der Anzeige z.B. dann, wenn gleich nach dem Erhöhen der Wert auch noch angezeigt werden soll. Man spart sich somit die Verdrahtung der Anzeige am BD des VIs.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
18.04.2010, 12:56
Beitrag #8
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Iterationszähler
Er wollte doch in der inneren Schleife auch jede Sekunde den Zähler (i) erhöhen. Wenn die innere Schleife aber fünf Sekunden dauert, kann er den Zähler (i) der darumliegenden Schleife nicht jede Sekunde erhöhen. Da muss er sich halt einen eigenen Zähler basteln, aber den schleifeneigenen Zähler (i) kann er so nicht verwenden.
Gruß Markus
' schrieb:Das Du machen willst läßt auf einfachste Weise zu lösen. Die innere Schleife anhalten geht allerdings nicht, wie Du inzwischen weißt. Also packe einen Case in die innere Schleife rein und sorge dafür, daß im "angehaltenen Zustand" in der Schleife nichts getan wird.
[attachment=54315:Schleife_anhalten.png]
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
18.04.2010, 13:08
Beitrag #9
|
|
|
19.04.2010, 06:47
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Iterationszähler
Davon bin ich ausgegangen....
Gruß Markus
' schrieb:Ach er redet vom schleifeneigenen Zähler.
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
| |