Funktionsweise des LabVIEW Wireless Sensor Network (WSN) Module Pioneer

Überblick

Note: NI WSN products are not supported beyond LabVIEW 2015. If you have questions on migrating products, contact technical support at ni.com/support.



With the NI LabVIEW Wireless Sensor Network (WSN) Module you can use LabVIEW graphical programming to embed applications on NI WSN measurement nodes to perform custom analysis, embed decision making, and extend battery life. This document explains the execution model of an NI WSN measurement node as well as how to communicate with and debug a LabVIEW WSN application.

Inhalt

Mit dem NI LabVIEW Wireless Sensor Network (WSN) Module Pioneer lässt sich die grafische Programmierung in LabVIEW nutzen, um Programme auf den NI-WSN-Messknoten auszuführen. Damit kann die Batterielaufzeit der Messknoten verlängert, ihre Erfassungsleistung erhöht und die Anbindung von Sensoren realisiert werden. Dieses Dokument erläutert das Ausführungsmodell eines NI-WSN-Knotens sowie die Kommunikation mit einer LabVIEW-WSN-Anwendung und die Vorgehensweise bei der Fehlersuche.

Unterstützte LabVIEW-Funktionen

Das NI LabVIEW Wireless Sensor Network (WSN) Module Pioneer enthält einfache LabVIEW-Programmierstrukturen wie While-Schleifen, For-Schleifen und Case-Strukturen. Darüber hinaus werden Funktionen für Fließkomma-Arithmetik und -Analyse unterstützt, so dass keine detaillierten Kenntnisse von Integer- und Festkommadatentypen mehr nötig sind. Außerdem bietet das LabVIEW WSN Pioneer hyperbolische, exponenzielle und trigonometrische mathematische Funktionen sowie Funktionen für die String-Manipulation. So können Benutzerbenachrichtigungen, die zurück zum Host-Computer übertragen werden, individuell angepasst werden. Außerdem ist LabVIEW WSN so flexibel, dass auch ANSI-C-Code neben dem auf dem Knoten ablaufenden grafischen Code integriert werden kann.

NI-WSN-Messknoten arbeiten mit einem Mikrocontroller des Typs MSP430 von Texas Instruments, der auf niedrigen Energieverbrauch und lange Lebensdauer ausgelegt ist, anstatt auf hohe Prozessorgeschwindigkeit. Aufgrund dessen sind NI-WSN-Knoten nicht so leistungsfähig wie andere Embedded-LabVIEW-Zielsysteme. So enthält LabVIEW WSN keine LabVIEW-Fehlerbehebungswerkzeuge wie den Highlight-Modus oder die Einzelschritt-Verfolgung von Programmcode zur Laufzeit. Stattdessen können für die Fehlersuche String-basierte Benutzerbenachrichtigungen an den Knoten geschickt und von ihm empfangen werden. Das LabVIEW WSN kann Programmcode außerdem nur seriell ausführen, d. h. parallele LabVIEW-Strukturen laufen nicht simultan ab. Wegen der eingeschränkten Ressourcen des Knotens stehen viele LabVIEW-Analysefunktionen, nämlich die in lvanalysis.dll enthaltenen, nicht für dessen Programmierung zur Verfügung. Allerdings können einige dieser Funktionen mithilfe von Funktionen zur Fließkommamathematik nachprogrammiert werden.

 

Ausführungsmodell von NI WSN

NI-WSN-Messknoten nutzen eine ereignisbasierte Ausführungsarchitektur, die mit LabVIEW WSN erweitert werden kann, um das Verhalten eines Knotens anzupassen. Dabei wird die Batterielebensdauer optimiert, indem der Knoten in den Ruhezustand versetzt wird, bis ein Ereignis bearbeitet werden muss (als Router konfigurierte Knoten begeben sich nicht in den Ruhezustand). Das Diagramm in Abbildung 1 zeigt den Zusammenhang zwischen Ausführungszuständen und den jeweiligen Ereignissen, durch die sie ausgelöst werden. Ereignisse, die während der Ausführung eines anderen Zustands auftreten, werden sofort nach Abschluss des aktuellen Zustands behandelt.

 

Abbildung 1: Dieses Diagramm stellt das LabVIEW-WSN-Ausführungsmodell dar, einschließlich Ausführungszuständen und Übergangslogik.

 

