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 

Fragen zu verteilter Anwendung



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!

29.06.2009, 12:54
Beitrag #1

johannes_r Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 67
Registriert seit: Apr 2009

LV2010/2009/8.6.1...
2010
EN

97450
Deutschland
Fragen zu verteilter Anwendung
Hallo zusammen,

ich bin seit einiger Zeit daran eine Steuerung für einen Prüfstand zu programmieren. Muss leider sagen, dass ich nicht so wirklich weiter komme. Es wird ein PXI System verwendet und ein Hostrechner, beide sind über Netzwerk verbunden. Letze Woche war jemand von NI bei uns im Haus und hat sich vorgestellt und bei der Gelegenheit auch mal einen Blick auf den Prüfstand geworfen.
Er hat mir empfohlen GUI und Messung zu trennen, also GUI läuft auf dem Host als VI und die Messung auf dem PXI als VI. Als Kommunikation soll ich "Network published Variables" nutzen.

1)Man hört aber ja immer wieder mal dass man Variablen eben nicht nutzen soll oder?

Er meinte weiter, dass man auf dem Host und auf dem PXI jeweils einen identischen Variablensatz anlegen kann und diese dann mit "mit Quelle verbinden" verbinden kann.

2)Wo ist der Unterschiede wenn ich die PXI Variable mit der Hostvariable verbinde oder die Hostvariable mit der PXI Variable?

Auf dem PXI soll dann die Datenerfassung in einem timed loop stattfinden (entsprechend schnell und priorisiert) und in einem anderen timed loop (langsamer, niedriger priorisiert) die gemessenen Werte an den Host geschickt werden zum visualisieren.

Auf dem PXI würde ich dann zb in die Variable "pxi-drehzahl" eine drehzahl schreiben und diese variable dann in dem langsameren loop mit der variable "host-drehzahl" verbinden.

3)Wenn ich auf Hostseite die Variable "host-drehzahl" durch "mit quelle verbinden" mit "pxi-drehzahl" verbinde wird dann die variable auf hostseite jedesmal refreshed wenn auf dem pxi ein neuer wert geschrieben wird? dadurch habe ich ja eine große Netzwerkauslastung oder? Genau dass möchte ich ja vermeiden indem ich nicht jeden gemessenen Wert schreibe.

4)Gibt es irgendwo noch andere Beispiele als die im Beispiel Finder zu der Kommunikation wo man mal ein etwas größeres Beispiel hat?

vielen Dank
johannes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.07.2009, 07:11
Beitrag #2

johannes_r Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 67
Registriert seit: Apr 2009

LV2010/2009/8.6.1...
2010
EN

97450
Deutschland
Fragen zu verteilter Anwendung
Kann mir niemand was dazu sagen, oder ist sind die fragen unverständlich formuliert? würde mich über jede hilfestellung freuen.

danke gruß johannes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2009, 08:29
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Fragen zu verteilter Anwendung
Du hast dir da ein sehr spezielles Gebiet herausgesucht. Ich selbst mach mit verteilten Anwendungen nichts. Und wahrscheinlich der Großteil, der hier regelmäßig antwortet, auch nicht. Ich, als Nicht-Moderator, rate zu zwei- dreimal hochziehen, vielleicht meldet sich einer. Wink

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
01.07.2009, 11:18
Beitrag #4

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Fragen zu verteilter Anwendung
' schrieb:1)Man hört aber ja immer wieder mal dass man Variablen eben nicht nutzen soll oder?

die Netzwerk-Variablen verhalten sich im Prinzip wie eine Globale Variable, d.h. man muss die Pollen und wenn man auf Änderungen reagieren will (z.B. neues Datenpaket von der Datenerfassung ist vorhanden) muss man sich was einfallen lassen wie man das ganze synchronisiert. Mein Fazit: in Einzelfällen recht praktisch weill man sich nicht um die TCP/IP-Geschichten kümmern muss, bei größeren Anwendungen wird's aber schnell unpraktisch. Ich verwende bei verteilten Anwendungen (und seit 5 Jahren sind eigentlich fast alle meine Programme verteilte Anwendungen) meinen eigenen TCP Client (auf dem Host PC) und Server (auf dem PXI/cRIO). Das Grundprinzip dabei ist immer: wenn ein TCP Paket eintrifft wird es gemäß meiner Vorgaben verarbeitet und (meistens per Queue) an das entsprechende Modul weitergeleitet. Das schöne an der Sache ist: das ganze kann man dann quasi also so eine Art Event betrachten und muss nur reagieren wenn auch was passiert ist ...


' schrieb:Auf dem PXI soll dann die Datenerfassung in einem timed loop stattfinden (entsprechend schnell und priorisiert) und in einem anderen timed loop (langsamer, niedriger priorisiert) die gemessenen Werte an den Host geschickt werden zum visualisieren.

