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 

Fehler bei RS232 Bytes at Port = 0



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!

05.04.2011, 10:23 (Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2011 18:36 von jg.)
Beitrag #1

newlabviewer1 Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2009

7.1
-
de

80331
Deutschland
Fehler bei RS232 Bytes at Port = 0
Hallo Zusammen,

Beschreibung:
Ich lese mehrere M-Bus Geräte über die RS232 Schnittstelle und Pegelwandler (Relay PW20) aus.
Hierzu sende ich Befehle (HEX bzw. ASCII) an die Geräte. Und gebe vor wieviel Bytes at Port ausgelesen werden sollen.
Die Befehle als auch die Vorgabe für Bytes at Port werden nacheinander im Array durchlaufen.
Hier der Aufbau des Visa schreibe- und leseteils:

   

Problem: Das Problem ist, dass irgendwann - erst nach mehreren Durchläufen des Programms Bytes at Port = 0 anstehen und die
Bedingung >= der Bytes at Port Vorgabe nicht erfüllt ist. Somit hängt das Programm an dieser Stelle fest.

Frage1: Woran könnte es liegen, dass nach einer Anzahl v. Durchläufen (ich glaube es ist nicht immer die selbe Anzahl an Durchläufen) plötzlich 0 Bytes at Port anstehen.
Frage2: Könnte ich für diesen Fall eine Art Sicherheit einbauen sodass beide Arrays wieder neu von vorne abgearbeitet werden sobald eine 0 ansteht.

Danke schon mal für eure Tipps und Hinweise!
LG
Newlabviewer1
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.04.2011, 10:48 (Dieser Beitrag wurde zuletzt bearbeitet: 05.04.2011 10:49 von Lucki.)
Beitrag #2

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: Fehler bei RS232 Bytes at Port = O
Zunächst mal: Das Programm schreit nach Ersetzung der while-Schleife durch eine For-Schleife!
Das Programm müßte an sich funktionieren, es ist aber so keine gute Lösung. Das Beste wäre, wenn die gelesenen Antwort mit einem Abschlusszeichen endet. Dann könnte man mit TermChar zu arbeiten - was ohnehin schon aktiviert ist. Das ist nach meinen Erfahrungen die stabilste Art der Kommunikation.
Ein weitere Möglichkeit wäre, nach Senden des Kommandos eine Zeitlang zu warten, bis alle Bytes im Empfangspuffer sein müssten. Und dann alles was im Empfangspuffer ist auszulesen.
Ganz allgemein sollte man bei Serieller Kommunikation über die feindselige Außenwelt hinweg immer mit gelegentlichen Fehlern rechnen. Ein gutes Programm sollte gewisse Fehler abfangen und im Falle eines Falles vernüftige Entscheidungen treffen, anstatt sich zu beenden oder alles zu blockieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.04.2011, 15:29
Beitrag #3

newlabviewer1 Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2009

7.1
-
de

80331
Deutschland
RE: Fehler bei RS232 Bytes at Port = O
Hallo Lucki,
Danke schonmal für deine Tipps.

Ich habe die While Schleife durch die For Schleife ersetzt - hattest natürlich recht.
Ich habe auch 200ms Zeit vor dem Empfangspuffer eingebaut.
Der Fehler mit 0 Bytes at Port tritt dennoch auf sollte aber auch damit nichts zu tun haben.
Das mit dem Abschlusszeichen funktioniert leider nicht da dies variiert (2 Varianten).

Hättest du evtl. einen Vorschlag wie ich solch einen Fehler Abfangen kann?
Könnte ich das Programm automatisch neu starten lassen.

Danke nochmals!

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.04.2011, 16:32
Beitrag #4

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: Fehler bei RS232 Bytes at Port = O
(05.04.2011 15:29 )newlabviewer1 schrieb:  Hättest du evtl. einen Vorschlag wie ich solch einen Fehler Abfangen kann?
Ja, schon, aber warum soll ich mich hier wortreich abschinden, wenn man das am VI machen könnte. Du müßtest Dich nur entschließen, das VI zu posten.

Den Fehler kann man so erklären, daß die Gegenseite ab und zu das gesendete Kommando nicht hört. Dann kommt natürlich keine Antwort, und die Schleife bleibt hängen. Es sind immer Null Byte im EmpfangsPuffer. Es muß also nicht unbedingt am VI liegen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.04.2011, 16:44
Beitrag #5

newlabviewer1 Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2009

7.1
-
de

80331
Deutschland
RE: Fehler bei RS232 Bytes at Port = O
Hier das Vi.
Allerdings in LV 7.1
Gruß

0 .vi  RS232_COM.vi (Größe: 67,3 KB / Downloads: 333)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.04.2011, 16:59
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Fehler bei RS232 Bytes at Port = O
(05.04.2011 15:29 )newlabviewer1 schrieb:  Hättest du evtl. einen Vorschlag wie ich solch einen Fehler Abfangen kann?
IMHO bleibt dir nur ein Timeout übrig, soll heißen, wenn nach x Sekunden immer noch keine Antwort gekommen ist, dann ist offenbar etwas beim Senden des letzten Kommandos schief gegangen. Dann Abbruch oder nochmal versuchen oder, oder, oder...

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
05.04.2011, 17:47 (Dieser Beitrag wurde zuletzt bearbeitet: 05.04.2011 17:58 von Lucki.)
Beitrag #7

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: Fehler bei RS232 Bytes at Port = O
Beipiel nach Jens für X=200ms. Bei Timeout wird in die Ausgabe ein leerer String geschrieben. Sicher nocht schön - aber das Leben geht weiter. (An das Wait wollte ich 5ms anschließen)
   
Bessere(?) Alternative: Wenn keine Antwort kommt, wird das gleiche Kommando 3 mal wiederholt, und erst dann die Sache aufgegeben und der leere String in die Ausgabe geschrieben. (F: Wieso 3 mal? A: Keine Ahnung)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.04.2011, 14:15
Beitrag #8

newlabviewer1 Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2009

7.1
-
de

80331
Deutschland
RE: Fehler bei RS232 Bytes at Port = O
Hallo Zusammen,
ich habe nun den Timeout in meinem Programm umgesetzt, anfags war die Wartezeit noch zu kurz und die Antworten unvollständig aber nun scheint es einigermaßen stabil zu laufen...
der Tipp mit dem , mehrfachen wiederholen des Befehls ist auch nicht schlecht...-aber noch nicht umgesetzt.

Bei meinen ersten Tests lief alles gut, ich muss das Programm aber noch über einen längeren Zeitraum (ein paar Stunden) laufen lassen um sicher gehen zu können, dass es funktioniert.

Danke nochmal an euch!
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
  VISA Read und Bytes at Port tanka 9 13.852 28.08.2019 08:10
Letzter Beitrag: Lucki
  VISA Read liest nicht alle Bytes von Bytes at Port numumba 2 7.043 21.01.2014 20:24
Letzter Beitrag: numumba
  Gerät über Rs232-Port ansteuern FirstSoulWinner 6 10.363 27.04.2012 07:34
Letzter Beitrag: Lucki
  Bytes at Port dimitri84 5 10.027 10.12.2011 11:08
Letzter Beitrag: dimitri84
  VISA liest weniger Bytes wie im Puffer beppone 2 4.754 14.11.2011 19:53
Letzter Beitrag: beppone
  in port.vi /out port.vi nicht unterstützt? Fischi84 5 9.359 24.01.2011 14:58
Letzter Beitrag: Kiesch

Gehe zu: