LabVIEWForum.de
Referenz zu mehreren Instanzen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Referenz zu mehreren Instanzen (/Thread-Referenz-zu-mehreren-Instanzen)

Seiten: 1 2


Referenz zu mehreren Instanzen - jg - 28.01.2009 22:27

Hallo,

die Idee von IchSelbst mit dem Autoindizierten Arrays als Problem war gut. Ich habe mal deinen Code getestet (war viel zu langsam) und dann nach Hinweis von IchSelbst umgebaut. Sieht dann als Bsp so aus:

[attachment=16448]

Prozessorlast dieses Bsp bei mir so ca. 6 %, läuft stabil mit 500 Hz (nur zum Test habe ich die Timed-Loop verwendet, ist sonst total überflüssig).

Die Übertragung der gerade aktuellen Histogramme würde ich per Notifier erledigen (also in jedem Durchlauf wird das Array in einen Notifier geschoben). Wenn ich mal richtig gelesen habe, wird dabei intern nicht unbedingt eine Kopie des Arrays angelegt, sondern eine Referenz übergeben.

Und der der Anzeige-Schleife holst du dann immer das gerade aktuelle Array aus dem Notifier wieder ab.

Gruß, Jens


Referenz zu mehreren Instanzen - Event Horizon - 28.01.2009 22:48

Hallo!

Ja, vielen Dank für die Hilfe.
Ich wollte eben eigentlich auch noch das mit den Shift-Registern ausprobieren, bin aber nicht mehr zu gekommen. Sofern die Melder tatsächlich Referenzen zu den Daten übergeben, sollte das schön schnell gehen. Ich bin mal gespannt, wie das System schnurrt, wenn es denn läuft.


Referenz zu mehreren Instanzen - IchSelbst - 29.01.2009 10:49

' schrieb:Sofern die Melder tatsächlich Referenzen zu den Daten übergeben, sollte das schön schnell gehen.
LabVIEW beruht auf dem Prinzip des Datenflusses. Da fließen Daten, nicht Referenzen.

Intern mögen da er eine oder andere Pointer dabei sein. Beim Beschreiben des Melders wird auf jeden Fall kopiert. Und beim Auslesen auch, sonst könnten nämlich nicht 5 gleichzeit auf ein und den selben Melder zugreifen.

Wichtig ist nur, dass der Speichermanager "umgangen" wird. Also so sachen wie ArrayErstellen und Autoindizierung zum Schreiben vermeiden. Daten kopieren an sich geht schnell. Und den Speicher dafür kann man bereits zur Entwicklungszeit bzw. außerhalb von Schleifen festlegen.


Referenz zu mehreren Instanzen - Event Horizon - 30.01.2009 08:25

Das kann ich nun bestätigen.

Wenn man das Autoindexing umgeht, bekomme ich auch für das Histogrammieren kaum noch Systemlast. Das beginnt erst wieder, wenn ich das Array in einen Melder stopfe. Sofern man das aber nur bei jedem 100. Durchgang oder so macht, hält sich die Last in Grenzen. Das muß ich zur Not noch anpassen, wenn das Programm weiter wächst.

Ich danke euch!


Referenz zu mehreren Instanzen - jg - 30.01.2009 10:52

' schrieb:Das kann ich nun bestätigen.

Wenn man das Autoindexing umgeht, bekomme ich auch für das Histogrammieren kaum noch Systemlast. Das beginnt erst wieder, wenn ich das Array in einen Melder stopfe. Sofern man das aber nur bei jedem 100. Durchgang oder so macht, hält sich die Last in Grenzen. Das muß ich zur Not noch anpassen, wenn das Programm weiter wächst.

Ich danke euch!
Ich wäre mir gar nicht so sicher, ob das "Kopieren" in den Melder die Systemlast erzeugt. Da tippe ich eher auf die graphische Anzeige. Anzeige von Größenordnung 10 Plot a 65000 Punkte ist ja auch nicht ohne.

Gruß, Jens