LabVIEWForum.de - Mögliche Ursache für Programmhänger?

LabVIEWForum.de

Normale Version: Mögliche Ursache für Programmhänger?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo alle zusammen,

ich habe ein Problem bei einem VI unter LabVIEW 7.0/7.1. (Win2000)
Das Programm liest 6 serielle Schnittstellen gleichzeitig ein, sowie die Werte von 6 Analogeingängen einer IO-Karte. Die eingelesenen Werte werden am Monitor dargestellt und in einer Datei protokolliert.

Das Problem besteht darin, daß sich LabVIEW nach einer gewissen Zeit (1..5h) "aufhängt", d.h., es sind keine Eingaben mehr möglich, es läßt sich nicht beenden und auch ein Abbruch über den Taskmanager ist nicht möglich. Die Anzahl der LabVIEW zugeordneten Handles im Taskmanager scheint während der Laufzeit ständig zu steigen (bis zu 3000), was dann anscheinend zu dem Hänger führt.

Hat irgendjemand eine Idee wo man in diesem Fall mit einer Fehlersuche ansetzen könnte?

Beste Grüße
Holger
Pufferüberlauf denke ich. Da muss man das Programm genau anschauen. Ich habe mal vom 8 seriellen Schnittstellen gleichzeitig eingelesen und protokolliert, sollte also kein Problem sein. Betrachte mal mit dem Taskmanager deinen PC-Speicher und CPU-Auslastung genauer.
Versuche mal die Tasks sauber zu trennen. Kommuniziere zwischen den Tasks über Queues mit einer festdefinierten Grösse.

Gruss, Eugen
Hi

Ich habe das Probelm auch mal gehabt.
Wahrscheinlich öffnest du irgendwo in einer schleife immer wierder eine Referenz und schließt sie dann wieder nicht.
Dadurch steigt der Speicgerverbrauch an und es geht nichts mehr.
Also schau dir deine schleifen an wo öffnes du referenzen und schließt sie nicht wieder.

Gruß

Jürgen
Hallo,

also, an den Schnittstellen kann es, glaube ich, nicht liegen. Ich habe Testprogramme laufen, die über den ganzen Tag mit sechs seriellen Schnittstellen kommunizieren und gleichzeitig von vier Messkarten(PCI6071) Werte holt. Das klappt ohne Probleme.

Starte mal den VI-Profiler und schaue dir Speicherauslastung an.

Gruß
sven
Halllo,
danke für Eure Antworten. Da ich noch nicht sehr viele Erfahrungen mit LabVIEW habe, muß ich allerdings noch mal nachfragen:

Eugen: Welche Tasks meinst Du? Die Windows-Tasks? Die sollten doch nicht kommunizieren. Oder die einzelnen Schnittstellentasks meines Programmes? Diese laufen auch unabhängig voneinander parallel, schreiben allerdings Daten in die gleiche (Text-)Datei.

Jürgen: Was meinst Du mit Referenzen? Ich habe in der mir verfügbaren Literatur zum Thema den Begriff nicht gefunden.

Sven: Die Speicherauslastung der einzelnen Module im Profiler bleibt konstant, während die Anzahl der Handles und Threads im Taskmanager für LabVIEW langsam, aber ständig steigt.

Noch einmal vielen Dank
Holger
Ich habe den Fehler inzwischen gefunden:
Ich hatte die seriellen Schnittstellen bei jedem Lesevorgang zuerst initialisiert und am Ende wieder geschlossen. Da dies zu Lese(Timing-)problemen geführt hat, habe ich die Initialisierung weggelassen und die Einstellung der Schnittstellen-Parameter in der Systemsteuerung vorgenommen. Die verbliebenen CloseVisa-VIs haben anscheinend den o.g. Fehler bewirkt, denn nachdem ich diese jetzt auch entfernt habe, läuft das Programm inzwischen seit 2 Tage absturzfrei durch.

Nochmal danke für alle Tips
Holger
Referenz-URLs