Jeder mit LabVIEW programmierbare Zustand in Abbildung 1 wird von einer Case-Struktur in der VI-Vorlage für LabVIEW WSN dargestellt. Um das Verhalten eines WSN-Knotens anzupassen, wird in die entsprechende Case-Struktur einfach LabVIEW- oder C-Code eingefügt.

Abbildung 2: Um das Verhalten eines WSN-Knotens anzupassen, wird in die entsprechende Case-Struktur einfach LabVIEW- oder C-Code eingefügt.

 

Start

Start wird einmalig aufgerufen, wenn der Knoten hochfährt und bevor er eine Verbindung mit dem Gateway aufbaut und sich mit dem Netzwerk verbindet. Im Zustand Start wird das Übertragen von Daten, Fehlerbehebung- oder Benutzernachrichten fehlschlagen, da der Knoten noch nicht mit dem Netzwerk vebunden ist.

Im Zustand Start kommen u. a. folgende Operationen häufig vor:

    • Einstellung des Abtastintervalls
    • Konfiguration von I/O (Thermoelementtypen, Spannungsbereiche usw.)
    • Initialisierung von Programmierstrukturen

Beispiel 1: Konfigurierung des Abtastintervalls mit 2 S/s und des Analogeingangs 0 für einen Spannungsbereich von -10 bis +10 V.

Abbildung 3: Konfigurierung des Abtastintervalls mit dem Konfigurationsknotens in einem WSN-VI

 

Abtastung

Sample, meist der wichtigste Ausführungszustand, wird aufgerufen, wenn der Timer des Abtastintervalls abläuft. Das Abtastintervall kann mit dem Konfigurationsknoten in einem WSN-VI oder, wie im Start-Beispiel in Abbildung 3 gezeigt, von der Eigenschaftenseite des Knotens im LabVIEW-Projekt konfiguriert werden.

Im Zustand Sample kommen u. a. folgende Operationen häufig vor:

    • Lesen und Schreiben von I/O
    • Übertragen von Daten über Funkkanäle
    • Anwendung von Grenzwerten, Deadband-Angaben oder Mittelwertbildung zur Energieeinsparung durch weniger häufige Übertragung
    • Änderung der Abtastrate des Knotens bei Absinken der Batteriespannung auf kritische Pegel
    • Anbindung von Sensoren durch die Umwandlung von Rohdaten in physikalische Einheiten

Beispiel 2: Die Spannung auf Kanal 0 wird erfasst, die Daten werden aber nur übertragen, wenn eine Spannung von 5,5 V überschritten wird. Anderenfalls wird Strom gespart, indem nicht übertragen wird.

Abbildung 4: Erfassung der Spannung auf Kanal 0 und Übertragung von Daten nur, wenn 5,5 V überschritten werden.

DIO-Benachrichtigung

DIO Notifications wird aufgerufen, wenn eine Wertänderung auf einem Digitalkanal auftritt, der mit der Eigenschaft "Generate Notifications" entsprechend konfiguriert wurde. Wertänderungsereignisse können an steigenden oder fallenden Flanken erzeugt werden. Nach dem Eintrill eines solchen Ereignisses wird die DIO Notification zum nächsten möglichen Zeitpunkt ausgeführt. Darauf folgende Wertänderungen, die vor Beginn des Zustands geschehen, werden ignoriert.

Im Zustand DIO Notification kommen u. a. folgende Operationen häufig vor:

    • Ereigniszählung
    • Aktivierung aus dem Ruhezustand, um ein Ereignis zu verarbeiten und darauf zu reagieren

Beispiel 3: Mit der Eigenschaft "Generate Notifications" wird DIO-Kanal 0 konfiguriert, um Ereignisse bei steigenden Flanken zu erzeugen. In den meisten Fällen wird der Code in den Zustand Start platziert.

Abbildung 5: Mit der Eigenschaft "Generate Notifications" wird DIO-Kanal 0 konfiguriert, um Ereignisse bei steigenden Flanken zu erzeugen.

Zuständsänderung im Netzwerk

Network Status Change wird aufgerufen, wenn der Knoten die Verbindung mit dem Gateway aufgebaut oder verloren hat.

