01.07.2009, 07:11
Beitrag #2
|
johannes_r
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
|
|
|
01.07.2009, 08:29
Beitrag #3
|
IchSelbst
LVF-Guru
Beiträge: 3.697
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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
01.07.2009, 11:18
Beitrag #4
|
cb
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.
|
|
|
01.07.2009, 13:40
(Dieser Beitrag wurde zuletzt bearbeitet: 01.07.2009 13:45 von jg.)
Beitrag #5
|
jg
CLA & CLED
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.
|
|
|
01.07.2009, 13:54
Beitrag #6
|
johannes_r
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 weiter
vielen dank
johannes
|
|
|
02.07.2009, 11:32
Beitrag #8
|
johannes_r
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 haben
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
|
|
|
12.08.2009, 15:36
Beitrag #9
|
AnR
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
|
|
|
21.08.2009, 08:25
|
MichaDu
Unregistered
|
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?
|
|
|
| |