LabVIEWForum.de
Signalverlaufslänge begrenzen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Signalverlaufslänge begrenzen (/Thread-Signalverlaufslaenge-begrenzen)



Signalverlaufslänge begrenzen - Hasenfuss - 25.04.2016 12:24

Hallo,

vor einiger Zeit habe ich mir mir Hilfe von Euch eine FGV zum Abspeichern von Messwerten entwickelt. Darin werden die Daten in einem Variant gespeichert (siehe Bild Variant-Lösung). Dies funktioniert soweit ganz gut. Leider habe ich das Problem, dass ich Messwerte mit unterschiedlichen Zeitbasen habe. Labview bietet von sich aus schon einge VIs zur Signalverarbeitung an. Dort habe ich mir einen Signalverlauf definiert, ihm sogar ein Attribut "NI_ChannelName" übergeben und kann auch das dt unterschiedlich setzen.

Jetzt bekomme ich von meiner Messhardware aber stets neue Daten und das Messwertarray soll nicht unendlich lang werden. Wie in dem anderen Bild zu sehen ist, habe ich zunächst ein Array initialisiert, in den Signalverlauf geschrieben und zweimal Messwerte angehängt - ähnlich wie in dem Bild 1 zu sehen ist. Ich musste aber damit mit "Signalverlaufskomponente lesen" und "Signalverlauf erstellen" arbeiten, was ich etwas umständlich finde. Gibt es vielleicht eine bessere Möglichkeit, an einen bestehenden Signalverlauf etwas anzuhängen und vorne zu kürzen oder ist der von mir gewählte Weg eine gute Lösung?

Für ein paar Tipps wäre ich sehr dankbar.


RE: Signalverlaufslänge begrenzen - Lucki - 25.04.2016 13:00

Wenn die Messwerte Einzelwerte vom Format DBL sind, dann erfordert die Begrenzung der Arraylänge keinerlei Programmierkünste:
Verwende die Funktion "Data Queue PtByPt" in: Signalverarbeitung/PtToPt/Weitere Funkt.
Wenn die Messwerte selbst schon Arrays sind, dann For-Schleife benutzen.
Für andere Datenformate ließen sich auch normale Queues verwenden. Es gibt dort die Funktion "Verlustbehaftetes Einschreiben", bei der das älteste Element entfernt wird, wenn die max. Queuegröße erreicht ist. Lesen des Arrays mit Queuestatus.


RE: Signalverlaufslänge begrenzen - Hasenfuss - 25.04.2016 13:58

Hi,

danke für Deine Antwort. Ich hab mal in die von Dir vorgeschlagene Funktion reingeschaut. Das ist ja auch "nur" eine FGV, die initialisiert wird mit einer fixen Länge und dann wird auch immer das Array um 1 rotiert und ein neues Element angefügt, letztlich das gleiche wie bei mir. Das Problem bei "Data Queue PtByPt" ist, dass ich keine weiteren Attribute zum Signalverlauf speichern kann. Bei den Signalveralufsfunktionen kann ich einfach auch eigene Attribute definieren und beim Variant-Cluster ginge das auch, die PtByPt-Funktionen unterstützt das leider nicht.


RE: Signalverlaufslänge begrenzen - jg - 25.04.2016 14:09

Wenn du beim Signalverlauf bleiben willst, dann wird dir nicht viel anderes übrig bleiben, als es so zu machen, wie du es zeigst (ie Cluster aufsplitten, Array abändern, Cluster zusammenfügen).

Gruß, Jens


RE: Signalverlaufslänge begrenzen - Lucki - 26.04.2016 13:40

Weitere sichere Möglichkeit, die Zeitinformation zu behalten: Die ankommenden Signalverläufe in Arrays of [X,Y]-Cluster zu konvertieren und dann das zusammengefügte Cluster-Array in der Größe beschränken. (Funktion dafür in: Signalverlauf/analog).