03-27-2018 09:54 AM - modifié 03-27-2018 09:56 AM
Bonjour à tous,
J'aimerais savoir si vous n'auriez pas des astuces pour réaliser un compteur d'événements.
Je m'explique, j'utilise une Labjack U12 (breadboard with Input/Output for analog and digital) pour acquérir une tension continue sur un dispositif de détection de pluie (avec relais). J'ai 5V en temps sec et 0V quand il détecte de la pluie. Le Labjack fournis des sous-VI permettant d'acquérir la tension selon le channel sur la plaque. Hélas, en fonctionnement la tension varie fortement et j'aimerais dans un premier temps enregistrer les données reçues uniquement lors de l’exécution et remettre à zéro au démarrage. J'aimerais ainsi tester pendant 3 fois que j'ai bien trois '0' d'affilé pour être sûr d'avoir la pluie et pour éviter les données parasites et l'arrêt intempestif du dispositif) :
Je vous remercie d'avance pour vos astuces et idées !
Merci,
GdB
J'aimerais pouvoir
Résolu ! Accéder à la solution.
le 03-27-2018 10:36 AM
Salut GdB,
Juste pour être sûr de bien comprendre ta problématique : tu as un sous-VI qui te renvoie une tension. Si cette tension est nulle, alors cela veut dire que tu as de la pluie et c'est dans ce cas que tu veux faire ton acquisition. Pour être sûr de ne pas commencer l'acquisition trop tôt, tu souhaites vérifier la valeur de tension trois fois d'affilée et elle doit être nulle à chaque fois.
N'hésite pas à me corriger si j'ai mal compris quelque chose 🙂
A+
le 03-27-2018 11:05 AM
Salut Maxime,
Tu as quasiment tout compris. Je précise seulement mes propos. Mon appareil est un Lidar.
Quand l'appareil fonctionne est que le détecteur de pluie détecte de la pluie je veux qui l'arrête, sur cette partie pas de soucis. Malheureusement cette tension peut passer par '0' pendant un cour laps de temps et donc m'indiquer des pluies alors que non.
Pour palier à cela j'aimerais enregistrer 3 '0' d'affilé indiquant à coup sûr une pluie et être ainsi sûr de pouvoir stopper le laser au bon moment.
Merci,
GdB
le 03-27-2018 04:51 PM
Compris.
Est-ce que quelque chose comme ça pourrait faire l'affaire dans ton cas ?
le 03-28-2018 09:32 AM
Merci Maxime ! Ça semble bien fonctionner ! Tout du moins mes données parasites sont mieux filtrées.
Dernière chose, J'ai un VI globale qui tourne à une certaine tempo dans ce VI il y a le fameux sous-VI (utilisation d'une .dll pour communiquer avec la Labjack). J'ai ajouté le registre à décalage et ordonne l'arrêt si nécessaire. J'aurais aimé pouvoir externaliser ou encapsuler tout cette détection cela dans un autre sous-Vi (question de place et de lisibilité) mais la configuration que j'utilise ne le permet pas.
J'ai besoin d'un while pour faire intervenir les registres à décalages mais si je le met dans un sous-Vi de mon VI global eh bien au démarrage je perd la main est tourne en boucle (je suppose) dans la boucle détection. J'ai pensé alors à une variable globale mais je n'arrive pas à l'appliquer.
Aurais-tu une autre astuce pour paralléliser la détection au VI globale sans le ralentir (question de race condition?)
En tout cas un grand merci pour cette première solution ! 🙂
le 03-28-2018 09:53 AM
Hello GdB,
Content de voir que la première solution fonctionne 🙂
SI je comprends bien ta deuxième problématique, tu voudrais te "débarasser" de la boucle while pour ne pas bloquer ton VI ? Dans tous les cas il te faudra une boucle pour pouvoir tester ta valeur plusieurs fois, mais on peut arranger ça mieux en effet. Pourrais-tu stp nous joindre ton projet global, ou une version simplifiée pour qu'on puisse y jeter un oeil ? Ce serait plus simple de te guider à partir d'une base.
Merci.
le 03-28-2018 01:09 PM
Voici en pièce-jointe le VI global, je n'ai pas mis les autres sous-VI je ne pense pas qu'ils influeront. Le VI est en LV2017, dis moi si je dois te le rétro-convertir ?
//
Et en parallèle de tout cela (car refaire un topic juste pour une autre petite question, je ne sais pas si c'est judicieux) ... J'aimerais pouvoir faire un Datalogger qui m'enregistre toutes les erreurs Pluie/Radar/Low Water avec la date de leur apparition dans un fichier texte qui s’incrémentera en continu.
Ex : "28/03/2018 - 20h00m60sec - Pluie" la typologie peut évidement changer.
Voilà j'espère ne pas être trop exigeant !
GdB
le 03-28-2018 02:17 PM
Merci !
Avant de proposer un truc j'ai besoin de comprendre 2, 3 trucs :
le 03-29-2018 03:03 AM
1. Je ne pense pas avoir bien compris ta question mais si tu parles de la machine d'état, oui après chaque événement j'agis en changeant via la case struct les paramètres en envoyant les commandes SCIPI au Laser. Il n'y a pas à proprement parler de mesure mais des changements de modes du fonctionnement du Laser.
2. Le Status_registers.vi est en effet un Vi maison.Pour faire simple ceux sont deux tableaux de même dimension, d'un côté le laser renvoi le status registers (code binaire) indiquant les erreurs et l'autre côté un tableau avec toutes les erreurs listées. Si 1 alors erreur active sinon 0 inactive puis j'affiche ou non les erreurs dans mon onglet "Description error".
le
03-29-2018
07:58 AM
- dernière modification le
05-04-2025
06:18 PM
par
Content Cleaner
Un exemple de ce que je ferais (voir PJ).
Pour le fichier de log, il te suffit de formater une chaîne de caractères avec ta date et ton alerte puis d'écrire tout ça dans un fichier texte. Tu trouveras plus d'informations ici : https://www.ni.com/docs/fr-FR/bundle/labview/page/creating-text-files.html
N'hésite pas si tu as des questions 🙂