Ausgewähltes Abspeichern
-
- beginner
- Сообщения: 12
- Зарегистрирован: 18 июн 2009, 17:00
- Версия LabVIEW: 8.6
- Контактная информация:
Ausgewähltes Abspeichern
Hallöchen,
ich habe momentan das Problem, dass ich es leider nicht auf die Reihe bekomme, Messwerte nur dann abzuspeichern, wenn sie sich signifikant verändert haben. Solange sie es nicht tun, soll auch kein Wert abgespeichert werden, auch keine Nullen.
Noch sieht mein Ansatz so aus, daß ich ausgehend in einem Sub-VI ( an welchem links die Shift Register angeschlossen werden ) untersuche ob sich der Wert signifikant verändert oder nicht, und wenn das der Fall ist in einer Case-Struktur den Wert ausgebe ( das ist die Ausgabe rechts am Sub-VI) - Die Ausgabe schreibe ich dann zusammen mit dem Index einer While Schleife in ein Array.
Das Problem : ändert sich der Wert nicht signifikant, wird kein Wert ausgegeben, aber dennoch liegt eine Null am Array an, die auch abgespeichert wird und somit wird dennoch Speicherplatz verbraucht.
Eine Funktion, mit der man gezielt eine Matrix aufbauen kann, etwa einen Wert mit einem bestimmten Index versehen und in eine Matrix speichern, dann auf den nächsten Wert mit dem nächsten Index warten, habe ich leider nirgendwo in LabView finden können. ( So habe ich es bisher immer in MatLab gemacht )
Meine Misere liegt im Grunde darin verankert, daß bei einer Case Struktur auch für den Fall "Wert nicht signifikant verändert" ein Wert den Ausgang gelegt werden muss.
Ich habe die Hoffnung, daß eine Event-Struktur mir Abhilfe verschaffen könnte, nur leider reicht die Erklärung in der LabView Hilfe und auch die Beispiele nicht aus, daß ich die Funktionsweise und das Handling dieser Struktur auch nur ansatzweise verstehen würde. Da muss ich zugeben, daß ich nichtmal verstehe, was welche Anschlüsse in der Struktur bedeuten, da ich dafür leider auch in der Hilfe oder in Tutorials keine Beschreibung gefunden habe und ich absolut fachremd bin - meine bisherigen Programmiererfahrungen beschränken sich auf MatLab.
Wenn mich da jemand mit einem Tip auf die richtige Bahn weisen könnte, wäre ich echt dankbar !
viele Grüße
der Sandman
ich habe momentan das Problem, dass ich es leider nicht auf die Reihe bekomme, Messwerte nur dann abzuspeichern, wenn sie sich signifikant verändert haben. Solange sie es nicht tun, soll auch kein Wert abgespeichert werden, auch keine Nullen.
Noch sieht mein Ansatz so aus, daß ich ausgehend in einem Sub-VI ( an welchem links die Shift Register angeschlossen werden ) untersuche ob sich der Wert signifikant verändert oder nicht, und wenn das der Fall ist in einer Case-Struktur den Wert ausgebe ( das ist die Ausgabe rechts am Sub-VI) - Die Ausgabe schreibe ich dann zusammen mit dem Index einer While Schleife in ein Array.
Das Problem : ändert sich der Wert nicht signifikant, wird kein Wert ausgegeben, aber dennoch liegt eine Null am Array an, die auch abgespeichert wird und somit wird dennoch Speicherplatz verbraucht.
Eine Funktion, mit der man gezielt eine Matrix aufbauen kann, etwa einen Wert mit einem bestimmten Index versehen und in eine Matrix speichern, dann auf den nächsten Wert mit dem nächsten Index warten, habe ich leider nirgendwo in LabView finden können. ( So habe ich es bisher immer in MatLab gemacht )
Meine Misere liegt im Grunde darin verankert, daß bei einer Case Struktur auch für den Fall "Wert nicht signifikant verändert" ein Wert den Ausgang gelegt werden muss.
Ich habe die Hoffnung, daß eine Event-Struktur mir Abhilfe verschaffen könnte, nur leider reicht die Erklärung in der LabView Hilfe und auch die Beispiele nicht aus, daß ich die Funktionsweise und das Handling dieser Struktur auch nur ansatzweise verstehen würde. Da muss ich zugeben, daß ich nichtmal verstehe, was welche Anschlüsse in der Struktur bedeuten, da ich dafür leider auch in der Hilfe oder in Tutorials keine Beschreibung gefunden habe und ich absolut fachremd bin - meine bisherigen Programmiererfahrungen beschränken sich auf MatLab.
Wenn mich da jemand mit einem Tip auf die richtige Bahn weisen könnte, wäre ich echt dankbar !
viele Grüße
der Sandman
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Ausgewähltes Abspeichern
Hallo Sandman!
Also erstens hätte ich ein paar Fragen dazu:
1. Wo kommen die Werte her? Benutzereingabe? Irgendein Gerät?
2. Welche Daten sind es? EinCluster? Ein Array? Eine Matrix oder was auch sonst?
3. Wie überprüfst du die Werteänderung? Was meinst du mit signifikanter Änderung? Hast di irgendwelche Schwellwerte dazu benutzt?
4. Welche Aufgabe soll dein Programm überhaupt erfüllen?
5. Hast du schon etwas zum zeigen? Ein VI? Ein Screenshot deines Block Diagramms?
Gruß, eg
Also erstens hätte ich ein paar Fragen dazu:
1. Wo kommen die Werte her? Benutzereingabe? Irgendein Gerät?
2. Welche Daten sind es? EinCluster? Ein Array? Eine Matrix oder was auch sonst?
3. Wie überprüfst du die Werteänderung? Was meinst du mit signifikanter Änderung? Hast di irgendwelche Schwellwerte dazu benutzt?
4. Welche Aufgabe soll dein Programm überhaupt erfüllen?
5. Hast du schon etwas zum zeigen? Ein VI? Ein Screenshot deines Block Diagramms?
Gruß, eg
-
- beginner
- Сообщения: 12
- Зарегистрирован: 18 июн 2009, 17:00
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Ausgewähltes Abspeichern
hi eg,
ja ich hatte schon befürchtet, mich da gar nicht anschaulich genug ausdrücken zu können. Das gesamte Programm drum herum, würde allerdings nur vom Thema ablenken, deshalb habe ich einmal mit shift.jpg das beschriebene SubVI abgebildet und mit Shift_2.jpg dessen Einsatz. Wie bereits beschrieben, bietet der Ansatz keine Lösung, sondern dreht sich nur im Kreis herum
Zum Hintergrund ist zu bemerken, daß Messwerte über einen langen Zeitraum von bis zu 2 Wochen permanent überwacht werden sollen. Das bietet eben die Gefahr, daß die Datensätze viel zu groß werden.
ja ich hatte schon befürchtet, mich da gar nicht anschaulich genug ausdrücken zu können. Das gesamte Programm drum herum, würde allerdings nur vom Thema ablenken, deshalb habe ich einmal mit shift.jpg das beschriebene SubVI abgebildet und mit Shift_2.jpg dessen Einsatz. Wie bereits beschrieben, bietet der Ansatz keine Lösung, sondern dreht sich nur im Kreis herum
Zum Hintergrund ist zu bemerken, daß Messwerte über einen langen Zeitraum von bis zu 2 Wochen permanent überwacht werden sollen. Das bietet eben die Gefahr, daß die Datensätze viel zu groß werden.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Ausgewähltes Abspeichern
Aha, ok, jetzt verstehe ich dein Problem. Am besten machst du die Abspeicherung in die Datei direkt beim Vergleich auf signifikante Änderung. Also schon im SubVI selbst.
-
- beginner
- Сообщения: 12
- Зарегистрирован: 18 июн 2009, 17:00
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Ausgewähltes Abspeichern
hmmm .. ja also da ändert sich der Wert von "Value" ja nicht, sondern wird im Case einfach solange konstant gehalten bis er sich wieder ändert. Außerdem würde die Datei jedes mal überschrieben .. es sei denn es gibt da Tricks die ich noch nicht kenne. Oder meinst Du es nicht so, das Express VI dann in dem Sub VI direkt in der Case-Struktur einzubauen ?
-
- beginner
- Сообщения: 12
- Зарегистрирован: 18 июн 2009, 17:00
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Ausgewähltes Abspeichern
aha !! Ja geilomat
Jetzt weiß ich wie Du es meinst ! War ja nur eine Konfigurationsfrage des Express VI´s
Vielen Dank für den Tip und die schnelle Antwort
Jetzt weiß ich wie Du es meinst ! War ja nur eine Konfigurationsfrage des Express VI´s
Vielen Dank für den Tip und die schnelle Antwort
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Ausgewähltes Abspeichern
Also ich habe es mir ungefähr so vorhgestellt (von Express VIs würde ich dich sowieso abraten):
- Вложения
-
- File.png (9.05 КБ) 13840 просмотров
-
- beginner
- Сообщения: 12
- Зарегистрирован: 18 июн 2009, 17:00
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Ausgewähltes Abspeichern
hmm .. ja das werde ich natürlich auch mal durchtesten, sehr interessant.
Für meine Lösung habe ich nun lediglich das SubVi so geändert, daß ich ein Array im entsprechenden Case anlege. Im richtigen Programm schliesse ich an den Anschluss dann das "Messwerte in Datei schreiben".
Was genau wäre denn das Risioko des Express VI´s ? Also zumindest solange ich es einfach nur anschliessen muss
Für meine Lösung habe ich nun lediglich das SubVi so geändert, daß ich ein Array im entsprechenden Case anlege. Im richtigen Programm schliesse ich an den Anschluss dann das "Messwerte in Datei schreiben".
Was genau wäre denn das Risioko des Express VI´s ? Also zumindest solange ich es einfach nur anschliessen muss
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Ausgewähltes Abspeichern
Express VIs sind manchmal nicht so flexibel, wie man wünschen könnte. Und ja, Express VIs kann man nicht debuggen. Wer weiss was dort drin passiert. Das habe ich hier auch schon mal angedeutet:
http://labviewportal.org/viewtopic.php?f=13&t=118
Auch von lokalen oder globalen Variablen würde ich dich abraten,gerade wegen den Race Conditions. Aber klar, jeder darf so programmieren, wie er will.
Vor allem weil ExpressVIs und auch Variablen in zur Verwendung stehen.
Gerade in deinem Fall willst du also die Daten 2 Wochen lang in einem Array sammeln und dann alle auf ein Mal abspeichern. Denkst du wirklich dein PC RAM reicht dazu aus?
Gruß, eg
http://labviewportal.org/viewtopic.php?f=13&t=118
Auch von lokalen oder globalen Variablen würde ich dich abraten,gerade wegen den Race Conditions. Aber klar, jeder darf so programmieren, wie er will.
Vor allem weil ExpressVIs und auch Variablen in zur Verwendung stehen.
Gerade in deinem Fall willst du also die Daten 2 Wochen lang in einem Array sammeln und dann alle auf ein Mal abspeichern. Denkst du wirklich dein PC RAM reicht dazu aus?
Gruß, eg
-
- beginner
- Сообщения: 12
- Зарегистрирован: 18 июн 2009, 17:00
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Ausgewähltes Abspeichern
ja deine Tips habe ich auch schon gelesen .. und lese ich auch immer wieder, dass die lokalen Variablen wohl nicht so gut sind :( .. nur leider weiß ich nicht, wie ich meine Werte, die ich in einer While Schleife von externen Modulen in Form von Strings abrufe und in Zahlen wandele, anders aus dieser Schleife heraus bekomme, und in anderen Schleifen verwendbar mache... Da fehlt mir das Wissen und die Erfahrung. Denn per Tunnel bekomme ich die ja nur dann zu fassen, wenn die erste Schleife beendet wird.
Fragen über Fragen
Grüße
Sandman
Fragen über Fragen
Grüße
Sandman
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Ausgewähltes Abspeichern
Über die Möglichen Übergabewerkzeuge von Schleife zu Schleife habe ich dort auch geschrieben. Es wären also Queues, Notifiers und User Events.
Ich würde es an deiner Stelle mit einer Queue probieren.
Es wäre aber ein neues Thema wert, denke ich.
Ich würde es an deiner Stelle mit einer Queue probieren.
Es wäre aber ein neues Thema wert, denke ich.
-
- beginner
- Сообщения: 12
- Зарегистрирован: 18 июн 2009, 17:00
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Ausgewähltes Abspeichern
Also dann werd ich mal recherchieren, was Queues, Notifier und User Events überhaupt sind . Wenn da jemand hilfreiche Links parat hat, wär das natürlich klasse
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Ausgewähltes Abspeichern
Ich werde nun demnächst ein Tutorial dazu aufnehmen. Aber vorerst kannst du dieses Beispiel nachbauen und versuchen zu verstehen.
- Вложения
-
- Queue.png (8.84 КБ) 13824 просмотра
-
- beginner
- Сообщения: 12
- Зарегистрирован: 18 июн 2009, 17:00
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Ausgewähltes Abspeichern
Yo also die Nummer mit dem Queues ist eigentlich ja schonmal recht elegant. Ein Haken hat die Sache noch -> will man mehrere Schleifen parallel mit Daten Füttern, muß man die alle in eine große Schleife packen, sonst gibt es eine verschlechterte Auflösung. Ein bisschen irritierend ist der Tooltip. Bei langen Anwendungen, soll man den Queue immer wieder schliessen. Das Schliessen (freigeben) funktioniert aber ja nur außerhalb der Schleife -.-
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Ausgewähltes Abspeichern
? Ich habe dich nicht verstanden. Was meinst du mit mehrere Schleifen parallel füttern? Da sollte man schon pro parallele (Verbraucher-) Schleife eine eigene Queue erstellen.