EP Basics Grafische Programmierumgebung: Mit LabVIEW Messdaten numerisch verarbeiten

Ein Gastbeitrag von Prof. Dr.-Ing. Jörg Böttcher

Anbieter zum Thema

Mit LabVIEW lassen sich Messdaten effizient numerisch verarbeiten. Dem Anwender stehen schnell implementierbare Programmstrukturen und passende Bibliotheken bereit.

Numerische Messdaten lassen sich mit einer grafischen Programmierumgebung auswerten. Hier unterstützt beispielsweise LabVIEW.
Numerische Messdaten lassen sich mit einer grafischen Programmierumgebung auswerten. Hier unterstützt beispielsweise LabVIEW.
(Bild: (c) Kzenon - stock.adobe.com)

Projekte mit LabVIEW werden typischerweise in einem Projekt-Explorer verwaltet. Dieser speichert seine Daten in einer entsprechenden Projektdatei mit der Dateikennung *.lvproj. Die eigentlichen LabVIEW-Programme befinden sich in eigenen Dateien mit der Kennung *.vi. „vi“ steht hierbei für „virtual instrument“ und lässt den ursprünglichen Hintergrund von LabVIEW erkennen, bei dem es primär um die Programmierung PC-basierter, also „virtueller“ Messgeräte ging. Ein LabVIEW-Projekt kann aus minimal einer VI-Datei bestehen - in der Praxis sind es jedoch meist mehrere, unter denen eines als Hauptprogramm fungiert, das die anderen als SUB-VIs integriert.

Bild 1: 
LabVIEW-Projekt-
Explorer mit Block­diagramm und 
Frontpanel.
Bild 1: 
LabVIEW-Projekt-
Explorer mit Block­diagramm und 
Frontpanel.
(Bild: Prof. Böttcher)

Bild 1 zeigt den mit einer Projektdatei geöffneten Projekt-Explorer zusammen mit zwei weiteren Fenstern, die zu einer VI-Datei gehören. Es handelt sich hierbei einerseits um das Frontpanel, welches beim Programmablauf die Bedienoberfläche darstellt, also den Teil des Programms, den der Benutzer sieht und bedient. Andererseits ist das Blockdiagramm zu sehen, welches das „Innenleben“ des Programms ausmacht, worunter der exakte Programmablauf und sämtliche Verarbeitungs- und Rechenoperationen zu verstehen sind.

Bild 2: 
Die Funktionspalette in LabVIEW.
Bild 2: 
Die Funktionspalette in LabVIEW.
(Bild: Prof. Böttcher)

Frontpanel und Blockdiagramm gehören stets zusammen und werden immer gleichzeitig in derselben VI-Datei abgespeichert. Zum Programmieren von Funktionen im Blockdiagramm stellt LabVIEW die sog. Funktionenpalette zur Verfügung, welche exemplarisch in Bild 2 dargestellt ist.

Im Projekt-Explorer können aus einzelnen oder aus einem Verbund mehrerer VI-Dateien auch außerhalb der LabVIEW-Entwicklungsumgebung allein ablauffähige Applikationen generiert werden. Je nach VI-Einstellung hierbei können sämtliche in der normalen Entwicklungsumgebung vorhandenen Bedienleisten dabei entfallen, so dass nur noch die vom Programmierer erstellte Bedienoberfläche sichtbar ist; auch das Blockdiagramm bleibt dem Anwender dann verborgen. Der Ablauf derartiger Stand-alone-Applikationen erfordert nur noch die vorherige Installation einer kostenfrei verfügbaren Runtime Machine auf dem Zielrechner.

Ein Beispiel: Ein sehr einfache Blockdiagramm

