LabVIEWForum.de - Überlauffehler bei serieller Schnittstelle

LabVIEWForum.de

Normale Version: Überlauffehler bei serieller Schnittstelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich möchte mit meinen LabView Programm eine Kalibrierung einer Auswerteelektronik durchführen. Dieser Vorgang passiert über eine serielle Kommunikation, dabei werden Werte von der Elektronik gelesen und auch wieder in die Elektronik geschrieben.
Dabei ensteht das Problem, dass beim Start des Programms der Fehler im Anhang auftaucht. Allerdings passiert dieser Fehler nicht immer, ca. zu 70% läuft das Programm durch und in den anderen Fällen erscheint dieser Fehler.

Im Zuge der Fehlersuche habe ich mir auch schon den Lesepuffer dieses VI genauer angeschaut. Bei mehrmaligem Ablauf des Lesevorgangs kann es vorkommen, dass der Lesepuffer nicht ganz gefüllt ist, also zu wenig Daten ausgelesen werden.
Ich habe schon einige Dinge ausprobiert, die ich in anderen Themen also mögliche Ursache gelesen habe, allerdings komme ich zu keinem wirklichen Erfolg. Bahn

Welche mögliche Ursachen kann dieser Überlauffehler haben?
Ich verwende einen Adapter USB/COM, vielleicht könnte das Problem auch auf Hardwareebene liegen?

Für hilfreiche Vorschläge wäre ich sehr dankbar.

Gruß
Dominik
Hallo Dominik,

willkommen im LabVIEW-Forum!

Wo ist dein Anhang?

Zitat:Welche mögliche Ursachen kann dieser Überlauffehler haben?
Ein BufferOverflow passiert, wenn mehr Daten über die serielle Schnittstelle geliefert werden, als du von dort abholst: die serielle Schnittstelle hat einen (kleinen) Buffer. Lösung: Daten öfter/schneller lesen…
Hallo Dominik,
da die Fehlermeldung von dem Schreiben VI kommt, liegt das Problem bei der Auswerteelektronik. Die hat bestimmt keinen Puffer für die Serielle Schnittstelle.
Vermutlich bist du mit der Übertragung der Daten zur Auswerteelektronik zu schnell. Mach doch mal eine Pause zwischen dem Senden der einzelnen Zeichen.

Gruß
Freddy
@Freddy: Der Fehler tritt bei "VISA: Lesen" auf…

@Dominik: Häng doch mal dein VI statt (nur) eines Bildes der Fehlermeldung an…
Der Fehler tritt immer in dieser VI auf, dabei werden die Kalibrierwerte A und B in die Elektronik geschrieben.

Ich habe die beiden Lesepuffer eingefügt um die gelesenen Werte zu überprüfen.
Dabei kann man feststellen, dass bei "wiederholt ausführen" die Anzahl der Werte immer richtig ist.
Wenn das VI manuell immer wieder gestartet wird kommt es zu fehlenden Bytes. (siehe Anhang Frontpanel)

Ich denke, dass irgendwo hier der Fehler liegen müsste, kann Ihn aber leider nicht beheben.
Ein Lösungsansatz wäre die Pufferentleerung vor dem eigentlich Scheib-Lese-Zyklus, hat aber leider auch keinen Erfolg gebracht.

Gruß
Dominik
Hallo Dominik,
lass es doch im Debugger Modus laufen, dann siehst Du an welcher Stelle der Fehler auftritt.

Gruß
Freddy
Hallo Dominik,

Zitat:Der Fehler tritt immer in dieser VI auf
Leider hast du nur Bilder, aber kein VI angehangen…

Zitat:Ich denke, dass irgendwo hier der Fehler liegen müsste, kann Ihn aber leider nicht beheben.
Bei diesem unaufgeräumten VI würde mir das auch schwer fallen…
(Wozu die Sequenz-Struktur?)

Zitat:Ein Lösungsansatz wäre die Pufferentleerung vor dem eigentlich Scheib-Lese-Zyklus, hat aber leider auch keinen Erfolg gebracht.
Das "zufällige" Löschen von Schreib- oder Lesepuffern hilft wirklich nur selten…
Sorry, hab ich vergessen.

Hier noch die echte VI.
Die Sequenzstruktur wurde ausprobiert, weil der Fehler ohne diese Struktur noch viel häufiger auftritt.

Gruß Dominik
Hallo Dominik,

wie hast du denn den seriellen Port initialisiert?
Hast du das TermChar aktiviert? (Ist der Standardwert…)
Dann wird natürlich bei Erreichen eines LineFeed das Lesen jeweils beendet…

Bist du sicher, jeweils die Antwort auf den letzten Befehl zu lesen? Oder bekommst du die Antwort auf den vorletzten Befehl?

So sollte dein VI aussehen:
[attachment=58936]
Hallo Gerd,

ich habe die Initialisierung jetzt mal direkt ins VI übernommen und auch so umgebaut wie du vorgeschlagen hast.

Ich habe weiterhin das Problem, dass der "Lesepuffer 2" beim durchlaufen der VI fehlende Bytes hat. Beim "Wiederholt ausführen" tritt dieser Effekt wieder nicht auf. Was mir noch aufgefallen ist, der Schlussteil der zu lesenden Daten ist vorhanden, anscheinend wird (wenn Daten fehlen) immer ein Teil der vorderen Bytes abgeschnitten. Dies passiert aber auch willkürlich, mal weniger Daten mal mehr Daten.

Gruß Dominik
Seiten: 1 2
Referenz-URLs