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 

4-fach USB Seriell - App bzw. Win hängt sich auf



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!

11.05.2010, 09:22
Beitrag #1

Matthias123 Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jun 2008

8.5
2005
de_en

76684
Deutschland
4-fach USB Seriell - App bzw. Win hängt sich auf
Hallo zusammen,

bevor ich zu meiner Problembeschreibung komme, erstmal einige Eckdaten:

- LabVIEW 8.5 Application
- Win XP
- 4-fach USB Seriell Umsetzer (recht hochwertig im industrietauglichen Metallgehäuse von NS-COM)
- An jedem der vier seriellen Ports hängt ein Sensor (9600 Baud), welcher alle Sekunde ausgelesen wird

Nun zum Problem:

Mein Programm liest vier Sensoren über die vier seriellen Schnittstellen nach folgendem Muster aus:

VISA Konfigurieren/öffnen -> VISA Buffer leeren (in und out Buffer) -> Befehl an den Sensor schicken (VISA Write) -> Antwort vom Sensor empfangen (VISA Read) -> VISA CLOSE -> Daten in txt-Datei speichern

Diesen Muster läuft vier mal parallel in while-Schleifen, jede Schleife hat einen Takt von einer Sekunde. Der Befehl zum Anfordern eines Telegramms ist 5 Byte lang, die Antwort ca. 150 Byte.
Der String, welcher vom Sensor gesendet wird, hat als Endzeichen ein Linefeed. Dies ist unter VISA Konfigurieren auch so eingestellt. VISA READ soll max 500 Byte lesen, nach Timeout abbrechen oder eben nach meinem Linefeed beendet werden. Ganz normale Vorgehensweise.

Ich habe mein Programm nacheinander auf zwei verschiedenen PCs (A B) laufen lassen. Auf beiden PCs lüft es erstmal einwandfrei.
Nach einiger Zeit (Stunden oder Tage) bzw. nach tausenden erfolgreichen Telegrammen folgendes Szenario:

PC A: Die empfangenen Daten werden korrupt. Beim empfangenen Telegramm fehlen die ersten 10 bis 20 Bytes. Das Telegramm wird vom Sensor jedoch korrekt gesendet. Über ein T-Stück habe ich die serielle Leitung über einen anderen PC (Hyperterminal) abgehört. Kurz nachdem die Daten korrupt sind, dies kann bei einem, bei zwei, drei oder vier Sensoren vorkommen, erscheint vielleicht noch ein VISA WRITE ERROR und das wars. Der PC hängt sich auf, nicht einmal der Mauszeiger lässt sich mehr bewegen.

PC B: Hier werden die Daten nicht korrupt. Es wird gemeldet, dass keine Daten mehr empfangen werden können. Eine beliebige Anzahl von Schnittstellen melden einen VISA WRITE ERROR und das Programm hängt sich auf. Der PC hängt sich nicht auf.

Die Verzweiflung ist langsam groß. Folgendes habe ich bereits durchgeführt:

- VISA Empfangsbuffer in der Hardwarekonfig von 4096 auf 256 Byte verkleinert
- VISA Sendebuffer in der Hardwarekonfig von 4096 auf 256 Byte verkleinert
- Empfangs- und Sendebuffer werden im VI bei jedem Zyklus geleert

Eigentlich kann sich mein Programm nicht aufängen. Ich habe allen Fehlerstrippen ein Anzeigeelement spendiert. Meine Leseroutine solle auch OK sein. Da PC A und PC B unterschiedliche Verhaltensweisen zeigen, hege ich den Verdacht, dass es etwas mit Windows zu tun hat, aber was? Der einzigste Unterschied zwischen beiden PCs ist Win Service Pack 2 und 3.

Vielleicht liegt es aber auch daran, dass ich vier while Schleifen parallel laufen lasse. Sollte ich die vier Schnittstellen eher acheinanden in einer Sequenz aufrufen?

Ich könnte noch ewig weiter schreiben, aber vorerst sollte es reichen. Vielleicht kann mir jemand weiter helfen oder mein Problem kommt jemandem bekannt vor.

Grüßle

Matthias
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2010, 09:43
Beitrag #2

Achimedes Offline
LVF-Freak
****


Beiträge: 544
Registriert seit: Aug 2005

2011
2001
DE

72461
Deutschland
4-fach USB Seriell - App bzw. Win hängt sich auf
Hallo,
ich würd die Schnitstelle nicht immer öffnen und schliessen.

Bau das mal so auf das du auserhalb deiner While schleife den Port öffnest und nach beenden der schleife ihn wieder schliesst.
Vielleicht kommts daher.

Grüße Achimedes

Wer Rechtschreibfehler findet .... darf sie behalten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2010, 14:41
Beitrag #3

Matthias123 Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jun 2008

8.5
2005
de_en

76684
Deutschland
4-fach USB Seriell - App bzw. Win hängt sich auf
Hallo!

Das könnte ich sicherlicht tun. Ich kann dann jedoch zur Laufzeit nicht mehr den Port ändern.
Außerdem wollte ich so eine Art Worst Case Szenario schaffen, indem ich die Schnittstellen immer wieder öffne und schließe.

Wenn ich einen Sensor an die COM1 Schnittstelle hänge (also keinen USB Umsetzer benutze), scheint alles zu funktionieren und zwar nicht nur für Stunden, sondern für Tage und Wochen!

Ich bin immernoch ratlos ...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2010, 14:50 (Dieser Beitrag wurde zuletzt bearbeitet: 11.05.2010 14:51 von jg.)
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
4-fach USB Seriell - App bzw. Win hängt sich auf
Dann würde ich es einmal mit seriellen Auslesen versuchen. Kann ich mir zwar eigentlich nicht als Ursache vorstellen, aber man weiss ja nie. Schließlich geht alles über eine USB-Leitung zum PC.
Und bei einem 1 Sekunde Takt solltest du locker durchkommen mit 4 Schnittstellen.

