LabVIEWForum.de
Wie auf abgearbeitete Queue warten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Wie auf abgearbeitete Queue warten (/Thread-Wie-auf-abgearbeitete-Queue-warten)

Seiten: 1 2


Wie auf abgearbeitete Queue warten - mez15 - 28.09.2017 08:58

Hallo Zusammen,

bevor ich lange erzähle, findet ihr im Anhang mein VI. Aktuelle ist es möglich beide Tanks auf Knopfdruck zu befüllen. Wie kann ich nun erreichen, dass der zweite Tank erst befüllt wird, wenn der erste voll ist, auch wenn der User noch während der Befüllung des ersten Tanks die Befüllung des zweiten Tanks auf dem Frontpanel veranlasst?

Ach ja, die Architektur schaut zugegeben kompliziert aus, mit den drei Queue, diese sind aber notwendig.


RE: Wie auf abgearbeitete Queue warten - TR61 - 28.09.2017 09:32

Hallo mez,

meinst du etwa so wie im Anhang?

Grüße
TR


RE: Wie auf abgearbeitete Queue warten - Freddy - 28.09.2017 10:05

Hallo mez15,
für Deine Frage gibt es viele Lösungen.
Ich gehe davon aus, dass dies nur ein Teil des Programms ist.
Wenn nicht wäre es mit einem Queue besser, da dann die Queue erst weitermacht wenn der Kessel voll ist und das Ereignis des zweiten Kessels geht nicht verloren.

Man kann auch den Schalter des 2. Tanks deaktivieren und mit der Voll Meldung des 1.Tanks wieder aktivieren.

Bei der Lösung von TR muss man den Tanker 2 immer wieder betätigen, sonst vergisst das Programm dieses Ereignis.
Ist das so gewollt? Oder soll wenn die Taste für den 2. Tank aktiviert wurde automatisch gefüllt werden wenn Kessel 1 voll ist?

Da ist auch noch der Stopp Taster, der geht auch nur wenn der Tank voll ist. Wenn Du zwischendurch unterbrechen willst, muss die Tank x LOS Funktion ab und zu unterbrochen werden.

Zunächst solltest Du alle Aktivitäten aufschreiben. Daraus ergibt sich dann eher ein Lösungsweg.

Gruß
Freddy


RE: Wie auf abgearbeitete Queue warten - mez15 - 28.09.2017 10:08

Danke für den Lösungsvorschlag. Diese Lösung funktioniert bei dem VI. In meinem realen Beispiel geht es darum, dass in unregelmäßigen Abständen Befehle von mehreren Benutzern an EIN Messgerät gesendet werden. Bei einem Befehl führt das Messgerät einen Scan durch, welcher, abhängig nach der Konfiguration, 2-10 Sekunden dauern kann. Während ein Scanvorgang durchgeführt wird sollte das Messgerät keine neuen Befehle erhalten, sondern diese zwischenspeichern und abarbeiten wenn der Scanvorgang abgeschlossen ist. D.h. die Erzeugerschleife braucht irgendwie Feedback von den Verbraucherschleifen, damit sie weiß wann sie den nächsten zwischengespeicherten Befehl losschicken kann. Ich hätte da schon was im Kopf, jedoch will ich keine Lösung vorwegnehmen ;-)


RE: Wie auf abgearbeitete Queue warten - Freddy - 28.09.2017 10:26

Wenn das Messgerät die Queue erst freigibt nach dem der Scan erledigt ist, wird erst dann die nächste Nachricht verarbeitet.
Da kannst Du die Nachrichten asynchron einfach hintereinander schicken.
Da reicht auch eine Queue die von der Ergebnisstruktur gefüttert wird.

Gruß Freddy


RE: Wie auf abgearbeitete Queue warten - Lucki - 28.09.2017 10:28

Hier der schon von Freddy erwähnte Lösungvorschlag: Der Tankfüllknopf ist deaktiviert, solange er nicht bedient werden darf.
[attachment=58318]


RE: Wie auf abgearbeitete Queue warten - Freddy - 28.09.2017 10:33

Die andere Lösung beide werden gedrückt aber nur Einer nach dem Anderen wird verarbeitet.


RE: Wie auf abgearbeitete Queue warten - TR61 - 28.09.2017 10:45

Hallo mez,

so wie du es beschrieben hast (oder ich es verstanden habe) hört es sich so an als wäre es eine Aufgabe für Semaphor.

In dem VI ist deine erste gestellte Aufgabe nicht gelöst, da die Aufgabenstellung sich m.M.n. etwas geändert hat.

Grüße
TR


RE: Wie auf abgearbeitete Queue warten - Lucki - 28.09.2017 12:04

@Tr61
Bei Deinem VI kann man zwar nicht beide Tanks gleichzeitig befüllen, man kann aber auch Tank 2 zuerst befüllen. Ist das noch im Sinne der Aufgabenstellung?


RE: Wie auf abgearbeitete Queue warten - TR61 - 28.09.2017 12:29

(28.09.2017 12:04 )Lucki schrieb:  @Tr61
Bei Deinem VI kann man zwar nicht beide Tanks gleichzeitig befüllen, man kann aber auch Tank 2 zuerst befüllen. Ist das noch im Sinne der Aufgabenstellung?

Hallo und Mahlzeit Lucki,

naja so habe ich es nun mal herausgelesen, dass zwei Schleifen gegeneinander verriegelt werden sollen und da die Queues so bleiben müssen darf sich auch nicht viel am Code ändern.

Irrtümer meinerseits sind nicht ausgeschlossen.Angel_not

Ansonsten wäre die Lösung von Freddy so ziemlich perfekt.

Grüße
TR