Ausgewähltes Abspeichern

Aufbau und Planung von Softwareprojekten, UML, Zustandsautomaten, Softwaremodule, OOP
Ответить
Sandman
beginner
beginner
Сообщения: 12
Зарегистрирован: 18 июн 2009, 17:00
Версия LabVIEW: 8.6
Контактная информация:

Ausgewähltes Abspeichern

Сообщение Sandman »

Hallöchen, :help:

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. :crazy:

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 ! :thank:

viele Grüße
der Sandman
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Eugen Graf »

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
Sandman
beginner
beginner
Сообщения: 12
Зарегистрирован: 18 июн 2009, 17:00
Версия LabVIEW: 8.6
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Sandman »

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 :shok:

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.
Вложения
shift.JPG
shift_2.JPG
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Eugen Graf »

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.
Sandman
beginner
beginner
Сообщения: 12
Зарегистрирован: 18 июн 2009, 17:00
Версия LabVIEW: 8.6
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Sandman »

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 ?
Sandman
beginner
beginner
Сообщения: 12
Зарегистрирован: 18 июн 2009, 17:00
Версия LabVIEW: 8.6
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Sandman »

aha !! Ja geilomat :clap:
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

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Eugen Graf »

Also ich habe es mir ungefähr so vorhgestellt (von Express VIs würde ich dich sowieso abraten):
Вложения
File.png
File.png (9.05 КБ) 13791 просмотр
Sandman
beginner
beginner
Сообщения: 12
Зарегистрирован: 18 июн 2009, 17:00
Версия LabVIEW: 8.6
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Sandman »

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
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Eugen Graf »

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 :labview: 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
Sandman
beginner
beginner
Сообщения: 12
Зарегистрирован: 18 июн 2009, 17:00
Версия LabVIEW: 8.6
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Sandman »

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 :crazy:

Grüße
Sandman
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Eugen Graf »

Ü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.
Sandman
beginner
beginner
Сообщения: 12
Зарегистрирован: 18 июн 2009, 17:00
Версия LabVIEW: 8.6
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Sandman »

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 :super:
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Eugen Graf »

Ich werde nun demnächst ein Tutorial dazu aufnehmen. Aber vorerst kannst du dieses Beispiel nachbauen und versuchen zu verstehen.
Вложения
Queue.png
Queue.png (8.84 КБ) 13775 просмотров
Sandman
beginner
beginner
Сообщения: 12
Зарегистрирован: 18 июн 2009, 17:00
Версия LabVIEW: 8.6
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Sandman »

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

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Ausgewähltes Abspeichern

Сообщение Eugen Graf »

? 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.
Ответить

Вернуться в «Programmiermuster»