LabVIEWForum.de
Listenbetrieb - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Listenbetrieb (/Thread-Listenbetrieb)

Seiten: 1 2


Listenbetrieb - chrissy - 04.04.2016 08:44

Hallo,

ich beschäftige mich erst seit einigen Wochen mit LabView, bin also noch absoluter Anfänger. Ich habe mir zuerst Tutorials angeguckt, aber dafür bin ich zu ungeduldig und probiere einfach rum bis was klappt.
Jetzt versuche ich mich gerade an einer Art Listenbetrieb, also dass Befehle nacheinander abgearbeitet werden. Dafür könnte ich wohl eine eine flache bzw. gestapelte Sequenz nehmen, die alles nacheinander abarbeitet. Dabei würde ich dann ja schon beim Programmieren durch die Anzahl der Sequenzen festlegen, wie lang die Liste wird. Was mache ich aber, wenn ich jetzt 3 Sachen abarbeiten möchte und im nächsten Durchgang 5, ohne dass ich etwas umprogrammieren müsste. Kann man das so dynamisch programmieren, dass nur so viele Sequenzen angesprochen werden, wie ich tatsächlich brauche?

Auch wenn es inhaltlich nicht viel Sinn macht (es geht ja ums Lernen), nehme ich als Beispiel einfach einen Wasserhahn und einen Wassertank.
Ich lasse 5l in den Tank laufen, dann 2l und dann 3l.
Und im nächsten Durchgang 1l, dann 2l, dann 5l, dann 2l und dann wieder 5l.

Und wie würde ich diese Liste gestalten? Sie soll quasi in der ersten Spalte die Anzahl der Durchgänge von 1 bis n haben und in der zweiten Spalte, wie viel Liter aus dem Wasserhahn kommen soll. Dann klicke ich auf "Los" und der Tank wird Stück für Stück gefüllt.

Ist diese Dynamik möglich? Wenn ja, wie gehe ich das an? Ich denke da an eine For-Schleife, deren Anzahl der Durchgänge von der Länge der Liste abhängig ist. Aber dann weiß ich schon nicht weiter. Sad

Da es ja ums Lernen geht, bitte keine Komplettlösung. Nur ein paar Ideen, in welche Richtung ich gehen sollte (sofern meine Idee überhaupt realisierbar ist Wink)

LG Christina


RE: Listenbetrieb - Freddy - 04.04.2016 08:55

Die einfachste Methode wäre:
Ein String Array mit den Befehlen direkt an die For Schleife angebunden. Da entscheidet die Größe des Array die Anzahl der Schleifendurchgänge.
In der For Schleife ein IF Anweisung mit den jeweiligen Aufgaben.


RE: Listenbetrieb - chrissy - 04.04.2016 09:31

Hallo Freddy, vielen Dank für deine Antwort.

Richtig durchgestiegen bin ich nicht, aber ich habe das jetzt so gemacht:

Ist das im Grunde richtig? Ich muss ja noch irgendwie die Werte aus dem String Array "in den Tank führen". Wie mach ich das?

Wie gesagt, ich bin noch blutige Anfängerin Smile

LG Christina
Also so wie das jetzt ist, wird dadurch dass das Array 3 Werte lang ist, die For-Schleife nur 3 Mal durchlaufen?


RE: Listenbetrieb - Freddy - 04.04.2016 09:43

Hab mal ein Beispiel angehängt.
Zitat:Also so wie das jetzt ist, wird dadurch dass das Array 3 Werte lang ist, die For-Schleife nur 3 Mal durchlaufen?
Ja genau.


RE: Listenbetrieb - chrissy - 04.04.2016 09:54

Ja, super, so habe ich mir das im Grunde vorgestellt.

Das Schieberegister speichert quasi rechts den Wert und packt es beim nächsten Durchgang einfach auf die linke Seite, so dass mit diesem Wert weitergearbeitet wird?

Was mache ich aber, wenn ich 2,345 l einfüllen will? Ich kann ja nicht für jeden Wert einen eigenen Case machen?!

Und wie kann ich sehen, dass sich der Tank füllt? Wenn ich starte, ist er sofort voll. Deshalb habe ich in der For-Schleife noch 1 sek warten eingebaut, aber jetzt dauert es halt 3 Sekunden bis der Tank auf einen Schlag voll ist. Also ich möchte quasi nach jeder Befüllung den aktuellen Stand sehen.

LG Christina


RE: Listenbetrieb - Freddy - 04.04.2016 10:01

Hallo Christina,
Wenn Du sehen willst wie der Kessel steigt. Sie Dir das Bild an.

Wenn Du flexible Werte willst gibt es natürlich viele Möglichkeiten.

Ist der Ursprung ein Zahl oder String Array?
So etwas muss man im Vorfeld wissen.

Gruß
Freddy


RE: Listenbetrieb - Freddy - 04.04.2016 10:17

Zitat:Was mache ich aber, wenn ich 2,345 l einfüllen will? Ich kann ja nicht für jeden Wert einen eigenen Case machen?!
Siehe Bild.


RE: Listenbetrieb - chrissy - 04.04.2016 10:19

Also ich glaube Zahlen würden schon ausreichen...

Ich habe ja jetzt jedes Mal 1 sek warten zwischen den Befüllungen. Wie kann ich denn quasi darauf warten, dass der Tank diesen Wert auch erreicht hat und erst dann weitergemacht wird?

Also wenn ich 1l einfülle, beim Erreichen von 1l eine Meldung ausgelöst wird und erst dann der nächste Durchgang startet?

Wenn ich jetzt 1000l einfüllen will und nur 1 sek warte, denn würde die nächste Befüllung ja schon losgehen, bevor die 1000l voll sind.
Ach ich kann das String-Array ja einfach durch ein Numerisches-Array ersetzen. Meine Leitung ist manchmal sehr lang Wink


RE: Listenbetrieb - Freddy - 04.04.2016 10:32

Zitat:Ach ich kann das String-Array ja einfach durch ein Numerisches-Array ersetzen.
Ja

Du kannst auch die Wartezeit variabel gestallten.


RE: Listenbetrieb - chrissy - 04.04.2016 10:37

Kann ich das auch Warten ohne zeitliche Komponente?

Wenn die Füllung abgeschlossen ist, quasi ein True, welches signalisiert "jetzt kann es weitergehen".

Das wäre auch das letzte für heute, man soll ja auch nicht übertreiben als Anfänger Wink
Wäre ich da mit "Occurence" richtig?