So ein Blödsinn. Entweder du hast gut programmiert und alle Programm-Teile bekommen genug Ressourcen um rechtzeitig abgearbeitet zu werden, oder du hast schlecht programmiert, dann hakt's halt irgendwo. Mit einer Timed Loop könnte man zwar eine bestimmte Schleife priorisieren, aber was bringts? Man möchte ja dass das gesamte Programm vollständig und deterministisch abgearbeitet wird und z.B. nicht auf eine stabile Datenübertragung verzichten. Mit dem standard Hardware-Timing kommt man da genauso gut hin, der Messtakt kommt direkt von der Messkarte und nicht über irgendwelche Umwege und man weiß was man hat.

Ich hab noch keine Datenerfassung programmiert bei der ich eine Timed Loop gebraucht hätte, im Zweifel ist es nur eine Fehlerquelle die man nicht beeinflussen kann.

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
01.07.2009, 13:40 (Dieser Beitrag wurde zuletzt bearbeitet: 01.07.2009 13:45 von jg.)
Beitrag #5

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Fragen zu verteilter Anwendung
Also ich bin kürzlich mit Shared Variables und RealTime (ok, es war ein "langsames" cRIO) ziemlich reingefallen, hat gar nicht gut funktioniert, im Gegenteil, nur Ärger...

TCP/IP funktioniert sauberst, wenn man die Timings in der Kommunikation sauber wählt.

Da du 8.01 hast, und erst mit dieser Variante Shared Variablen eingeführt wurden (mit den entsprechenden Bugs), würde ich davon abraten.

Wenn ich richtig mitbekommen habe, wurde erst mit 8.5 ein entsprechende Optimierung im Shared Variable Engine eingeführt, mit 8.6 gab's wohl nochmal ein paar Verbesserungen.

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
01.07.2009, 13:54
Beitrag #6

johannes_r Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 67
Registriert seit: Apr 2009

LV2010/2009/8.6.1...
2010
EN

97450
Deutschland
Fragen zu verteilter Anwendung
Mmh...vorerst danke für die Antworten,

hört sich ja leider nicht so berauschend an...das problem ist, dass ich mit dieser ganzen aufbaustruktur zwischen pxi und host nicht so vertraut bin und es sicher einige zeit dauert bis ich das verstehe. ich kann mir jetzt auch nicht vorstellen wie man das dann programmiert mit dem tcp client. vielleicht könnte mir jemand eine art minimalanwendung mal zeigen wie das gelöst ist. komm zZ leider wirklich nicht weiterSad

vielen dank
johannes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.07.2009, 18:29
Beitrag #7

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Fragen zu verteilter Anwendung
' schrieb:Mmh...vorerst danke für die Antworten,

hört sich ja leider nicht so berauschend an...das problem ist, dass ich mit dieser ganzen aufbaustruktur zwischen pxi und host nicht so vertraut bin und es sicher einige zeit dauert bis ich das verstehe. ich kann mir jetzt auch nicht vorstellen wie man das dann programmiert mit dem tcp client. vielleicht könnte mir jemand eine art minimalanwendung mal zeigen wie das gelöst ist. komm zZ leider wirklich nicht weiterSad

vielen dank
johannes

es gibt im Example-Finder ein Beispiel dazu, auf das hab ich mein Client-Server Modell aufgebaut. Allerdings verwende ich nun 2 Ports, einen "Hin-Kanal" und einen "Rück-Kanal" und einen standardtisierten Datentyp (Cluster aus Enum, Numeric und Variant) bei dem das Enum angibt was für Daten jetzt gerade reinkommen. So eine Minimal-Anwendung ist leider auch schon recht umfangreich, ausserdem steckt in meiner Client-Server Architektur auch jede Menge Know-How drin, für das meine Kunden viel Geld bezahlt haben, darum möchte ich das nicht weitergeben und zum neu-programmieren bin ich nu auch zu faulWink

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
02.07.2009, 11:32
Beitrag #8

johannes_r Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 67
Registriert seit: Apr 2009

LV2010/2009/8.6.1...
2010
EN

97450
Deutschland
Fragen zu verteilter Anwendung
@i2dx
ok ist verständlich dass du dein code nicht veröffentlichen willst;)dann muss ich mir mal die beispiele genauer anschauen.

bei mir ist es so dass die gui eigentlich nur zum steuern und bedienen da ist. die eigentliche messaufgabe soll komplett auf dem pxi stattfinden und auch die datenspeicherung. was ich damit meine ist, dass es eigentlich egal ist wenn mal nicht jeder messwert auf dem hostrechner ankommt. es soll lediglich eine grobe visualisierung stattfinden. da ich nicht so tief in der materie drin bin wie die meisten hier kann ich leider auch nicht abwägen was die vor- und nachteile von verschiedenen methoden sind. denke dazu müsste man ja alle wenigstens einmal selbst getestet habenWink

