LabVIEWForum.de
Rückgabewerte von Sub-VIs im Fehlerfall - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Rückgabewerte von Sub-VIs im Fehlerfall (/Thread-Rueckgabewerte-von-Sub-VIs-im-Fehlerfall)

Seiten: 1 2


Rückgabewerte von Sub-VIs im Fehlerfall - TSC - 08.01.2009 11:38

Moin zusammen,

ich habe immer Probleme mit den Übergabeparametern von SUB-VIs. Als Beispiel habe ich mal ein VI angehängt, in dem aus einer HDF5 Datei ein Dataset ausgelesen wird.

Übergabeparameter sind:

-Pfad zu der Datei
-Name des Datasets innerhalb der Datei
-Datentyp des Datasets (bei mir ein 1D-Array aus Clustern)
-Error in

Rückgabeparameter:
-Ref out der Datei
-Daten aus dem Dataset
-Error out

Im normalfall funktioniert alles so wie es soll. Wird allerdings ein Fehler übergeben, so weiß ich nicht, ob meine Rückgabewerte so sinnvoll sind. "Refout" und "Daten" machen mir sorgen. kann mir da jemand tipps geben, was ich korrekterweise zurück gebe wenn etwas schief gegangen ist?

Lv82_img[attachment=16049]

Viele Dank,
Torsten

P.S. Ich hoffe das ist so verständlich, ich bin grad bissl verwirrt.


Rückgabewerte von Sub-VIs im Fehlerfall - Lucki - 08.01.2009 14:09

Verstehe ich ehrlich nicht, wie ein Experte wie Du so etwas fragen kann. Es ist doch der Normalfall, daß, wenn ein Sub-VI als Rückgabewert einen Fehler meldet, alle anderen Rückgabewerte nicht zu gebrauchen sind. Man muß dafür doch nicht im Sub-VI etwas ändern, sondern man wird im Anschluß an das Sub-VI eine Fehlerbehandlung anschließen. Oftmals wird man das gesamte Programm beenden, aber es kann natürlich auch etwas anderes gemacht werden, immer unter Berücksichtigung dessen , daß die Rückgabewerte ungültige, nicht zu verwendende Werte sind.


Rückgabewerte von Sub-VIs im Fehlerfall - thomas.sandrisser - 08.01.2009 14:44

Entweder verwende den error cluster und verschiebe alles nachfolgende in eine case struktur, wobei der error cluster an den case selector angeschlossen ist.
Die andere moeglichkeit waere die ref out auf gueltigkeit zu ueberpruefen mit der LabVIEW primitive function ist not a path/constant/refnum


Rückgabewerte von Sub-VIs im Fehlerfall - TSC - 08.01.2009 14:51

' schrieb:Verstehe ich ehrlich nicht, wie ein Experte wie Du so etwas fragen kann. Es ist doch der Normalfall, daß, wenn ein Sub-VI als Rückgabewert einen Fehler meldet, alle anderen Rückgabewerte nicht zu gebrauchen sind. Man muß dafür doch nicht im Sub-VI etwas ändern, sondern man wird im Anschluß an das Sub-VI eine Fehlerbehandlung anschließen. Oftmals wird man das gesamte Programm beenden, aber es kann natürlich auch etwas anderes gemacht werden, immer unter Berücksichtigung dessen , daß die Rückgabewerte ungültige, nicht zu verwendende Werte sind.

Stimme da schon irgendwie mit dir überein. Das Problem entsteht bei mir, wenn ich eben trotz Fehler das Programm nicht beenden möchte. Klar, der Fehler wird dann protokolliert und gelöscht, so dass das Programm normal weiter laufen kann. Allerdings ist es in dem Beispiel VI von mir ja so, dass ich in der Casestruktur etwas zurück geben muss. Sicherlich kann ich da irgendwas anschließen, weil es ja eh nicht zu verwerten ist (weil ein Fehler da ist). Theoretisch kann ich also irgendein Datenpaket zurück geben und irgeneine Refnum. In meinem VI habe ich an den "Refnum out" Anschluss die Konstante "keine refnum" angeschlossen.

Wollte also nur wissen, was man so zurück geben kann, wenn man eigentlich nix zurück geben möchte,..


Rückgabewerte von Sub-VIs im Fehlerfall - abrissbirne - 08.01.2009 15:36

' schrieb:Stimme da schon irgendwie mit dir überein. Das Problem entsteht bei mir, wenn ich eben trotz Fehler das Programm nicht beenden möchte. Klar, der Fehler wird dann protokolliert und gelöscht, so dass das Programm normal weiter laufen kann. Allerdings ist es in dem Beispiel VI von mir ja so, dass ich in der Casestruktur etwas zurück geben muss. Sicherlich kann ich da irgendwas anschließen, weil es ja eh nicht zu verwerten ist (weil ein Fehler da ist). Theoretisch kann ich also irgendein Datenpaket zurück geben und irgeneine Refnum. In meinem VI habe ich an den "Refnum out" Anschluss die Konstante "keine refnum" angeschlossen.

Wollte also nur wissen, was man so zurück geben kann, wenn man eigentlich nix zurück geben möchte,..
Hilft das vll.?
[Bild: ErrorCase.JPG]


Rückgabewerte von Sub-VIs im Fehlerfall - TSC - 08.01.2009 15:41

' schrieb:Hilft das vll.?
[Bild: ErrorCase.JPG]


Kann mir jemand irgendwas hartes geben,.. Brauch was wo ich meinen Kopf gegen schlagen kann. Danke!


Rückgabewerte von Sub-VIs im Fehlerfall - IchSelbst - 08.01.2009 15:45

' schrieb:Sicherlich kann ich da irgendwas anschließen, weil es ja eh nicht zu verwerten ist (weil ein Fehler da ist). Theoretisch kann ich also irgendein Datenpaket zurück geben und irgeneine Refnum. In meinem VI habe ich an den "Refnum out" Anschluss die Konstante "keine refnum" angeschlossen.
Ja, genau.
Es ist völlig egal, ob und was du im Fehlerfall zurückgibst. Im aufrufenden VI hat die Fehlerüberprüfung, die ja indirekt eine Freigabe der Rückgabewerte darstellt, immer Vorrang vor der Auswertung der Rückgabewerte. So gesehen schließt du also an, was sinnvoll ist - also Standardwerte.


Rückgabewerte von Sub-VIs im Fehlerfall - eg - 08.01.2009 15:58

' schrieb:Hilft das vll.?
[Bild: ErrorCase.JPG]


Was soll das Platzieren des Outputs innerhalb der Case-Struktur eigentlich bewirken?

Ja ich mache schon seit langem die Inhalte aller meiner SubVIs in No-Error-Case. Ist doch ne gute Lösung. Falls irgendwo vor dem Aufruf eines solchen SubVIs ein Fehler passieren sollte, werden die nachfolgende SubVIs zwar aufgerufen, aber es passiert halt nichts, nur der Fehler wird weitergeleitet bis der Error endlich mal quittiert und gelöscht wird. Somit wird das SubVI, das die Referenz (die im Fehlerfall ungültig sein kann) gebrauchen kann, gar nicht ausgeführt.

Gut dabei ist auch, dass du beim Quittieren des Fehlers die richtige Fehlerquelle feststellen kannst.

Gruß, eg


Rückgabewerte von Sub-VIs im Fehlerfall - abrissbirne - 08.01.2009 16:02

' schrieb:Was soll das Platzieren des Outputs innerhalb der Case-Struktur eigentlich bewirken?

Ja ich mache schon seit langem die Inhalte aller meiner SubVIs in No-Error-Case. Ist doch ne gute Lösung. Falls irgendwo vor dem Aufruf eines solchen SubVIs ein Fehler passieren sollte, werden die nachfolgende SubVIs zwar aufgerufen, aber es passiert halt nichts, nur der Fehler wird weitergeleitet bis der Error endlich mal quittiert und gelöscht wird.

Gruß, eg
Ich mache das genau so. Wenn ich die Outputs innerhalb des NO-Error-Case habe wird im Fehlerfall auch nix reingeschrieben. Das ist alles was ich damit bewirke.


Rückgabewerte von Sub-VIs im Fehlerfall - eg - 08.01.2009 16:06

' schrieb:Ich mache das genau so. Wenn ich die Outputs innerhalb des NO-Error-Case habe wird im Fehlerfall auch nix reingeschrieben. Das ist alles was ich damit bewirke.

Verstehe, aber hast du mal überprüft was an den Ausgängen des SubVIs anliegt? Denkst du die zuletzt gültigen Werte?