Gruß, Jens

P.S.: Wieso solltest du zur Laufzeit den COM-Port ändern? Und bei Aufbau deines Programms als State-Machine kannst du das auch einbauen.
- Init-Case: Port öffnen. Wenn Fehler, wieder Port öffnen, ansonsten...
- Lese-Case: Befehl senden und Antwort analysieren. Wenn kein Fehler, dann wieder Lese-Case, ansonsten...
- Schließen-Case: Port schließen. Wenn Programm beenden, dann Ende, ansonsten zurück zum Init-Case.

EDIT: Wie sieht es eigentlich mit Speicher- und Prozessorlast aus? Bleibt die konstant oder steigt die an?

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
11.05.2010, 16:26
Beitrag #5

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
4-fach USB Seriell - App bzw. Win hängt sich auf
Du hast zwar Dein VI recht klar mit Worten beschrieben, aber trotzden gilt: Ein Bild sagt mehr als 1000 Worte. Was spricht dagegen, das VI zu posten?
Das Leeren der Buffers nach dem Konfigurieren halte ich für überflüssig.
Bei USB-Serial Ports kann es zu Verzögerungen beim Empfang kommen. Abhilfe kann sein, den TermEndChar (Ctrl A) als Eventchar zu aktivieren. (Hab ich in einer Druckschrift von FTDI gelesen)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2010, 16:40 (Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2010 06:26 von A.Berndsen.)
Beitrag #6

Matthias123 Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jun 2008

8.5
2005
de_en

76684
Deutschland
4-fach USB Seriell - App bzw. Win hängt sich auf
Danke schonmal für die Antworten.

Was meinst du mit seriellem Auslesen? Die Ports nacheinander bearbeiten?

Die Prozessorlast und die Speicherauslastung ist konstant und gering.

Eine Statemachine ist schon recht. Wenn mir aber der ganze PC abschmiert, nützt das leider auch nichts mehr.

Ich habe das vi mal beigefügt.

Matthias

Lv85_img


Angehängte Datei(en)
Sonstige .vi  MAIN_LV85.vi (Größe: 274,27 KB / Downloads: 249)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.05.2010, 17:55
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
4-fach USB Seriell - App bzw. Win hängt sich auf
' schrieb:Kurz nachdem die Daten korrupt sind, dies kann bei einem, bei zwei, drei oder vier Sensoren vorkommen, erscheint vielleicht noch ein VISA WRITE ERROR und das wars. Der PC hängt sich auf, nicht einmal der Mauszeiger lässt sich mehr bewegen.
Ich tippe auf ein Problem mit dem USB-Adapter. Womöglich verschwindet der COM-Port, weil eben der USB-Adapter, respektive sein Treiber, "kaputt" gegangen ist. Wenn der COM-Port plötzlich verschwunden ist, sollte eben die Meldung "VISA WRITE ERROR" erscheinen. Ich kann mir vorstellen, dass infolge auch der PC stehen bleibt.

Wenn der COM-Port verschwunden ist, so sollte das an PC B feststellbar sein. Kucken, wenn LV einen Fehler bringt, ob im MAX und in Gerätemanager der COM-Port respektive der USB-Adapter noch vorhanden ist.


Dass der Fehler damit zusammenhängt, dass die vier Schleifen durch ein parametrierbares SubVI ersetztbar sind, glaube ich nicht.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2010, 18:04
Beitrag #8

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
4-fach USB Seriell - App bzw. Win hängt sich auf
Ja, die USB Umsetzer sind manchmal von *sonderbarer* Qualität.

Hatte auch schon ähnliche Erfahrungen.

Abhilfe: einen anderen teureren (?) kaufen.

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2010, 18:06 (Dieser Beitrag wurde zuletzt bearbeitet: 11.05.2010 18:08 von eg.)
Beitrag #9

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
4-fach USB Seriell - App bzw. Win hängt sich auf
Oder auf Ethernet-Seriell umsteigen, das macht (zumindest bei uns) weniger Probleme. Zum Beispiel das von Netcom oder Adam (nur die Installation ist ein wenig komplexer, aber wenn es mal installiert ist, dann läuft es gut). Dabei gibt es ein Vorteil - man kann von überall drauf zugreifenBig Grin

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2010, 19:52
Beitrag #10

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
4-fach USB Seriell - App bzw. Win hängt sich auf
' schrieb:Danke schonmal für die Antworten.

Was meinst du mit seriellem Auslesen? Die Ports nacheinander bearbeiten?
Genau! Hast du doch selber auch schon vorgeschlagen.

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Serielle Schnittstelle hängt nach gewisser Zeit auf Kiesch 8 10.495 08.01.2018 11:06
Letzter Beitrag: Kiesch
  Seriell eingelesene Daten konvertieren -cosmo- 13 11.621 17.03.2017 16:36
Letzter Beitrag: jg
  VISA write Seriell el1-rh 12 81.708 17.12.2014 09:32
Letzter Beitrag: GerdW
  Dewetron EPAD thermo hängt sich auf Amarazy 1 4.071 20.06.2014 18:16
Letzter Beitrag: ausra
  Zeitversetze Werte seriell an Relaisbox übermitteln sawtj194 5 6.267 28.09.2012 08:19
Letzter Beitrag: Lucki
  Probleme mit Lindy USB - Seriell Konverter lg 4 6.737 22.11.2011 13:34
Letzter Beitrag: Lucki

Gehe zu: