Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Nombre de copie d'un VI réentrant

Résolu !
Accéder à la solution

Bonjour,

 

Pour améliorer mon module de notification (ajouté il y a quelques semaines), je voudrai utiliser le même VI deux fois au lieu de faire deux VI exactement pareil.

 

Donc je me suis penché sur la réentrance des VI...

Cependant j'aimerai limiter à 2 instances donc 1 seule copie, que je réutiliserai à chaque fois.

 

Donc je pense qu'il faut que je configure le vi en "Exécution réentrante avec copies partagées"

Permet l'exécution parallèle d'appels simultanés à ce VI avec une utilisation relativement basse de la mémoire. Afin de réduire l'utilisation de la mémoire, ce type de réentrance réutilise des copies dans les appels au VI. Si un appel de VI a lieu alors que toutes les copies sont utilisées, LabVIEW alloue une nouvelle copie pour cet appel de VI. Comme cette allocation se produit sur demande, ce type de réentrance produit du jitter.

 

Cependant, j'aimerai conditionner les exécutions au nombre de VI en cours d'éxécution.

 

SiAlors
0 instance en cours appel du VI avec données X en entrée
1 instance en cours appel du VI avec données Y en entrée
2 ou + instances en cours aucun appel

 

Le problème c'est que je sais pas comment faire pour connaitre combien d'instance de VI sont en cours d'éxecution.

Existe t'il une fonction ?

 

Merci

 

Kaleck

0 Compliments
Message 1 sur 9
4 503 Visites
Solution
Accepté par l'auteur du sujet Kaleck

bonjour,

Je me rappelle ne pas avoir répondu à ta dernière question...

[...] Les VI Cadre 1 et Cadre 2 sont exactement les mêmes, sauf pour l'îcone et le nom. Y a t'il un moyen d'utiliser qu'un seul VI au lieu de 2 comme actuellement ? [...]

-> réentrance des VI : OK

 

[...] Cependant j'aimerai limiter à 2 instances donc 1 seule copie, que je réutiliserai à chaque fois [...]

Si tu  fais un lancement dynamique, tu peux regarder : "semaphore" d'une taille de 2 (mais tu peux ausii utiliser ton ancien code, avec le vi en réentrant, en plaçant 2 instances de ton VI dans le code principal, donc en statique)

A+

http://digital.ni.com/public.nsf/allkb/F20853A4BA293FC98625772A004489AC

 

Problème:
Qu'est ce qu'un sémaphore dans LabVIEW et à quoi cela sert-il?

Solution:
Le sémaphore est un moyen de limiter le nombre de tâches pouvant simultanément agir sur une ressource partagée (protégée) . Une ressource protégée, ou section critique de code peut inclure l'accès en écriture à des variables globales, ou la communication avec un instrument externe.
Le sémaphore est similaire au Mutex (Mutual Exclusion) que l'on peut rencontrer dans d'autres langages de programmation.

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

Message 2 sur 9
4 469 Visites

Bonjour,

 

Merci Luc.

Bon j'avais un peu regarder il y a quelque temps les semaphores via les exemples pour les comprendre. Cependant, si je garde mon ancien code, les deux boucles ne vont-elles pas attendre qu'elle soit appelé en même temps pour s'exécuter ? Car du coup si je n'ai qu'une seule notification, ça risque de ne pas fonctionner, non ?

 

Ensuite, Eric.M a "repris l'idée en ajoutant quelques petites fonctionnalités, ajouté de la documentation sur les VI publics (dans la palette Addons/SmartBalloon), refactorisé le code pour pouvoir supporter de nouveaux ajouts à l'avenir (architecture orientée objet)."

Donc je vais voir ce qu'il a fait car c'est sans doute plus nécessaire que je continue... (j'aimerai juste tester son module mais VIPM n'arrive pas à se connecter à LV2012 pour installé un autre module nécessaire et ça ne fonctionne pas même avec 600s de timeout...je suis un peu bloqué..)

 

Merci

Message 3 sur 9
4 453 Visites

Kaleck0 a écrit :

 

Ensuite, Eric.M a "repris l'idée en ajoutant quelques petites fonctionnalités, ajouté de la documentation sur les VI publics (dans la palette Addons/SmartBalloon), refactorisé le code pour pouvoir supporter de nouveaux ajouts à l'avenir (architecture orientée objet)."

 


Salut, je suis 100% d'accord avec Eric. J'ai pas vu son code (il est où?) mais 100% d'accord sur la phrase. Une idée que j'avais, pour pouvoir avoir un vrai toolkit, était de remplacer le tableau par une FIFO (add to queue, pour replacer insert array) et avoir un acteur (actor) sur base de QDH (queue driven handler) qui prend les éléments de la FIFO. Mais le faire sur base OOP est une bonne idée. A voir avec plaisir.

A+

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 4 sur 9
4 446 Visites

Je voudrai tester le module avant qu'il le poste (mais j'y arrive pas... je dois passé par VIPM pour installé un module > "VIPM could not connect to LabVIEW 12.0", et le port est pourtant le bon ! Si quelqu'un à une solution !)

 

Ensuite, j'avais déjà changer en FIFO quelques jours avant de voir son message privé ! Mais là il a tellement fait de changement via des fonctions que je ne connais pas (encore ^^ ça viendra) que je suis un peu perdu !! :'(

 

 

0 Compliments
Message 5 sur 9
4 441 Visites

Kaleck0 a écrit :

 VIPM pour installé un module > "VIPM could not connect to LabVIEW 12.0", et le port est pourtant le bon ! Si quelqu'un à une solution !)

  


tu lances VIPM depuis LabVIEW (via menu) ou autre?

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 6 sur 9
4 438 Visites

Que je le lance via labview, le raccourci menu demarrer ou bureau, toujours pareil ! :'(

 

Lorsque VIPM est lancé, il redemarre Labview pour s'y connecté ensuite.

 

D'ailleur, je ne sais pas si c'est normal, mais dans les options de labview, quand je clique sur VI serveur, l'application se fige pendant au moins 2 min avant d'afficher les infos VI serveur. ça me fige que dans ce menu, c'est sans doute lié au fait que VIPM n'arrive pas à se connecté à Labview.

J'ai fais une réparation de labview pour voir, rien à changé, toujours pareil.

 

Sinon il a la possibilité d'ajouter manuellement les packages qui sont présent sur VIPM sans passé par celui-ci ?

0 Compliments
Message 7 sur 9
4 409 Visites
0 Compliments
Message 8 sur 9
4 404 Visites

Au fait !

Problème résolu.

Sur le pc j'ai une application LV que j'ai dév. qui tourne constamment (c'est un serveur) et j'ai plusieurs client dans le batiment. Ils communiquent en TCP sur le réseau interne.

C'est lui que me bloquait la communication entre labview et VIPM... pourtant l'application serveur est un exécutable, je pensais pas qu'il utilisait son propre "moteur TCP" (je ne sais pas comment ça peut s'appeller).

J'ai du temporairement fermer l'application pour pouvoir installé le module avec VIPM.

0 Compliments
Message 9 sur 9
4 364 Visites