Im Zustand Network Status Change kommen u. a. folgende Operationen häufig vor:

    • Benachrichtigung des Hosts über eine bestehende Verbindung (nach deren Aufbau)
    • Änderung des Verhaltens eines Knotens bis die Verbindung wieder aufgebaut wird

Beispiel 4: Der Host wird benachrichtigt, dass eine Netzwerkverbindung aufgebaut wurde.

Abbildung 6: Der Host wird benachrichtigt, dass eine Netzwerkverbindung aufgebaut wurde.

 

Empfangen

Der Status Receive wird aufgerufen, wenn eine Benutzernachricht empfangen wird. Benutzernachrichten werden vom Host gesendet und auf dem Gateway zwischengespeichert. Zum Zeitpunkt der nächsten Funkaktivität des Knotens übermittelt das Gateway die Nachricht an den Knoten. Dies betrifft sowohl die Datenübertragung als auch das weiter unten beschriebene Heartbeat-Signal. Es gibt keine Garantie, dass an den Knoten geschickte Daten dort auch ankommen (Details siehe Abschnitt Kommunikations- und Fehlerbehebungsmethoden).

Im Zustand Receive kommen u. a. folgende Operationen häufig vor:

    • Empfangen und Verarbeiten von Befehlen
    • Aktualisieren von Parameterwerten
    • Übertragung angeforderter Informationen

Beispiel 5: Ein Intervallwert einer Abtastrate wird empfangen, die Nachricht in eine Zahl umgewandelt und die Eigenschaft Abtastintervall aktualisiert.

Abbildung 7: Ein Intervallwert einer Abtastrate wird empfangen, die Nachricht in eine Zahl umgewandelt und die Eigenschaft Abtastintervall aktualisiert.

Heartbeat – Läuft die Herzschlagzeit ab, aktiviert ein Knoten kurz die Funkschnittstelle, um ein Heartbeat-Signal an das Gateway zu senden, damit die Netzwerkverbindung aufrechterhalten wird. Der Timer basiert auf der Eigenschaft Heartbeat Interval, die in einem WSN-VI eingestellt werden kann. Bei jeder Funkübertragung wird der Timer zurückgesetzt.

 

Kommunikations- und Fehlerbehebungsmethoden

LabVIEW WSN bietet eine einfache API für den Datenaustausch zwischen Host und Knoten. Dazu gehört auch die Unterstützung für die Übertragung von I/O-Werten, String-basierten Messungen und Knoteninformationen, etwa über die Batteriespannung.

 

Übertragen und Empfangen von Daten auf dem Knoten

In einem LabVIEW-WSN-VI auf dem WSN-Knoten wird das Objekt Radio Messages zum Senden und Empfangen aller Daten verwendet. Das Lesen und Schreiben auf dem Objekt Radio Messages aktiviert die Funkschnittstelle für Datenübertragung oder -empfang, nachdem der aktuelle Zustand abgeschlossen ist. Auf jeden Kanal eines Radio-Message-Objekts kann während der Ausführung eines Zustands nur einmal geschrieben werden, da die Daten erst gesendet werden, wenn der LabVIEW-Zustand verlassen wird. Kommt das Objekt Radio Messages nicht zum Einsatz, bleibt die Funkschnittstelle ausgeschaltet, außer zur Durchführung des Herzschlags.

 

Abbildung 9: Das Objekt Radio Messages dient zum Übertragen und Empfangen von Daten auf dem Knoten.

 

Übertragen und Empfangen von Daten auf dem Host

Auf dem Host werden I/O-Variablen eingesetzt, um alle Daten zu senden und zu empfangen. Eine Ausnahme sind Benutzer- und Debug-Nachrichten, die mithilfe spezieller WSN-Host-VIs von einem Windows-PC aus verschickt und empfangen werden.

Abbildung 10: Auf dem Host werden alle Einzelpunktdaten mittels I/O-Variablen gesendet und empfangen.

 

Abbildung 11: String-basierte Benutzernachrichten werden mit der WSN-Host-API (nur Windows) übertragen.

 

