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 

Kommunikation von externen Geräten über TCP/IP



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!

06.01.2008, 14:10
Beitrag #1

vogster Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 80
Registriert seit: Feb 2007

8.2.1, 8.6.1, 9.0, 2011
2006
DE

80807
Deutschland
Kommunikation von externen Geräten über TCP/IP
Hallo Forum!

In einem von mir erstellen Unterprogramm baut LabVIEW über Ethernet und TCP/IP eine Verbindung zu einem externen Gerät auf. Es werden Daten gesendet und empfangen, alles funktioniert ohne Probleme.

Dieses Unterprogramm kann vom Hauptprogramm zweimal aufgerufen werde, da ich zwei externe Geräte ansteuern muss. Dieser parallele Aufruf erfolgt oft zeitgleich. Das läuft auch meist über einen längeren Zeitraum gut (bis zu 24 Stunden). Dann sieht es so aus, als ob eines der externen Geräte keine Daten vom Rechner empfängt.

Meine Frage daher: Hat jemand Erfahrungen mit dem parallelen Aufbau von zwei TCP/IP Verbindungen zu externen Geräten?

Hardware: Rechner mit einer Netzwerkkarte, dann ein Switch, daran sind die externen Geräte angeschlossen.

Vielen Dank für Eure Mühe!
Vogster
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.01.2008, 14:19
Beitrag #2

dc6xs Offline
registered alien
****


Beiträge: 762
Registriert seit: Aug 2006

6.1,7.00
2006
kA

79106
Sonstige
Kommunikation von externen Geräten über TCP/IP
' schrieb:Hallo Forum!
(snipp)
Dieses Unterprogramm kann vom Hauptprogramm zweimal aufgerufen werde, da ich zwei externe Geräte ansteuern muss. Dieser parallele Aufruf erfolgt oft zeitgleich. Das läuft auch meist über einen längeren Zeitraum gut (bis zu 24 Stunden). Dann sieht es so aus, als ob eines der externen Geräte keine Daten vom Rechner empfängt.

(snipp)

Vielen Dank für Eure Mühe!
Vogster
Hallo Vogster,

Hat der Rechner eine festeingetragene IP oder bekommt er die per DHCP? (Dann könnte es sein das er nach 24h die Adresse neu zugewiesen bekommt.)

Ansonsten würd ich vielleicht mal mit Wireshark oder einem anderen TCP/IP-Sniffer den Datenstrom im Netzwerk analysieren, besonders was da kurz vor dem Verbindungsabbruch passiert.

Gruß, Robert

Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.

N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.01.2008, 15:47
Beitrag #3

vogster Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 80
Registriert seit: Feb 2007

8.2.1, 8.6.1, 9.0, 2011
2006
DE

80807
Deutschland
Kommunikation von externen Geräten über TCP/IP
Hi Robert,

alle Geräte haben eine fest zugewiesene IP-Adresse.

Ich werde den Datenverkehr mal mitschreiben, vielleicht ergibt sich ja was.
Vielen Dank für die Anregung.

Leider bin ich was den Hintergrund von TCP/IP mit LabVIEW angeht nicht so bewandert. Ist es vom Prinzip möglich/richtig/unsauber/, dass mehrere Verbindungen (besonders mit LabVIEW) zeitgleich aufgebaut werden?

Mit freundlichen Grüßen und vielen Dank
Vogster
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.01.2008, 16:36 (Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2008 16:36 von Y-P.)
Beitrag #4

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Kommunikation von externen Geräten über TCP/IP
Hallo,

ich kenne mich damit auch nicht so aus, aber vielleicht hilft Dir das weiter.....

Gruß Markus

' schrieb:Hi Robert,

alle Geräte haben eine fest zugewiesene IP-Adresse.

Ich werde den Datenverkehr mal mitschreiben, vielleicht ergibt sich ja was.
Vielen Dank für die Anregung.

Leider bin ich was den Hintergrund von TCP/IP mit LabVIEW angeht nicht so bewandert. Ist es vom Prinzip möglich/richtig/unsauber/, dass mehrere Verbindungen (besonders mit LabVIEW) zeitgleich aufgebaut werden?

Mit freundlichen Grüßen und vielen Dank
Vogster

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2008, 12:10 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2008 12:11 von rolfk.)
Beitrag #5

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Kommunikation von externen Geräten über TCP/IP
' schrieb:Hi Robert,

alle Geräte haben eine fest zugewiesene IP-Adresse.

Ich werde den Datenverkehr mal mitschreiben, vielleicht ergibt sich ja was.
Vielen Dank für die Anregung.

Leider bin ich was den Hintergrund von TCP/IP mit LabVIEW angeht nicht so bewandert. Ist es vom Prinzip möglich/richtig/unsauber/, dass mehrere Verbindungen (besonders mit LabVIEW) zeitgleich aufgebaut werden?

Mit freundlichen Grüßen und vielen Dank
Vogster

Ich habe verschiedene Applikationen geschrieben in denen ich teilweise dutzende von TCP/IP Verbindungen gleichzeitig offenhalte und mit den entsprechenden Endpunkten (teilweise andere LabVIEW Applikationen) kommuniziere.

Das Geheimnis für eine langdauernde, problemlos funktionierende TCP/IP Kommunikation ist, dass man die Kommunikation robust implementiert. Das kann auf zwei Arten. Jedesmal die Kommunikation öffnen, lesen und schreiben was man muss und dann gleich wieder abschliessen.

Oder aber einmal öffnen, die refnum speichern und dann immer wieder kommunizieren. Wenn eine der Lese- oder Schreibfunktionen einen Fehler zurückgibt, abhängig von diesem Fehler folgende Dinge tun:

Timeout error: 1 oder mehrere Male retry und bei einer bestimmten Anzahl von retries Abbruch
Bei allen anderen Fehlern Abbruch.

Abbruch bedeutet, dass die refnum abgeschlossen wird und wieder neu geöffnet wird und dann geht es weiter. Auf diese Weise habe ich Applikationen geschrieben die Monate lang miteinander kommunizieren ohne je auszufallen. Eingebautes Logging zeigt mir dass die Verbindungen regelmässig mit Fehlern abgebrochen werden und wieder neu afgebaut werden, aber mit entsprechender retry Logik nach einem Fehler geht das ohne Probleme. Überlebt sogar das Entfernen des Netzwerkkabels und wieder anschliessen, wobei die Kommunikation während der unterbrochenen Netzwerkverbindung natürlich wegbleibt und die entsprechenden Applikationsteile auf den Wiederaufbau der Verbindung warten, ohne aber den Rest der Applikation zu blockieren solange das möglich ist.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.01.2008, 09:26
Beitrag #6

vogster Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 80
Registriert seit: Feb 2007

8.2.1, 8.6.1, 9.0, 2011
2006
DE

80807
Deutschland
Kommunikation von externen Geräten über TCP/IP
Hallo Rolf,

vielen Dank, damit hast Du mir ein ganzes Stück geholfen.

Zur Absicherung, dass wir beide das selbe Problem habe, hätte ich noch einige Fragen:

- Die Fehlermeldungen von LabVIEW sind "Fehler 56 ist bei TCP - Lesen aufgetreten" Fehler 56 bedeutet laut Hilfe: Die Netzwerk-Operation hat die vom Benutzer oder System vorgegebene Zeitbegrenzung überschritten. Das wird der von Dir beschriebene Timeout sein. Dann habe ich noch den Fehler Nr. 62: Das System hat die Netzwerkverbindung abgebrochen.
Sind das die Fehler, mit denen Du auch zu kämpfen hattest?

- Ich habe die Ethernetverbindung mit Wireshark abgehört (wie oben empfohlen). Dabei ist sichtbar, dass die Kommunikation eigentlich sehr gut funktioniert (keine Prüfsummenfehler etc.). Manchmal hört die Kommunikation (im LabVIEW Fehlerfall) einfach auf, ich habe aber auch Fälle gehabt, wo bei der letzten Nachricht das Reset - Flag gesetzt war. Kann mir jemand sagen, was bei einem Reset - Flag passiert? Muss ich die Verbindung dann seitens LabVIEW neu abfbauen? Wie lange dauert so ein Bus - Reset? Ich habe gelesen (Wiki), dass ein Reset - Flag aufrund eines technischen Problems gesetzt wird. Hat da jemand ein paar Details oder Erfahrungen?

Mein Hauptproblem ist nun wohl, dass ich die Nachricht nur ein mal versende und hoffe (davon ausgehe), dass sie auch ordnungemäß ankommt. Bei TCI-IP können wohl auch Daten "einfach so" verloren gehen (Bitte korrigiert mich, wenn falsch). Obwohl ich ein Netz habe, dass keine Verbindung zu einem Firmennetz oder gar zum Internet hat.

Rolf, wie oft kommen denn solche Verbindungsfehler bei Dir vor? Bei mir schwankt das so zwischen 3 und 24 Stunden.

Ich werde wohl eine retry Logik einbauen und gleichzeitig die Nachrichten zyklisch versenden. Sieht nach etwas Arbeit aus!

