INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

VI bricht nach gewisser Zeit ab



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

09.05.2019, 16:58
Beitrag #1

MaHa Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: May 2019

16.0f5 (32bit)
-
DE



VI bricht nach gewisser Zeit ab
Hallo Forumsmitglieder,

ich versuche gerade in LabVIEW eine Langzeitmessung umzusetzen. Leider bricht das Programm zwischen einer und 4 Stunden ab. Außerdem bekomme ich keinen Zeitstempel in das Excel-File übertragen.

Es kommt keine Fehlermeldung oder ähnliches. Das Programm läuft einfach weiter aber reagiert nicht mehr. Bei den "Sondeninformationen" aktualisiert sich kein Wert mehr.

Hat jemand eine Idee oder hatte schonmal ein ähnliches Problem? Ich bin über jeglichen Hinweis dankbar Smile.

Weiter unten sind noch Informationen zur verwendeten Hardware und die detaillierte Messaufgabe.
In Windows sind Standby, Hintergrundaktualisierungen usw. deaktiviert.

Mit besten Grüßen
MaHa





Messaufgabe:
Es soll über einen Zeitraum von mehreren Monaten kontinuierlich (Intervall: 1s) und zeitgleich Messwerte von 6 Messuhren und einer Kraftmessdose erfasst und in mehreren Excel Files gespeichert werden. Da ein externer Temperaturlogger verwendet wird soll neben der absoluten Messzeit auch noch die relative Zeit in DD:MM:JJ HH:MM erfasst werden.

Verwendete Hardware:
1. Messuhren:
- Baudrate = 4800 Bds
- 7 Bits
- Parität = gerade
- Stopp Bits = 2

2. Kraftmessung:
- Kraftmessdose
- DMS-Messverstärker

3. Verbindung mit PC:
- Kraftmessdose: USB-6000
- Messuhren: Bluetooth, USB-Dongle


Angehängte Datei(en) Thumbnail(s)
   

16.0 .vi  Langzeitmessung.vi (Größe: 171,69 KB / Downloads: 223)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.05.2019, 17:39 (Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2019 17:43 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: VI bricht nach gewisser Zeit ab
Hallo MaHa,

Zitat:Leider bricht das Programm zwischen einer und 4 Stunden ab.
Warum setzt du einen Timeout von 72 Stunden???
Warum setzt du den Timeout in jeder Iteration erneut?
Warum schließt du die COM-Ports in jeder Iteration? (Und lässt sie von LabVIEW jedesmal erneut wieder öffnen, ohne das irgendwo mal selbst zu machen???)
Warum schreibst du gleich zweimal in Excel-Dateien? Warum (zweifach) mit dem ExpressVI, welches SEHR ineffizient arbeitet?
Warum schreibst du nicht einfach in eine CSV-Datei? Wo du selbst die VOLLE Kontrolle hast, wo welcher Wert wie formatiert landen soll???
Warum legst du den DAQmx-Task in jeder Iteration erneut an und schließt ihn dann wieder?

Wenn du einen Dauerversuch machen willst, dann sollte dein VI auch dafür ausgelegt sein! Und ExpressVIs haben dann darin auch nichts zu suchen…
Hast du dir mal irgendein BeispielVI zum Thema DAQmx angeschaut? Hmm

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.05.2019, 20:21
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: VI bricht nach gewisser Zeit ab
Mal eine ganz allgemeine Kritik neben der ganzen berechtigten Kritik von GerdW:

Langzeitdaten in einer Excel-Datei zu speichern, das gehört verboten. Das Dateiformat (ZipFile vieler XML-Dateien) ist viel zu langsam, um sinnvoll mit einer großen Datenmenge umzugehen.

Die Aufgabe lässt sich auf jeden Fall mit LabVIEW lösen - solche Langzeitläufer habe ich schon x-fach umgesetzt, aber natürlich nicht mit Excel als Datengrab.

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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.05.2019, 09:45 (Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2019 09:58 von enone.)
Beitrag #4

enone Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: May 2011

18.0
2009
DE

70195
Deutschland
RE: VI bricht nach gewisser Zeit ab
Hi,

wie ist denn die Fehlermeldung. Denn die Fehler gibst Du ja aus...was gut ist.

Ich weiß es nicht genau, aber Du willst alle 100ms AI-Daten holen, gibst der Schleife aber noch nen eigenen Wait vor von 125ms. Das erledigt meines Wissens dann der Timer Deiner Hardware, den Du mit Sample-Takt eingestellt hast. Lass mal das Wait weg. Du konfigurierst den Takt mit 1kHz und holst dann immer nur einen Wert ab. Was soll dann AI eigentlich genau machen...jede Sekunde 1 Wert lesen? Dann hole bei einer Koniguration von 1kHz auch immer 1000 Messwerte ab und Du hast Dein 1s-Intervall.

Dann packe auf jeden Fall Task erzeugen, Kanal erzeugen und Task schließen außerhalb der der Schleife, denn sonst wird alle 125ms Task erzeugt, geschlossen usw...so erzeugst Du 1x beim Start den Task und beim Beenden wird der 1x geschlossen.

Aber so wie Dein Programm aussieht, habe ich auch mal angefangen...

Grüße

Christian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.05.2019, 17:44
Beitrag #5

MaHa Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: May 2019

16.0f5 (32bit)
-
DE



RE: VI bricht nach gewisser Zeit ab
Danke erstmal für die hilfreiche Kritik und die Hinweise, ihr habt mir sehr weitergeholfen :-).

