LabVIEWForum.de
Stringtabelle - Druckversion

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

Seiten: 1 2 3 4 5 6


RE: Stringtabelle - Hydrogencarbonat - 29.10.2015 13:38

Hi,

innerhalb von 1 Sekunde werden von der Hardware 4 Datenarrays von unterschiedlichen Signalen ausgegeben.
Es ist ja auch zum Testen egal wieviele Werte im Array sind.
Zum Testen habe ich ja auch im VI (Beitrag 47) deswegen erstmal 3 Werte pro Array eingefügt und für die Anzahl der Messungen das ganze mit einer For-Schleife simuliert.
So kann man eigentlich Testen und Programmieren.
Wie das Endprodukt später aussehen soll habe ich in meinen letzten Beitrag gepostet.

Ich füge dennoch das Hauptprogramm (lösche alles unrelevante heraus) an, damit Ihr sehen könnt wie mein Aufbau ist und keine "Verheimlichungen " für eine schnelle Hilfe mehr vorhanden sind.
Im angefüghten VI habe ich alles nochmal detailliert erläutert.

Mit freundlichen Grüßen
HCO


RE: Stringtabelle - jg - 30.10.2015 11:10

Jetzt wird es klarer. Das schreit nach einer Übergabe der Ergebnisse 1 Messung (deine 1444er Arrays) per Queue von der Mess-Schleife zu einer Speicher-Schleife.

Hier ein stark vereinfachter Vorschlag:
[attachment=54442]

Bedenke aber den Speicherverbrauch! Da du zum Abspeichern als ASCII-Datei in dem von deinem Chef gewünschten Format die Daten aller Messungen im Speicher vorhalten musst, brauchst du pro Messvorgang (also pro Sekunde) ca. 34 kB Speicher. Pro Minute sind das dann ca. 2 MByte. Und das ist nur die Datenstruktur der DBL-Werte, zur Wandlung in ASCII brauchst du jedes Mal auch einiges an Speicher.

Gruß, Jens


RE: Stringtabelle - Hydrogencarbonat - 30.10.2015 16:47

Hi,
das hilft mir sehr .
Vielen vielen Dank.

Ich habe dein Beispiel VI in mein Test_HauptVI mit eingefügt und es läuft auch wunderbar.

Nur ich möchte gerne das kontinuierlich in die Logdatei geschrieben wird.

Das Problem ist, ich lege ja in der Eventstruktur quasi den Pfad an und schiebe Ihn hin und er bis ich auf Messung beenden drücke und dann werden die Daten in die Textdatei geschrieben.
Jedoch wenn man wieder auf Messung starten drückt dann werden wieder die alten Daten plus die neuen Daten im Schieberegister angefügt und dann wieder bei Messung beenden in die Textdatei geschrieben. (dann sind die Daten doppelt).
Ich möchte aber nun in der "Speicher While Schleife" direkt die Daten kontinuierlich einlesen, dann wäre das Problem gelöst.

Lösen könnte ich es indem ich den Pfad bzw. die Referenz vor den While Schleifen beim Porgrammstart einfüge, dann würde dies ja nur einmal ausgeführt werden und ich gebe dann den Pfad weiter in die "Speicher Schleife ", wo ich wie schon geschrieben, in die Textdatei kontinuierlich reinschreibe-

Möchte ich jedoch nicht so lösen.
Deswegen ist meine erste Frage wie ich das ohne meinen Vorschlag anzuwenden zu müssen lösen könnte.
Ich müsste ja irgendwie die Referenz von der "Ereignisschleife" in die "Speicher Schleife" bekommen. Würde das wieder mit Queues gehen , indem ich dann die Referenz einmalig reinschiebe und dann in der Speicher-Schleife in eine Schieberegister hineingebe?

Und wie bekomme ich das ganze mit dem Tabellenkopf hin, das muss ja alles dynamisch angepasst werden.

Ich hoffe auf Hilfe.

Gruß HCO


RE: Stringtabelle - jg - 30.10.2015 17:35

Hinweise:
1) Für alle Cluster Typdefs anlegen!
2) Mein Vorschlags-VI sollte dir nur das Grundkonzept zeigen. In Realität sollst du die Speicher-Schleife mit deiner Ereignis-Schleife verheiraten! Das Sammeln der Daten könntest du z.B. im Time-Out-Case der Event-Struktur erledigen. Und schon hast du das Schieberegister mit den Messdaten in der Ereignis-Schleife und kannst es im Event "Messung starten" neu initialisieren. Und das mit dem dynamischen Tabellenkopf, da darfst du dich jetzt erst einmal selber dran versuchen. Genügend Vorschläge hast du inzwischen. Kleiner Tipp: Du weißt mit meinem letzten Vorschlag immer genau, wie viele Messungen durchgeführt wurden, dann das ist jetzt Teil des Daten-Clusters. Du brauchst kein "Modulo 3" mehr.

Gruß, Jens


RE: Stringtabelle - Hydrogencarbonat - 03.11.2015 17:56

Hi,
vielen dank nochmal für deine Tipps.
Habe es so gut wie ich kann umgesetzt und das mit dem Tabellenkopf habe ich auch hinbekommen, sowie die Verheiratung mit meinem Event Case.
Nur ich möchte jedoch die eingelesen Spalten von jedem Signal noch zusätzlich nummerieren.
Das klappt bis 3 Messungen, danach wird es durcheinander.
Meine Logik stimmt in dieser Hinsicht noch nicht so ganz, da ich für jede weitere Messungen eine For Scheife hinzufügen muss. (Habe ich Rot umrandet) Geht jedoch nicht da die Messung bis unendlich gehen soll.

2te und wichtigere Sache: Wenn ich nun die Tabelle in meine Textdatei schreibe dann ist die immer doppelt drin und untereinander. (siehe angehängte Bild), da in meinem Programm die Tabelle immer wieder rangehängt wird.

Muss ich dann das Schieberegister weglassen und dann direkt die Daten im Timeout dauerthaft in die Texdatei schreiben?

Gruß HCO


RE: Stringtabelle - jg - 03.11.2015 22:28

(03.11.2015 17:56 )Hydrogencarbonat schrieb:  Habe es so gut wie ich kann umgesetzt und das mit dem Tabellenkopf habe ich auch hinbekommen, sowie die Verheiratung mit meinem Event Case.
Nur ich möchte jedoch die eingelesen Spalten von jedem Signal noch zusätzlich nummerieren.
Das klappt bis 3 Messungen, danach wird es durcheinander.
Meine Logik stimmt in dieser Hinsicht noch nicht so ganz, da ich für jede weitere Messungen eine For Scheife hinzufügen muss. (Habe ich Rot umrandet) Geht jedoch nicht da die Messung bis unendlich gehen soll.
Dann musst den den Header halt in einer For-Schleife dynamisch erstellen. Auch das hatten wir schon in mehreren Varianten. Und dass dein VI/Messung nicht bis unendlich funktioniert (zwecks Speicherüberlauf), auch das hatten wir schon.
(03.11.2015 17:56 )Hydrogencarbonat schrieb:  2te und wichtigere Sache: Wenn ich nun die Tabelle in meine Textdatei schreibe dann ist die immer doppelt drin und untereinander. (siehe angehängte Bild), da in meinem Programm die Tabelle immer wieder rangehängt wird.
Und zu guter Letzt, das mit dem "Datei überschreiben" per FilePointer auf 0 setzen - auch das hatten wir schon! Das ist aber nicht in deinem VI drinnen. Wall

Gruß, Jens

P.S. Der Abschnitt in und über dem roten Rahmen in deinem VI lässt sich auf das hier vereinfachen:
[attachment=54493]
Deine Fall-Unterscheidung, ob Anzahl der Messungen <=1 ist, ist überflüssig. "Anzahl Messungen" ist mindestens 1!


RE: Stringtabelle - Hydrogencarbonat - 04.11.2015 00:31

Hi,
ja, das mit dem Filepointer habe ich vorhin auch schon bemerkt.

Habe das mit den numerierten Spalten noch anders und umständlicher gelöst.(siehe Anhang)

Das mit den For Schleifen und den Schieberegistern geht einfacher und macht mehr Sinn. (Dein Beispiel)

Vielen Dank nochmal.

Habe vorhin das Prog ein bischen länger laufen lassen und schon nach weniger als 50 Messungen ist der Speicherüberlauf und die
Textdatei wird unlesbar. (siehe Anhang)
Das hätte ich nicht gedacht, das die TXT.datei so schnell überläuft...-.-
Vorgesehen waren schon mehr als 1 Messstunde der Daten po Sekunde.

Was kann ich dageben tun? Nicht das alles umsonst programmiert ist .....

Gruß HCO


RE: Stringtabelle - GerdW - 04.11.2015 08:28

Hallo HCO,

Zitat:Habe vorhin das Prog ein bischen länger laufen lassen und schon nach weniger als 50 Messungen ist der Speicherüberlauf und die Textdatei wird unlesbar. (siehe Anhang)
Wo ist der Text "unlesbar"? Ich kann da alle Werte prima lesen!
Hast du evtl. Notepad zum Anschauen deiner Textdatei verwendet? Dir ist bekannt, dass Notepad überlange Zeilen einfach umbricht? Das es bessere Texteditoren gibt (z.B. Notepad++), die dieses dämliche Verhalten nicht zeigen?
Wall
Wo ist da ein "Speicherüberlauf"? Gab es entsprechende Fehlermeldungen von LabVIEW?

Zitat:Was kann ich dageben tun? Nicht das alles umsonst programmiert ist .....
Das hatten wir doch schon ganz zu Anfang gesagt: ein vernünftiges Format zum Speichern der Daten verwenden!
Wer guckt sich stundenlange Datenhalden schon mit einem Texteditor an… Wall


RE: Stringtabelle - jg - 04.11.2015 09:31

Die Größe der Txt-Datei kann man ziemlich genau vorab bestimmen. Bei deiner aktuellen Variante sind das:
(14*3+1)*1445 = ca. 61 kB pro Sekunde.
Nach 1 Stunde sind das dann ca. 215 MByte nach 1 Stunde.

Gruß, Jens