LabVIEWForum.de - Prüfen ob ein Task existiert?

LabVIEWForum.de

Normale Version: Prüfen ob ein Task existiert?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen.

Ich habe bei einem Testsystem, welches ich gerade erstelle im Testablauf ein Problem:

Unter gewissen Fehlerkonditionen kann es passieren, dass ich in einem State lande, in dem ich die funktion "clear task" aufrufe, obwohl es diesen gar nicht gibt. Da ich nicht gewillt bin den gesammten Testverlauf anzupassen, habe ich nach einer Möglichkeit gesucht um zu prüfen, ob ein Task noch gültig ist oder nicht, bevor ich dann sage: "clear task". Leider bin ich bisher noch nicht fündig geworden und meine Kreativität lässt so kurz vor Wochenende auch allmählich nach... Lol

[attachment=22852]

Ich möchte auch keinesfalls die Fehlermeldung ignorieren, da sie bei Systemfehlern benötigt werden könnte.

Wenn jemand eine Idee hat, wie ich die Existenz eines Tasks prüfen kann - immer her damit! ^_^

Grüsse aus dem schönen Schweden!
Tobias
Ich kenne jetzt zwar Deinen Programmaufbau nicht und weiß auch nicht, wie Du es hinbekommst, dass da Tasks "gecleart" werden sollen, die es gar nicht gibt, aber ich würde speziell die Fehlernummer "20048" abfragen und wenn diese in Deinem "Clear"-Case in Deinem Errorcluster auftritt, dann kannst Du den Fehler löschen.

Gruß Markus
Hallo Y-P.

Das Vi dienst als Sub-Vi. Im Normalfall erzeuge ich sobald ich mit einer bestimmten Testsequenz im Haupt-Vi starte die Tasks, welche dann in den Shift-registern erhalten bleiben, bis zum nächsten Aufruf, wo ich mit der "Methode" "Write" Daten ausgebe, bzw. Daten einlese (Methode "Read").
Wenn diese Tests alle erfolgreich sind, wird der Task wieder mit "clear" gelöscht, bevor das Haupt-Vi seine Schleife beendet und ein neuer Test gestartet werden kann. (ich kann vom Haupt-Vi leider nichts zeigen, aber dies ist für das Problem auch unwichtig.)

Jedenfalls kann es vorkommen, dass ich einen Fehler am testobject feststelle und der Test abgebrochen werden muss. Dieser Testabbruch beinhaltet einige Routinen, wie Datalogging, Druckeransteuerungen, HMI und einiges mehr. Nun ist es so, dass ich dort eben auch eine Routine zum löschen der Tasks (fall diese vorhanden sind) aufrufen. Ich kann vom Haupt-Vi nicht direkt auf die Tasks im Sub-Vi zugreifen und will daher das Subvi mit einer entsprechenden Task-Kontrolle in der "Clear-Methode" ausstatten, ohne generell den besagten Fehler auszufiltern.

Ideen?

Edith sagt, dass ich noch die Screens mit den anderen Methoden hinzufügen sollte....
[attachment=22854]
[attachment=22855]
Wenn es einen Task nicht gibt, dann gibt's automatisch einen Fehler. Wieso willst Du den denn aufheben?
Was Du machen könntest, ist, solche Fehler auch in einem Array zu sammeln, dann ist wenigstens Dein Error-Cluster sauber.

Gruß Markus
Ich habe Dank Deines Gedanken auf den genauen Fehlercode zu prüfen nun folgende Lösung gefunden, die nach ersten Tests auch wunderbar funktioniert! 2hands

[attachment=22859]

Ich habe eine Kontrolle "ignore clear task error" hinzugefügt, mit der ich in der "clear-Methode" wählen kann, was passieren soll. Jetzt kann ich vom Haupt-Vi beim Testabbruch ein Flag setzen kann um genau diesen Fehler zu unterdrücken.

Im Normalfall wird erwartet, dass bei den zu Testenden Geräten nicht mehr als als 10ppm einen Fehler haben. und davon wiederum würde nur ein Bruchteil der Fehler in meine beschriebene Situation führen - also statistisch eher nicht relevant! Deshalb hätte ich nur ungern Grossteile der Fehlerroutine geändert - aber mit einem neuen True/False-Selector kann ich leben!Cool

Vielen Dank für die Hilfe!
Noch eine andere Idee:
Mit dem VI "Not A Number/Path/Refnum?" abfragen, ob die Task-Refnum noch gültig ist:
[attachment=22861]
Wenn nicht gültig, dann wird nicht versucht, den Task zu schließen.

Gruß, Jens
Hej Jens.

Na das gefällt mir noch besser, da es genau die Funktion ist, die ich suchte, jedoch nicht fand.

Jetzt vermeide ich den Fehler individuell für die beiden Tasks und unabhängig von wo im Haupt-Vi ich die "clear"-Anforderung rufe.

So sieht das ganze jetzt aus:
[attachment=22862]

Thanx an alle!
Referenz-URLs