INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Array aus Queue-Elementen erstellen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

19.06.2010, 19:26
Beitrag #1

Andreasser Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Oct 2009

8.5
-
de

2500
Schweiz
Array aus Queue-Elementen erstellen
Guten Abend miteinander

Ich habe ein kleines Problem bei der Arrayerstellung.

Es geht um folgendes:

(LV 8.5.1)
Derzeit arbeite ich an einem VI, welches kontinuierlich einen Geber ausliest und nach jedem lesen eines Wertes (1D-Array) diesen in eine Queue legt.
Nach Abschluss der Erfassung soll aus diesen 1D Arrays ein 2D Array erstellt werden.

Ich benutze derzeit eine For-Schlaufe mit Schieberegister, lese jedes Element aus der Queue und hänge es an das Array an und gebe dieses wieder ins Schieberegister, doch bei einigen hunderttausend 1D Arrays dauert dies einige Minuten, was zu lange ist.

In der Hilfe las ich, dass "Queue freigeben" ein 1D-Array von allen Queueelementen ausgibt und dachte mir, wenn ich das irgendwie umformen könnte, dann wäre das genau das was ich suche, doch wenn die Elemente Arrays sind, werden die Elemente zuerst in einen Cluster gelegt um danach in einem 1D-Array zusammengefügt zu werden, auf eine kluge Lösung bin ich bisher nicht gekommen, (denn wenn ich wieder mit For-Schlaufe beginne habe ich dasselbe Problem).

Als letzte Alternative versuchte ich nicht nur immer ein Element anzuhängen sondern immer hundert und siehe da, der Zeitbedarf ging auf 20% zurück.
Man kann also davon ausgehen, dass eine weitere Erhöhung dieser Zahl eine weitere Zeitersparnis bringt, doch es ist schon mühsam hundert Anschlüsse zu verdrahten...

Daraufhin habe ich versucht ein rekursives SubVI zu erstellen, mit welchem ich nicht mehr auf For-Schlaufen angewiesen wäre, doch LV stört sich daran.

Hat jemand von euch schon Erfahrungen mit dieser Problematik gemacht oder vielleicht eine Idee wie ich ohne For-Schlaufe ans Ziel kommen könnte?

Besten Dank und Gruss
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.06.2010, 09:21 (Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2010 08:59 von Lucki.)
Beitrag #2

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Array aus Queue-Elementen erstellen
Hier nur ein paar ungeordnete Gedankensplitter zum Thema:[list=1]
[*] Wozu überhaupt eine Queue verwenden, da doch die DAQ-Datenerfassung schon voll gepuffert ist? Warum nicht diesen Datenpuffer genügend groß machen, während der Datenerfassung kommt alles in diesen Puffer hinein und erst wenn sie beendet ist, wird ausgelesen. Das funktioniert auch VI-übergreifend, genau wie bei der Queue. Für eine Erzeuger-Verbraucher-Struktur benötige ich, wenn die Erzeugung über DAQ erfolgt, überhaupt keine Queue - der Zwischenspeicher zum Senden der Daten vom Erzeuger zum Verbraucher ist schon da.<>
[*] Daß bei Queues die einzelnen Datenpakete geclustert werden, ist notwendig, weil ja die Länge der hinzugefügten 1D-Arrays jedesmal unterschiedlich sein kann. Deshalb hat man in der Queue kein 2D-Array, sondern ein 1D-Array aus Clustern mit 1D-Array-Elementen. Wenn Du nur ein 1D-Array in der Queue haben möchtest, ginge das nur so, daß Du als Queue-Dateninhalt das Einzelelement vorgibst und bei 10 neu hinzukommenden Elementen diese nicht als Array, sondern in einer For-Schliefe als 10 neue Einzelelemente hinzufügst. Während der Datenerfassung entsteht dadurch wahrscheinlich kein zusätzlicher Zeibedarf.<>
[*] Für die Umformung, z.B eines 100 elementigen 1 D Array in ein 10*100 2D-Array gibt es die superschnelle Funktion "Array umformen". Die kennst Du wohl gar nich?<>
[st]Aber wozu sage ich das alles? Konzentriere Dich doch einfach auf den Punkt 1, das wäre doch optimal.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.06.2010, 12:40
Beitrag #3

Andreasser Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Oct 2009

8.5
-
de

2500
Schweiz
Array aus Queue-Elementen erstellen
Salü Lucki, besten Dank für deine Gedanken zum Thema!

In meinen Ausführungen war ich wohl en wenig zu knausrig...
Meine Erfassung geschieht über SerialPort (VISA), an dieser Schnittstelle befindet sich eine Basisstation mit beliebig vielen Gebern.
Das programm liest einen Wert aus dem Puffer, ordnet ihn einem Geber zu und stellt ihn in die entsprechende Queue, am Ende sollen 2D-Arrays aller Messwerte pro Geber verfügbar sein.

zu Punkt1: Ich kann den VISA-Puffer schon beliebig gross machen, nur brauche ich dann nach der Erfassung umso mehr Zeit alle Datenpakete zu prüfen und zu sortieren, kommt so also nicht in Frage.

Punkt 2: Danke, das hatte ich so schon vermutet, das mit der Forschleife geht ebenfalls nicht, da zwei unmittelbar nacheinander folgende Pakete von verschiedenen Gebern sein können.

Punkt 3: Doch die kenne ich schon, die nutzt mir einfach nichts, da ich ja nicht ein 2D-Array von Clustern von 1D Array will

Ich habe jetzt einige SuBVI erstellt, mit denen man bis zu 100000 Elemente parallel abarbeiten kann, hat dann halt doch einige hundert Verbindungen gebraucht, aber es spart enorm Zeit, ein Beispiel mit 650000 1D-Arrays à 7 Elementen dauerte mit der reinen For-Schlaufenlösung etwa 2Minuten, jetzt noch etwa 3s womit ich sehr gut leben kann.
Ich suche momentan noch eventuelle Fehler und wenn sich nichts findet, werde ich diese Funktionen hier posten, vielleicht kann sie ja mal wer brauchen.


Besten Dank für deine Inputs

Gruss
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.10.2010, 11:30 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2010 12:55 von jg.)
Beitrag #4

Andreasser Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Oct 2009

8.5
-
de

2500
Schweiz
Array aus Queue-Elementen erstellen
VI ist gestestet, falls es wer braucht, bitte sehr...
Lv85_img


Angehängte Datei(en)
Sonstige .rar  Queue_mit_1D_Array_Elementen_nach_2D_Array.rar (Größe: 338,81 KB / Downloads: 380)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.10.2010, 11:50
Beitrag #5

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
Array aus Queue-Elementen erstellen
Och ich hätte es mir mal angeschaut. So Optimierungsdinger machen ja manchmal auch Spass... besser als jedes Kreuzworträtsel. Vorallem da du hunderte von Anschlüssen per Hand verdrahtest.O

Leider hast du dich mit dem gewählten rar Format selbst aufs Abstellgleis navigiert. Mellow

Gruß und schönens WE
SeBa

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.10.2010, 12:08 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2010 12:09 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Array aus Queue-Elementen erstellen
Hallo Andreasser & seBa,

mich stört rar nicht - ich musste dafür herrlich lachen...

Andreasser: Hat dir schon mal jemand gesagt, das ForLoops in LV AutoIndexing anbieten? Da müsste man nicht 100 Array-Elemente zu Fuß indizieren und wieder zu einem neuen Array zusammenpacken! Und das Ganze dann noch in 3 subVIs - dein 1000er schießt da ja wirklich den Vogel ab (geschätzte 5 Screens hoch auf meinem FullHD-Display)!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.10.2010, 12:13
Beitrag #7

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
Array aus Queue-Elementen erstellen
' schrieb:mich stört rar nicht
Ja ich weiß... ist ein anderes Thema:Dwollt es nur mal wieder erwähnen.Wink

' schrieb:- ich musste dafür herrlich lachen...

(geschätzte 5 Screens hoch auf meinem FullHD-Display)!
Nach nem Screenshot zum Mitlachen zu fragen, würd wohl den Rahmen sprengen. Ich stells mir einfach vor... --> ...RoflRofl


Gruß SeBa

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.10.2010, 12:28
Beitrag #8

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
Array aus Queue-Elementen erstellen
Das Bild würde schon den Ramen sprengen, jedoch kann man mithilfe des Navigationstools gut alles überblicken Cool (Hab das vorher noch nie gebraucht Wink)
   

Da ich aber auch konstruktiv zur Lösung beitragen möchte hier noch wie du dein VI wesentlich vereinfachen kannst:
   

Nimms mit Humor, im nachhinein ist man immer schlauer Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.10.2010, 12:41 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2010 13:10 von Andreasser.)
Beitrag #9

Andreasser Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Oct 2009

8.5
-
de

2500
Schweiz
Array aus Queue-Elementen erstellen
Big Grin schön dass ich zu eurer Erheiterung etwas beitragen konnte. Ich muss zugeben, als ich dies erschaffen hatte, wars mir selber manchmal zum lachen, aber da mir niemand weiterhelfen konnte, schaute ich, dass ich zu etwas brauchbaren kam...optisch wurde ja alles in ein SubVI gepackt, womit es nicht mehr störend warWink

Seba: Ich habe dies nur gepostet für den Fall, dass jemand soetwas mal sucht, als ich dies tat fand ich leider nichts.
Ich befinde mich somit auf keinem Abstellgleis und wenn du kein rar benutzen willst, ist das dein gutes RechtWink

GerdW: Ich nehme an, du meinst mit autoindexing, dass ich nur eine einzelne Schlaufe einbauen hätte müssen, doch das Problem war, dass genau dies zu extremen Wartezeiten geführt hat. Falls ich dich falsch verstanden habe, würde ich mich gerne mehr über diese Kritik unterhalten.

Edit: Danke, ich habe es gerade nochmals versucht, du hast recht GerdWWink Ich schlage vor, behalten wir doch dieses VI in lustiger ErinnerungBig Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2010, 09:34
Beitrag #10

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Array aus Queue-Elementen erstellen
Kann leider nicht mitlachen, dann bei mir hängt sich Labview schon bein Aufruf dieser VIs auf - was mir vorher noch nie passiert ist. Liegt vielleicht daran, daß ich LV 2010 verwende, oder WIN7 32bit...
Edit: Das "100er.vi" kam jetzt nach ca 2 Minuten Ladezeit doch noch. Habs gleich mal kurz entschlackt:
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Wie auf abgearbeitete Queue warten mez15 11 8.086 28.09.2017 13:02
Letzter Beitrag: TR61
  Gruppieren von anderen Frontpanel Elementen mit Tab Control Ksanto 5 5.160 20.09.2017 08:22
Letzter Beitrag: GerdW
Sad Texthintergrund von Elementen eines Arrays dynamisch ändern hajos118 3 5.067 04.05.2017 10:37
Letzter Beitrag: GerdW
  Datum Uhrzeit Queue DeleteAll 8 5.682 24.03.2017 15:47
Letzter Beitrag: GerdW
  aus Zeichenkette Array erstellen hubem14 5 4.959 16.08.2016 15:50
Letzter Beitrag: Freddy
  Drop-Down Menü zum (de)aktivieren von GUI-Elementen Atlaspremier 11 10.447 12.07.2016 12:10
Letzter Beitrag: Trinitatis

Gehe zu: