Pioneer LabVIEW Wireless Sensor Network (WSN) - Sous le capot

Aperçu

Grâce au Module Pioneer NI LabVIEW Wireless Sensor Network (WSN), tirez parti de la programmation graphique LabVIEW pour embarquer des applications sur les nœuds de mesure NI WSN afin d'allonger l'autonomie de la pile, d'accroître les performances d'acquisition et d'interfacer avec les capteurs. Ce document décrit le modèle d'exécution d'un nœud NI WSN, et explique comment communiquer avec une application LabVIEW WSN et la mettre au point.

Contenu

Jeu de fonctionnalités LabVIEW supportées

Le Module Pioneer NI LabVIEW Wireless Sensor Network (WSN) inclut les structures de programmation LabVIEW de base, comme les boucles While, les boucles For et les structures Condition. Comme il supporte aussi les fonctions mathématiques et d'analyse à virgule flottante, il n'est plus indispensable d'avoir une connaissance approfondie des types de données entier et à virgule fixe. Outre des fonctions mathématiques hyperboliques, exponentielles et trigonométriques, Pioneer LabVIEW WSN fournit des fonctions de manipulation de chaînes afin que vous puissiez personnaliser des messages utilisateur pouvant être retransmis à l'ordinateur hôte. Ce Module LabVIEW WSN offre aussi la souplesse d'intégrer directement du code C ANSI dans le code graphique qui s'exécute sur le nœud.

Les nœuds de mesure NI WSN sont contrôlés par un microcontrôleur TI MSP430 optimisé pour un déploiement à long terme faible consommation plutôt que pour la vitesse du processeur. Du fait que l'emphase a été mise sur le déploiement à long terme plutôt que sur la puissance de calcul, les nœuds NI WSN ont des performances limitées comparés aux autres cibles LabVIEW embarquées. Par exemple, LabVIEW WSN n'inclut pas de fonctionnalités de mise au point de style LabVIEW, comme le mode Animation et le mode pas à pas. Vous pouvez toutefois envoyer et recevoir des messages utilisateur de type chaîne entre l'hôte et le nœud afin de mettre au point l'application déployée. Par ailleurs, comme LabVIEW WSN est limité à une exécution séquentielle, les structures parallèles de LabVIEW ne s'exécutent pas en même temps. En raison des ressources limitées du nœud, la plupart des fonctions d'analyse de LabVIEW (celles qui figurent dans la bibliothèque lvanalysis.dll) ne peuvent pas être utilisées pour programmer le nœud ; vous pouvez toutefois reproduire plusieurs de ces fonctions à l'aide des fonctions mathématiques à virgule flottante qui sont incluses.

 

Modèle d'exécution d'un nœud NI WSN

Les nœuds de mesure NI WSN utilisent une infrastructure d'exécution événementielle dont vous pouvez étendre les capacités avec LabVIEW WSN afin de personnaliser le comportement d'un nœud. Cette infrastructure est conçue pour optimiser la durée de vie de la pile en mettant le nœud en mode sommeil jusqu'à ce qu'il ait besoin de gérer des événements (le mode sommeil n'est pas disponible sur les nœuds configurés en routeurs). Le diagramme de la Figure n°1 indique la relation entre les états d'exécution et les événements qui déclenchent leur exécution. Les événements qui ont lieu durant l'exécution d'un autre état sont gérés dès que celui-ci est terminé.

 

Figure n°1. Ce diagramme représente le modèle d'exécution de LabVIEW WSN, notamment les états d'exécution et la logique de transition.

 

Chaque état de la Figure n°1 pouvant être programmé avec LabVIEW est représenté par une structure Condition dans le VI modèle LabVIEW WSN. Pour personnaliser le comportement d'un nœud NI WSN, il suffit d'ajouter du code LabVIEW ou du code C dans la condition appropriée.

Figure n°2. Personnalisez le comportement d'un nœud NI WSN en ajoutant du code LabVIEW ou du code C dans la condition appropriée.

 

Start

Start est appelé dès que le nœud démarre, avant qu'il n'établisse une connexion avec la passerelle et se joigne au réseau. Dans la condition Start, l'envoi de données, la mise au point et les messages utilisateur échouent car le nœud n'est pas encore connecté au réseau.

Dans la condition Start, les opérations les plus courantes sont les suivantes :

    • Définition de l'intervalle d'échantillonnage
    • Configuration des E/S (types de thermocouples, gammes de tension, et ainsi de suite)
    • Initialisation des structures de programmation

Exemple n°1. Configurez l'intervalle d'échantillonnage à 2 éch./s et l'enrée analogique 0 pour une gamme de tension comprise entre -10 et +10 V.

Figure n°3. Configuration de l'intervalle d'échantillonnage avec le nœud Config d'un VI WSN

 

Sample

Sample, généralement l'état d'exécution principal, est appelé lorsque le timer de l'intervalle d'échantillonnage expire. Configurez l'intervalle d'échantillonnage avec le nœud Config d'un VI WSN, comme le montre l'exemple Start de la Figure n°3, ou à partir de la page de propriétés du nœud dans le projet LabVIEW.

Dans la condition Sample, les opérations les plus courantes sont les suivantes :

    • Lecture et écriture des E/S
    • Envoi de données via des voies radio
    • Exécution de la logique de seuil, de zone morte ou de moyennage dans le but de conserver de l'énergie en minimisant la fréquence des transmissions
    • Changement de la fréquence d'échantillonnage du nœud lorsque la tension de la pile atteint un seuil critique
    • Interfaçage avec les capteurs en convertissant les données brutes en unités ingénieur

Exemple n°2. Acquérez la tension sur la voie 0 et ne transmettez les données que si la tension dépasse 5,5 V. Sinon, abstenez-vous de transmettre afin d'économiser de l'énergie.

Figure n°4. Acquisition de la tension sur la voie 0 et transmission des données si elle dépasse 5,5 V.

DIO Notification

DIO Notification est appelé lorsqu'un événement de changement de valeur se produit sur une ligne numérique configurée avec la propriété Generate Notifications. Vous pouvez générer des événements sur des fronts montants ou descendants. Lorsqu'un événement de changement de valeur numérique se produit, la condition DIO Notification est placée dans une file d'attente en attendant de pouvoir s'exécuter. Les événements de changement de valeur suivants qui ont lieu avant que la condition ne commence à s'exécuter sont ignorés.

Dans la condition DIO Notification, les opérations les plus courantes sont les suivantes :

    • Comptage d’événements
    • Réveil afin de gérer un événement et d'y répondre

Exemple n°3. Utilisez la propriété Generate Notifications pour configurer la voie DIO 0 en vue de générer des événements sur les fronts montants. Dans la plupart des cas, ce code est placé dans la condition Start.

Figure n°5. Utilisation de la propriété Generate Notifications pour configurer la voie DIO 0 en vue de générer des événements sur les fronts montants.

Network Status Change

Network Status Change est appelé lorsque le nœud établit ou perd la connexion avec la passerelle.

Dans la condition Network Status Change, les opérations les plus courantes sont les suivantes :

    • Notification envoyée à l'hôte pour l'avertir qu'une connexion a été établie (dès qu'elle l'est)
    • Modification du comportement d'un nœud jusqu'au rétablissement de la connexion

Exemple n°4. Avertissez l'hôte qu'une connexion réseau a été établie.

Figure n°6. Notification avertissant l'hôte qu'une connexion réseau a été établie.

 

Receive

Receive est appelé sur réception d'un message utilisateur. Les messages utilisateur sont envoyés à partir de l'hôte et stockés sur la passerelle. La passerelle transmet un message au nœud au cours de l'activité radio suivante impliquant le nœud. Cela inclut la transmission de données ou le battement de cœur, comme décrit ci-dessous. Il n'est pas garanti que l'envoi de messages utilisateur à un nœud s'effectuera sans perte de données (pour plus de précisions, reportez-vous à la section intitulée Méthodes de communication et de mise au point).

Dans la condition Receive, les opérations les plus courantes sont les suivantes :

    • Réception et analyse des commandes
    • Mise à jour des valeurs des paramètres
    • Transmission des informations demandées

Exemple n°5. Recevez une valeur d'intervalle de fréquence d'échantillonnage, convertissez le message en nombre et mettez à jour la propriété Sample Interval.

Figure n°7. Réception d'une valeur d'intervalle de fréquence d'échantillonnage, conversion du message en nombre et mise à jour de la propriété Sample Interval.

Heartbeat : lorsque la minuterie 'battement de cœur' expire, un nœud démarre momentanément la radio pour envoyer un signal à la passerelle pour maintenir la connexion réseau. Cette minuterie est basée sur la propriété Heartbeat Interval, que vous pouvez définir dans un VI WSN. La minuterie se réinitialise dès qu'une transmission radio a lieu.

 

Méthodes de communication et de mise au point

LabVIEW WSN fournit une API simple permettant l'échange de données entre l'hôte et le nœud. Cela inclut le support nécessaire à la transmission des valeurs d'E/S, des messages de type chaîne et des informations relatives au nœud, comme la tension de la pile.

 

Transmission et réception de données sur le nœud

Dans un VI LabVIEW WSN, sur le nœud WSN, l'élément Radio Messages est utilisé pour envoyer et recevoir toutes les données. La lecture et l'écriture de l'élément Radio Messages réactive la radio pour qu'elle transmette ou reçoive les données une fois que l'état en cours a terminé son exécution. Pendant l'exécution d'un état, il n'est possible d'écrire qu'une fois dans chaque voie du terminal Radio Message car les données ne sont envoyées que lorsque l'exécution de l'état LabVIEW se termine. Si l'élément Radio Messages n'est pas utilisé, la radio n'est activée que pour transmettre le signal battement de cœur.

 

Figure n°9. L'élément Radio Messages sert à transmettre et à recevoir des données sur le nœud.

 

Transmission et réception de données sur l'hôte

Sur l'hôte, les variables d'E/S sont utilisées pour envoyer et recevoir toutes les données, à l'exception des messages utilisateur et de mise au point, qui sont transmis par un jeu de VIs hôtes WSN à partir d'un PC Windows.

Figure n°10. Sur l'hôte, les variables d'E/S sont utilisées pour envoyer et recevoir toutes les données point par point.

 

Figure n°11. Les messages utilisateur de type chaîne sont transmis via l'API hôte WSN (Windows uniquement).

 

Dans la plupart des cas, la passerelle est capable d'échanger des messages utilisateur et de mise au point avec les nœuds ; toutefois, la transmission de ces messages en direction ou en provenance des nœuds n'est pas garantie. Un message envoyé par l'hôte à un nœud est stocké dans une mémoire FIFO (First-In-First-Out) sur la passerelle, qui peut contenir jusqu'à 40 messages. La passerelle tente ensuite de transmettre chaque message au nœud approprié. Si la FIFO est pleine alors que l'hôte tente d'envoyer un message utilisateur, une erreur est renvoyée par le VI hôte WSN. À chaque fois qu'un élément est envoyé au nœud, cet élément disparaît de la FIFO.

Lorsque des messages utilisateur et de mise au point sont transmis d'un nœud à l'hôte, ils sont stockés dans un buffer circulaire sur la passerelle. Ce buffer circulaire, partagé par tous les nœuds, peut contenir 40 messages. Ces messages sont stockés sur la passerelle jusqu'à ce qu'ils soient écrasés ou que la passerelle soit redémarrée.

 

Mise au point d'applications LabVIEW WSN

Comme mentionné plus haut, les fonctionnalités de mise au point de style LabVIEW ne sont pas supportées par le Pioneer LabVIEW WSN. Néanmoins, à partir du nœud, vous pouvez envoyer des messages de mise au point à l'hôte pour lui fournir des informations sur l'état de votre application, les valeurs actuelles des paramètres, les mises en garde, etc. Pour envoyer un message de mise au point à l'hôte à partir du nœud, il vous suffit d'écrire dans l'entrée 'Send Debug Message' de l'élément Radio Messages. Vous pouvez afficher ces messages de mise au point dans la fenêtre Node Monitor sur l'hôte.

Figure n°12. Pour envoyer un message de mise au point du nœud à l'hôte, écrivez dans l'entrée 'Send Debug Message' de l'élément Radio Messages, puis affichez ces messages de mise au point dans la fenêtre Node Monitor sur l'hôte.

Vous pouvez également changer l'état de la LED User pour fournir des informations sur un nœud WSN déployé. La LED User est située en haut à droite du nœud de mesure, près des LED indiquant la puissance du signal. Des LED User placées à des points spécifiques du code vous permettront de déterminer à quel moment une opération a eu lieu.

Figure n°13. Pour changer l'état de la LED User, il suffit d'inverser son état actuel.

Mémoire utilisateur non volatile

Le Pioneer LabVIEW WSN donne accès à une portion de la mémoire flash sur les nœuds NI WSN appelée mémoire utilisateur. Cet espace mémoire est conçu pour stocker les informations de configuration ou d'autres informations critiques qui doivent être conservées durant les états de mise sous tension et hors tension du nœud et après les mises à jour de son firmware. Par exemple, vous pouvez stocker les paramètres Heartbeat Interval et Sample Interval désirés dans la mémoire utilisateur, et accéder ensuite à ces paramètres dans la condition Start lorsque le nœud s'initialise. Une autre utilisation possible consiste à stocker les constantes de conversion des capteurs. Vous pouvez mettre à jour les données de configuration avec des messages utilisateur provenant de l'hôte.

L'enregistrement des données dans la mémoire utilisateur n'est pas recommandé car la mémoire flash possède un nombre limité de cycles de lecture/écriture (100 000 cycles d'effacement par secteur). Bien qu'il soit possible de faire le suivi du nombre de cycles d'effacement par secteur, la mémoire flash d'un nœud WSN n'est pas conçue pour accommoder un trafic aussi intensif de lectures et d'écritures. Si vous enregistrez continuellement des données dans la mémoire utilisateur, vous dépasserez probablement la durée de vie spécifiée de la mémoire flash avant la durée d'exploitation normale du nœud.

 

Conclusion

Le module Pioneer LabVIEW WSN se caractérise par une infrastructure d'exécution événementielle dont les capacités peuvent être aisément étendues en combinant une programmation graphique intuitive et du code C. Personnalisez le comportement de vos nœuds de mesure NI WSN afin d'étendre l'autonomie de leur pile, d'optimiser les performances d'acquisition et d'interfacer avec les capteurs.