Zur Erläuterung des in Bild 1 gezeigten einfachem Blockdiagramms: Das mit einem grauen Rahmen versehene Rechteck stellt eine While-Scheife dar. Sie wird so oft durchlaufen, bis eine am roten Punkt eingehende Endemeldung in Form eines boolschen False-Werts einläuft. „Durchlaufen“ meint in einem LabVIEW-Blockdiagramm, dass alle grafischen Elemente in einer Reihenfolge abgearbeitet werden, die grob von links nach rechts strukturiert ist oder durch die Daten führenden Verbindungsdrähte vorgegeben wird. Ein Verbindungsdraht verbindet immer einen (meist rechts angeordneten) Elementausgang mit einem oder mehreren (meist links angeordneten) Elementeingängen.

Zum virtuellen Verdrahten dient ein Drahtrollensymbol in der Werkzeugpalette. Je nach Datentyp sind die Verbindungsdrähte in unterschiedlichen Farben dargestellt. Boolesche Werte wie bei der Endebedingung der Schleife werden beispielsweise grün dargestellt, Orange wird für einen numerischen Wert im Fließkommaformat verwendet. Zum Verständnis des in Bild 1 aufgeführten kleinen Programms ist noch wichtig zu wissen, dass für jedes im Frontpanel enthaltene Anzeige- und Bedienelement ein Platzhaltersymbol im Blockdiagramm automatisch angelegt wird, welches über entsprechende Aus- und Eingänge ebenfalls verdrahtet werden kann.

Bild 3: 
Ein einfaches 
LabVIEW-Beispiel­programm.
Bild 3: 
Ein einfaches 
LabVIEW-Beispiel­programm.
(Bild: Prof. Böttcher)

Bild 3 zeigt eine leicht erweiterte Programmversion, um auch den Verlauf der am Bedienknopf eingegeben Werte über der Zeit darzustellen. Hierzu wurden je ein Signalverlaufsdiagramm innerhalb der Schleife und ein Signalverlaufsgraph außerhalb eingefügt. Der Unterschied im Programmablauf besteht darin, dass das Signalverlaufsdiagramm bei jedem Schleifendurchlauf mit einem neuen Wert bestückt wird. Im Diagramm läuft die Kurve kontinuierlich weiter. Sie wird durch das Diagrammfenster geschoben, so dass man je nach Konfiguration immer die jüngste Historie „live“ sehen kann. Im Gegensatz dazu wird der Signalverlaufsgraph erst nach Verlassen der Schleife - also nach Drücken des „BEENDEN“-Knopfs - mit Daten bestückt und stellt diese in einem Vorgang dar.

Das ist allerdings nur sinnvoll, wenn auch alle darzustellenden Daten auf einmal übergeben werden. Dies erfolgt durch ein Array als Datentyp. Man könnte als Programmierer mit entsprechende Array-Funktionen das Array von Schleifendurchlauf zu Schleifendurchlauf selbst zusammenbauen. Viel eleganter und einfacher überlässt man dies jedoch der Autoindizierung von LabVIEW-Schleifen. Diese bewirkt, dass LabVIEW automatisch ein Array erstellt, das bei jedem Schleifendurchlauf den über den Verbindungsdraht ausgegebenen Wert in eine neue Arrayposition (unter neuen Index) speichert.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Das Drahtstück für das Array rechts von der Schleife ist dicker als der Draht für einen einfachen Wert innerhalb der Schleife. Signalverlaufsdiagramme arbeiten standardmäßig mit einfachen numerischen Datentypen am Eingang, während Signalverlaufsgraphen Arrays benötigen (von alternativen Möglichkeiten mit Clustern oder speziellen Signalverlaufsdatentypen abgesehen).

Im Tunnelmodus ein Array übergeben

Eine Autoindizierung ist auch für an die Schleife – meist links dann platziert – zu übergebende Daten möglich. So kann man bei entsprechend anders konfiguriertem Tunnelmodus ein Array übergeben, aus dem dann automatisch und beginnend mit der ersten Arrayposition (was bei LabVIEW immer dem Index 0 entspricht) in jedem Schleifendurchlauf ein neuer Wert für die schleifeninterne Verarbeitung übernommen wird. Wird der Tunnelmodus „Indizieren“ nicht aktiviert, so wird im Falle der Datenübergabe an die Schleife immer das komplette Array in das Schleifeninnere übergeben oder im Falle der Datenausgabe aus der Schleife heraus der im letzten Schleifendurchlauf berechnete Wert (vom dritten Tunnelmodus „Verknüpfen“ abgesehen).

