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!
Hallo,
ich habe wiedermal eine Frage zur Programmierung in LabVIEW. Wenn ich mein VI starte, dann sind dort spezielle Einstellungen gespeichert, zum Beispiel stehen alle Schalter auf Null. Ich habe nun ein Netzteil in LabVIEW eingebunden, bei dem es Hilfreich wäre, es sofort abzuschalten, wenn etwas bei der Versuchsdurchführung schief läuft. Klicke ich auf den roten Button in LabVIEW wird das VI gestoppt, das Netzteil bleibt jedoch aktiv.
Meine Frage: Gibt es eine Art "universal Stop-Button", welcher bei Betätigung das VI komplett auf den Ausgangszustand zurücksetzt?
so ein VI ist mir nicht bekannt, was jedoch nichts heißen muss.
Spontan fallen mir 2 Möglichkeiten ein:[list=1]
[*]State Machine
Du könntest dein Programm in einer State Machine ausführen und beim Klick auf Stop in einen Zustand wie "Zurücksetzen" springen, der dann abgearbeitet wird und in dem du das Netzteil aus schaltest.<>
[*]Ereignisstruktur
In einer Ereignisstruktur kannst du auf den Stop-Button reagieren und das Ausschalten des Netzteils veranlassen.<>
[st]Letzteres geht bei einem RealTime-System nicht.
' schrieb:...und das Ausschalten des Netzteils veranlassen.
So siehts aus.
Der rote Stop-Knopf in der Menüleiste ist nicht für den Produktiveinsatz gedacht.
Damit wird einfach das VI angehalten... woher soll LV dann wissen, dass du gerne dein Netzteil in irgendeinen anderen Zustand versetzen willst?
Nebenbei...
Notaus ist immer in Hardware zu realisieren.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Ich ginge vom roten Schleifen-Stop-Button aus. Wenn er natürlich den roten Button in der Menüleiste meint, dann ist das, als würde ein Prozess abgeschossen werden.
Einen Not-Aus kann man per LabVIEW natürlich nicht umsetzen, aber es ist möglich, z.B. beim Beenden des Programms über einen eigenen Stop-Button das Netzteil auszuschalten.
Und ich ging davon aus, dass er das möchte.
Und natürlich spricht nichts gegen eine geeignete Shutdown-Routine... solange man nicht den erwähnten Knopf drückt.
Gruß SeBa
EDIT:
' schrieb:Ich habe nun ein Netzteil in LabVIEW eingebunden, bei dem es Hilfreich wäre, es sofort abzuschalten, wenn etwas bei der Versuchsdurchführung schief läuft.
== Notaus.
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Was er also braucht wäre eher eine Möglichkeit den Roten "aus knopf" von Labview verschwinden zu lassen - da der ungesteuertes Verhalten auslöst. Am besten durch einen noch größeren röteren Knopf auf dem FP ersetzen der bei Betätigung einen kontrollierten Shutdown macht (rot etc. als Eyecatcher, damit der Benutzer nicht den anderen nimmt).
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
Er möchte also nur einen definierten Shutdown zulassen...
Wie wäre es in den VI-Properties->Windows Appearence auf Customize klicken und das Häckchen bei "Show Abort Button" wegmachen...
Zusätzlich kannst du noch das Häckchen bei "Allow User to close Window" wegmachen...
Um das VI jetzt noch beenden zu können, muss also der hierfür vorgesehene Stop-Button auf dem Frontpanel gedrückt werden. Dadrauf kannst du natürlich mit einer ordentlichen Shutdown-Routine reagieren...
Gruß
Freddy
' schrieb:Am besten durch einen noch größeren röteren Knopf auf dem FP ersetzen der bei Betätigung einen kontrollierten Shutdown macht (rot etc. als Eyecatcher, damit der Benutzer nicht den anderen nimmt).
Sehr sichere Vorgehsweise. *g*
Den lässt man dann, wie Frederik schreibt, gar nicht erst anzeigen.
Aber warten wir ab, was er möchte. Ich habe ihn verstanden wie Frederik, aber SeBa könnte auch recht haben und dann wäre LabVIEW ungeeignet dafür.
vielen Dank für die zahlreichen Antworten, wusste nicht dass ich damit soviel "Unruhe" auslöse *g*
@Mechatronik-Ingenieur:
Wie genau lasse ich mein VI in einer State Machine laufen? Vielleicht hilft mir das irgendwie bei meinem Problem weiter.
@all:
Also ich meine nicht den roten Knopf in einer Schleife. Ich suche quasi den Befehl, den LabVIEW aufruft, wenn er das VI startet ("Ausganszustand laden")
=> Der rote Knopf, welcher betätigt wird, war wirklich der in der Menu-Leiste (oben) => das Programm hat noch keinen Notaus.
Ich wollte nicht einen Stopp-Button mit dem gesamten VI verdrahten und dachte es gäbe eine Funktion, welche die sogeannte Shutdown-Routine ersetzt
=> Ich muss also mein Programm so modifizieren, dass bei Betätigung eines Stopp-Buttons alle Geräte abgeschaltet werden. Ist das die einzige Möglichkeit?
Gruß,
Safa
21.07.2010, 19:07 (Dieser Beitrag wurde zuletzt bearbeitet: 21.07.2010 19:08 von Matze.)
das mit der State Machine war nur eine Idee. Theoretisch ginge auch eine (gestapelte) Sequenzstruktur, die beim Programmende ihre zweite Sequenz aufruft.
Aus deiner Haupt-While-Schleife könntest du auch einen Fehlercluster nach rechts herausziehen und mit einem SubVI verbinden, das das Netzteil beim Verlassen der Schleife (= dem Beenden des Programms) ausschaltet.
Da du aber schreibst, es ginge um diesen roten, runden, Stopp-Button in der Menüleiste, kann ich nur sagen: Das geht nicht.
Der Stopp-Button ist u.a. dazu da, dein Programm abzuschießen, wenn es hängt (Endlosschleife o.ä.). D.h. darauf kannst du nicht reagieren und sollst auch nicht reagieren können. Es ist auch nicht zu empfehlen, ein Programm über diesen Button zu Beenden und schon gar nicht, wenn du mit einer Hardware kommunizierst, da undefinierte Zustände auftreten können. Und erst recht nicht, wenn danach noch Code ausgeführt werden muss.
Ein Programm sollte man immer über einen selbst platzieren Stopp-Button beenden, der das Verlassen von Schleifen veranlasst und zwar so, dass Speicher und Referenzen freigegeben werden können etc.
Wenn es um sicherheitskritische Vorgänge geht, muss - wie bereits erwähnt - eine Hardware-Lösung her. Alles andere ist unsicher, da man sich auf Software nie so sehr verlassen kann bzw. viel zu leicht man ein unerwartetes Verhalten auftreten kann.
Ich glaube auch, dass du Begriffe durcheinander wirfst: Mit deinem LabVIEW-Programm wirst du nie einen Not-Aus realisieren können. Du meinst vermutlich einfach, dass man das Programm beendet können muss.