le 06-20-2018 04:14 AM
Bonjour,
Dans le cadre d'un stage en recherche et développement, j'aimerais réaliser à l'aide du logiciel LabVIEW un programme permettant de contrôler le temps de passage dans un four des produits convoyés sur chaîne. Dans l'idée, je récupère une valeur booléenne en entrée du four à chaque fois qu'un produit passe devant le détecteur. Cela doit déclencher un chronomètre pour chaque produit (il devrait y avoir 3 à 4 produits simultanément dans le four). En sortie du four, un second capteur détecte le passage du produit et renvoie un autre booléen.
Dans l'esprit je voudrais que celui-ci stoppe le chronomètre en cours le plus ancien. L'objectif étant de pouvoir comparer, en temps réel, les temps chronométrés à une valeur seuil constante ( si l'on dépasse la valeur seuil, cela témoigne d'un blocage d'un ou plusieurs produits dans le four et doit déclencher une alerte sonore).
Une fois les chronomètres stoppés, il n'est pas nécessaire de les garder en mémoire.
Si après cette description vous avez une idée pour réaliser ce programme j'en serais ravi.
Merci d'avance pour votre aide et n'hésitez pas si vous avez des questions 🙂
Résolu ! Accéder à la solution.
le 06-20-2018 07:48 AM
Bonjour Helios73,
j'avais envie de faire un peu de LV et me rappeler un petit peu les machines à états 🙂
J'ai donc fait un vi, sur base d'une machine à états, qui devrait corresspondre à ta demande; les détecteurs entrée/sortie du four sont des boutons poussoirs, tu as la possibilité de faire un reset du compteur de produits enfournés, un gros bouton STOP pour arrêter l'application, un compteur de produit en cours de cuisson, un afficheur de temps de cuisson (affiche la cuisson de l'élément qui vient de sortir du four), une limite max de temps de cuisson au delà de laquelle une alarme est générée 🙂
Je pense que tu as tout, le reste n'est que "cosmétique" 😉
En LV 2014 si ça te convient.
le 06-20-2018 09:19 AM
Bonjour PhilB58,
Tout d’abord, merci beaucoup pour ton aide ;). Ton programme fonctionne bien mais je ne maîtrise pas vraiment la programmation en machine d'état. J'ai donc un peu de mal à le comprendre et à le modifier pour notre utilisation. Est-il possible d'afficher les temps en cours (par exemple si il y a trois colis en même temps dans le four, on pourrait voir défiler les trois compteurs en direct dans un tableau). Un autre point important pour notre application, voilà comment notre booléen d'entrée sera activé : le produit avant d'entrer dans le four va couper un faisceau laser pendant quelques secondes. A l'aide d'une photodiode, cela déclenchera un booléen vrai durant quelques secondes et repassera faux après. Un seul colis doit être détecté pendant le laps de temps où le booléen est vrai. Les prochains colis ne pourront être détectés qu'à partir du moment ou ce booléen sera redevenu faux. Il s'agira du même processus lors de la sortie du colis.
En espérant t'avoir bien exposé les contraintes du système... Encore merci pour ton aide précieuse :).
le 06-20-2018 10:09 AM
re, je ne suis plus au boulot, il fait trop chaud en Belgique
Je regarde ça demain dans la journée, trop d'occupations en ce moment chez moi ... je suis marié
le 06-20-2018 02:20 PM
le 06-21-2018 03:19 AM
Bonjour Ben64,
Merci pour ton aide :). En effet cette modification fonctionne bien pour visualiser les temps des unités au four en direct.
le 06-21-2018 05:34 AM
Nouvelle version 🙂
La gestion des capteurs d'entrée/sortie ne serait pas simple avec une machine à états, j'ai donc choisi de faire une version sur base d'une structure évènement qui semble pas mal fonctionner 😉
Merci à Ben64 pour son astuce de calcul des temps de cuisson, astuce repris dans mon nouveau Vi.
L'idéal serait de gérer les capteurs entrée/sortie dans la seconde boucle While (celle du bas) car la boucle contenant la structure évènement ne tourne pas en continu.
le 06-21-2018 07:43 AM
Merci bien pour cette nouvelle version qui, en effet, est plus simple à comprendre 😉
Il reste cependant un dernier problème pour l'appliquer à notre système. Pour que tu puisses bien le comprendre, j'ai joint une version modifiée de ton programme avec un contrôle et un indicateur permettant de simuler ce que l'on obtient avec le détecteur.
En gros, lorsque le détecteur renvoie un booléen vrai, cela génère un enchaînement sans fin de produits entrant qui s’arrête uniquement lorsque le booléen repasse faux. Dans notre cas, il faudrait que le booléen vrai n'engendre qu'une seule occurrence, indépendamment du temps pendant lequel il est activé. Bien sur, un nouveau produit pourra être détecté, si le booléen est repassé au faux entre temps. Une autre remarque, les boutons du menu ne semblent plus réagir correctement dés lors que l'on ajoute ce nouveau contrôle de l’événement pour simuler le détecteur.
Encore merci pour le temps et l'attention que tu nous accordes 🙂 .
le 06-21-2018 08:02 AM
Et comme ceci????
En fait, dans la structure évènement, tu peux contrôler tout ce que tu veux, le changement de valeur d'une commande, la changement de valeur d'un indicateur, tu vois ça comme tu veux!
Ici, j'ai renommé la commande "controle exécuté automatiquement par le détecteur" en ajoutant "(commande) pour le distinguer de l'indicateur du même nom; ensuite j'ai attaqué en direct l'indicateur sans utiliser de noeud de propriété (inutile dans ce cas) et le système semble parfaitement répondre aux sollicitations sans créer une multitude d'entrées de colis, comme c'était le cas dans ta modif 😉
Voilà, en LV 2017 puisque tu es en 2017!!
le 06-21-2018 08:17 AM
Merci pour cette modification mais pour répondre à notre problématique, il faudrait que ce soit le booléen "Controle executé automatiquement par le detecteur (indicateur) " qui agisse sur la structure événement et non la commande. En effet, lorsque je fais fonctionner mon détecteur (réponse d'une photodiode comparée à un seuil qui renvoie un booléen) je n'ai qu'un indicateur booléen en sortie pour signaler le passage d'un produit :).