Im Anhang ist nun das verbesserte VI, dieses läuft zumindest mal über 16h und kommt ohne Express VI's aus Metal. Falls euch noch was auffällt oder ihr wisst wie es noch, (einfach) zu verbessern ist lasst es mich gerne wissen.

Das einzige Problem ist noch das automatische speichern der Messwerte in neue Dateien. Durch die Case Struktur erzeugt das VI in einstellbaren Intervallen (Timer) einen neuen Dateipfad in dem gewünschten Format. Aber wie kann ich diesen mit dem Eingang von "Dateipfad" (Werte in Tabelle schreiben) verbinden? Habe schon alles mögliche versucht, mit Schieberegister oder lokalen Variablen werden die Daten nur in den letzten erzeugten Dateipfad bei Abbruch der while-Schleife gespeichert (leuchtet ein, Datenfluss.....). Habe es auch schon mit einer zweiten while-Schleife versucht, leider auch ohne Erfolg (Schleifendurchlauf beginnt erst bei Abbruch der ersten Schleife).

Hat jemand einen Tipp?

Beste Grüße
MaHa


Angehängte Datei(en)
16.0 .vi  Langzeitmessung_1.vi (Größe: 52,21 KB / Downloads: 255)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.05.2019, 18:03 (Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2019 18:04 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: VI bricht nach gewisser Zeit ab
Hallo MaHa,

Zitat:Falls euch noch was auffällt oder ihr wisst wie es noch, (einfach) zu verbessern ist lasst es mich gerne wissen.
- An etlichen Controls/Indicators fehlen die Label/Beschriftungen! Wenn du in einer textbasierten Programmiersprache arbeitest, löscht du doch auch keine Variablennamen weg, oder?
- Du benutzt BytesAtPort: das ist zu 99.9% falsch. Vor allem, wenn man wie du ein TermChar für die VISA-Abfragen aktiviert hat!
In der Case-Struktur
- gibt es eine Wartezeit: wieso/weshalb/warum?
- erzeugst du einen Dateipfad aus Strings: warum keine echten Pfad-Operationen/-Konstanten?
- addierst du immer eine 1 zu einer 0: wieso/weshalb/warum?
Außendrum:
- wozu die Select-Funktion nach der Case-Struktur? Einfach im Case durchverdrahten!
- wieso arbeitest du in der Schleife überall mit Strings, die du dann nach der Schleife erstmal alle zu DBL-Zahlen umwandelst - nur um sie dann mittels WriteDelimitedFile wieder zu Strings umzuwandeln!? Warum baust du dir dann nicht einfach ein 2D-Array of Strings? (Viel weniger Aufwand…)
- Liefern deine COM-Ports wirklich Zahlen mit einem Komma als Dezimaltrennzeichen???
- Du hast eine Samplerate von 1000S/s eingestellt, fragst aber nur ein Sample pro Sekunde ab - das sollte eigentlich sehr schnell einen Fehler melden!
- Deine ErrorCluster werden nicht in Schieberegistern gehalten…

Ein paar Änderungen habe ich mal umgesetzt:
   

Zitat:Aber wie kann ich diesen mit dem Eingang von "Dateipfad" (Werte in Tabelle schreiben) verbinden?
Mit einem Draht!
(Und wie oben schon gesagt: einen echten Pfad erzeugen und keinen String, der eine pfad-ähnliche Angabe enthält…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.05.2019, 14:36
Beitrag #7

MaHa Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: May 2019

16.0f5 (32bit)
-
DE



RE: VI bricht nach gewisser Zeit ab
Danke für die vielen Tipps und die rasche Antwort2hands

Doch noch was zu tunDais

Zitat: An etlichen Controls/Indicators fehlen die Label/Beschriftungen! Wenn du in einer textbasierten Programmiersprache arbeitest, löscht du doch auch keine Variablennamen weg, oder?
Klar, hab ich nicht drangedacht.

Zitat:Du benutzt BytesAtPort: das ist zu 99.9% falsch. Vor allem, wenn man wie du ein TermChar für die VISA-Abfragen aktiviert hat!

"Bytes at Port: Gibt die Anzahl an Byte aus, die aktuell an dem von dieser Session verwendeten Port verfügbar sind."
Was ist daran falsch/oder schlecht? Beim Termchar geht es um die Abschlusszeichen, diese liegen doch ebenfalls als Bits am Port an.

Verwende jetzt 18 Bytes, darunter werden die Messwerte nicht vollständig dargestellt. Und es sollte kein Timeout error kommen.


Zitat:wozu die Select-Funktion nach der Case-Struktur? Einfach im Case durchverdrahten!
JaBig Grin

Zitat:wieso arbeitest du in der Schleife überall mit Strings, die du dann nach der Schleife erstmal alle zu DBL-Zahlen umwandelst - nur um sie dann mittels WriteDelimitedFile wieder zu Strings umzuwandeln!? Warum baust du dir dann nicht einfach ein 2D-Array of Strings? (Viel weniger Aufwand…)

Hatte ich zuerst so, Problem ist das es mir die Daten "kunterbunt" in dem .csv-file anordnet wenn ich dieses mit Excel öffne (und mit dem Texteditor),Anhang "String_CSV". Das Array welches zum "Write to Spreadsheet" geht sieht noch richtig aus (Array auf Frontpanel). Habe schon alles mögliche mit Trennzeichen, Formatierung usw. versucht ohne Erfolg. In dem aktuellen VI muss ich den Datensstringarray ebenfalls wieder in Zahlen formatieren um eine gut formatierte Tabelle zu erhalten.

Zitat: Liefern deine COM-Ports wirklich Zahlen mit einem Komma als Dezimaltrennzeichen???
Ja.

Zitat:- Du hast eine Samplerate von 1000S/s eingestellt, fragst aber nur ein Sample pro Sekunde ab - das sollte eigentlich sehr schnell einen Fehler melden!
Legt die "Rate" des DAQmx Timing nicht nur die Buffer Größe fest?


Zitat:- Deine ErrorCluster werden nicht in Schieberegistern gehalten…
Ist wohl klüger.


Zitat:Mit einem Draht!
(Und wie oben schon gesagt: einen echten Pfad erzeugen und keinen String, der eine pfad-ähnliche Angabe enthält…)

Das ist klar allerdings, ändert sich der Wert nur wenn die While-Schleife unterbrochen wird.

Mit der Case-Struktur will ich eigentlich nur einen Dateipfad erzeugen um diesen dann (später) einmal am Tag an das "Werte in Datei schreiben" weiterzugeben, um die erfassten Messwerte einmal täglich in einer separaten Datei abspeichern zu können. Ich bekomme es aber wegen des Datenflussprinzips von LabVIEW nicht hin. Denn wenn ich den Timer auf einen Tag einstelle kann man die While Schleife erst beenden wenn dieser Tag auch vorbei ist....

Hat mir jemand einen Ansatz/Tipp? Tappe völlig im dunkeln bei der Vielzahl von Optionen welche LabVIEW bietet.


Angehängte Datei(en) Thumbnail(s)
       

16.0 .vi  Langzeitmessung_2.vi (Größe: 49,63 KB / Downloads: 165)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2019, 14:48
Beitrag #8

mbu Offline
LVF-Neueinsteiger


Beiträge: 1
Registriert seit: Jul 2019

2019
2013
EN



RE: VI bricht nach gewisser Zeit ab
Hallo,

ich würde empfehlen die aufgenommenen Daten jeweils nach Aufnahme in eine Datei zu streamen. TDMS files kann man dafür verwenden, wenn man möchte.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.07.2019, 08:52 (Dieser Beitrag wurde zuletzt bearbeitet: 17.07.2019 08:54 von Lucki.)
Beitrag #9

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: VI bricht nach gewisser Zeit ab
Zum Thema "Bytes on Board":
Das funktioniert bei Dir so: Das Visa Read soll etwas auslesen, was die Antwort auf den vorangegangenen Schreibbefehl sein soll. Das funktioniert aber nicht, denn Visa Write funktioniert ganz anders als Du das hier voraussetzt. Visa Write schreibt nur mit Affengeschwindigkeit in vielleicht weniger als 1 µs die Daten in den Schreibpuffer. Es wartet nicht, bis die Daten von der Gegenstelle empfangen sind, und schon gar nicht bis eine Antwort erfolgt ist. Wenn Du also sofort nach dem Schreibbefehle die Bytes on Bord (im Empfangspuffer) abfragst, ist das Ergebnis 0 Byte. Wenn aber trotzdem Bytes gezählt werden, dann sind das immer die Bytes der vorangegangenen Iteration.
Wenn der empfangene String eine Zeilenende-Kennung hat, dann nutze das. Das einzige Problem ist, daß der Programmcode dafür dann so einfach ist, daß Labview sich offensichtlich schämt, etwas so Einfaches als Programmbeispiel zu zeigen. Deshalb wird von Anfängern in der seriellen Komunikation oftmals alles Mögliche probiert, nur das nicht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.07.2019, 09:30
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: VI bricht nach gewisser Zeit ab
Hallo MaHa,

danke an Ludwig, dass er diesen Thread wieder hoch geholt hat - ging in meinem Urlaub verloren…

Zitat:Legt die "Rate" des DAQmx Timing nicht nur die Buffer Größe fest?
Warum heißt der Anschluss wohl "Rate" und nicht etwa "Buffergröße"???
Der legt die Samplerate fest!

Du solltest unbedingt DAQmx und den ganzen VISA-Kram in separate Schleifen legen. Momentan bestimmt die Antwortzeit des langsamsten Gerätes n deinen COM-Ports die Iterationszeit deiner Schleife - und die ist wahrscheinlich deutlich langsamer als die 1ms, die dein DAQmxRead eigentlich erwartet!
Dazu dann noch die Wartezeit von 1s in der Schleife, die dein Schleifentiming dann vollends ruiniert…

Zitat:Klar, hab ich nicht drangedacht.
Da sind immer noch etliche nicht sichtbar.
Und warum musst du in die lokale Variable eines Control schreiben ("stop")???

Zitat:Das ist klar allerdings, ändert sich der Wert nur wenn die While-Schleife unterbrochen wird.
???
Ein Wert auf dem FP ändert sich immer dann, wenn man einen neuen Wert hineinschreibt. Das klappt deutlich besser, wenn man eine Schleife nicht unterbricht…

Aufräumen hilft beim Code-Verständnis:
   

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  SubVI beenden nach einstellbarer Zeit angry_Nameless 5 3.429 06.05.2022 19:37
Letzter Beitrag: Martin.Henz
  Lampe ein nach zeit wieder ausschalten suntmaster 1 5.074 11.04.2012 14:46
Letzter Beitrag: NWOmason
  Messdaten mit Zeit nach Excel exportieren Dommy 2 8.735 03.02.2012 13:47
Letzter Beitrag: Dommy
  Programm bricht ab wanze 19 12.384 29.06.2010 14:26
Letzter Beitrag: wanze
  Beenden einer While Schleife nach Ablauf einer gewissen Zeit Daniel1976Duesentrieb 3 13.522 11.04.2010 10:44
Letzter Beitrag: Daniel1976Duesentrieb
  Datum/Zeit nach Zeitstempel hans_p 2 4.596 10.09.2008 15:03
Letzter Beitrag: Achimedes

Gehe zu: