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 

Netzwerkkommunikation zwischen Vi's



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!

16.03.2007, 13:43
Beitrag #1

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Netzwerkkommunikation zwischen Vi's
Hallo alle,

im Rahmen eines Projektes stellt sich mir folgende Aufgabensituation:
An unserem Versuchsaufbau sind 2 PCs integriert. Einer davon steuert Parameter des Experiments, der Andere eine Kamera. Was ich nun realisieren soll, ist immer dann ein Bild aufzunehmen, wenn etwas im Aufbau verändert wurde, sprich PC1 einen Parameter neu setzt.
Ich muss also ein VI auf PC2 mit dem VI auf PC1 triggern.

Eine unidirektionale Kommunikation langt hier im Prinzip. Also "Mach Bild" -> macht Bild.
Bidirektional wäre ev. auch eine Überlegung wert. "Mach Bild" -> macht Bild -> "Bild gemacht" -> Schritt weiter -> ...

Die Frage ist, wie mach ich das am Besten?
Hatte bis jetzt noch nicht viel mit Netzwerken zu tun, dewegen würde mich interessieren, was ihr da für die Beste Lösung haltet.

Die beiden PCs sind WinXP Rechner und mit einem lokalen Netzwerk verbunden. Zusätzlich kann ich auch über Com Ports eine Verbindung aufbauen.

Meine bisherige Lösung (die soweit auch funktioniert) ist, mittels COM Port und Visa einen beliebigen String zu übermitteln. Das Slave VI befindet sich in einer Endlosschleife, die ständig überprüft ob Bytes am Com Port liegen. Wenn ja -> überprüfen und gegebenenfalls ein Bild machen.

Was ich noch entdeckt habe wären diese Visa Events. Leider kenn ich mich hier gar nicht aus. Wäre das eine Alternative? Z.B.: auf einen Break warten.
Oder soll ich doch über Globale Variablen oder Referenzen arbeiten. Und wenn ja, wie muss ich da vorgehen, Server konfigurieren?

Vielen Dank, Grüße

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.03.2007, 13:50 (Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2007 13:55 von eg.)
Beitrag #2

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Netzwerkkommunikation zwischen Vi's
Wenn die beiden PCs schon in einem Netzwerk sind, kannst du doch gleich TCP/IP reden und brauchst kein serielles Kabel. Einfach die IP Adresse und einen freigegebenen Port beim Open TCP eingeben, dann hast du schon die Verbindung aufgebaut. Dann kannst du von einem PC zum anderen ein Befehl schicken, z.B. "Mach Bild" und der 2. PC kann dan antworten, wenn er soweit ist. Geht doch relativ einfach.


Gruss, Eugen

P.S.

Schau dir das hier:
http://www.LabVIEWforum.de/index.php...ost&p=24240

Da nimmst du eine While-Schleife für PC1 und eine für PC2, vergiss aber nicht die richtige IP-Adresse einzustellen.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.03.2007, 19:28
Beitrag #3

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

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Netzwerkkommunikation zwischen Vi's
Hallo,

ich mache das mit "Shared Variables". Die beruhen auch auf TCP/IP und sind einfach zu handhaben.

Gruß Markus

--------------------------------------------------------------------------
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
17.03.2007, 00:43 (Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2007 00:43 von Mr.T.)
Beitrag #4

Mr.T Offline
LVF-SeniorMod


Beiträge: 1.007
Registriert seit: Jun 2005

2009
2005
kA

88400
Deutschland
Netzwerkkommunikation zwischen Vi's
In meinem jugendlichen Eifer schliesse ich mich M.Weippert an.

Wenn später noch mehr PCs was sehen wollen, können diese dann auch schon ohne großartiges Zutun diese Variable "sehen". Wie steht es denn mit der Zeit aus? Soll das auslösen des Bildes Zeitkritisch (deterministisch) behaandelt sein? Dann würde ich eine Direktverbindung vorziehen und evtl. sogar in Richtung RealtimeDesktop.

Aber wenn es relativ Wurscht ist (heavy traffic on Netzwerk kurz vor MittagspauseBig Grin) wie zeitversetzt das Bild aufgenommen wird, bleibe ich bei M.Weipperts Vorschlag unter Win.

Gruß

Mit einem freundlichen Wort und etwas Gewalt erreicht man viel mehr als nur mit einem freundlichen Wort. [...Marcus zu Lennier, B5]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.03.2007, 01:03
Beitrag #5

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Netzwerkkommunikation zwischen Vi's
' schrieb:In meinem jugendlichen Eifer schliesse ich mich M.Weippert an.

Wenn später noch mehr PCs was sehen wollen, können diese dann auch schon ohne großartiges Zutun diese Variable "sehen". Wie steht es denn mit der Zeit aus? Soll das auslösen des Bildes Zeitkritisch (deterministisch) behaandelt sein? Dann würde ich eine Direktverbindung vorziehen und evtl. sogar in Richtung RealtimeDesktop.

Aber wenn es relativ Wurscht ist (heavy traffic on Netzwerk kurz vor MittagspauseBig Grin) wie zeitversetzt das Bild aufgenommen wird, bleibe ich bei M.Weipperts Vorschlag unter Win.

Gruß


Zeitkritisch != deterministisch

Und "Realtime OS" hat keinen Einfluss auf die Netzwerkübertragungsgeschwindigkeit !

Gruss

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.03.2007, 08:09 (Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2007 08:53 von Mr.T.)
Beitrag #6

Mr.T Offline
LVF-SeniorMod


