04.11.2009, 15:28
Beitrag #1
|
dude776
LVF-Grünschnabel
Beiträge: 28
Registriert seit: Jun 2006
8.6
-
de
86911
Deutschland
|
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
Hallo,
folgende Problematik:
Ich steuere ein kleine Anlage (Ventile, Pumpen, Messsignale) zu Wasseraufbereitung mit LabVIEW und einem WAGO I/O System 750. Das VI besteht aus Steuerungs, Datenlogging (als .txt file), Messdatenvisualisierung in Diagrammen, und der Bedien/Parametrierungsoberfläche. Alles funktioniert soweit exzellent.
Allerdings gibts nach 3 Tagen Dauerbetrieb die Meldung (von Windows?) "Speicher voll!" HAbe dann via Taskmanager die Nutzung des virtuellen Speichers und der Prozessorleistung beobachtet: steigt bis zum Absturz.
Das VI ist zugegebenerweise recht primitiv programmiert, d.h ich benutze Lokale Variablen um die Daten und Ventilzustände in meinen vielen Do-while Schleifen auszutauschen. Es sind bestimmt so an die 50 lokale Variablen.
Die Schleifen sind alle getaktet (min 100 mS), die Diagramwerte limitiert bzw Absturz auch ohne aktive Diagramme/Datenaufzeichnung. Das System "überlädt" sich sogar, wenn die Anlage nicht in Betrieb ist, sondern das VI nur auf Eingabe (Start-Button) wartet. Habe natürlch schon soviel wie möglich Schleifen rausgelöscht, um zu sehen, welche den Fehler birgt, aber keinen Erfolg, immer dassselbe. Auch ohne Verbindung zum Wago System stürzt der (die) Rechner ab.
Kann es an den lokalen Variablen liegen? Hat jemand ne Idee?
VI hänge ich erstmal nich an, will ich keinem zumuten...
Danke.
|
|
|
04.11.2009, 16:07
Beitrag #2
|
chrissyPu
LVF-Stammgast
Beiträge: 467
Registriert seit: Jun 2006
2014 PDS
2006
DE_EN
64283
Deutschland
|
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
Tag!
' schrieb:Kann es an den lokalen Variablen liegen? Hat jemand ne Idee?
VI hänge ich erstmal nich an, will ich keinem zumuten...
Danke.
Die Vermutung mit den lokalen Variablen liegt schon nahe... Alternativ ist es auch keine gute Idee, Messdaten über längere Zeit in Frontpanel-Elementen, Variablen etc. zu speichern, besser in Dateien oder andere Dignen, die nicht im Speicher liegen...
Wenn das VI fehlt, wirst Du hier glaub ich außer Mutmaßungen nicht viel mehr zu hören bekommen...
ch
|
|
|
04.11.2009, 16:11
Beitrag #3
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
Lokale Variablen könnten ein Fehler sein.
Ich tippe aber viel eher auf nicht geschlossene Referenzen. Du erzählst da was von WAGO System, was ist denn die Schnittstelle dazu? Irgendwas mit ActiveX vielleicht? Dann liegt es garantiert daran, dass du irgendwelche Refnums aufmachst und nicht schließt.
Lad dir mal den Process Explorer von SysInternals ( http://technet.microsoft.com/de-de/sysin...6653.aspx) runter und schau nach, ob bei deiner Applikation Handles hochlaufen, das wäre ein sehr schlechtes Zeichen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
04.11.2009, 17:44
Beitrag #4
|
dude776
LVF-Grünschnabel
Beiträge: 28
Registriert seit: Jun 2006
8.6
-
de
86911
Deutschland
|
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
Danke erstmal,
Jens, ich habe den Process Explorer installiert, es laufen tatsächlich "Handles" hoch, sobal ich die Applikation starte.
Allerdings habe ich keine Refnums aufgemacht, zumindest nicht bewußt....das exotischste was ich habe, ist ein Typendefinition.
Das WAGO System wird über ein WAGO-Treiber SUBVi kontaktiert (Ethernet Verbindung, TCP Protokoll). HAbe aber das VI auch ohne den Teiber laufen, und die Handles laufen hoch.
Schicke morgen dann doch mal das VI, no pain, no gain...
Grüße
Patrick
|
|
|
05.11.2009, 15:38
Beitrag #5
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
Ein weiterer gern gemachter Fehler sind Melder und/oder Queues. Jede Anforderung per "Obtain" kostet etwas Speicher, der durch ein Close wieder freigegeben werden sollte.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
11.11.2009, 13:41
(Dieser Beitrag wurde zuletzt bearbeitet: 11.11.2009 21:18 von jg.)
Beitrag #6
|
dude776
LVF-Grünschnabel
Beiträge: 28
Registriert seit: Jun 2006
8.6
-
de
86911
Deutschland
|
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
Steuerung_PUE11_27.vi (Größe: 2,17 MB / Downloads: 341)
Habe das Gesamtprogramm nochmal gecheckt, die Ursache für die Handles war tatsächlich der "WAGO"Treiber. Allerdings müllt sich der Arbeitsspeicher auch ohne Treiber zu, ohne dass Handles hochlaufen...
Ich hänge mal das VI mit an...habe in jeder Schleife ein Textfeld mit deren Funktion eingefügt, bleibt immer noch verwirrend...die WAGO SUBVIs habe ich rausgelöscht, sonst wird nach der entspechenden Bibliothek sucht...
Grüße
Patrick
|
|
|
11.11.2009, 14:15
(Dieser Beitrag wurde zuletzt bearbeitet: 11.11.2009 14:15 von Achim.)
Beitrag #7
|
|
|
11.11.2009, 14:46
Beitrag #8
|
dude776
LVF-Grünschnabel
Beiträge: 28
Registriert seit: Jun 2006
8.6
-
de
86911
Deutschland
|
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
Hi Achim,
ja, ja, ist ja gut.
Die leeren Bereiche kommen von der "Aufräum"-Funktion in LabVIEW.
Ich habe übrigens alle Sub Vis wieder zurück ins Hauptprogramm geführt, weil ich bei NI gelesen habe dass SUB Vis auch Speicher belegen können, da auch Sub Vis Kopien im Speicher anlegen. Deswegen kam von dort die Empfehlung, keine (!) Sub Vis zu benutzen (was klar gegen die Schön- Programmier-Richtlinie geht).
War ja nur ein Strohhalm, bin mir über die Strukturprobleme durchaus bewusst, ist aber auch ein komplexes Programm.
Prinzipiell gehts ja um die Frage: was lässt die Arbeitssspeicherbelegung anwachsen? Sind es die lokalen Variablen? Wenn ja, kann ich den durch LabVIEW leeren, ohne das VI zu stoppen?
Grüße
|
|
|
11.11.2009, 15:56
Beitrag #9
|
|
|
11.11.2009, 16:21
(Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2009 12:38 von schrotti.)
|
schrotti
LVF-Freak
Beiträge: 842
Registriert seit: Feb 2008
2009 - 2011
2006
kA
70180
Deutschland
|
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
' schrieb:Wer hat gesagt, das man keine SubVIs benutzen soll?!
Ein SubVI belegt zusätzlichen Speicher, weswegen es in der LV-INI den Schlüssel InlineSubVI gibt. Besagter Schlüssel fügt dem Kontextmenü eine Option zur Auflösung von SubVIs hinzu. Über den Nutzen lässt sich vortrefflich streiten, insbesondere wenn der restliche Code ausschaut wie Kraut und Rüben. In manchen Fällen mag das aber etwas bringen. In diesem Fall bringt es nichts, denn der erneute Aufruf eines SubVIs belegt ja nicht noch einmal Speicher.
Wie Achim aber schon sagt, wir helfen dir gerne, aber da keiner von uns dafür bezahlt wird möchte jedenfalls ich auch ein bißchen Spaß dabei haben. Und der kommt nicht auf, wenn unaufgeräumter Code vor einem liegt (er muss nicht schön sein).
Edit: @Achim:War natürlich ein Tippfehler.
|
|
|
| |