Eine zusätzliche Funktion wurde mit dem im Schleifenkörper inkl. Eingangskonstante links oben platzierten Symbol ebenfalls noch eingeführt. Es handelt sich um eine Wartefunktion, welche die am Eingang übergebene Anzahl von Millisekunden wartet, sobald LabVIEW in der Programmausführung darauf stößt. In unserem Fall erfolgt dies in jedem Schleifendurchlauf einmal, woraufhin 1.000 Millisekunden, also eine Sekunde gewartet wird. Das Signalverlaufsdiagramm wird also im Abstand von jeweils einer Sekunde mit einem neuen Wert bestückt.

Bild 4: 
Verrauschtes Sinussignal vor und nach einer einfachen FIR-Filterung.
Bild 4: 
Verrauschtes Sinussignal vor und nach einer einfachen FIR-Filterung.
(Bild: Prof. Böttcher)

Digitale Filter berechnen aus einer am Eingang anliegenden Abtastfolge von xi eine Ausgangsfolge von yi. xi entsteht direkt aus der Abtastung einer Messgröße oder wurde in vorangegangenen Rechenoperationen aus einer oder mehreren solchen gewonnen. Wichtig ist, dass es sich hierbei immer um Signalverläufe über der Zeit handelt. Digitale Filter arbeiten in der Form einer Schleife, bei der in jedem Schleifendurchlauf i ein neues yi ermittelt und ausgegeben wird. Die erste nichtrekursive Variante (Finite Impulse Response Filter, FIR) eines digitalen Filters greift bei der Berechnung des yi auf mehrere zuletzt eingelesene Eingangswerte zurück und zwar in Form einer Summation mit entsprechenden Gewichtungs-Koeffizienten ak (Formel 1):

0108738986 (Bild: Formel 1)

N ist die Ordnung des Filters und gibt an, wie weit man in die Vergangenheit bei der Berechnung des yi im i-ten Schleifendurchlauf geht. Ein Filter vierter Ordnung beispielsweise wird die Eingangswerte xi-4 bis xi in die Berechnung des aktuellen yi einbeziehen. Aus der Vergangenheit benötigte Eingangswerte, die in den ersten Schleifendurchläufen noch nicht vorliegen, werden zu 0 angenommen. Ein sehr einfaches Beispiel ist eine gleitende Mittelwertbildung, um damit verrauschte Signale zu glätten. Dies könnte in einem konkreten Fall so aussehen (Formel 2):

0108738985 (Bild: Formel 2)

Das nichtrekursive Filter bildet einen Mittelwert des jeweils aktuellen Werts mit den drei vorangegangenen. Bild 4 zeigt links ein verrauschtes Sinussignal mit einer Amplitude von 1 V und rechts das Ergebnis nach einer derartigen Filterung. Die Abtastrate betrug 100 Hz. Leistungsfähiger bei gleicher Filterordnung sind sog. rekursive Filter, die durch ihre Rückkopplungsstruktur eine Art Gedächtnis aufweisen. Sie werden im Englischen auch Infinite Impulse Response Filter (IIR) genannt. Ihre Rechenvorschrift lautet (Formel 3):

0108738984 (Bild: Formel 3)

Häufig benötigte Funktionen mit optimierten Filterkoeffizienten

Bild 5: 
LabVIEW-Funktionen für Butterworth-Filter und allgemeine IIR-Filter.
Bild 5: 
LabVIEW-Funktionen für Butterworth-Filter und allgemeine IIR-Filter.
(Bild: Prof. Böttcher)

