Discussions au sujet de NI LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Comment structurer efficacement un code ?

Bonjour à tous,

 

Ces derniers jours j’ai beaucoup appris à vous lire.

Encore merci pour le détail que vous faites tous preuves dans vos échanges qui sont très riches d’enseignement !

 

Les  deux choses sur les qu’elles j’ai le plus avancées sont : la manipulation des fonctionnalités de labview mais également les moyens de les mettre en œuvre.

C’est sur ce dernier point que je cherche des infos…

 

Par exemple Ouadji, m’a appris ce qu’était une machine d’état (voir post barre de progression). C’est d’une simplicité d’utilisation et d’un visuel incomparable !

 

 Il n’y a-t-il pas d’autre trésor comme cela à connaitre ? Qu’elles sont également les petites astuces à savoir pour structurer un code de façon efficace ?

Si vous pouviez citer leurs avantages, leurs fonctionnements et leurs limites car apprendre sans comprendre ça rentre pas dans ma tête... Smiley Wink.

 

Grand merci d’avance.

0 Kudos
Message 1 of 18
(4,137 Views)

Question aussi vaste que l'univers Smiley Happy

 

Il ne faut pas mélanger .... bien structurer son code ... et ... bien l'implémenter en LV. (ou avec n'importe quel autre langage)

 

Structurer son code relève de domaines bien spécifiques : l'Algorithmique, la Programmation Structurée ...

 

La Programmation Structurée est un domaine en soi ... il y a beaucoup de livres sur le sujet (google, amazon),

 

et des cours spécifiques sur le sujet dans les écoles.

 

En ce qui concerne la "bonne façon" de retranscrire tout cela en LV, c'est un autre sujet.

 

un bon livre à ce sujet (sur les "bonnes pratiques avec LV ... ce livre n'est pas donné, mais il vaut la peine d'être lu - en anglais )

 

Les deux domaines sont vastes. Je pense qu'il n'est pas possible de t'en faire une description exhaustive.

 

Plonge dans les bouquins et fait un usage immodéré de ce forum ... présente tes codes, et pose les pires questions.

 

soit perfectionniste dans ta façon de coder, ne laisse aucune place aux questions sans réponses, ni aux incertitudes.

 

 

Message 2 of 18
(4,134 Views)

Hum..., je comprends, je craignais un peu cette réponse.

 

Enfin, tu apportes déjà une première Pierre à l'édifice :

 

Plonge dans les bouquins et fait un usage immodéré de ce forum ... présente tes codes, et pose les pires questions.

 

soit perfectionniste dans ta façon de coder, ne laisse aucune place aux questions sans réponses, ni aux incertitudes.

 

a+

0 Kudos
Message 3 of 18
(4,120 Views)

à moins que de suivre des cours d'informatique réglementaires, avec théorie et pratique ...

 

en autodidacte il n'y a pas de secret ... plonger dedans, observer ce que les autres font (important ça)

comprendre ce que tu vois, chercher la faille, effacer et refaire soi-même ... etc ...

toujours garder un oeil critique ... ce que les autres font est parfois le meilleur, parfois le pire.

Mais bon ... il y a des Maîtres sur ce forum ... ces personnes là ne posent pas de questions (très rarement), ils y répondent.

un autre excellent livre  ... tu n'y trouveras pas "tout", mais pour commencer c'est très bien.

et pour le reste ... passe des nuits à coder ...  Smiley Tongue

 

Message 4 of 18
(4,116 Views)

Bonjour,

 

Les deux livres cités par Ouadji sont des classiques, si tu cherches un livre en français :http://livre.fnac.com/a2533395/Francis-Cottet-LabView-8-5-Programmation-et-applications?oref=0000000... c'est avec sa que j'ai commencé...

 

 

Une autre solution (en fonction de la politique de ton entreprise) est d'aller en cours de formation pour apprendre les bases ou se perfectionner. J'ai eu quelques retours très positifs sur les formations données en région. 

 

 

Bien sur, comme l'a souligné Ouadji, il y a énormement de ressources en ligne sur le site NI (presque tout), c'est très complet et en cherchant bien on trouve vraiment des infos très pertinentes en therme d'architecture puisque c'est ta question principale.

 

Quelques liens:

http://www.ni.com/largeapps/

http://www.ni.com/white-paper/3023/en/

http://labviewbancdetest.wordpress.com/2011/04/21/design-pattern-machine-detat-avec-file-dattente/

http://labviewbancdetest.wordpress.com/2012/07/03/command-pattern/

 

 Une dernière méthode, pour pratiquer et élargir ses horizons de programmation, essayer de faire les examples d'examens de certification et comparer sa solution avec la solution proposée par NI: https://lumen.ni.com/nicif/f/ekitcldexmprp/content.xhtml

 

Cordialement,

Rodéric L
Certified LabVIEW Architect
Message 5 of 18
(4,101 Views)

La programmation n’est absolument pas mon métier, il va falloir que j'achète perso les bouquins, cela dit ça reste abordable…

 

Merci pour les liens !

0 Kudos
Message 6 of 18
(4,083 Views)

Re-salut, comment structurer un code LabVIEW…

 

Sur ton post indicateur VS Locale VS nœud propriété je t’ai déjà répondu de regarder une présentation réalisée lors de journée technique LabVIEW - sur « technique de programmation avancée : gestion des données ».

http://www.mesulog.fr/download/JournTech2013_MESULOG_ProgAvanceeLabVIEW_GestionDonnees_VNI.pdf

 

Pour le style je te conseille  un incontournable document de National Instruments « LabVIEW Style Checklist »

http://zone.ni.com/reference/en-XX/help/371361J-01/lvdevconcepts/checklist/

 

Sinon à la question "où trouver de l'aide?" >> La communauté travaille pour vous

Forums National Instruments Francophone
 
La communauté Francophone
Rencontre développeurs : cf LUGE
 
Mais aussi… l’ensemble des forums et communautés de NI
Large Applications : ni.com/largeapps
banniere Luc Livre NXG Champion.png

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

Message 7 of 18
(4,040 Views)

GRAND merci, pour cette réponse très détaillée !

Et malgré cela j’ai une petite question car je t’avoue que ce n’est pas si facile que ça de lire une présentation (même si elle est  très bien faite) sans les commentaires avisés du narrateur…Elle n’est pas encore en vidéo sur youtube ??

Donc, voici  ma question : qu’entends-tu par « tous les threads » page 23 concernant la variable local, qu’elle est la différence avec les nœuds de propriété qui en traite qu’un seul. Qu’elle est physiquement l’action du code à ce moment là ?

A+

0 Kudos
Message 8 of 18
(4,011 Views)

Bonsoir, je te propose la lecture de : http://zone.ni.com/reference/fr-XX/help/371361K-0114/lvconcepts/multitasking_in_labview/

 

En résumé : Quelques nœuds ou éléments du diagramme sont synchrones, ce qui signifie qu'ils ne s'exécutent pas en mode multitâche avec les autres nœuds. Dans une application multithread, ils s'exécutent complètement, si bien que le thread dans lequel ils s'exécutent est monopolisé jusqu'à ce que la tâche soit terminée.

Les nœuds de propriété et les nœuds de méthode, utilisés sur les références de commande ou d'application, se synchronisent sur le thread d'interface utilisateur, même pour la propriété valeur d'une référence de commande. Par conséquent, si le thread interface utilisateur est occupé, comme par exemple, par l'affichage d'une grande quantité de données dans un graphe, le nœud de propriété et le nœud de méthode ne s'exécutera pas jusqu'à ce que ce thread ait terminé sa tâche en cours.

 

remarque Luc Desruelle : la locale est dans un vi dans lequel : 

LabVIEW dispose de six systèmes d'exécution multiples que vous pouvez assigner en sélectionnant Fichier»Propriétés du VI, puis Exécution dans la boîte de dialogue Propriétés du VI. Vous pouvez sélectionner les systèmes d'exécution suivants :

       interface utilisateur — Gère l'interface utilisateur. Son comportement est le même que ce soit pour les applications multithread que pour les applications monothread. Les VIs peuvent s'exécuter sur le thread d'interface utilisateur, mais le système d'exécution alterne entre le multitâche coopératif et les réponses aux événements de l'interface utilisateur.

       standard — S'exécute dans d'autres threads que l'interface utilisateur.

       E/S d'instruments — Empêche VISA, GPIB et E/S série d'interférer avec les autres VIs.

       acquisition de données — Empêche l'acquisition de données d'interférer avec les autres VIs.

       autre 1 et autre 2 — Disponibles si certaines tâches de l'application requièrent leur propre thread.

       identique à l'appelant — Pour les sous-VIs, s'exécute dans le même système d'exécution que le VI qui a appelé le sous-VI. Pour les VIs de niveau principal, identique à l'appelant produit le même effet que définir le système d'exécution privilégié sur standard.

 

Remarque de Luc Desruelle : il en existe un septième pour les boucles « loop time », utilisé pour les structures « loop time ». Il ne peut pas être sélectionné par l’utilisateur, il est imposé par le nœud « loop time » qui est une structure particulière et qui ne s’exécute pas en multitâche.

 

Ces systèmes d'exécution fournissent des partitions brutes pour les VIs qui doivent s'exécuter indépendamment des autres VIs. Par défaut, les VIs s'exécutent dans le système d'exécution standard.

Les systèmes d'exécution ne gèrent pas l'interface utilisateur. Si un VI d'un de ces systèmes d'exécution a besoin de mettre à jour une commande, le système d'exécution en donne la responsabilité au système d'exécution interface utilisateur. Assignez le système d'exécution interface utilisateur aux VIs qui comportent un grand nombre de nœuds de propriété.

LabVIEW alloue un nombre de threads proportionnel au nombre de processeurs de la machine. Chaque thread gère une tâche. Par exemple, si un VI appelle une bibliothèque partagée, l'autre thread continue à exécuter les autres VIs de ce système d'exécution. Comme chaque système d'exécution a un nombre limité de threads, les tâches restent en attente si les threads sont occupés.

Même si les VIs que vous écrivez s'exécutent correctement dans le système d'exécution standard, envisagez d'utiliser un autre système d'exécution. Par exemple, si vous développez des drivers d'instruments, vous pourriez utiliser le système d'exécution E/S d'instruments.

Même si vous utilisez le système d'exécution standard, l'interface utilisateur a toujours son propre thread. Toutes les activités menées sur l'interface utilisateur, comme le tracé sur la face-avant, les réponses aux clics de souris, etc., s'effectuent sans perturber l'exécution du code du diagramme. De même, l'exécution d'un long programme de calcul n'empêche pas l'interface utilisateur de répondre aux clics de souris et aux entrées de données avec le clavier.

Les ordinateurs à plusieurs processeurs bénéficient encore plus du multithreading. Sur un ordinateur à un processeur, le système d'exploitation a priorité sur les threads et distribue le temps entre les threads du processeur. Sur un multiprocesseur, les threads peuvent s'exécuter simultanément sur les divers processeurs, de sorte que plusieurs activités peuvent avoir lieu en même temps.

 

Pour la vidéo : une bonne idée! A étudier....

banniere Luc Livre NXG Champion.png

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

Message 9 of 18
(3,998 Views)

Bravo Luc, très intéressant.

 

avec très certainement, pas mal de recherches, d'étude et de travail derrière tout ça.

 

Le résultat en vaut la peine (et la lecture encore plus)

 

Respect Monsieur Luc    Smiley Happy

 

Message 10 of 18
(3,992 Views)