Beiträge: 1.007
Registriert seit: Jun 2005

2009
2005
kA

88400
Deutschland
Netzwerkkommunikation zwischen Vi's
Doch Eugen.

Link1
Link2

Mit dem RealTime Modul kommt sogar ein sogenanntes RealTime FIFO dazu...

Und da Determinismus heisst, dass ich weiss, wie lange ich maximal für etwas brauche (z.B. u.A. Übertragungszeit), kann ich damit sagen, dass diese Direktverbindung zweier PCs max. soundso lange zur Übertragung des grössten Datenpaketes benötigt.
Damit kann ich meinen zeitkritischen Auftrag (Bild auslösen) deterministisch beschreiben.

Aber Du hast damit recht, dass das OS nichts damit zu tun hat. Lediglich die Direktverbindung und die Möglichkeiten des RT-Modules ermöglichen den Einfluss.

Greetings.

Mit einem freundlichen Wort und etwas Gewalt erreicht man viel mehr als nur mit einem freundlichen Wort. [...Marcus zu Lennier, B5]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.03.2007, 09:31 (Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2007 09:34 von cb.)
Beitrag #7

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Netzwerkkommunikation zwischen Vi's
' schrieb:Mit dem RealTime Modul kommt sogar ein sogenanntes RealTime FIFO dazu...

aber ganz bestimmt nicht in die TCP/IP Kommunikation. Diese ist per se weder deterministisch noch in irgend einer Weise echtzeitfähig. Der RT FIFO ist quasi das Gegenstück zu einer Queue (nur halt mit mehr oder weniger festem Speicherbedarf) und wird z.B. in der AI Schleife verwendet um die Daten zur TCP-Schleife zu schieben.

' schrieb:ich mache das mit "Shared Variables". Die beruhen auch auf TCP/IP und sind einfach zu handhaben.

Sharded Variables beruhen auf UDP, sonst können die gar keinen Determinismus versprechen!
http://zone.ni.com/devzone/cda/tut/p/id/4679

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
17.03.2007, 10:04 (Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2007 10:20 von Mr.T.)
Beitrag #8

Mr.T Offline
LVF-SeniorMod


Beiträge: 1.007
Registriert seit: Jun 2005

2009
2005
kA

88400
Deutschland
Netzwerkkommunikation zwischen Vi's
Eben drum!

Wenn die "queue" als shared variable definiert wird, ist sie ja über UDP deterministisch...oder stimmt das nicht? Immer unter der Voraussetzung der Direkten Verbindung, also keinerlei sonstiger Traffic auf dem "Netzwerk".

Wobei hiermit sogar auch bei "nebenverkehr" noch entsprechend Performance rauszuholen sein müsste (ob das kompatibel ist?). Aber ist dann halt wieder was anderes..

Gruß

Mit einem freundlichen Wort und etwas Gewalt erreicht man viel mehr als nur mit einem freundlichen Wort. [...Marcus zu Lennier, B5]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.03.2007, 10:36
Beitrag #9

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

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Netzwerkkommunikation zwischen Vi's
Mist, dann hat mir damals der NI-ler auf der Messe was falsches erzählt. O
Einfach zu handhaben sind sie aber allemal. Anlegen, Typ einstellen, IP-Adresse der Variablen anlegen. Fertig. Wink

Gruß Markus

' schrieb:Sharded Variables beruhen auf UDP, sonst können die gar keinen Determinismus versprechen!
http://zone.ni.com/devzone/cda/tut/p/id/4679

--------------------------------------------------------------------------
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
17.03.2007, 13:19
Beitrag #10

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Netzwerkkommunikation zwischen Vi's
' schrieb:Wenn die "queue" als shared variable definiert wird, ist sie ja über UDP deterministisch...oder stimmt das nicht? Immer unter der Voraussetzung der Direkten Verbindung, also keinerlei sonstiger Traffic auf dem "Netzwerk".

Wobei hiermit sogar auch bei "nebenverkehr" noch entsprechend Performance rauszuholen sein müsste (ob das kompatibel ist?). Aber ist dann halt wieder was anderes..

Es gibt einen Modus (Time Triggered) bei network published Shared Variables, der sowas wie Determinismus verspricht. Ich hab's selber noch nicht ausprobiert und kann da nicht viel dazu sagen, aber vorhanden ist es. Der Determinismus beruht praktisch darauf, dass man sich darauf verläßt, dass die Hardware (das Netzwerkkabel), die Daten schnell genug schicken kann und ist höchstwahrscheinlich (wo auch sonst?) im NI-PSP Protokoll implementiert. Determinismus heißt ja nicht "verdammt schnell" sondern "ganz bestimmt innerhalb einer festgelegten Zeitspanne"

' schrieb:Mist, dann hat mir damals der NI-ler auf der Messe was falsches erzählt. O
mei - shit happens, da hat wohl jemand die eigenen WhitePapers nicht gelesenWink


' schrieb:Einfach zu handhaben sind sie aber allemal. Anlegen, Typ einstellen, IP-Adresse der Variablen anlegen. Fertig. Wink
Für einfache Datentype, ja. Wenn man aber den Datentyp "Custom" wählt und z.B. einen getypedeften Cluster schicken möchte, wird man feststellen, dass Änderungen am Typedef nicht in die SharedVariable übernommen werden, und das find ich ganz schön eklig - ich hab auch schon bei NI deswegen gemeckert und hoffe, dass das in der nächsten Version geändert ist ...

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


Gehe zu: