LabVIEWForum.de
zwei Spannungen mit zwei Keithley Multimetern synchron einlesen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: zwei Spannungen mit zwei Keithley Multimetern synchron einlesen (/Thread-zwei-Spannungen-mit-zwei-Keithley-Multimetern-synchron-einlesen)



zwei Spannungen mit zwei Keithley Multimetern synchron einlesen - Fabian93 - 29.03.2018 09:47

Hallo,

ich möchte zwei Gleichspannungen mit zwei Keithley 2701 Multimetern synchron einlesen. Die beiden Programme im Anhang funktionieren, allerdings werden die Werte nicht synchron eingelesen. Beim zweiten Programm bekommen beide "TCP send" gleichzeitig alle Werte, das obere VI wird aber immer zuerst ausgeführt.

Hat jemand eine Idee wie ich die Spannungen synchron einlesen kann? Vielen Dank

Mit freundlichen Grüßen
Fabian


RE: zwei Spannungen mit zwei Keithley Multimetern synchron einlesen - GerdW - 29.03.2018 10:12

Hallo Fabian,

herzlich willkommen im Forum!

Zitat:wie ich die Spannungen synchron einlesen kann?
Willst du die Daten synchron einlesen - oder synchron messen?

- Synchron einlesen ginge nur dann, wenn die beiden DMMs an unterschiedlichen LAN-Ports hängen würden: an einem LAN-Port kommen die Datenpakete eben nacheinander an…
- Synchron messen dagegen musst du auf DMM-Ebene konfigurieren: die DMMs bieten doch sicherlich einen Trigger-Input an, über den sie sich synchronisieren lassen!? (Das Übertragen der Messwerte vom DMM zum PC kann dann ruhig nacheinander erfolgen…)


RE: zwei Spannungen mit zwei Keithley Multimetern synchron einlesen - Freddy - 29.03.2018 10:15

Hallo Fabian,
die VI laufen als "Ablaufvariante Ausführung". Damit greift jeder auf das gleiche VI zu. Somit kann es nur hintereinander funktionieren.

Auszug aus der Hilfe:
Zitat:Ablaufinvarianz—Gibt an, ob mehrere Instanzen dieses VI gleichzeitig ausgeführt werden können. Standardmäßig sind VIs nicht ablaufinvariant. Das heißt, jeder VI-Aufruf muss warten, bis der vorherige Aufruf abgearbeitet ist. Um mehrere gleichzeitige Aufrufe eines VIs zu gestatten, müssen Sie eine der Optionen für die ablaufinvariante Ausführung auswählen.
(FPGA Module) SubVIs, die auf einem FPGA-Zielsystem erstellt werden, sind per Voreinstellung ablaufinvariant.

Ablaufvariante Ausführung—Führt simultane Aufrufe des VIs nacheinander aus, so dass nur wenig Arbeitsspeicher benötigt wird. Mit dieser Option werden außerdem alle Aufrufe des VIs in denselben Zustand versetzt, so dass die Werte von Elementen und nicht initialisierten Schieberegistern über die Aufrufe hinweg beibehalten werden. Bei VIs für Echtzeit-Betriebssysteme ist die Option Ablaufinvariante Ausführung mit vorbelegter Kopie auszuwählen.
Ablaufinvariante Ausführung mit gemeinsam genutzter Kopie—Gestattet mit relativ geringem Speicherbedarf die parallele Ausführung simultaner VI-Aufrufe. Der Speicherbedarf wird dadurch gering gehalten, dass VI-Aufrufe mit Kopien des VIs arbeiten. Wenn ein VI-Aufruf auftritt, während alle Kopien in Verwendung sind, wird dem VI-Aufruf eine neue Kopie zugewiesen. Da diese Zuweisung bedarfsweise vorgenommen wird, führt diese Art der Ausführung zu Jitter. Bei VIs für Echtzeit-Betriebssysteme ist die Option Ablaufinvariante Ausführung mit vorbelegter Kopie auszuwählen.
Ablaufinvariante Ausführung mit vorbelegter Kopie—Gestattet die parallele Ausführung simultaner Aufrufe des VIs bei gleichzeitiger Minimierung des Aufruf-Overheads und Jitters. Bei dieser Ausführungsart wird für jeden VI-Aufruf eine separate Kopie des VIs verwendet. Jeder VI-Aufruf behält daher seinen eigenen Zustand bei, so dass die Werte von Elementen und nicht initialisierten Schieberegistern ebenfalls beibehalten werden. Der Nachteil dieser Ausführungsart liegt gegenüber der Option Ablaufinvariante Ausführung mit gemeinsam genutzter Kopie in einem höheren Speicherbedarf.

Gruß
Freddy


RE: zwei Spannungen mit zwei Keithley Multimetern synchron einlesen - Fabian93 - 29.03.2018 11:10

Hallo,

danke für die Antworten