nochmal was zu so einer tcp verbindung:

wie schnell ist eine solche verbindung?

es sind bei mir auch nicht sonderlich viele verschiedene messungen. nehme nur 2 drehzahlen auf und 2 momente und 2 axialkräfte...aus diesen werten werden dann zwar verschiedene werte berechnet wie zb wirkungsgrad etc. ist also denke ich mit sicherheit keine allzu große anwendung.

es würde mich freuen wenn jemand sich positiv zu shared variables äußern würde (falls es möglich ist):)weil das eigentlich eine "einfache" art der programmierung ist. ansonsten muss ich mal schauen wie kompliziert dass mit tcp ist. damit habe ich leider überhaupt keine erfahrung...da die bearbeitung meine diplomarbeit ist, ist auch die zeit leider bissl begrenzt :/

gruß johannes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.08.2009, 15:36
Beitrag #9

AnR Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: May 2009

2009
2009
de

28359
Deutschland
Fragen zu verteilter Anwendung
Ich habe dazu noch grundsätzliche Fragen (arbeite erst seit einem knappen halben Jahr mit LabVIEW 8.6):

Zitat:Er hat mir empfohlen GUI und Messung zu trennen, also GUI läuft auf dem Host als VI und die Messung auf dem PXI als VI. Als Kommunikation soll ich "Network published Variables" nutzen.
Wie geht das? Ich entwickle hier auf meinem "host"-Rechner meine GUI und meine Mess-VIs, die ich dann beim Ausführen auf das PXI-System per Ethernet übertrage. Ich sehe direkt die Messdaten, und kann meine AOs steuern. Die Kommunikation wird von LabVIEW automatisch im Hintergrund abgewickelt. Das Programm läuft allerdings nur solange wie es auch auf dem Host-Rechner ausgeführt wird.

Dabei fiel uns auf dass zwar an einem 100mBit Netzwerk die Auslastung nur bei 2,5% liegt, wenn jedoch ein Rechner mit nur 10mBit Ethernet genutzt wird andauernd die Meldung "Warten auf Zielsystem PXI..." kommt und LabVIEW solange blockiert, bis dann nach ein paar mal die Verbinung abreißt.

Woran liegt das und kann ich es mit einer eigenen Client-/Server-Architektur abstellen? Und/Oder wie passen die "shared variables" in diese Konzepte?

[edit]
bin über Google auf den Thread hier gestoßen, dieser auch von johannes adressiert auch in etwa das Problem: http://www.LabVIEWforum.de/Wann-ist-das-VI...PXI-t13608.html
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.08.2009, 08:25 (Dieser Beitrag wurde zuletzt bearbeitet: 21.08.2009 08:29 von MichaDu.)
Beitrag #10

MichaDu Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 115
Registriert seit: Jun 2008

8.5
2008
en

47
Deutschland
Fragen zu verteilter Anwendung
Hallo,

ich habe zu diesem Thema auch eine Frage. Ich bin dabei, meine RT-Applikation umzubauen von RT/Webserver auf RT/Host mit TCP/IP Client/Server (ohne Shared Variables). Mein altes RT-Frontpanel wollte ich beibehalten und auf dem Host identisch aufbauen.

Da ich sehr viele Controls (zur Steuerung des RT) und Indicators (zur Anzeige von Mess- und Statuswerten) habe, würde ich diese ungern von Hand auf dem RT zusammenpacken und wieder auf dem Host auspacken. Stattdessen wollte ich die Frontpanelwerte per Referenz lesen und dann übertragen. Das hätte den Vorteil, dass ich nicht jedesmal die Datenpakete ändern muss, wenn ich das Frontpanel ändere.

Dazu wollte ich es so machen, wie es i2dx hier erwähnt hat: Host=Client und RT=Server mit 2 Ports für "Hin" und "Zurück".

Steuerdaten für RT: Nur die Frontpanel-Controls vom Host senden (Host/Send->RT/Receive)
Messdaten vom RT: Nur die Frontpanel-Indicators vom RT empfangen (Host/Receive<-RT/Send)

Würde irgendwas gegen eine solche Lösung sprechen? Ich arbeite zwar auch mit LV8.5, würde aber ungerne mit den Shared Variablen arbeiten (@Jens). Oder wäre das hier vielleicht besser?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Webserver auf cRIO mit Startup-Anwendung domi1991 0 5.487 27.11.2012 14:43
Letzter Beitrag: domi1991
  Fragen zu DMA FIFO gfzk 5 11.254 24.10.2011 17:23
Letzter Beitrag: gfzk

Gehe zu: