LabVIEWForum.de
Einarbeitung LabVIEW / Ablauf / Variablen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Einarbeitung LabVIEW / Ablauf / Variablen (/Thread-Einarbeitung-LabVIEW-Ablauf-Variablen)



Einarbeitung LabVIEW / Ablauf / Variablen - Redegle - 09.12.2011 00:36

Hallo,

bin neu im Forum und hoffe, dass ich meinen Thread im passenden Bereich abgelegt habe. Denke hier passt mein Anliegen am besten rein.

Ich arbeite erst seit kurzem mit Labview und versuche mich momentan etwas einzuarbeiten. Zuvor habe ich bereits mit Visual Studio C und C++ programmiert sowie Mikrocontroller mit C und Assembler. Darin liegt auch wahrscheinlich das Problem, dass ich mich ersteinmal umgewöhnen muss. Bin es gewohnt mit Variablen zu arbeiten auf die man später von "überall" zugreifen kann.

Ich möchte Versuchen mein Problem anhand von einem Beispiel zu erklären.
Ich habe eine while Schleife programmiert welche die Werte einer Formel in ein Array schreibt. Also z.B. gebe ich ein sin(t), Samplerate = 1000 und Messdauer = 2Sekunden. Dann wird mir ein Array mit 2000Werten ausgeben wo im ms Takt der Wert des Sinus steht (Programm im Anhang). Das ganze funktioniert auch ganz gut dauert nur je nach Umfang mehrere Sekunden. Das gesamte Programm befindet sich in einer while Schleife und wird so lange ausgeführt bis ein STOP Button gedrückt wird.

Um zu vermeiden, dass bei jedem neuen Durchlauf die Berechnung erneut ausgeführt wird (Ressourcenfressend) habe ich die while Schleife in eine Case Struktur gepackt. Diese wird von dem Front Panel aus aktiviert. Die Berechnung wird also auf Knopfdruck gestartet. Dieses Array würde ich später gerne verwenden um es z.B. per Soundkarte auszugeben.

Von anderen Programmiersprachen kenne ich es, dass ich auf das Array über eine Adresse (Pointer in C) zugreifen kann. In LabVIEW scheint es mir so, dass die Variable nur so lange existiert, wie die Case Anweisung aktiv ist. Gibt es eine Möglichkeit auf das Array später von einem anderen Punkt aus zuzugreifen?

Würde mich freuen, wenn mir jemand helfen kann.


RE: Einarbeitung LabVIEW / Ablauf / Variablen - Redegle - 09.12.2011 01:02

Das Problem mit der Geschwindigkeit konnte ich weitestgehenst beheben.
Verwende nun den Baustein Replace Array Subset anstatt von Insert Into Array. Der 2tere alloziert bei jedem aufruf Speicher und kopiert das alte Array in den neuen Speicher.

Aber die Hauptfrage steht noch im Raum.


RE: Einarbeitung LabVIEW / Ablauf / Variablen - GerdW - 09.12.2011 10:48

Hallo Redegle,

Grundsatz: In LabVIEW ist der Draht die Variable - THINK DATAFLOW!

Zitat:In LabVIEW scheint es mir so, dass die Variable nur so lange existiert, wie die Case Anweisung aktiv ist.
Nach dem obigen Grundsatz gilt: die Werte werden solange im Speicher gehalten, wie der Draht "aktiv" (d.h. in Benutzung) ist. Wenn er nicht mehr für den Datenfluss erforderlich ist, werden die Werte verworfen. Also: Werte außerhalb der Case-Struktur "speichern" (z.B. in Schieberegistern) und du kannst weiter darauf zugreifen...

P.S.:
- Nach Möglichkeit Snippets oder VIs anhängen statt einfacher Bilder.
- Es gibt eine "1/x"-Funktion...
- Vergleiche nie Floatingpoint-Zahlen auf Gleichheit. Das geht auch in C++ oder Assembler in die Hose...
- Versuche, "einfache" LabVIEW-Funktionen zu verwenden. ExpressVIs sind zwar nett, schränken dich aber auch schnell ein...


RE: Einarbeitung LabVIEW / Ablauf / Variablen - Redegle - 09.12.2011 23:34

Vielen Dank für die Antwort. Das mit den Variablen habe ich mir leider schon so gedacht.

Das mit den Schieberegistern ist ganz klug. Das werde ich dem nächst ausprobieren.

Zu den PSs:

-Das nächste mal werde ich ein VI Anhängen.
-Danke
-Ja das Thema mit den Floatzahlen. Natürlich ist das Vergleichen nicht gerne gesehen. So lange man gewährleisten kann, dass die Zahlen identisch sind klappt das Vergleichen auch. Natürlich ist dies bei vielen komplexeren Rechnung nur sehr schwer bzw. gar nicht mehr zu gewährleisten.
-Werde ich in Zukunft Versuchen zu beherzigen.