(29.03.2018 10:12 )GerdW schrieb:  - Synchron messen dagegen musst du auf DMM-Ebene konfigurieren: die DMMs bieten doch sicherlich einen Trigger-Input an, über den sie sich synchronisieren lassen!? (Das Übertragen der Messwerte vom DMM zum PC kann dann ruhig nacheinander erfolgen…)

Ich habe mich vielleicht etwas ungenau ausgedrückt. Ich möchte zwei Spannungen synchron messen. Die Übertragung muss nicht synchron sein. Die Multimeter haben einen externen Trigger-Eingang. Vielleicht gibt es auch eine Möglichkeit einen Trigger-Befehl zu senden.


(29.03.2018 10:15 )Freddy schrieb:  die VI laufen als "Ablaufvariante Ausführung". Damit greift jeder auf das gleiche VI zu. Somit kann es nur hintereinander funktionieren.

Das ist mein Problem (oder eins meiner Probleme).

Ich habe die englische Version von LabVIEW 2016. Ich war unter:
File-->VI Properties-->Category Execution

Was sollte ich dort einstellen? Sind die Einstellungen dann für alle VI's? Werden die beiden "TCP send" VI's dann synchron aufgerufen oder arbeitet LabVIEW die VI's einfach von oben nach unten ab?


Mit freundlichen Grüßen
Fabian


RE: zwei Spannungen mit zwei Keithley Multimetern synchron einlesen - Freddy - 29.03.2018 11:21

Mit der Einstellung auf Deinem Bild wird dieses VI für jeden Aufruf extra geladen. Damit wartet ein Aufruf nicht bis der vorherige Aufruf abgearbeitet wurde, sondert läuft sofort los.

Gruß
Freddy


RE: zwei Spannungen mit zwei Keithley Multimetern synchron einlesen - Fabian93 - 29.03.2018 11:47

(29.03.2018 11:21 )Freddy schrieb:  Mit der Einstellung auf Deinem Bild wird dieses VI für jeden Aufruf extra geladen. Damit wartet ein Aufruf nicht bis der vorherige Aufruf abgearbeitet wurde, sondert läuft sofort los.

Irgendwie haben die Einstellungen keinen Einfluss. Das obere VI "TCP send" wird zuerst gestartet, dann wird das untere, dann liefert das obere VI einen Wert und dann das untere. Das bei alles drei Einstellungen. Vielleicht sind die unteren VI's bereits Kopien.

Vielleicht liegt es an der Netzwerk-Schnittstelle, da die Befehle und Daten nur nacheinander gesendet werden können?


RE: zwei Spannungen mit zwei Keithley Multimetern synchron einlesen - jg - 31.03.2018 08:05

Welches VI hast du auf reentrant umgestellt? Das erkennt man in deinem Screenshot nicht. Falls du dein "eine se" geändert hast, das wäre falsch. Diese Einstellung wirkt sich nicht auf SubVIs aus. Das muss man bei Bedarf für alle VIs in der Aufrufkette machen, in deinem Fall also für das TCP Read/Write VI und mglw. darin enthaltene SubVIs.

Trotzdem wird ein Problem übrig bleiben - TCP/IP: Über 1 Schnittstelle kannst du eben NICHT 2 Kommandos parallel rausschicken. Außerdem hängen da noch einige Schichten Treiber-API dazwischen, bei TCP/IP weißt du sowieso nie genau, wann wirklich ein Paket rausgeht.

Echte Synchronisation wirst du IMHO nur durch einen physikalischen vorhandenen Trigger-Impuls erreichen - nicht durch irgendwelche Software-Trigger.

Gruß, Jens


RE: zwei Spannungen mit zwei Keithley Multimetern synchron einlesen - Fabian93 - 01.04.2018 09:58

(31.03.2018 08:05 )jg schrieb:  Welches VI hast du auf reentrant umgestellt? Das erkennt man in deinem Screenshot nicht. Falls du dein "eine se" geändert hast, das wäre falsch. Diese Einstellung wirkt sich nicht auf SubVIs aus. Das muss man bei Bedarf für alle VIs in der Aufrufkette machen, in deinem Fall also für das TCP Read/Write VI und mglw. darin enthaltene SubVIs.

Danke für die Antwort. Ich habe nur die Einstellungen des "eine se" VI's verändert. Das erklärt auch warum sich beim Ablauf des Programms nichts verändert hat. Ich werde die subVI's auf reentrant umstellen und es nochmal ausprobieren.


(31.03.2018 08:05 )jg schrieb:  Trotzdem wird ein Problem übrig bleiben - TCP/IP: Über 1 Schnittstelle kannst du eben NICHT 2 Kommandos parallel rausschicken. Außerdem hängen da noch einige Schichten Treiber-API dazwischen, bei TCP/IP weißt du sowieso nie genau, wann wirklich ein Paket rausgeht.

Echte Synchronisation wirst du IMHO nur durch einen physikalischen vorhandenen Trigger-Impuls erreichen - nicht durch irgendwelche Software-Trigger.

Das ist wahrscheinlich die einzige Möglichkeit wirklich synchron zu messen.