In den meisten Fällen kann das Gateway Benutzer- und Debug-Nachrichten problemlos zwischen Gateway und Knoten übertragen. Die Übermittlung solcher Nachrichten an einen und von einem Knoten ist allerdings nicht garantiert. Wird eine Nachricht vom Host an einen Knoten geschickt, wird sie in einem FIFO-Speicherpuffer (FIFO, First-In-First-Out) auf dem Gateway abgelegt, das Platz für 40 Nachrichten bietet. Das Gateway versucht dann, jede Nachricht an den entsprechenden Knoten weiterzuleiten. Ist der FIFO voll, wenn der Host versucht eine Benutzernachricht zu verschicken, wird vom WSN-Host-VI ein Fehler gemeldet. Der FIFO wird geleert, indem ein Element nach dem anderen an die Empfängerknoten geschickt wird.

Werden Benutzer- oder Debug-Nachrichten von einem Knoten an den Host gesendet, werden sie in einem Ringpuffer auf dem Gateway gespeichert. Dieser Ringpuffer wird von allen Knoten gemeinsam genutzt und bietet Platz für 40 Nachrichten. Diese werden auf dem Gateway gespeichert, bis sie überschrieben werden oder das Gateway neu gestartet wird.

 

Fehlerbehebung bei LabVIEW-WSN-Anwendungen

Wie bereits erwähnt, werden LabVIEW-Fehlerbehebungswerkzeuge vom LabVIEW WSN Pioneer nicht unterstützt. Jedoch können vom Knoten Debug-Nachrichten mit Informationen über den Zustand der Anwendung, aktuelle Parameterwerte, Warnungen usw. an den Host geschickt werden. Um eine Debug-Nachricht vom Knoten an den Host zu schicken, wird die Nachricht einfach auf den entsprechenden Eingang am Objekt Radio Messages geschrieben. Diese Debug-Nachrichten können im Node-Monitor-Fenster auf dem Host angesehen werden.

Abbildung 11: Um eine Debug-Nachricht vom Knoten an den Host zu übertragen, wird sie auf den Eingang für Debug-Nachrichten am Objekt Radio Messages geschrieben. Die Nachrichten sind dann im Node-Monitor-Fenster auf dem Host sichtbar.

Es ist auch möglich, die eingebaute Benutzer-LED zu schalten, um Informationen direkt auf einem WSN-Knoten darzustellen. Diese LED befindet sich in rechts oben am Messknoten, neben den LEDs zur Anzeige der Signalstärke. Durch An- und Ausschalten an entsprechenden Stellen im Programmcode können Informationen über den Ablauf angezeigt werden.

Abbildung 12: Die Benutzer-LED wird geschaltet, indem ihr aktueller Zustand einfach umgekehrt wird.

Nichtflüchtiger Benutzerspeicher

LabVIEW WSN Pioneer bietet Zugriff auf einen Teil des Flash-Speichers auf den NI-WSN-Knoten, der als Benutzerspeicher bezeichnet wird. Dieser Platz ist für das Speichern von Konfigurationsdaten oder anderen wichtigen Informationen vorgesehen, die Neustarts und Firmware-Updates auf dem Knoten überdauern müssen. So können etwa das gewünschte Heartbeat-Intervall und Abtastintervall im Benutzerspeicher abgelegt und dann bei der Initialisierung des Knotens im Zustand Start aufgerufen werden. Auch Konstanten zur Umwandlung von Sensorwerten können dort gespeichert werden. Die Konfigurationsdaten lassen sich mit Benutzernachrichten vom Host aktualisieren.

Von der Datenprotokollierung im Benutzerspeicher wird abgeraten, da der Flash-Speicher eine begrenzte Anzahl von Lese- und Schreibzyklen (100.000 Löschen-Zyklen pro Sektor) hat. Zwar kann man die Anzahl an Löschen-Zyklen pro Sektor verfolgen, doch der Flash-Speicher auf einem WSN-Knoten ist nicht für so intensiven Lese- und Schreibverkehr konzipiert. Werden Daten kontinuierlich im Benutzerspeicher protokolliert, überschreitet man die spezifizierte Lebensdauer des Flash-Speichers vor der normalen Betriebslebensdauer des Knotens.

 

Fazit

LabVIEW WSN Pioneer verfügt über eine ereignisbasierte Architektur, die sich mittels einer Kombination intuitiver grafischer Programmierung und C einfach erweitern lässt. So können Anwender das Verhalten ihrer NI-WSN-Messknoten individuell anpassen und damit die Batterielebensdauer verlängern, die Erfassungsleistung steigern und die Anbindung von Sensoren realisieren.