12.02.2008, 10:35
Beitrag #1
|
|
|
12.02.2008, 10:53
Beitrag #2
|
IchSelbst
LVF-Guru
Beiträge: 3.696
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
SubVI hängt sich manchmal auf
' schrieb:Allerdings bleibt der Code in einem Teil eines Sub-VIs manchmal hängen und so friert das Hauptprogramm ein
Zitat:Wie komme ich hier weiter?
Fehler suchen?
Du könntest den Teil des Programmes, von dem du meinst er sei fehlerhaft, hier posten. Möglichkeiten, die zu dem bei dir auftretendem Verhalten führen, gibt es mehrere.
Zitat:Ist es möglich eine Art Timeout einzubauen, damit sich das VI resettet, wenn sich eine bestimmte Zeit nichts tut?
Von einer solchen Lösung rate ich ab. Besser ist es den "Fehler" zu suchen und zu beheben.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
12.02.2008, 11:25
Beitrag #3
|
Blondchen
LVF-Gelegenheitsschreiber
Beiträge: 64
Registriert seit: Apr 2006
2018
1996
DE
70180
Deutschland
|
SubVI hängt sich manchmal auf
' schrieb:Fehler suchen?
Du könntest den Teil des Programmes, von dem du meinst er sei fehlerhaft, hier posten. Möglichkeiten, die zu dem bei dir auftretendem Verhalten führen, gibt es mehrere.
Von einer solchen Lösung rate ich ab. Besser ist es den "Fehler" zu suchen und zu beheben.
Hallo und Danke für die Antwort.
Beim "fehlerhaften Teil" des VIs, also dem Code an dem es irgendwann nicht mehr weitergeht, wird eine
externe dll-Datei aufgerufen. Diese dll Datei stammt aus den Treiber-Dateien des seriellen Bussytems, welches
für die Datenkommunikation verwendet wird (1-Wire). Der Grund für das "Aufhängen" sind vermutlich Probleme
im Bussystem. Es kann durchaus sein, dass das Programm mehrere Tausend mal korrekt die Schleife durchläuft
bevor es sich plötzlich aufhängt, manchmal aber auch schon viel schneller. Deshhalb der Gedanke an das Timeout.
|
|
|
12.02.2008, 11:50
Beitrag #4
|
|
|
12.02.2008, 11:51
Beitrag #5
|
|
|
12.02.2008, 12:02
Beitrag #6
|
|
|
12.02.2008, 12:57
Beitrag #7
|
IchSelbst
LVF-Guru
Beiträge: 3.696
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
SubVI hängt sich manchmal auf
' schrieb:Ja genau!
Hm. Pech gehabt.
Wenn das Programm im DLL-Knoten, also in der DLL hängen bleibt - da kann man nix machen. Das "gewaltsame" Beenden des DLL-Knotens, also der DLL, würde immer mindestens zu einer irreperablen Dateninkonsistenz führen. Wahrscheinlicher ist aber, dass ein solchen Beeden zu einem instabilen Gesamtsystem führen würde.
Ich sehe hier folgende Möglichkeiten.
Erstens:
Die DLL hat einen Fehler. Ein Fehler ist es in meinen Augen auch, wenn die DLL (respektive die betreffende Funktion innerhalb der DLL) aufgrund eines Busfehlers ewig weitermacht und sich nicht mit einem Fehler beendet. In diesem Falle müsstest du bei dem DLL-Hesteller nachfragen, was das soll.
Zweitens:
Der DLL-Aufruf ist falsch. Du könntest Anschlüsse am DLL-Knoten z.B. entweder falsch definiert oder mit falschen bzw. ungültigen Werten belegt haben. Sowas muss nicht zwangsläufig zu einem sofortigen Fehler führen. Der Fehler kann genau in der Art auftreten wie bei dir.
Drittens:
Du verwendest die DLL falsch. Möglicherweise hat die DLL bereits einen Fehler festgestellt und den auch zurückgemeldet. Nur: Das hast du ignoriert. Jetzt darfst du möglicherweise den DLL-Aufruf, der hängen bleibt, gar nicht mehr ausführen.
Viertens:
Du ignorierst das Timing innerhalb der DLL. Möglicherweise arbeitet die DLL mit eigenen Threads. Das heißt, sie arbeitet auch, wenn du gar keinen DLL-Knoten aufrufst. Wenn du in einem solchen Falle möglicherweise gewisse DLL-Funktionen zu schnell oder auch nur überhaupt aufrufst - geht was kaputt in der DLL.
Mir würden bestimmt noch mehr Sachen einfallen. Kannst du von den vier hier was ausschließen?
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
12.02.2008, 14:35
Beitrag #8
|
Blondchen
LVF-Gelegenheitsschreiber
Beiträge: 64
Registriert seit: Apr 2006
2018
1996
DE
70180
Deutschland
|
SubVI hängt sich manchmal auf
' schrieb:Mir würden bestimmt noch mehr Sachen einfallen. Kannst du von den vier hier was ausschließen?
Nein, da kann ich nix ausschließen, weil ich nicht wirklich weiß, was da eigentlich
passiert. Das VI habe ich so übernommen und es umzuschreiben/abzuändern traue ich mir
bei weitem nicht zu. Trotzdem Danke für die ausführliche Antwort.
|
|
|
06.03.2008, 10:10
Beitrag #9
|
|
|
06.03.2008, 10:51
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
SubVI hängt sich manchmal auf
Lad' mal Dein VI und evtl. auch die DLL hoch...., dann kann man Dir wesentlich einfacher helfen.
Gruß Markus
' schrieb:Hallo nochmal,
ich benutze einfach den alten Thread, es dreht sich noch um das selbe Problem.
Ich würde es nun wirklich gerne so lösen, dass zB das Programm neugestartet wird oder
sogar der PC, wenn der Code in besagtem DLL Knoten hängen bleibt.
Ich wäre wirklich dankbar, wenn mir jemand kurz einen Tipp geben könnte, wie ich
eine Art Timeout realisieren kann! Mit der Ereignisstruktur habe ich es nicht hinbekommen,
da normalerweise kein Benutzer am PC sitzt und somit keine Events ausgelöst werden...
Auch wenn es programmiertechnisch vermutlich höchst daneben ist, wäre es sehr nett
wenn ich da Hilfe bekommen könnte!
lg Blondchen
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
| |