le 06-09-2016 03:05 AM
Bonjour,
Ca fait un jour que je cherche pourtant je suis sûr que c'est super simple... Quand je fais une execution en continu j'aimerais arrêter mon sous-VI après la première execution mais sans arrêter mon VI Principal...
Le but étant de prendre une sorte de "photo" de l'heure à laquelle j'ai éxecuté le programme, et les courants utilisé pour pouvoir générer un rapport.
ma question est: Est ce qu'il y a une commande ou un test pour dire "Si tu as une valeur en entrée de cet indicateur alors tu arrête le SOUS-VI UNIQUEMENT"? merci de vos prochaine réponses.
- Mon VI complet (non executable car il y a un sous VI et des sous VI Driver GPD2303 qui ont été "modifié"
- Mon Sous-VI que je veux arrêter après un bref délais pendant l'execution continu.
Résolu ! Accéder à la solution.
le 06-09-2016 05:17 AM
Non même pas en fait. Car il me faudrait rajouter pas mal de chose. La meilleur solution ce serait que le rapport qui comporte "Courant 1, 2, Nom de la carte, Date d'execution" fasse comme un screenshot de ces données dès que j'appuie sur le bouton OUTPUT, mais est ce possible?
le 06-10-2016 03:38 AM
Bonjour Robin,
Tu parles d'executer ton VI en continu, tu utilises l'icône ci-dessous pour lancer l'execution de ton VI ?
Si tu veux executer ton VI principale en continu mais un sous-VI pourquoi ne pas faire comme ceci (sous Vi en dehors de la boucle while) :
Et lancer ton VI principale avec cet icône:
Bonne journée,
Valentin
Certified LabVIEW Architect
Certified TestStand Architect
Certified LabWindowsCVI Developer
National Instruments France
le 06-10-2016 07:39 AM
Bonjour, merci pour ta réponse mais cela ne résoud pas mon problème:
- Mon sous VI dépend des informations qu'il reçoit du sous-VI, donc il est relié et n'est pas executer si je suis ton exemple.
Ca résoud le problème de mon "Actual Current" qui s'affiche mais je ne peux plus avoir accès au sous-VI qui doit me donner mon "Report Current" qui doit être une donnée fixe. En gros:
Quand j'envoie 12V / 3.3V sur ma carte j'ai un courant, je veux afficher le courant que j'ai au moment où j'envois 12V / 3.3V (Dans mon sous-VI, donc après execution il s'arrete) et je veux afficher le courant actuel (Dans mon VI principal, qui lui varie tout le temps).
J'envois un screenshot du problème avec ta méthode. (pas d'éxecution de mon Sous-VI)
le 06-10-2016 08:08 AM
Si besoin le VI dans lequel j'utilise ta méthode.
le 06-10-2016 08:53 AM
La solution donnée par Valentin est la bonne.
Faire tourner un vi en continu par la fleche run continuously est l'équivalent de faire avancer une voiture avec le démarreur, ca fonctionne mais c'est pas idéal.
Si le programme doit s'executer plusieurs fois pour mettre à jour des valeurs alors il faut le mettre dans une boucle qui permettra de fermer correctement les ressources.
Je n'ai regardé qu'un des screen shots rapidement et j'y ai vu une ressource VISA. Constamment ouvrir et fermer une ressource VISA n'est pas la bonne manière de faire. On ouvre la ressource, on l'utilise puis on la ferme lorsqu'on a terminé.
Si il y a un calcul qui ne doit être executé que la première fois, il suffit de le mettre dans un structure condition relié à l'itération de la boucle ou bien à une fonction "first run?"
Sinon il y a plein de tutoriel sur le site NI pour démarrer un programme et réaliser des boucles et acquisition de donnée.
Cordialement
le 06-10-2016 09:53 AM
Bonjour,
D'accord je vais rajouter un "close" pour ma Ressource VISA, cependant même en reliant l'itération cela ne résoud pas mon cas.
Admettons que je réalise le run de mon sous-VI à i=10(un peu plus stabilisé que pour 1), Je vais obtenir un courant "Report Current" qui va bien rester le même comme voulu pour mes deux channels, je vais obtenir le nom de la carte et l'heure à laquelle la carte a été testé.
Les deux seul problèmes c'est qu'après avoir dépasser l'itération numéro 10, je ne peux plus arrêter mon courant et ma tension de sortir, le bouton n'a plus d'effet je suis obligé de fermer l'execution et la réouvrir avec le bouton en position OFF. Et je pense que cela entraîne aussi l'arrêt de "Actual Current, Actual Voltage" des deux channels. Cela arrête peut être même tout ce qui peut être modifier durant l'execution en fait, c'est comme si j'étais bloqué après l'itération 10.
Je vais sûrement essayer cette fonction "first run"
le 06-10-2016 10:00 AM
Je n'ai pas LabVIEW 2015 pour observer le code.
Pour relancer le code il faudrait mettre une boucle while autour du premier code pour qu'il se relance.
Il faut alors bien gérer l'arrêt des boucles.
le 06-10-2016 11:34 AM
@ didje : " Faire tourner un vi en continu par la fleche run continuously est l'équivalent de faire avancer une voiture avec le démarreur "
j'aime beaucoup cette comparaison ... elle me fait rire ... mais cette comparaison est parfaite, c'est exactement ça !
le 06-10-2016 02:29 PM
![]()