LabVIEWForum.de - cRIO langsame Zykluszeit bei größeren Arrays

LabVIEWForum.de

Normale Version: cRIO langsame Zykluszeit bei größeren Arrays
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!
Ich arbeite mit einem CompactRIO System, in dieses ich Datensätze einlese.
Mein Datensatz besteht aus einem Cluster mit verschiedenen Subcluster und Arrays. Diese Daten werden in einer While-Schleife eingelesen und über Schieberegister erhalten.
Mein Problem ist, dass bei größeren Arraywerten (über 10.000 Einträge), egal ob diese Einträge in einem oder mehreren Arrays gespeichert sind, die geforderte Schleifenzykluszeit nicht mehr eingehalten werden kann. Es ist egal ob ich mit den Werten arbeite oder nicht.

Könnt Ihr mir bitte weiterhelfen?
' schrieb:Hallo!
Ich arbeite mit einem CompactRIO System, in dieses ich Datensätze einlese.
Mein Datensatz besteht aus einem Cluster mit verschiedenen Subcluster und Arrays. Diese Daten werden in einer While-Schleife eingelesen und über Schieberegister erhalten.
Mein Problem ist, dass bei größeren Arraywerten (über 10.000 Einträge), egal ob diese Einträge in einem oder mehreren Arrays gespeichert sind, die geforderte Schleifenzykluszeit nicht mehr eingehalten werden kann. Es ist egal ob ich mit den Werten arbeite oder nicht.

Könnt Ihr mir bitte weiterhelfen?

kannst du mal ein VI oder einen Screenshot vom Block-Diagramm posten? Momentan kann ich mir noch nichts drunter vorstellen bzw. habe keine Vermutung was die Ursache sein könnte ...
' schrieb:kannst du mal ein VI oder einen Screenshot vom Block-Diagramm posten? Momentan kann ich mir noch nichts drunter vorstellen bzw. habe keine Vermutung was die Ursache sein könnte ...

Danke für Deine Hilfe.
Ich bündle sämtliche Cluster in einen Hauptcluster, dieser kann in der Schleife modifiziert werden. Der Hauptcluster durchläuft einige VIs, wie im Screenshot ersichtlich. In den einzelnen Cluster des Hauptclusters sind wieder Cluster, Arrays, und Werte.

Wird bei jedem Eintritt in ein SubVI ein neuer Speicherbereich angelegt und die Dateien vom Hauptcluster in diesen kopiert?
Wenn ja, dann ist das wahrscheinlich die Bremse. Ich möchte nämlich Daten von einem Array an die Ausgänge übergeben. In meinem Fall übergebe ich das Hauptcluster über mehrere hierarchisch angeordnete VIs.
' schrieb:Wird bei jedem Eintritt in ein SubVI ein neuer Speicherbereich angelegt und die Dateien vom Hauptcluster in diesen kopiert?
Wenn ja, dann ist das wahrscheinlich die Bremse. Ich möchte nämlich Daten von einem Array an die Ausgänge übergeben. In meinem Fall übergebe ich das Hauptcluster über mehrere hierarchisch angeordnete VIs.

naja ... in dem Screenshot kann man nicht wirklich viel erkennen ... ich seh ein Schieberegister ein unnamed Bundle und 2 Sub-VIs ... das ist nicht wirklich aussagekräftig


' schrieb:Wird bei jedem Eintritt in ein SubVI ein neuer Speicherbereich angelegt und die Dateien vom Hauptcluster in diesen kopiert?
Wenn ja, dann ist das wahrscheinlich die Bremse. Ich möchte nämlich Daten von einem Array an die Ausgänge übergeben. In meinem Fall übergebe ich das Hauptcluster über mehrere hierarchisch angeordnete VIs.

Nein, es wird nicht zwangsläufig ein neuer Speicherbereich angelegt, wenn du Daten in ein SubVI leitest. Ob eine Kopie des Datensatzes erzeugt wird oder nicht kannst du dir anzeigen lassen, in dem du auf Tools --> Profile --> Show Buffer Allocations gehst. Überall da wo ein Punkt erscheint wird bei der Übergabe eine Kopie des Datensatzes erzeugt.

Ansonsten: vielleicht hilft dir die "In Place Node" etwas, die ist ja neu in 8.5 und verhindert, dass beim Bearbeiten von Daten in Strukturen Kopien angelegt werden ....

PS: genaue Infos zu diesem Thema gibt's noch mal in der LV Hilfe unter dem Titel "VI Memory Usage" ...
Referenz-URLs