Ich habe die Steuerung eines unserer Messplatzes von GPIB-Kommunikation auf serielle Kommunikation über VISA umgebaut, da die GBIB-Schnittstelle in einem der Messgeräte nicht mehr funktioniert. Dabei wollte ich einen Fehler bezüglich der Stopp-Funktion im Programm beheben und bin gescheitert. Hoffentlich könnt ihr mir da helfen.
Die Messung läuft in 2 While-Schleifen ab: Erste Schleife: Gehe zum nächsten Messwert; 2 Schleife: Fahre die Geräte und nimm die Messwerte auf.
Als Abbruchbedingung ist jeweils die Beendigung der Aufgabe drin und zusätzlich über ein "OR" eine angeschlossene Stopp-Funktion.
Die Stopp-Funktion ist eine Event-Strukture in einer While-Schleife. Die Event-Strukture wird ausgelöst beim Drücken des Stopp-Knopfes oder wenn die Messung komplett fertig ist (die anderen Schleifen durchgelaufen sind) und verhindert dann jeweils weitere Schleifen-Durchgänge der beiden Messschleifen und der Stopp-Funktionsschleife.
An sich wohl eine der eleganteren Wege das Programm zu beenden, wie ich finde, doch funktioniert der Stopp-Knopf leider nur ein mal. Hat man die Messung (und damit die VI) mit Hilfe des Stopp-Knopfs beendet, so kann man den Knopf bei einem erneuten Aufruf der SubVI nicht mehr drücken. Da die zweite Messung an sich aber regulär durchläuft, kann es wohl nicht an nicht zurück gesetzten Variablen liegen (da sonst die Schleifen ja direkt nach dem ersten Durchlauf beendet werden würden).
Der Schalter ist auf "Latch beim Loslassen" (Latch when released) eingestellt, falls das wichtig ist.
Das ganze läuft noch unter
An bei noch einmal ein Bild der Stopp-Button-Programmierung. "Stopp" ist der eigentliche Button, "Stop_Acquisition" wird zu Beginn der VI auf False gesetzt.