LabVIEWForum.de
Probleme mit Shared Variables (+Engine) - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Probleme mit Shared Variables (+Engine) (/Thread-Probleme-mit-Shared-Variables-Engine)



Probleme mit Shared Variables (+Engine) - Lucius2 - 02.12.2013 18:03

Hallo,

und zwar geht es um diverse Messwerte, die von Messgeräten oder über einen OPC-Server von einer SPS kommen und dann mittles Umgebungsvariablen (shared variables) weiterverarbeitet werden.

Dabei hab ich momentan an 3 Stellen Probleme, wo ich nich weiterkomme.

1. Datentyp Double in die Variablen schreiben:

Im folgenden Bild sieht man oben im grünen Kasten das relevante Blockdiagramm. Hier habe ich einfach eine Variable "Test-Double1" erzeugt und dieser unter Eigenschaften auch den Datentyp Double zugewiesen. Wenn ich nun jedoch einen Double-Wert in die Variable schreiben lasse, so konvertiert der "Variable schreiben" Block jedoch den Datentyp automatisch in UInt32, sodass natürlich aus der 2,64 dann eine 3 wird. Und der Grund dafür warum er das macht ist mir nicht ersichtlich, da ich auch double und negative Messwerte habe und diese doch dann auch bitte genauso weiterverabeitet werden sollen, da ja sonst Informationen verloren gehen.
[attachment=47557]


2. Sinn/Bearbeiten der Shared Variable Engine:
[attachment=47558]
Man kann ja an einer shared variable auf dem Pfeil nach einer Variablen suchen. Hierbei werden auch alle Variablen, die direkt dem Projekt zugeordnet sind problemlos angezeigt und können ausgewählt werden. Oben kann man da ja auch den Reiter "Shared Variable Engine" aufrufen. Dort ist jedoch alles ausgegraut und eine Variable kann hierdrüber nicht angewählt werden. Hinzu würde mich interessieren wie ich dieses Engines dort bearbeiten/löschen kann. Ich hab dazu irgendwie keine Möglichkeit gefunden.
Wenn ich "localhost" nicht aufklappe, dann werden mir unten auch weitere PCs angezeigt, wo aber nichts angezeigt wird, wenn man darauf klickt, was mich dann auch zur 3. Frage führt.

3. Wie kann man mit shared variables mit anderen PCs kommunizieren?
Es sollen einfach shared variables bzw die Werte von denen zwischen Rechnern hin und her geschoben werden. Da ist mir nicht ganz klar wie das funktioniert, bzw. was genau man da beachten muss. Man kann zwar toll im Menüpunkt unter "Werkzeuge-> Umgebungsvariable -> Computer hinzufügen" PCs eintragen, aber ich weis nicht wo die dann landen, bzw ob überhaupt irgendwas passiert.

Schonmal danke im Vorraus.


RE: Probleme mit Shared Variables (+Engine) - jg - 02.12.2013 18:15

Ad 1)
Read Variable hat einen Eingang "data type". Da z.B. eine Double Konstante anschließen, ansonsten bleibt es beim Standard-Datentyp U32.
[attachment=47560]

Ad 3)
Auf mind. 1 der beiden Rechner muss der sogenannte "Shared Variable Engine" als Dienst laufen. Ist dort eine "Shared Variable" mal angelegt, dann kann sie sowohl von lokal als auch per Netzwerk gelesen und geschrieben werden.

Bei der Erstellung eine Verbindung ein hilfreicher Tipp: Es ist auch möglich, einen String an den Read/Write VIs anzuschließen:
[attachment=47561]

Gruß, Jens


RE: Probleme mit Shared Variables (+Engine) - Lucius2 - 02.12.2013 19:44

Danke schonmal für die Antwort,

wenn ich jedoch das Variable öffnen oder schreiben Teil vor das Lesen packe, dann verschwindet der Anschluss für den Datentyp beim Lesen. Weil eigentlich ja auch der Datentyp in der Variablen selber drinsteckt. Wenn ich z.b. den Datentyp der Variablen selber (also unter den Eigenschaften da) auf Boolean ändere kommt direkt ein Fehler, weil er natürlich nicht weis damit umzugehen, was ja auch Sinn macht. Irgendwie liegt mein Verdacht, dass schon beim Schreiben da eine Konvertierung stattfindet, was ja auch durch den kleinen roten Pfeil an dem Dateneingang des Schreibenblocks angezeigt wird, und wenn natürlich schon der falsche Datentyp hineingeschrieben wird, so kann natürlich auch nur der ausgelesen werden.

Zu der anderen Antwort, wie genau kann ich diese Engines bearbeiten, weil ich z.B. in der Liste welche drin habe, die ich nicht brauche und auch nicht genau weis, wie die da hineingekommen sind.

Das mit den Strings muss ich mal ausprobieren, weil wichtig ist, dass quasi der Datentyp der Variable selber mitgeschleppt wird, da ich eine lange Liste mit Variablen habe, wo viele unterschiedliche Datentypen vorhanden sind und die müssen dann jeweils sortiert werden nach Typ.

mfg


RE: Probleme mit Shared Variables (+Engine) - jg - 03.12.2013 09:38

(02.12.2013 19:44 )Lucius2 schrieb:  wenn ich jedoch das Variable öffnen oder schreiben Teil vor das Lesen packe, dann verschwindet der Anschluss für den Datentyp beim Lesen. Weil eigentlich ja auch der Datentyp in der Variablen selber drinsteckt.
Stimmt, da hast du Recht, den Eingang mit dem Datentyp gibt es nur am ersten VI einer Kette, danach sollte die Refnum den Datentyp korrekt kennen.
Woher der Konversionspunkt an deinem ersten Schreib-VI kommt, ist mir unklar. Hast du die geänderte Liste der Shared-Variables auch veröffentlicht (Rechtsklick -> Deploy)?

(02.12.2013 19:44 )Lucius2 schrieb:  Zu der anderen Antwort, wie genau kann ich diese Engines bearbeiten, weil ich z.B. in der Liste welche drin habe, die ich nicht brauche und auch nicht genau weis, wie die da hineingekommen sind.
Programme -> National Instrument -> Distributed System Manager.

Gruß, Jens


RE: Probleme mit Shared Variables (+Engine) - Lucius2 - 03.12.2013 12:26

zum 1. Punkt: Ja die Variablen sind alle deployed. Das komische ist auch, dass es bei anderen Datentypen quasi dasselbe in grün ist.
[attachment=47574]
hier ist es anstatt double halt int32 und beim Schreiben wird auch direkt wieder in UInt32 konvertiert (auch hier ist wieder der kleine rote Pfeil), sodass natürlich negative Zahlen nicht funktionieren und ja die Variable "Test1" ist auch korrekt mit Datentyp Int32 eingestellt.
Das einzige wo er korrekt alles ändert ist beim Datentyp boolean, aber das kann doch nicht sein, dass das Schreibteil nur boolean und UInt32 kann, vor allem weil man ja alle möglichen Datentypen auswählen kann bei der Variable ansich.

zum 2. : Ok danke das hat mir etwas geholfen und ich kann jetzt auch auf dem Durchsuchen-Pfeil der Variablen auch unter Variablen Engines etwas anwählen, da vorher die zu benutzende Library am Ende des VIs wieder geschlossen wurde und man natürlich dann im Blockdiagramm keinen Zugriff mehr dadrauf hat, wenn das VI gestoppt wurde.


RE: Probleme mit Shared Variables (+Engine) - jg - 03.12.2013 18:06

Auch ich lerne nicht aus, ich denke, ich habe dein Problem lokalisiert:
Mach mal einen Rechtsklick auf die "Shared Variable Refnum" und wähle "Properties" aus. Im folgenden Fenster kannst du schon bei der Refnum den Datentyp auswählen, und falls da zwecks mglw. Copy-Paste schon U32 drin steht, dann bleibt es so:
[attachment=47589]
Gruß, Jens


RE: Probleme mit Shared Variables (+Engine) - Lucius2 - 04.12.2013 12:11

(03.12.2013 18:06 )jg schrieb:  Auch ich lerne nicht aus, ich denke, ich habe dein Problem lokalisiert:
Mach mal einen Rechtsklick auf die "Shared Variable Refnum" und wähle "Properties" aus. Im folgenden Fenster kannst du schon bei der Refnum den Datentyp auswählen, und falls da zwecks mglw. Copy-Paste schon U32 drin steht, dann bleibt es so:

Gruß, Jens

Jo super, daran hat es gelegen. Ich wusste garnicht, dass man extra nochmal auf diesem Kasten den Datentyp eintstellen kann...


Dann bleibt noch die Frage, wie ich auf andere Rechner zugreifen kann. Also wenn ich die jeweilige Variablenengine auf PC1 gestartet hab, dann müsste doch der Variablenpfad auf PC2 dann wie folgt lauten, damit dieser auf PC1 zugreift:

ni.var.psp://PC1/Test_OPC/Test1

ich kann das leider erst frühenstens heut abend bzw. morgen testen, da ich noch den 2. PC einrichten muss.
Aber es gibt da bestimmte Sachen, die ich da noch beachten muss bezüglich Rechte usw, weil momentan seh ich da auch schon andere Rechner, wo eigentlich auch schon was angezeigt werden sollte, aber wenn ich da auf das "+" drücke, dann klappt nichts auf.
[attachment=47611]


RE: Probleme mit Shared Variables (+Engine) - jg - 04.12.2013 12:46

Da ist denn mein Hinweis mit "String" anstatt Refnum hilfreich.
Den String kannst du dynamisch zur Laufzeit zusammensetzen, anstatt /PC1/ könnte dort z.B. die IP-Adresse des Ziels stehen.
Wenn die Firewalls alles durchlassen, dann ist auch diese Frage gelöst.

Gruß, Jens


RE: Probleme mit Shared Variables (+Engine) - Lucius2 - 06.12.2013 13:27

Ok, also ich habe es jetzt auch hinbekommen Werte zwischen PCs hin und herzuschieben. Danke für die Hilfe, vielleicht tauchen ja noch andere Fragen auf in dem Zusammenhang, die ich hier in dem Thread dann stellen kann.