Vielen Dank für Eure Hilfe!
Jens
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.01.2008, 10:50
Beitrag #7

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Kommunikation von externen Geräten über TCP/IP
' schrieb:Die Fehlermeldungen von LabVIEW sind "Fehler 56 ist bei TCP - Lesen aufgetreten" Fehler 56 bedeutet laut Hilfe: Die Netzwerk-Operation hat die vom Benutzer oder System vorgegebene Zeitbegrenzung überschritten. Das wird der von Dir beschriebene Timeout sein. Dann habe ich noch den Fehler Nr. 62: Das System hat die Netzwerkverbindung abgebrochen.
Sind das die Fehler, mit denen Du auch zu kämpfen hattest?

Den Fehler 56 musst du abfangen, der ist völlig normal, wenn du innerhalb einer While Schleife das TCP Read ausführst und die Primitive nichts empfangen hat. Es ist ja nichts schlimmes, wenn mal nichts ankommt, es sei denn deine Geräte senden schneller als der Timeout von "TCP Read", dann deutet das darauf hin, dass das Gerät nichts mehr sendet.

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.01.2008, 16:56
Beitrag #8

vogster Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 80
Registriert seit: Feb 2007

8.2.1, 8.6.1, 9.0, 2011
2006
DE

80807
Deutschland
Kommunikation von externen Geräten über TCP/IP
Ich bin mir eigentlich sicher, dass das Gerät innerhalb des Timeouts sendet. Es geht ja auch mal 24 Stunden gut.
Der Ablauf ist immer komplett identisch und recht einfach. Daher komisch, dass ab und an mal nichts ankommt.
Kann das so eine wo auch immer verloren gegangene Nachricht sein?
Und wie kann dieser Reset zustande kommen?

mfg
Jens
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.01.2008, 17:02
Beitrag #9

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Kommunikation von externen Geräten über TCP/IP
' schrieb:Ich bin mir eigentlich sicher, dass das Gerät innerhalb des Timeouts sendet. Es geht ja auch mal 24 Stunden gut.
Der Ablauf ist immer komplett identisch und recht einfach. Daher komisch, dass ab und an mal nichts ankommt.
Kann das so eine wo auch immer verloren gegangene Nachricht sein?
Und wie kann dieser Reset zustande kommen?

mfg
Jens

das liegt mit am Prinzip von TCP/IP, das ist ja keine direkte Verbindung zwischen zwei Geräten sondern ein Fehlertolerantes Übertragungsprotokoll an dem mehrere Parteien beteiligt sind: Netzwerkkarten, Switches, Router, Firewalls ... etc. Es kann durchaus mal vorkommen, dass eine der beteiligten Parteien der Meinung ist, dieses eine Paket soll nun nicht weiter transportiert werden, weil dies oder jenes nicht passt ...

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.01.2008, 12:13
Beitrag #10

vogster Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 80
Registriert seit: Feb 2007

8.2.1, 8.6.1, 9.0, 2011
2006
DE

80807
Deutschland
Kommunikation von externen Geräten über TCP/IP
Hallo zusammen,
zunächst ein Dankeschöne für Eure Hilfe!

Eine Verständnisfrage wäre da noch:

Ich baue mit einer IP - Adresse und einem Port eine Verbindung auf, in LabVIEW arbeitet die Funktion TCP - lesen gerade nicht, und zeitgleich sendet die Gegenstelle Daten.

Werden diese in irgendeinem Zwischenspeicher gespeichert?

Wenn dann wieder die Funktion TCP - Lesen aktiviert wird, und die Anzahl der zu lesenden Byte steht bspw. auf 10 oder die Funktion soll auf ein CRLF warten, wird der Zwischenspeicher dann nach dem "first in first out" - Prinzip ausgelesen?
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
  Arduino -> LabVIEW Kommunikation über TCP/IP Herrx 2 3.252 08.07.2019 06:35
Letzter Beitrag: Herrx
  Kommunikation über CAN -> Schrittmotor Max_LabVIEW 13 11.283 15.03.2017 10:05
Letzter Beitrag: GerdW
  Datenaufnahme von Geräten mit unterschiedlicher Auslesezeit - Fieses Ausbremsen spacz 16 10.724 28.09.2016 12:47
Letzter Beitrag: LichterLichtus
  Kommunikation über Modbus ThBaKa 6 8.139 14.04.2015 12:53
Letzter Beitrag: jg
  Sinumerik 840D - Kommunikation über DDE-Server Mannie 3 8.552 11.02.2015 12:13
Letzter Beitrag: rolfk
  Kommunikation mit einer 3D Kamera über XML-RPC Messlabor_Ostfalia 2 5.207 08.06.2014 12:55
Letzter Beitrag: Messlabor_Ostfalia

Gehe zu: