Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
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.
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.
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 ;-)
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.
@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?
(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.
Ansonsten wäre die Lösung von Freddy so ziemlich perfekt.