Hallo Gerd,
erstmal vielen Dank für die vielen ausführlichen Antworten, du bist wirklich eine große Hilfe!
(21.12.2021 13:58 )GerdW schrieb: Verwendest du einen QMH oder eine "event-based statemachine"?
Wenn du, wie geschrieben einen QMH verwendest, dann schickst du einmal einen Befehl "Wait until t+1000s". Der entsprechende State im QMH wartet eine Sekunde und sendet sich selbst "wait until t+999s", usw.…
Ich würde am liebsten einen QMH verwenden und nicht das, was ich in meinem Anhang aufgebaut habe, da ich dann lediglich zwei Schleifen habe. Was genau meinst du denn mit einem Befehl "Wait until t+1000s"?
Du meinst also der Case "Warten" würde diese Anweisung bekommen und dann wiederum 1 Sekunde später sich selbst mit Hilfe der Queue aufrufen, verstehe ich das richtig?
Zitat:- In deinem Beispiel gibt es einige Loops, wo du Referenzen nicht durchverdrahtest: das solltest du dringend nachbessern…
das mit den Referenzen verstehe ich nicht ganz. Welche meinst du denn genau? soweit ich weiß habe ich alle Melder und User-Event Referenzen verbunden, oder meinst du was anderes?
Zitat:- Warum überall diese ganzen Wartezeiten? Wenn du einen Ausgang an- und ausschalten willst, kannst du auch eine Loop verwenden und brauchst keine zusätzliche lokale Variable mehr…
das mit den Wartezeiten bei den Cases mit den LEDs ist das, was mir auf die schnelle eingefallen ist, um kenntlich zu machen, dass der Vorgang ausgeführt wurde (ein-aus) und die Wartezeit im Case ist eben die Dauer des Ein-Status. Wahrscheinlich gibt es eine wesentlich einfachere und elegantere Art, das zu lösen.
Zitat:- Warum Wartezeiten in Schleifen, die sowieso (endlos) auf einen Notifier warten?
wenn du die 100ms bei den einzelnen While-Schleifen meinst, dann wollte ich damit lediglich bezwecken, dass sie nicht mit maximaler geschwindigkeit ausgeführt werden, aber ich vermute du hast recht, sie werden ja ohne den Notifier garnicht ausgeführt.. mein Fehler
Zitat:- Ich hoffe, in deinem "richtigen" Programm gibt es eine Möglichkeit, das Programm auch (sinnvoll) zu beenden?
also falls ich einen QMH verwende, werde ich das wohl über ein User-Event lösen. Gibt es da noch was, was ich beim Beenden beachten sollte? Wie gesagt, mir fehlt leider noch die Erfahrung.
Zitat:- Du hast von einem QMH geschrieben, dein VI basiert aber auf Notifiern, UserEvents und dann auch noch irgendwelche Occurances!? Wieso dieser Mix aus gleich drei verschiedenen Elementen?
Der QMH den ich anfangs beschrieben habe ist mein erster Ansatz gewesen, und er funktioniert auch gut, bis auf die Sache mit den Einzelaufrufen während der Dauermessung. Deshalb wollte ich ja was anderes aufbauen und bin bei dem gelandet, was ich angehängt habe. Das VI soll ja nur den Ansatz verdeutlichen. Die Occurances habe ich eingefügt um sicherzustellen, dass der nächste Vorgang erst eingeleitet wird, wenn der aktuelle abgeschlossen ist (scheint bei dem Impedanz Vorgang zu klappen).
Hallo Timo,
tut mir leid, ich weiß leider noch nicht wie ich solche Snippets erstellen kann und habe garnicht daran gedacht, dass einige das VI nicht öffnen können.. vielen Dank für deine Mühe.
Ich werde mir deinen Vorschlag mal ansehen, vielleicht passt das ja wirklich.
Zu deiner Frage: Temperatur +/- sowie Spannung +/- müssen eigentlich keine getrennte Vorgänge sein. Dabei muss lediglich sichergestellt werden dass ein bestimmter Wert bei den zugehörigen Geräten eingestellt wird. Deshalb habe ich erstmal für die Spannungsquelle ein SubVI erstellt, das in Abhändigkeit vom aktuellen Wert der angelegten Spannung den Step wählt (z.B. +/-0,2V im Bereich 0-5V und +/-1V im Bereich 5-60V). Falls ich das mit der Schritteingabe besser hinbekomme, werde ich das wahrscheinlich auch ändern und einfach den Wert vorgeben (weiß ja jetzt auch wie User-Events funktionieren, da sollte das kein Problem sein hoffe ich).
Bei den Messungen muss ich lediglich warten bis die Lagerstrom- Spannungsmessung sowie die Impedanzmessung fertig sind, da diese beiden über eine Art Switch am Prüfling angeschlossen werden und deshalb nicht gleichzeitig laufen können. Ansonsten wäre es mmn nur noch beim Vorgang "Warten" wichtig zu warten, bis dieser abgeschlossen ist. (mit den neuesten Ideen von Gerd wird dieser aber hoffentlich nicht die Queue besetzen).
Ich denke am besten versuche ich meinen QMH Ansatz umzubauen und füge diesen anschließend hier an.