LabVIEWForum.de - ProbertyNode (RunVi) ignorieren wenn SubVi läuft

LabVIEWForum.de

Normale Version: ProbertyNode (RunVi) ignorieren wenn SubVi läuft
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

ich habe folgendes Problem. Ich möchte ein SubVi über verschiedene SubVi´s starten. Ich starte das SubVi über die Methode (RunVi). Da ich das SubVi zum Teil Zyklisch starte kommt es leider vor das es geöffnet wird obwohl es bereits läuft. Dann erhalte ich den Fehler

"Error 1000: The VI is not in a state compatible with this operation"

Ich hätte gerne das der Aufruf der Methode einfach ignoriert wird wenn das SubVi läuft.

Habe es bisher versucht das über die Proberty Node "Execution - State" abzufangen, nur komischerweise Funktioniert das nicht immer.

Hat einer ne idee bzw. nen Denkanstoß für mich?

LG Dom
Wie wäre es mit einer FGV in der du ein flag "IsRunning" setzt, sobald das SubVI started/gestarted ist und es entfernst sobald es fertig ist.
Dann brauchst du auch nicht mit VI-Servern und Property-Nodes zu arbeiten, was das ganze einfacher und robuster macht...
Danke erstmal!

Muss mich dann erstmal in die Thematig der Funktionalen Globalen Variable einlesen.

Wenn so ein Frischling ist kommt schon immer wieder viel neues und man kann ständig sein Programm neu strukturieren Wink
Hmm diese FGV gilt ja als eine Art Datenspeicher wenn ich das richtig verstanden habe. Und funktioniert somit ähnlich einer Globalen Variable.

Das Problem bei mir, das SubVi das aufgerufen wird, wird nicht fertig. Es handelt sich hierbei um eine Spannungsregelung die bei Bedarf an- und ausgeschaltet wird und in der "Running" Zeit kontinuierllich läuft.

Ich starte also die Regelung mit "RunVi" und schliesse sie wieder mit "Abort VI".

Wenn ich das Vi hart abbreche kann ich den Wert der FGV ja eigentlich nicht switchen oder?
Zu meiner Schande muss ich gestehen, dass ich deinen Status über die Dauer der LabVIEW-Benutzung erst nach meiner Antwort gelesen habe....
FGV sind es auf jeden Fall wert zu lernen...aus dem Grund hab ich jetzt kein schlechtes Gewissen 2hands

Und wenn man es sich selber erarbeitet bleibts auch besser im Gedächtnis, als wenn man alles vorgekaut bekommt...
In diesem Sinne:
frohes lernen!

\c
(22.08.2011 08:33 )Dom0503 schrieb: [ -> ]Ich starte also die Regelung mit "RunVi" und schliesse sie wieder mit "Abort VI".

Wenn ich das Vi hart abbreche kann ich den Wert der FGV ja eigentlich nicht switchen oder?

tstststs, sowas macht man aber auch nicht Smile

Anyways, solltest du es wirklich so machen wollen (wovon ich allerdings nur und mit Nachdruck abraten kann) kannst du die FGV auch nach dem "Abort VI" wieder rücksetzten, es muss ja nicht zwangsläufig im SubVI gesetzt werden...
Und ja, sie sind quasi wie globale Variablen, nur lässt sich mit ihnen RaceConditions vermeiden (wieder ein Stichwort, dass sich nachzuschlagen lohnt!)

Zu deinem Design:
versuche dein SubVI mit einer StateMachine umzusetzten und beende es definiert. Sonst bekommst du früher oder später echt Probleme (und eher früher als später)...
[/quote]

tstststs, sowas macht man aber auch nicht Smile


[/quote]
Schande über mein haupt

[/quote]
Zu deinem Design:
versuche dein SubVI mit einer StateMachine umzusetzten und beende es definiert. Sonst bekommst du früher oder später echt Probleme (und eher früher als später)...
[/quote]

Hmm damit ich das richtige verstehe......Die Spannungsregelung soll ich in eine Statemachine umwandeln (Momentan ist es eine größere Sequenz die nacheinander misst, Stellwert berechnet, Stellwert ausgibt)
Diese Statemachine kann ich dann über eine Statemachine im MainVi öffnen.

Was ich nicht so ganz verstehe... Bitte korrigier mich wenn ich da falsch liege.

Wieso gibt es Probleme wenn Parallel zu den MainVi eine SubVi starte. Und warum ist die Statemachine in dem Fall besser? Blockieren sich die Eventhandler nicht gegenseitig?

Sorry für die vielen dummen Fragen Wink
Hallo Dom,

Zitat:Und warum ist die Statemachine in dem Fall besser?
Eine Statemachine kann man nach jedem Step abbrechen (bzw. auf Fehler reagieren), eine Sequenz nicht...
Zitat:Eine Statemachine kann man nach jedem Step abbrechen (bzw. auf Fehler reagieren), eine Sequenz nicht...

Stimmt Blush

Danke!


bzw. kann man schon mit der Brecheisen-Methode Wink

Aber ich versuch die mal zu vermeiden...soll ja nicht mein letztes LV Projekt sein und da sollte es halbwegs elegant sein (auch wenn man wahrscheinlich in 3 Monaten die Lust verspürt alles neu zu programmieren Wink)
Referenz-URLs