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!
Das ist (hoffentlich) nicht das gesuchte Programm.
Es ging nur um ein Beispiel, wie kann ich in einer Event gesteuerten Schleife eine zeitlich feste Variante einbringen.
Wobei das für mich ja schon ein Widerspruch an sich ist.
Daher auch mein Einwand das mit einer Queue gesteuerten Variante aufzubauen.
Oder hatte ich die Frage falsch verstanden?
Danke soweit für die Antworten, aber es ist noch nicht so ganz, was ich wollte. "Wert signalisierend" sieht schonmal gut aus, das habe ich auch gesucht, wie es vorher in diesem Thread schon vorgeschlagen wurde.
Ich habe das jetzt nochmal ein wenig verändert (so wie ich es meine), aber es funktioniert natürlich nicht so wie ich es meine.
Also ich kann die Lampe aus machen, an machen und ich habe die Möglichkeit "Ok" zu drücken und eine Sequenz wird abgearbeitet, die die Lampe ausmacht, 2 Sek wartet und dann wieder anmacht. Und das alles unabhängig vom Timing der Eventstruktur.
Ich sehe, dass ich bei der Sequenz das gleiche Problem habe, wie wenn ich die Sequenz in ein Event packe: Die Sequenz wird erst abgearbeitet und erst danach werden die Signale übergeben.
Ich hoffe, ihr habt noch Geduld mit mir
Beste Grüße
Jan
13.04.2016, 07:59 (Dieser Beitrag wurde zuletzt bearbeitet: 13.04.2016 08:03 von GerdW.)
wenn Dinge in deinem VI parallel laufen sollen, dann musst du es auch parallel programmieren! THINK DATAFLOW!
Momentan laufen deine Event-Struktur und die Sequenz zwar parallel ab, ABER: die Event-Struktur läuft genau einmal durch und muss dann auf den nächsten Schleifendurchlauf warten, bevor das nächste Event abgearbeitet werden kann. Dummerweise erzeugst du aber zwei Events pro Iteration, von denen die Eventstruktur aber nur eines abarbeiten kann - ziemlich blöd…
Lösung: Parallel programmieren OHNE Datenflussabhängigkeit. Ganz einfach mit zwei parallel laufenden Schleifen!
Und wenn du dann schon parallel laufende Schleifen verwendest, bist du nur einen winzigen Schritt von einer sinnvollen Producer-Consumer-Struktur entfernt! (In deinem Fall eine "Event-driven"-Struktur, die man aber problemlos in eine "Queue-driven" umwandeln könnte…)
Seitenhieb: Warum nutzt du lokale Variablen, wenn die Terminals deiner Controls/Indicators ungenutzt im BD rumliegen?
Der Ansatz in einem Event zusätzliche Abläufe einzubauen macht keinen Sinn.
Die While Schleife wird nur nach einem Event komplett durchlaufen.
D.h. der Schalter mit der If Anweisung wird nicht immer ausgeführt.
Ich habe mal einen anderen Ansatz gewählt. Das ist aber wirklich nur eine Ansatz.
GerdW war mal wieder schneller als ich. Das ist genau wie mein Vorschlag.
Ja, danke, genau das ist es Freddy
Und danke für die Erklärung, GerdW. Macht absolut Sinn, hätte ich eigentlich selbst drauf kommen müssen.
(13.04.2016 07:59 )GerdW schrieb: Seitenhieb: Warum nutzt du lokale Variablen, wenn die Terminals deiner Controls/Indicators ungenutzt im BD rumliegen?
Das ist tatsächlich noch ein großes Problem bei mir, ich schmeiße ständig mit lokalen Variablen um mich, obwohl ich schon mehrfach gelesen habe, dass man damit sparsam umgehen sollte. Ich hoffe, das kriege ich mit der Zeit noch besser auf die Reihe
Ich bin ja berüchtigt für klugscheißerische Verschlimmbesserungen von geposteten VIs. Jetzt habe ich wieder zugeschlagen und im VI von Freddy die lokalen Veriablen entfernt.
Zitat:Ich bin ja berüchtigt für klugscheißerische Verschlimmbesserungen von geposteten VIs. Jetzt habe ich wieder zugeschlagen und im VI von Freddy die lokalen Veriablen entfernt.
@Freddy
was ich nicht verstehe, aber vielleicht findest Du es heraus:
Die Bedienköpfe sind im Modus "Latch beim Loslassen". D.H. das Ereignis müsste erst beim Loslassen der Tasten eintreten, nicht aber schon beim Drücken. Bei der Stop-Taste funktioniert das, nicht aber bei den anderen drei Knöpfen. Bei denen wird das Ereignis sofort beim Drücken ausgelöst. Da die Knöpfe beim Lesen sofort zurückgesetzt werden, fehlt hier das "Bedienerlebnis", welches darin besteht, das man sieht, wie der Knopf beim Drücken einen Hub macht. Warum funktioniert das nicht?