Die erste Summe ist identisch zum nichtrekursiven Filter. Hinzu kommt eine zweite Summe, in der die in M vorangegangenen Schleifendurchläufen bereits berechneten Ausgangswerte mit entsprechenden Gewichten bk einbezogen werden. Der größere Wert von N und M ergibt die Ordnung des Filters. Dass die zweite Summe erst ab k = 1 beginnen kann, ist offensichtlich: Für k = 0 stünde ansonsten auf der rechten Seite ein yi-0 = yi, was jedoch in diesem Schritt erst auf der linken Seite zu berechnen ist.

Bild 5 zeigt rechts eine LabVIEW-Funktion zur Verrechnung eines Eingangsarrays X mit einem IIR-Filter, wobei die Koeffizienten gemäß Formel 3 über entsprechende Eingänge (ebenfalls jeweils ein Array) bestimmt werden. Für häufig benötigte Funktionen, wie Tief-/Hoch-/Bandpassfilterungen, finden sich in der Literatur optimierte Filterkoeffizienten. So für den Butterworth-Filter, den es neben anderen als eigenständigen LabVIEW-Funktionsblock gibt (Bild 5 links).

Bild 6: 
LabVIEW-Funktionen zur Spektralanalyse und Beispielspek­trum eines Impulses.
Bild 6: 
LabVIEW-Funktionen zur Spektralanalyse und Beispielspek­trum eines Impulses.
(Bild: Prof. Böttcher)

Spektralanalyse Jedes periodische Signal x(t) der Frequenz f0 ist zusammengesetzt als unendliche Summe einzelner Sinus- und Cosinusschwingungen, die als ganzzahlige Vielfache von f0 vorliegen. In der Mathematik ist das die Fourier-Reihe. Die meisten Signale in der Messdatenerfassung sind jedoch nicht periodisch. Tritt ein Signal überhaupt nur zu bestimmten Zeitpunkten auf und verschwindet wieder, spricht man von einem transienten Signal. Für nicht-periodische Signale lassen sich Spektren angeben. In der Praxis kann immer nur einen zeitlicher Ausschnitt betrachtet werden, ein Fenster, und zu diesem ein Spektrum ermittelt. Man tut stets so, als hätte man ein transientes Signal, das außerhalb des betrachteten Fensters 0 ist. Im Unterschied zu periodischen Signalen weisen transiente Signale ein sog. kontinuierliches Spektrum über den gesamten Frequenzbereich auf. Das mathematische Werkzeug zur Ermittlung dieser Spektralanteile ist die Fouriertransformation, in ihrer numerischen Form als Diskrete Fouriertransformation (DFT) oder in einer optimierten Implementierung als Fast Fourier Transformatioon (FFT) bekannt (Formel 4):

0108738975 (Bild: Formel 4)

Bild 6 zeigt unten eine LabVIEW-Funktion zur Berechnung des Spektrums eines am Eingang „Signal (V)“ anliegenden Arrays, wobei neben dem Amplitudenspektrum (Formel 4, jedoch noch umgerechnet auf Effektivwerte) auch das Phasenspektrum ermittelt wird. Oben im Bild ist exemplarisch das berechnete Amplitudenspektrum eines einmaligen Impulses mit 100 Abtastwerten gezeigt.

Der Autor des Beitrags ist Herausgeber eines Open-Access-Online-Kompendiums mit einem Multiple-Choice-Zertifikatstest.

Quellen

Jörg Böttcher: Kompendium Messdatenerfassung und -auswertung. ISBN 978-3-7386-2255-3 (Paperback) oder ISBN 978-3-7392-7714-1 (E-Book), Verlag: Books on Demand (www.bod.de).

Jörg Böttcher: Kompendium Messtechnik und Sensorik (2. Auflage). ISBN 9783751932967 (Paperback) oder ISBN 9783752632491 (E-Book), Verlag: Books on Demand (www.bod.de).

* Prof. Dr.-Ing Jörg Böttcher hat eine Professur für Regelungstechnik und Elektrische Messtechnik an der Universität der Bundeswehr München inne.

(ID:48801274)