luc desruelle's Blogue

Navigateur communautaire
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 
Desruelle_luc ‎12-09-2016 04:40 AM
170 Visites
0 Commentaires

Rapport d'essai : Réaliser rapidement des rapports Microsoft Office Word et Excel avec LabVIEW et le Report Generation toolkit

Si vous avez besoin de réaliser des rapports d'essais, il est possible d'ajouter des fonctionnalités à LabVIEW grâce au « Toolkit Report Generation for Microsoft Office ». Le Toolkit ajoute un ensemble étendu de VI pour générer des rapports par programmation dans Microsoft Word ou Excel. 

 

Il y a principalement 3 méthodes pour réaliser un rapport avec le toolkit

 

  1. Un VI Express Microsoft Office Report permet de rapidement découvrir l'ensemble des possibilités. Personnellement je ne l'utilise pas, je n'utilise pas le VI Express, mais il permet de découvrir les possibilités.
  2. Une autre possibilité est d'utiliser les fonctions bas niveau, ou sous-VIs, pour générer complètement l'apparence du rapport, en partant d'une feuille vierge. Cette méthode nécessite plus de code et plus de temps.
  3. Sinon il est très facile de réaliser un classeur modèle sous Microsoft Excel, qui contient la présentation finalisée du rapport d'essai. Il suffit alors d'écrire les données au bon emplacement directement depuis LabVIEW. Lorsqu'il y a plusieurs campagnes de mesure pour un même test, il est possible dans le classeur modèle, d'avoir un onglet modèle à dupliquer pour chaque essai. Dans mon modèle, j'utilise alors la puissance du tableur "Microsoft Excel" pour ajouter des formules pour convertir des données brutes, calculer des statuts à partir de limites, afficher un graphique. Il est possible d'insèrer des macros VBA, et de les exécuter depuis LabVIEW.

La solution 3 a ma préférence.

 

Un exemple très simple peut être rapidement construit en réalisant un classeur Excel modèle, à partir de mesures. Dans le classeur modèle, nous réalisons toute la mise en page.

 

Excel rapport.png

 

La figure suivante présente le « Diagramme »  d'une application qui permet d'importer les mesures dans un classeur Modèle.

Les fonctions utilisées sont très simples.

  • « copier » un fichier, de la palette d'E/S sur fichier afin de dupliquer le classeur Excel modèle sous un nouveau nom.
  • Les mesures sont dans un tableau à deux dimensions de numérique, qui doit être converti en tableau de chaînes de caractères par la fonction « Nombre en chaîne fractionnaire ».
  • Pour insérer les données dans le classeur, la fonction de haut niveau « nouveau Rapport », avec le paramètre « Excel », permet d'ouvrir le fichier.
  • Puis la fonction spécifique « Excel insérer un tableau » copie les mesures à l'emplacement désiré, soit dans les cellules de coordonnées [2 ; 25].
  • L'appel de la fonction « Fermer le rapport » avec le paramètre « sauvegarder le classeur » finalise l'importation des données.

 

diagramme Excel.png

 

Le rapport est alors complet, échangeable par e-mail et peut être directement imprimé.

Desruelle_luc ‎12-08-2016 10:37 AM
183 Visites
0 Commentaires

Ensemble de présentations techniques pour éviter les erreurs sous LabVIEW

Les plus grosses erreurs? d'un code sous LabVIEW????

lesp lus grosses erreurs.png

lesp lus grosses erreurs2.png

 

1) Gestion de projet

journée LUGE 1.0 : Les outils qui nous veulent du bien

Plus de temps pour développer en LabVIEW, gestion «projet»

 

Exemples d’erreurs : bombe à retardement ou Grosses erreurs autour du développement logiciel (?)

  • Ne pas savoir où trouver de l’aide
  • Pas de logiciel de gestion de version
  • Pas de centralisation de l’information
  • Pas d’analyse ni de test du code source
  • Attendre la fin du projet pour générer l’exécutable
  • Pas de gestion de la machine de développement
  • Autres ?

Utiliser les logiciels de gestion code source (TortoiseSVN, Subversion), Machine Virtuelle, bug tacker, Forge, VI Analyzer, VI Package Manager

les outils qui nous veulent du bien.png

 

2) Technique, Gestion des données, accès concurrents, mémoire sous LabVIEW

Journée LUGE 3.0 : Darwin appliquée à LabVIEW : l’évolution de la gestion des données

version "full" en EN Darwin applied to LabVIEW: The evolution of the data management

Elle traite de l’évolution

  • du concept « mémorisation » du flux de données,
  • de la gestion des données sous LabVIEW
  • des accès concurrents

 

avec Contrôle vers indicateur -Locale -Globale -FGV -AE –SEQ -DVR -OOP –SM –QDMH.

 

La présentation vous permet de répondre à la "simple question" Pourquoi il faut éviter une locale, globale, nœud de propriété... et comment faire.

194993_darwin%20labview.png

 

 

3) Architecture : Les modèles de projet sous LabVIEW, zoom sur le QDMH (ou QMH)

 Journée rencontres LUGE 2016 : Les modèles sous LabVIEW, zoom sur le QDMH

 

  • Faire un point sur le modèle QDMH qui couvre un grand nombre d’application en restant abordable techniquement
  • Discussion sur Améliorations
  • Discussion sur Faiblesses / limitations
  • Continuer la discussion sur d’autres modèles connus, utilisées et avoir vos avis dessus.
  • Le but : Débuter avec le bon modèle…

QDMH.png

Desruelle_luc ‎07-10-2016 04:27 AM
275 Visites
0 Commentaires

Help!!! où trouver de l'aide sous LabVIEW, de l'assistance LabVIEW par des pros

De l'aide sous LabVIEW? Lorsqu'un développeur débute, il est normal qu'il se pose de nombreuses questions et qu'il ait besoin d'aide. S'il est seul, comme c'est souvent le cas, il peut rapidement se trouver dans une impasse et perdre beaucoup de temps. Il est très important de connaître les bonnes méthodologies à appliquer pour trouver les bonnes réponses.

Lire plus...

Desruelle_luc ‎07-10-2016 01:17 AM
860 Visites
1 Commentaire

Darwin applied to LabVIEW: The evolution of the data management

The survival of the fittest applied to the LabVIEW Dataflow model...

PS : You can download the presentation  Darwin applied to LabVIEW V2.2.pdf attachment and LabVIEW examples code.

 

Recently, I made a new presentation (LabVIEW User group LUGE) "Darwin applied to LabVIEW: the evolution of the data management." subtitle “The survival of the fittest applied to the LabVIEW Dataflow model ”.

 

With deep humor this presentation makes the link between the evolution of the LabVIEW data and the Darwin's Theory of Evolution.

darwin labview.png

The presentation deals with the evolution of the concept of "Data communication" of the LabVIEW dataflow model:

lDataflow element to Variable Interfaces, to Buffer Interfaces

lTo store a value in memory/ To access the value

lTo prevent Race Condition, buffer copies

The presentation does answer the following questions:

lWhy avoiding local, global, Property Node? How to avoid Race Conditions? Does FGV prevents Race Condition (realy!) ?

lWhich method to use? Why?

lWho is the survival of the fittest? (the survival of the most scalable)

 

 

  • LabVIEW follows a dataflow model
  • In dataflow programming, you generally do not use variables. For a literal implementation of this model.
  • Dataflow models describe nodes as:
      • consuming data inputs,
      • producing data outputs.
  • Advanced concepts : LabVIEW contains many data communication methods.
  • For example, local and global variables are not inherently part of the LabVIEW dataflow execution model.

 

  • LabVIEW contains many data communicationmethods, each suited for a certain use case.
  • Can by order into 3 types:

lDataflow elements, the primary methods

lVariable Interfaces

lBuffer Interfaces

data communications methods.png

data Communication.png

For diner tonight: Functional Global variable (FGV, LV2), Action Engine (AE), DVR, OOP, State Machine and QMH. Speed demonstration, UI thread, memory management (buffer copies) and Race Condition with simple and downloadable examples.

 

 

source: http://zone.ni.com/reference/en-XX/help/371361L-01/lvconcepts/data_comm/

http://zone.ni.com/reference/en-XX/help/371361L-01/lvconcepts/data_comm/

 

 

 

 

for example, (CLAD exam): Which of the following is the best method to update an indicator on the front panel? And explain WHY please!!!

  1. Use a Local variable
  2. Wire directly to the indicator « Data Out »
  3. Use an implicit « value » property node
  4. Use an explicit « value » property node (reference)

 

speed execution.png

A+

 

 

 

 

Luc Desruelle | avatar_ld.gif| Voir le profil LinkedIn de Luc DesruelleVoir mon profil | Mon blog LabVIEW

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW

Co-auteur livre LabVIEW : Programmation et applications

LabVIEW Champion

Contact

banniere Luc Livre.png

Desruelle_luc ‎06-10-2016 05:25 AM
220 Visites
0 Commentaires

Instrument virtuel (VI) sous LabVIEW? C'est quoi? instrument physique contrôlé depuis l'ordinateur!

Un Instrument virtuel (ou VI) sous LabVIEW, C'est quoi? Historiquement, un logiciel de mesure est un instrument de mesure qui est contrôlé depuis un ordinateur à la place des boutons sur sa face-avant.

 

Cette logique conduit à la notion d'instrument virtuel : instrument contrôlé depuis un ordinateur.

 

Un instrument virtuel est donc un programme qui présente une interface sous forme graphique (IHM) pour l'apparenter à un instrument physique. Les utilisateurs manipulent alors des instruments depuis l'ordinateur (virtuels) comme s'il s'agissait d'instruments physiques sur « étagère » (réels).

 

 

Comme historiquement l'environnement de développement LabVIEW (IDE) est orienté « instrumentation », les inventeurs de LabVIEW ont donné l'extension .vi (Virtual Instrument : VI) au programme développé avec cet environnement pour faire le lien avec le pilotage d'instrument depuis l'ordinateur.

C'est ainsi l'extension du fichier sur le disque « MonCode.vi », comme un document Word est de type « MonDocument.docx ».

 

 

Un programme ou VI, développé dans l'environnement LabVIEW, se compose principalement de deux éléments étroitement associés et regroupés sous le même nom « nom_application.vi » (l'extension .vi permet une reconnaissance immédiate par l'environnement LabVIEW).

 

Ainsi nous avons :

  • La « face-avant » (Front panel) qui est l'interface utilisateur du programme au sens génie logiciel : définition des entrées/sorties de données accessibles par l'utilisateur du programme (figure suivante). Cette notion sera reprise en détail dans le chapitre 3 du livre "LabVIEW programmation et applications.

 

faceavant labview.png

  • Le « Diagramme » (diagram) qui est le programme de l'application ou code source. Il écrit sous la forme d'un diagramme flux de données en langage G : ensemble des icônes et des liaisons entre ces icônes utilisées. Cette partie de l'application est ce que l'on appelle le code source par opposition à l'interface utilisateur.

diagramme.png

 

LabVIEW ? Vous avez dit LabVIEW ? Le flux de données?

LabVIEW diagramme.gif

 

Luc Desruelle | | avatar_ld.gifVoir le profil LinkedIn de Luc DesruelleVoir mon profil | http://fr.linkedin.com/in/labviewcertifiedeveloppeurMon blog LabVIEW

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW

CTD : certifié TestStand Développeur

Co-auteur livre LabVIEW : Programmation et applications

LabVIEW Champion

Contact

 

Desruelle_luc ‎02-10-2016 06:51 AM
242 Visites
0 Commentaires

Aide au développement avec LabVIEW : Contacter un développeur certifié du « Programme Alliance »

Pour une expertise, un audit, une optimisation, une urgence, de l'assistance, un problème critique, un besoin ponctuel ou pour sous-traiter un développement complet sous LabVIEW, nous vous conseillons de faire appel aux partenaires National Instruments du Programme Alliance.

Moi, Luc DESRUELLE, (certifié LabVIEW Architecte, LabVIEW champion, TestStand Développeur, auteur du livre français "LabVIEW" et rédacteur de ce blog), serait ravi de vous apporter mon expertise et mon aide.

Lire plus...

Desruelle_luc ‎02-10-2016 02:31 AM
222 Visites
0 Commentaires

NIDays 2016 - Livre LabVIEW

Retour sur NIDays 2016 : Pour la première fois, lors de cet évènement, un stand était dédié à un libraire. Il a présenté, entre autre, la nouvelle édition du livre « LabVIEW : programmation et applications », aux éditions Dunod.

Lire plus...

Desruelle_luc ‎01-04-2016 04:15 AM
388 Visites
0 Commentaires

Afficher un code dans plusieurs langues ou LabVIEW multilingue plurilingue unicode

Je développe des logiciels sous LabVIEW dans plusieurs langues : Russe, Chinois, portugais, français, .... pour afficher les texte, menu, gestion erreur,... .Cette question revient souvent sur le forum. Ce post est une compilation de mes réponses du forum sur le sujet.Cela permet de "centraliser" les réponses sur ce sujet.A la fin du post je donne les liens vers les réponses du forum cela permet de laisser la place à la vision d'autres développeurs sur le sujet.

 

I] Histoire ASCII, code Page, unicode et non unicode

I.1) Histoire

A l'origine du système actuel de codage des ordinateurs se trouve le standard ASCII (American Standard Code for Information Interchange). Il représente le codage numérique de 128 signes. Il est assez évident que ce nombre réduit de signes, s'il suffit pour le codage des caractères usuels de l'anglo-américain, ne permet pas le codage des graphèmes spécifiques d'autres langues européennes, ni même d'une.

 

A partir du moment où les logiciels de traitement de texte se sont développés et diffusés dans le monde, il a fallu l'étendre à 256 numéros de code : ASCII étendu puis ANSI.

 

Par la suite les OS ont gérés plusieurs langues différentes : Attribution d'un code unique à tous les caractères utilisés dans les différentes langues du monde et donc la définition d'un jeu unique, universel, de caractères : c'est le standard Unicode. Dans cette idée un caractère est codé sur un U8, U16, U32

 

Il ne faut pas confondre le multi-byte et unicode. En unicode le caractère est unique dans n’importe quel OS, en multi-byte le caractère a une valeur mais est affiché en fonction des paramètres de l’OS.

 

Par exemple il existe un Chinois simplifié, écrit de la gauche vers la droite.

 

I.2) LabVIEW ne supporte pas l'unicode

LabVIEW supporte les caractères « multi-byte » et pas Unicode en natif (en option via fichier ini avec LV2011). Il interprète et affichedonc les caractères Unicode selon l’OS et surtout l’option « Options régionales et linguistiques -> langues pour les programmes non Unicode ».

 

Si vous tapez du chinois sur votre clavier (ou copier-coller depuis la traduction de google…) vous pouvez mettre du chinois, et même faire un soft mulitlingues.

 

L'avantage avec l'unicode serait de pouvoir affiché Russe et Chinois sur le même logiciel, comme Internet Explorer.

Mais LabVIEW ne supporte pas l'unicode en standard.

 

I.3) si vraiment vous voulez utiliser l'unicode

voila des trucs pour y arriver : https://decibel.ni.com/content/docs/DOC-10153

Soutenir l'unicode dans LabVIEW sur le forum idea exchange : http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Support-Unicode/idi-p/921449

 

Il est possible d'ajouter le support de l'Unicode dans LabVIEW. Pour cela tu peux editer le LabVIEW.ini et ajouter "UseUnicode=TRUE" (sans les guillemets ;-)

Voici un lien qui explique un peu plus en detail l'utilisation de l'Unicode dans LabVIEW.

 

I.4) Je déconseille d'utiliser l'unciode avec LabVIEW car non supporté

Mais comme LabVIEW ne supporte pas l'unicode en standard, je déconseille de l'utiliser.

par exemple : un Message To User (?) une boite de dialogue? si c'est cela, la boite de dialogue standard n'est pas unicode donc faire comme indiquer dans mon retour, cf une boite de dialogue Russe, sinon tu fais une boite de dialogue "maison", avec une string en unicode.

 

 

II] Exemple chinois

 

original.png  original2.png

 

Configuration Windows XP pour prise en charge caractères non Unicode

Démarrer -> Paramètres -> Panneau de configuration -> Options régionales et linguistiques ->

  • Langues -> Prise ne charge langue supplémentaires -> Installer les fichiers pour les langues d’Extrême-Orient
  • Options avancées -> langues pour les programmes non Unicode -> Chinois (république de chine (RPC)
  • Redémarrer l’ordinateur

 

III] Un exemple pour le Russe

original4.png 

IV] Mise en garde sur le nom des VI

Le code LabVIEW est compilé, mais le fichier de l'exe contient la liste des fcihiers. Si dans cette liste, un caractère n'est pas transposable dans la liste des caractères non unicode de la langue de l'OS, l'exe est brisé.

 

la solution est comme toujours de suivre la régle d'être en ASCII court, donc utiliser les caractères non unicode universels sur les OS, donc les caractères Anglais!

pas de é ou è ou ç ou à dans les nomns de VI ou autres! bonne chance

 

V] quelques liens sur le forum

quelques liens

http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Afficher-des-textes-en-chinois/td-p/2761932

http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Texte-chinoix-sur-face-avant/td-p/1855663

http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Menu-unicode-codepage/td-p/2688015

 

VII] Localizing Your LabVIEW Application to Different Languages

Les conseils de National instruments pour la localisation

http://www.ni.com/tutorial/3603/en/ 

 

Luc Desruelle | avatar_ld.gifVoir mon profil | Mon blog LabVIEW

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW

Co-auteur livre LabVIEW : Programmation et applications

LabVIEW Champion

Contact

banniere Luc Livre.png

Desruelle_luc ‎12-20-2015 04:07 AM
395 Visites
0 Commentaires

En écriture : Construire et piloter un système de mesure avec LabVIEW (DAQ et Instrument)

Extrait du livre "LabVIEW : Programmation et Applications" chapitre 4 Applications : Construire et piloter un système ..."

on branche deux fils et ça fonctionne ?....Construire un système de mesure ou de génération de signal est l’origine de la création de LabVIEW pour acquérir, analyser et présenter les données.

Il est ainsi le langage de développement le plus efficace pour réaliser un tel système.

Nous allons :

  • Rappeler les éléments important à prendre en compte lors de la définition du système d’instrumentation sur ordinateur ;
  • Expliquer comment réaliser le logiciel avec LabVIEW, aussi bien avec des cartes d’acquisition (DAQmx) qu’avec des instruments de mesure sur table (VISA et IVI) ;
  • Introduire l’acquisition de données sur les systèmes Temps Réel (RT) et FPGA.

 

I] Caractéristiques d’un système de mesure

 

La réalisation technique se compose en général des éléments suivants :

  1. Les capteurs ;
  2. Le conditionnement des signaux ;
  3. Le câblage ;
  4. Le matériel de numérisation / génération de données ;
  5. Le driver et logiciel d’application ;
  6. L’ordinateur.

figure 4.2.pngfigure 4.3.png

 

II] Quelques rappels

  • La tension est la différence de potentiel électrique entre deux points, souvent noté « + » et « – » ;
  • Le point de référence est le niveau de tension auquel la mesure est référencée. La Masse est la référence des potentiels électriques. Elle n'est pas forcément reliée à la terre.
  • Le Common ou COM est un point de référence du circuit électrique.
  • Le GND est le terme anglais Ground pour Masse.
  • La Terre est reliée à la terre "physique", et a un potentiel de 0 V. C'est un point de référence du circuit éléctrique avec un potentiel particulier de 0V;
  • La définition légale française est : « Terre : masse conductrice de la terre, dont le potentiel électrique en chaque point est considéré comme égal à zéro. »
  • Lorsque la Masse est reliée à la Terre, alors la référence des potentiels électriques du circuit est à 0V;

 

III] A prendre en compte pour faire une mesure

Lors de la connexion de plusieurs sources de tension sur le même système de mesure, il convient d’avoir une référence de masse, physiquement unique et commune afin de ne créer aucune « boucle de masse ».

 

En effet, deux points de masse distants et connectés entre eux donneront naissance à un courant résiduel entre ces deux points. Ce courant résiduel générera du bruit et altérera la mesure.

 

Pour comprendre "comment effectuer une mesure ?" Il faut connaître :

  1. L’origine électrique des sources de signaux à mesurer : référencé à la masse ou flottant
  2. En déduire la connexion sur l'entrée du systéme de mesure: Différentiel, RSE ou NRSE
  3. Il faut toujours un référencement à la masse, direct ou via une resistance de polarisation

 

 

Pour faire une mesure il convient de connaître la nature du signal à mesurer, au sens de l’origine électrique des sources de signaux. Il en existe deux types:

  • Référencé ou relié à la masse
  • Non Référencé ou flottant

 

Dans le cas des cartes d’acquisition de National Instruments, elles sont configurables en :

  • Différentiel, aucune des entrées de l'amplificateur d'instrumentation n'est référencée à la masse d'un système. Les mesures effectuées en mode différentiel nécessitent davantage de voies, puisque chaque mesure demande deux voies d'entrées analogiques.
  • RSE ou asymétrique référencé à la masse : les mesures ne nécessitent qu'une seule voie d'entrée car le second fil est commun, utilisé par toutes les voies et relié à la masse du système de mesure.
  • NRSE ou asymétrique non référencé: comme le mode référencé, mais le point commun n’est pas relié à la masse du système de mesure.

medium.png

 

Cet article est en écriture

Desruelle_luc ‎11-22-2015 04:55 AM
620 Visites
0 Commentaires

Loading XXX into memory causes XXX to be loaded into memory

Quelques règles sur les problèmatiques de temps de chargement des projets. Le texte est une compilation d'informations internet (Pas de moi.)

Some rules to reduce project load time. This text is a blog posts compilation. (i'm not the author). Links at the end (LAVA or NI website).

  

I] LV project... and VI in memory

http://forums.ni.com/t5/LabVIEW/How-to-reduce-project-load-time/td-p/936487

The project is a list of the files that you included and their locations :

  1. VIs that are listed by the project are not loaded into memory.
  2. All library files listed in the project are full loaded into memory when the project loads. But...
      • LVClasses and XControls are both types of libraries. These two types will load all of their member VIs into memory whenever they themselves are loaded into memory.Therefore...
      • A project which loads classes or XControls will -- indirectly -- load all the VIs of those classes or XControls into memory.
  3. Any VI that is loaded will load all of its subVIs, whether the subVIs are explicitly listed in the project or not.

 

II] Loading XXX into memory causes XXX to be loaded into memory or not!

  • Loading a vi into memory also causes all (statically) dependent vis to be loaded into memory as well (par exemple le VI Tree). SubVIs are not automatically loaded into memory until the top-level VI is called.
  • Loading a library member (*.vi, *.ctl, etc.) always causes the owning library file (*.lvlib, *.lvclass, etc) to be loaded into memory.
  • Loading a class file (*.lvclass) into memory causes all class members (*.vi, *.ctl, etc.) to be loaded into memory.
  • Loading a project library file (*.lvlib) does not cause all library members (*.vi, *.ctl, etc.) to be loaded into memory.
  • Loading a library file (*.lvlib, *.lvclass, etc.) also causes all sub library files (*.lvlib, *.lvclass, etc.) to be loaded as well.

 

III] To improve the performance

Put all your VIs and classes into a .llb file

To improve the performance (about LV R&D, Aristos Queue) : Put all your VIs and classes into a .llb file. The .llb optimizes the contents of the file and significantly improves load speed when a block of VIs must load as one.

https://lavag.org/topic/14174-extremely-long-load-time-with-lvoop-supanels-and-vi-templates/

 

 

The .lvlib is likely having minimal impact on your project load time. The expense is generally from the large number of dependencies that your main VI has.

 

Move your files to an inner sector of your hard disk.

No, I'm not joking. We have found that hard drives these days are so wide in diameter that location on disk has a massive impact on seek times. Of course, this isn't generally under user control.

 

Get a solid state drive : SSD

Blazing fast load speeds regardless of what you're working on. Gets rid of the diameter of disk issue.

 

Save VIs inside .llbs.

The single biggest hit during load is disk seek time, and LLBs solve that by making one file, one file which is optimized for loading the parts of a VI hierarchy. This only helps if you are actually using most or all of the VIs in that LLB.

 

Turn on "Separate compiled code from source file"

Turn on "Separate compiled code from source file" on all your member VIs and libraries. Makes the VIs you are loading much smaller because the code segment is now in a separate database.

 

 

IV] LV project : Is there a performance difference between autopopulated and static folders?

I assume so. I consider autopopulate folders to be way more trouble than they are worth, so I never use them. But every time the project loads it would have to scan the entire directory and rebuild instead of just reading the file, and then any items that are in libraries have to be moved from their place in the autopopulate directory to their place in the library. That could be a lot of work.

 

website links

LabVIEW Object-Oriented Programming: The Decisions Behind the Design

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

http://forums.ni.com/t5/LabVIEW/How-to-reduce-project-load-time/td-p/936487

Desruelle_luc ‎11-10-2015 11:55 AM
529 Visites
0 Commentaires

Darwin appliqué à LabVIEW : l’évolution de la gestion des données

Bonjour à tous, je livre ma présentation du LUGE 3.0 « Darwin appliqué à LabVIEW : l’évolution de la gestion des données »

 

PS : vous pouvez télécharger la présentation française Darwin_LabVIEW_Evolution_Des_Donnees V1.7.pdf et LabVIEW examples code.

 

PS : Il existe une version Anglaise plus compléte, que vous pouvez télécharger Darwin applied to LabVIEW V2.2.pdf. Darwin applied to LabVIEW: The evolution of the data management

 


Elle traite de l’évolution du concept « mémorisation » du flux de données, avec Contrôle vers indicateur -Locale -Globale -FGV -AE –SEQ -DVR -OOP –SM –QDMH.

 

 

La présentation vous permet de répondre à la "simple question" Pourquoi il faut éviter une locale, globale, noeud de propriété... et surtout comment faire!!!

2.png

1.png

 

Pour ceux qui liront la présentation, la technique SEQ n’est pas traité. La prochaine fois, ou pour les plus curieux.

 

 

Luc Desruelle | avatar_ld.gif| Voir le profil LinkedIn de Luc DesruelleVoir mon profil | Mon blog LabVIEW

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW

Co-auteur livre LabVIEW : Programmation et applications

LabVIEW Champion

Contact

banniere Luc Livre.png

Desruelle_luc ‎09-26-2015 01:36 PM
311 Visites
0 Commentaires

Author of the French book “LabVIEW programming and applications"

Prefaced by Jeff Kodosky the latest version is dated of May 2015.

 

Couverture livre.jpg

I translated the book summary:

LabVIEW is a graphical development environment particularly suited to the field of acquisition, measurement and control / command. Its fully graphical approach provides flexibility and unmatched intuitive dimension. Compared to text-based languages it offers the same programming capability but without the complex and abstract side related to syntax.

This book allows readers to learn the LabVIEW programming language in order to build an application in the rules of art. It is structured in six chapters:

• The first two are devoted to discover the tool and to the description of basic graphical programming elements.

• The third chapter covers advanced LabVIEW knowledge and skills to design, develop and deploy a scalable, readable, and maintainable application (style guideline, error handling, design pattern, timing FGV, Queue message).

• The last three chapters deal with the specific capabilities of LabVIEW for the acquisition, analysis and presentation of data.

Concrete and detailed examples illustrate LabVIEW capabilities such as data acquisition (NI-DAQmx, MAX), Plug & play instruments Driver, Real-Time systems & FPGA, signal processing, mathematical analysis, data backup, generation report, sharing code, VIPM or building executable. All examples are downloadable and completely conform to the LabVIEW Style Checklist (error handling, 4x4 connectors, alignment wires, commented, readable...).

 

Luc Desruelle, Francis Cottet, Michel Pinard

Éditeur Dunod / L'Usine Nouvelle - 3ème édition - 464 pages - EAN13 : 9782100724338

 

Lien sur le site Amazon : http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339

 

The author : Luc DESRUELLE LabVIEW Champion page

 

Un lien vers un post du forum francophone qui parle de l’examen Certifié LabVIEW développeur (CLD) :

http://forums.ni.com/t5/Discussions-au-sujet-de-NI/CLD-pr%C3%A9paration/m-p/3082265/highlight/true#M...

 

https://twitter.com/DesruelleLuc

Luc Desruelle | avatar_ld.gif| Voir le profil LinkedIn de Luc DesruelleVoir mon profil | Mon blog LabVIEW

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW

Co-auteur livre LabVIEW : Programmation et applications

LabVIEW Champion

Contact

banniere Luc Livre.png

Desruelle_luc ‎09-24-2015 03:53 PM
565 Visites
0 Commentaires

Les 10 commandements du développeur LabVIEW

Le développeur LabVIEW devra suivre la synthèse des commandements suivants pour s'assurer que son code est conforme aux règles de développement.

 

1.       Sur un seul écran ton code tiendra.

2.       De gauche à droite tu coderas.

3.       Les fils tu ne croiseras pas.

4.       La gestion de l'erreur tu ne transgressas pas.

5.       Le connecteur de type 4x4 toujours tu utiliseras.

6.       Les contrôles, indicateurs et sous-VIs judicieux tu nommeras.

7.       Le flux de données tu respecteras.

8.       Ton code toujours et immédiatement tu documenteras.

9.       Des sous-VIs tu feras.

10.     La structure séquence empilée tu refuseras.

 

 

Plus d'informations sur les règles de style à respecter avec LabVIEW dans le livre.

 

Cet article est un ensemble d'extraits du livre « LabVIEW , programmation et applications ». Retrouvez le livre sur Amazon !

 

http://luc-desruelle.developpez.com/tutoriels/labview/extrait-livre-programmation-application/

Desruelle_luc ‎09-24-2015 03:35 PM
578 Visites
0 Commentaires

LabVIEW ? Vous avez dit LabVIEW ? Le flux de données?

 

Cet article est un ensemble d'extraits du livre « LabVIEW , programmation et applications » (3iéme édition).

Retrouvez le livre sur Amazon !

 

LabVIEW est un environnement de développement complet, graphique, compilé et particulièrement bien adapté au domaine de l'acquisition et de la mesure. Son approche totalement graphique offre une souplesse et une dimension intuitive inégalée. Comparativement aux langages textuels il offre la même puissance de programmation mais sans le côté abstrait et complexe lié à la syntaxe.

 

Orienté tests et mesures, il dispose de nombreuses fonctions permettant de piloter facilement des cartes d'acquisition et autres instruments, mais aussi de filtrer, d'analyser et de présenter les données. Ce langage est également appelé code G. Le code est représenté par un schéma composé de fonctions, de structures et de fils qui propagent les données. L'approche visuelle, l'interface entre le code et le développeur s'opposent sur la forme et la philosophie aux langages textuels, comme le C. LabVIEW est redoutable de puissance et n'a rien à envier aux autres langages.

 

Une des différences fondamentales de LabVIEW (par rapport aux langages classiques) est que ce langage suitun modèle de flux de données, et non de flux d'instructions.

 

Cela signifie que pour un langage textuel ce sont les instructions qui ont la priorité, alors qu'avec LabVIEW ce sont les données.

 

Une fonction s'exécutera donc à partir du moment où elle dispose à ses entrées de toutes les données dont elle a besoin.

 

 

L'exemple suivant, grâce à l'animation, illustre le principe du flux de données. Il réalise un calcul mathématique très simple a x b + c.

  1. La fonction « Multiply » s'exécute lorsqu'elle dispose des données à ses entrées (a=1 et b=2), donc dès le départ.
  2. La fonction « Add », dispose de l'entrée « c = 3 », mais elle est en attente du résultat de la fonction « Multiply ». Dès que la valeur « 2 » est calculée en sortie de la fonction « Multiply », elle devient disponible pour la fonction « Add » qui va pouvoir être calculée.
  3. La fonction, en bas à droite de l'image, permet d'attendre 1 seconde. Il est très important de constater que cette attente s'exécute en même temps que la fonction qui calcule a x b + c.

 

Lorsqu'un langage classique est ainsi séquentiel, LabVIEW est naturellement prédisposé au parallélisme. Ce qui augmente encore sa puissance et la rapidité d'exécution du code.

 

La fenêtre qui contient le code est appelé le diagramme. Cette notion sera développée par la suite.

 

montage.gif

 

 

 

En lisant ce livre, vous pourriez avoir le sentiment que LabVIEW est un outil uniquement dédié à l'acquisition et à la mesure. Certes, il propose un environnement qui facilite grandement cela, et les auteurs de ce livre ont fait délibérément le choix de mettre cette facilité à l'honneur. Mais ne vous y trompez pas, LabVIEW est infiniment plus que cela. C'est un langage à part entière manipulant une grande variété de concepts tels que le flux de données, la programmation objet, la gestion événementielle, l'encapsulation, la modularité, le typage des données, etc. Il peut vous permettre d'implémenter n'importe quel type d'application.

 

En l'utilisant vous pourrez mesurer les données d'un capteur relié à une carte d'acquisition, analyser les informations provenant d'un instrument connecté par une liaison série, réaliser un rapport de test sous Microsoft Office, implémenter un PID sur une cible FPGA, contrôler précisément un procédé physique complexe dans une tâche déterministe sur une cible Temps Réel, trouver par le calcul matricielle la distance de Mahalanobis ... mais également solutionner un Rubik's cube, un Sudoku et même jouer aux échecs (un exemple de jeu d'échecs implémenté en langage G est abordé dans ce livre).

 

Luc Desruelle | avatar_ld.gif| Voir le profil LinkedIn de Luc DesruelleVoir mon profil | Mon blog LabVIEW

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW

Co-auteur livre LabVIEW : Programmation et applications

LabVIEW Champion

Contact

banniere Luc Livre.png

Desruelle_luc ‎09-10-2015 03:34 PM
1210 Visites
0 Commentaires

Modbus RTU over TCP Master with LabVIEW

I have used it successfully to create a Modbus RTU Master or Modbus IP Master or Modus IP Master with a gateway (with unit ID). My new goal is to create a Modbus RTU over TCP master : an RTU protocol but an TCP transport.

 

plus d'infos sur Modbus avec LabVIEW sur https://decibel.ni.com/content/blogs/Luc_Desruelle/2013/06/20/modbus-et-labview

 

La nouvelle API Modbus pour NI LabVIEW est vraiment très bien

NI LabVIEW Modbus API Discussion

 

 

Pour le "transport" série, il y a le protocole RTU (le plus utilisé) ou ASCII. Le "unit ID" est alors l'adresse de l'appareil sur le bus. Il utilise l'API VISA.

Modbus RTU Master.png

Modbus ASCII Master.png

 

Pour le « transport » TCP, il y a le protocole TCP. Le « unit ID » n’est alors pas utilisé, sauf lorsqu’il existe une passerelle (Gateway), ou pour activer certaines options sur des automates. Par défaut il n'est pas "cablé" sur le vi "create IP Master", mais il existe un vi dans la palette modbus qui permet de modifier cette configuration.

 

Il existe un dernier cas, Modbus RTU over TCP. Le protocole RTU mais sur le transport TCP. Avec la nouvelle API, il faut créer son vi « Modbus RTU over TCP master.vi » qui va définir l’utilisation de l’ADU RTU mais via la couche réseau TCP.

Modbus over TCP Create Master.png

Modbus over TCP Create Master code.png

 

le code devient

create Modbus RTU over TCP master exemple.png

 

plus d'information ici https://decibel.ni.com/content/message/114904#114904

 

Luc Desruelle | avatar_ld.gif | Voir le profil LinkedIn de Luc DesruelleVoir mon profil

Auteur livre LabVIEW "Programmation et applications" édition Dunod, jusqu'au niveau pour l'examen CL...

 

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

Contact

 

 

Desruelle_luc ‎07-26-2015 04:07 PM
328 Visites
0 Commentaires

La Gestion des erreurs sous LabVIEW

I. Définition

La gestion de l'erreur n'est jamais une option mais une obligation. Elle consiste à anticiper, détecter et résoudre les mises en garde et les erreurs. Sans cette gestion, le programme peut avoir un comportement incohérent, mais sans pouvoir en identifier la cause. Par exemple, sans gestion d'erreur, un programme pourrait réaliser une acquisition sur un instrument éteint, et sauvegarder sans problème les données sur un disque dur réseau qui n'existe pas. Un miracle ? Non un calvaire.

 

La structure de la donnée « erreur » au niveau de LabVIEW est un cluster formé des trois éléments suivants (figure 3.22) :

  • Etat : un booléen qui est à l'état « Vrai » si une erreur s'est produite ;
  • Code, un entier de 32 bits, qui contient le numéro de l'erreur ou « 0 » s'il n'y pas d'erreur. Un code d'erreur différent de zéro avec un état « Faux » signale une mise en garde. Une mise en garde n'empêche pas le code de tourner, mais LabVIEW attire votre attention sur un point qu'il lui semble anormal.
  • Source :une chaîne de caractères identifiant l'endroit où l'erreur s'est produite.

erreur_labview.png

Figure 3.22 - Type de représentation de la donnée « erreur » (cluster) et extraction des différents éléments avec la fonction Désassembler par nom, utilisée dans le « Diagramme ».

 

 

II. Comprendre l'origine et la raison de l'erreur

En code source, pour résoudre le problème, il est possible de faire un clic droit sur le bord du cluster d'erreur et de sélectionner Expliquer l'erreur (figure 3.23). Une boîte de dialogue de gestion de l'erreur va s'ouvrir permettant de :

 

  • Expliquer l'origine en visualisant le nom du VI qui a généré l'erreur, dans notre exemple « Mon Code Acquisition.vi » ;
  • Proposer une ou des raisons possibles par rapport au code d'erreur, dans notre exemple LabVIEW propose la raison suivante : « La tâche spécifiée n'est pas valide ou n'existe pas », ce qui est le cas.
  • L'origine et la cause permettent en général de comprendre le problème et de le résoudre. Si cela n'est pas le cas, il faut utiliser les outils de débogage, comme les sondes et les points d'arrêts.

 

erreur_labview2.png

Figure 3.23 - Comprendre l'origine de l'erreur et la raison pour corriger le problème.

 

III. Gestion dans les VIs

Tous les VIs posséderont donc obligatoirement un « cluster d'entrée erreur » et un « cluster de sortie erreur ». Une exception peut être faite concernant les VIs qui ne génèrent aucune erreur. Par exemple, un VI qui réalise le calcul « a²+b² ». Ce calcul est réalisé par des fonctions natives de LabVIEW qui ne génère pas d'erreur, le VI qui réalise ce code ne générera donc pas d'erreur. Cependant, même dans ce cas, il est intéressant d'ajouter à ce VI une entrée et une sortie « cluster d'erreur ». Cette entrée et cette sortie seront directement reliées entre elles. Ce « dispositif » permettra de positionner le VI dans le flux d'erreur global et donc de séquencer le code de la bonne façon.

 

erreur_labview3.png

 

 

 

Cet article est un ensemble d'extraits du livre « LabVIEW , programmation et applications ». Retrouvez le livre sur Amazon !

 

Plus d'informations sur la gestion des erreurs avec LabVIEW dans le livre.

 

Luc Desruelle | avatar_ld.gif | Voir le profil LinkedIn de Luc DesruelleVoir mon profil

Auteur livre LabVIEW "Programmation et applications" édition Dunod, jusqu'au niveau pour l'examen CL...

 

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

Contact

Desruelle_luc ‎06-03-2015 05:10 AM
1026 Visites
0 Commentaires

La Gestion des erreurs sous LabVIEW

I. Définition

La gestion de l'erreur n'est jamais une option mais une obligation. Elle consiste à anticiper, détecter et résoudre les mises en garde et les erreurs. Sans cette gestion, le programme peut avoir un comportement incohérent, mais sans pouvoir en identifier la cause. Par exemple, sans gestion d'erreur, un programme pourrait réaliser une acquisition sur un instrument éteint, et sauvegarder sans problème les données sur un disque dur réseau qui n'existe pas. Un miracle ? Non un calvaire.

 

La structure de la donnée « erreur » au niveau de LabVIEW est un cluster formé des trois éléments suivants (figure 3.22) :

  • Etat : un booléen qui est à l'état « Vrai » si une erreur s'est produite ;
  • Code, un entier de 32 bits, qui contient le numéro de l'erreur ou « 0 » s'il n'y pas d'erreur. Un code d'erreur différent de zéro avec un état « Faux » signale une mise en garde. Une mise en garde n'empêche pas le code de tourner, mais LabVIEW attire votre attention sur un point qu'il lui semble anormal.
  • Source :une chaîne de caractères identifiant l'endroit où l'erreur s'est produite.

erreur_labview.png

Figure 3.22 - Type de représentation de la donnée « erreur » (cluster) et extraction des différents éléments avec la fonction Désassembler par nom, utilisée dans le « Diagramme ».

 

 

II. Comprendre l'origine et la raison de l'erreur

En code source, pour résoudre le problème, il est possible de faire un clic droit sur le bord du cluster d'erreur et de sélectionner Expliquer l'erreur (figure 3.23). Une boîte de dialogue de gestion de l'erreur va s'ouvrir permettant de :

 

  • Expliquer l'origine en visualisant le nom du VI qui a généré l'erreur, dans notre exemple « Mon Code Acquisition.vi » ;
  • Proposer une ou des raisons possibles par rapport au code d'erreur, dans notre exemple LabVIEW propose la raison suivante : « La tâche spécifiée n'est pas valide ou n'existe pas », ce qui est le cas.
  • L'origine et la cause permettent en général de comprendre le problème et de le résoudre. Si cela n'est pas le cas, il faut utiliser les outils de débogage, comme les sondes et les points d'arrêts.

 

erreur_labview2.png

Figure 3.23 - Comprendre l'origine de l'erreur et la raison pour corriger le problème.

 

III. Gestion dans les VIs

Tous les VIs posséderont donc obligatoirement un « cluster d'entrée erreur » et un « cluster de sortie erreur ». Une exception peut être faite concernant les VIs qui ne génèrent aucune erreur. Par exemple, un VI qui réalise le calcul « a²+b² ». Ce calcul est réalisé par des fonctions natives de LabVIEW qui ne génère pas d'erreur, le VI qui réalise ce code ne générera donc pas d'erreur. Cependant, même dans ce cas, il est intéressant d'ajouter à ce VI une entrée et une sortie « cluster d'erreur ». Cette entrée et cette sortie seront directement reliées entre elles. Ce « dispositif » permettra de positionner le VI dans le flux d'erreur global et donc de séquencer le code de la bonne façon.

 

erreur_labview3.png

 

 

 

Cet article est un ensemble d'extraits du livre « LabVIEW , programmation et applications ». Retrouvez le livre sur Amazon !

 

Plus d'informations sur la gestion des erreurs avec LabVIEW dans le livre.

 

Luc Desruelle | avatar_ld.gif | Voir le profil LinkedIn de Luc DesruelleVoir mon profil

Auteur livre LabVIEW "Programmation et applications" édition Dunod, jusqu'au niveau pour l'examen CL...

 

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

Contact

Desruelle_luc ‎04-21-2015 07:50 AM
1341 Visites
0 Commentaires

Auteur livre LabVIEW "Programmation et applications" édition Dunod, jusqu'au niveau pour l'examen CLD

Luc Desruelle, Francis Cottet, Michel Pinard

Éditeur Dunod / L'Usine Nouvelle - 3ème édition - 464 pages - EAN13 : 9782100724338 - Collection: Technique et Ingénierie,

Lien sur le site Amazon : http://www.amazon.fr/Luc-Desruelle/e/B00VOUMY4A/ref=dp_byline_cont_book_3

 

Couverture livre.jpgLabVIEW est un environnement de développement graphique particulièrement bien adapté au domaine de l’acquisition, de la mesure et du contrôle/commande. Son approche totalement graphique offre une souplesse et une dimension intuitive inégalée. Comparativement aux langages textuels il offre la même puissance de programmation mais sans le côté abstrait et complexe lié à la syntaxe.

 

Cet ouvrage permet au lecteur de s’initier aux bases puis aux techniques avancées du langage de développement LabVIEW afin de pouvoir réaliser une application dans les règles de l’art.

 

Il est structuré en six chapitres :

Les deux premiers sont consacrés à la prise en main de l’outil et la description des éléments de programmation graphique de base, illustrés par des exemples simples.

 

Le troisième chapitre aborde la programmation avancée en LabVIEW en définissant des techniques et architectures permettant au code d’être maintenable, évolutif et performant. Il présente des concepts nécessaireà l'examen CLD (Développeur Certifié LabVIEW).

 

Les trois derniers chapitres abordent les capacités spécifiques de LabVIEW pour l’acquisition, l’analyse et la présentation des données.

 

Des exemples concrets et détaillés permettent d’illustrer les domaines tels que l’acquisition de données, le pilotage d’instruments, les systèmes temps réel & FPGA, le traitement du signal, l’analyse mathématique, la sauvegarde des données et la génération de rapport.

 

 

Un lien vers un post du forum francophone qui parle de l’examen Certifié LabVIEW développeur (CLD) :

http://forums.ni.com/t5/Discussions-au-sujet-de-NI/CLD-pr%C3%A9paration/m-p/3082265/highlight/true#M...

 

Luc Desruelle | avatar_ld.gif| Voir le profil LinkedIn de Luc DesruelleVoir mon profil

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer/ Certifié Développeur LabVIEW

Contact , Twitter.

Desruelle_luc ‎04-06-2015 07:00 AM
1309 Visites
0 Commentaires

Partie 3/3 : Distribuer son Framework de projet, modèle de projet personnalisé, avec le gestionnaire de projet LabVIEW - version distribution personnalisée

I] Introduction

 

Sur un nouveau projet, afin de ne pas repartir d'une feuille blanche, les développeurs utilisent leur Framework de projet, qui correspond à leur structure de programme personnalisée.

Depuis la version LabVIEW 2012 un gestionnaire de projet permet d'ajouter ses modèles et de les distribuer facilement. voir

 

Partie 2/3 : Distribuer son Framework, modèle de projet personnalisé, avec le gestionnaire de projet...

 

Le modèle "simple" utilise la fenêtre de gestion "standard" de NI LabVIEW pour générer et modifier le code du projet.

 

Capture 5.PNG

 

Si comme moi, cete fenêtre ne correspond pas "entierement" à vos attentes, par exemple "elle ne fait que copier" l'arborescence du projet; mais je voudrai :

 

  • Renommer des dossiers suivant des options à ajouter
  • Ajouter le nom de application; le client; le copyright;...
  • Modifier la distribution du projet pour la génération de l'exe;
  • Modifier les options du build
  • Modifier le fichier ini
  • ...

 

 

 

Nous allons donc voir comment modifier les options de génération de la fenêtre de distribution de projet LabVIEW.

  • En utilisant le dossier \scripting
  • En modifiant via une class Enfant la "SpecPage"

 

Et pour cela nous allons :

 

  • Créer une class <MetaDataClass> enfant de la class MetaDataObj\MetaDataObj.lvclass
  • Créer une nouvelle "SpecPage.vi", qui va copier les nouvelles spécifications de la MetaDataClass personnalisée
  • Créer un code qui va réaliser les actions de personnalisation

 

Avant de commencer, il faut bien comprendre le fonctionnement du gestionnaire de projet de LabVIEW.

 

 

 

II] Fonctionnement "standard" du gestionnaire de projet

 

 

Le gestionnaire de projet utilise le code LabVIEW XXXX\resource\dialog\NewProjectWizard\Project Copying\CreateUserProject.vi Et il est configuré par les fichiers XML des projets.

 

1_ gestionnaire programme.png

Il repose sur une structure « state machine » classique ; avec des états et des transitions via un file d’attente ; ou FIFO Queue.

 

1_ gestionnaire programmecode.png

 

initialisation des données Case "Init Spec Page" du générateur de projet  : Les données de spécification du projet sont passées dans la « Data » privée d’une class « MetaData.class »

2_class metadataclass.png

 

Lors de la lecture du fichier XML du projet, si aucune class fille n’est spécifiée, le gestionnaire de projet va charger la class Parent, et ouvrira la fenêtre « standard » de spécification du projet

 

case "Open Spec Page" : lecture via property "Read Spec Page.vi" du chemin de la page de spécification

3_specpage.png

Après la page de spécification, la distribution du projet est réalisée par « createuserpojet.vi» qui exécute les actions de duplication du projet, selon les données de la class « MetaData.class ».

5_createuserprojet.png

 

Pour résumer :

Gestionnaire de projet standard de NI.png

 

 

III] Ajouter des options personnalisées au gestionnaire de projet

 

Nous allons utiliser trois tags optionnels du fichier XML du projet

 

XML   Tag

 

Description

 

Example Project

 

Optional Tags

 

<MetaDataClass>

 

Specifies the path to a class that defines custom behavior for the user interface   of the second page of the Create  Project dialog box.

 

Actor Framework

 

<CustomVIMode>

 

Determines when to run  a custom VI during the project  creation process. Select from the following values:

             
  • None—No custom VI runs. If you omit the <CustomVIMode> tag, None is the default value.
  • AfterPage1—After the user selects a project, the Create       Project dialog box closes, and the        custom VI runs.
  • AfterPage2NoUI—After the second page of the Create       Project dialog box creates the project, the        custom VI runs and completes.        Then, the Create       Project dialog box closes.
  • AfterPage2WithUI—After the Create       Project dialog box creates the project, the Create Project dialog box closes, and the custom VI runs. The custom VI is responsible for showing or        hiding its panel.
  •  
 

Simple   State Machine, Blank VI, Actor  Framework

 

<CustomVIPath>

 

Specifies the path to the custom VI you want to run  during the project creation process. If you set the <CustomVIMode> tag to None, LabVIEW ignores the <CustomVIPath> tag.
 
 

 

Actor Framework

 

Avec les valeurs :

  • <MetaDataClass> : chemin relatif de la class fille. Je vous propose de partir de l'exemple de l'Actor Framework, afin de créer la votre
  • <CustomVIMode> : AfterPage2WithNoUI qui va donc permettre de réaliser des actions personnalisées via le vi <CustomVIPath>

 

Nous pouvons avoir

 

<CustomVIMode>AfterPage2NoUI1</CustomVIMode>


<CustomVIPath>scripting/MetaDataObj/PostCopyScripting.vi</CustomVIPath> 


<MetaDataClass>scripting/MetaDataObj/MaMetaDataObj.lvclass</MetaDataClass>

 

Pour information, à partir de la version LabVIEW 2013 il existe des exemples de template, vit, pour

  • la page de spécification : SpecPage.vi
  • le code de "post copy scripting", code personnalisé après la code générique de copie : PostCopyScripting.vit

 

VI] Exemple distribution projet personnalisée

 

Lors de l'initialisation des données Case "Init Spec Page" du générateur de projet  : suite lecture du fichier XML du projet, le gestionnaire de projet va charger la class MaMEtaDataObj.lvclass

 

Dans le case "Open Spec Page" : lecture via property "Read Spec Page.vi" du chemin de la page de spécification.

Ouverture de la page de spécification personnalisée.

 

Après la validation de la page de spécification, la distribution du projet est réalisée par « createuserpojet.vi» qui exécute les actions de duplication du projet, selon les données de la class « MetaData.class ».

 

Dans le case "Open Custom Vi" : l'option <AfterPage2NoUI> du fichier XML va permettre de réaliser le code de <CustomVIPath> PostCopyScritping.vi

 

 

7_MetaDataClass Map.png

 

V] Synthèse des différentes méthodes

 

8_CustomProject Map.png

 

 

 

Luc Desruelle | avatar_ld.gif | Voir le profil LinkedIn de Luc DesruelleVoir mon profil

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

Contact , About me. , Google+. , Twitter.

Desruelle_luc ‎04-04-2015 02:49 AM
1059 Visites
0 Commentaires

LabVIEW Champion, Certifié LabVIEW Architecte (CLA) & Développeur (CLD)

certified_lv_architect_l.jpgCLA ou Certifié LabVIEW Architecte (CLA-R pour re-certification) :

http://sine.ni.com/nips/cds/view/p/lang/fr/nid/13477

• Niveau le plus élevé de certification LabVIEW

• Démonstration d'une maîtrise de l'architecture et de la gestion de projets des applications LabVIEW

La certification Certified LabVIEW Architect est la dernière étape du processus de certification LabVIEW qui en comporte trois (CLAD, CLD et CLA).

Ce diplôme obtenu à l’issue d’un processus d’évaluation rigoureux par National Instruments, atteste d’une totale maîtrise de développement en environnement LabVIEW.

Des programmeurs Certified Architect peuvent guider et donner des conseils techniques, assurant que les développeurs moins expérimentés respectent de bonnes pratiques, tout en accroissant leurs compétences et leur efficacité. De plus, les programmeurs Certified Architect sont capables de concevoir l'architecture de l'application et de gérer le développement des autres ingénieurs.

Je suis CLA : Architect certifié LabVIEW (CLA-R) et CLD : Développeur Certifié LabVIEW (CLD-R)

CLA-R luc desruelle mesulog.pngCLD luc desruelle certifie labview developpeur.png

je suis également LabVIEW Champion

LabVIEW champion.png

A LabVIEW Champion is a top tier, National Instruments Platform enthusiast who has been recognized by National Instruments for their EXCEPTIONAL application development, technical depth and breadth, and leadership and contributions to the LabVIEW community.

A LabVIEW Champion is the first to stand up and defend the NI  Platform, but still has a healthy sense of critical evaluation of the platform, always pushing it to be easier to use and more powerful. The key is our Champions are positive contributors.

LabVIEW Champions are also credible technology experts from around the world who inspire others to learn and grow with LabVIEW through active technical community participation and face-to-face interactions.

LabVIEW Champions are not employees of National Instruments nor do they speak on National Instruments' behalf. LabVIEW Champions are third party individuals who have received recognition from National Instruments for their outstanding contributions to the success of LabVIEW.


Luc Desruelle | avatar_ld.gif| Voir le profil LinkedIn de Luc DesruelleVoir mon profil | Mon blog LabVIEW

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW

Co-auteur livre LabVIEW : Programmation et applications

LabVIEW Champion

Contact

banniere Luc Livre.png


Desruelle_luc ‎07-13-2014 04:23 PM
1415 Visites
0 Commentaires

Exécuter une commande système avec l'invite de commande sous LabVIEW

I] Introduction : les problèmes avec l'invite de commande

Il est possible de faire "beaucoup de choses" avec l'invite de commande de Windows, la fameuse fenêtre "cmd" de Windows.

 

Sous LabVIEW, il faut utiliser le vi "Commande système" connu sous le nom "system Exec.vi".

commande systeme.png

Le vi permet d'exécuter une commande système, une ligne de commande au niveau du système ,qui peut inclure tous les paramètres supportés par l'application que vous voulez lancer

 

  • Mais comment bien l'utiliser?  En effet comment gérer l'erreur retournée par la commande système ?
  • Mais dans quelle langue est le texte? Avez-vous regardé le texte de la sortie? texte "étrange"? avec des R‚ponse des ::1ÿ:
  • Comment analyser le retour de la fenêtre?

 

Exemple de réponse de la commande système via LabVIEW:

Envoi d'une requˆte 'ping' avec 32 octets de donn‚esÿ:

R‚ponse de ::1ÿSmiley tirant la langueonse de ::1ÿ: temps<1ms 

R‚ponse de ::1ÿ: temps=2 ms 

Statistiques Ping pour ::1:     Paquetsÿ: envoy‚s = 4, re‡us = 4, perdus = 0 (perte 0%), Dur‚e approximative des boucles en millisecondes :     Minimum = 0ms, Maximum = 2ms, Moyenne = 0ms

 

 

 

II] Mais dans quelle langue est le texte de retour de la commande?

 

Les fenêtres de type console ou invite de commandes, sur les systèmes Microsoft Windows en Europe occidentale, utilisent la page de code 850. C'est une page de code définie par IBM et qui est utilisée en Europe occidentale avec le système DOS et d’autres systèmes de la même époque.

 

C’est une extension de l’ASCII sur 8 bits, partiellement compatible avec la page de code 437 dont elle est dérivée et qu’elle modifie. 

 

Plus d'information sur wikipedia http://fr.wikipedia.org/wiki/Page_de_code_850 

 

Le code page 850 est IBM/OEM/Microsoft Code page

 

Pour "traduire", convertir, la chaine de texte de retour de l'invite de commande, string au format OEM, il va falloir utiliser la user32.dll avec la fonction "OemToChar", qui permet : cf MSDN : Translates a string from the OEM-defined character set into either an ANSI or a wide-character string 

 

2 user32 OEMto charA.png

 

Par exemple sur une commande "ping"

texte2.png

 

 

III] Comment gérer l'erreur retournée par l'invite de commande?

Il faut distinguer l'erreur de la fonction "invite de commande", via le vi LabVIEW "system Exec.vi" et l'erreur de la commande système appelée par "l'invite de commande".

 

Le vi LabVIEW ne gére pas, dans le clusteur "standard" Erreur Out, l'erreur retourneé par la fonction "utilisée" dans l'invite de commande.  Il ne gére que l'erreur de la fonction invite de commande.

 

Par contre, la fonction LabVIEW retourne pour la commande utilisée : un indicateur de retour "code de retour" et le texte de l'erreur.

 

Pour gérer l'erreur, dans la fonction utilisée, le code va ressembler à cela :

  • si code 0, pas d'erreur
  • sinon utiliser le vi Error Cluster From Error Code.vi pour créer une erreur LabVIEW, dans les règles de l'art. Nous allons convertir, via la fonction "OemToChar",  le texte de l'erreur de la commande systéme que nous allons ajouter dans le texte de l'erreur LabVIEW.

 

code erreur3.png

 

 

IV] Exemple de code

 

 

Luc desruelle code system execution cmd commande systemeV2.png

Luc Desruelle | avatar_ld.gif | Voir le profil LinkedIn de Luc DesruelleVoir mon profil

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

 

Contact , About me. , Google+. , Twitter.

Desruelle_luc ‎07-11-2014 02:13 PM
1541 Visites
0 Commentaires
Desruelle_luc ‎07-04-2014 02:58 AM
1231 Visites
0 Commentaires

Quand faut-il fermer une référence sous LabVIEW?

Pour faire simple, il n'est besoin de fermer que les références "créés" programmatiquement, et pas par "clic droit"

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

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

 

The standard method of referencing objects is to open a reference to the object, use the object, and close the reference to the object. Whether you close a control reference depends on how you generated it-with a control reference constant, a Property Node, or the Event structure 

 

When you open a reference to an application, project, VI, or other reference source, LabVIEW allocates memory to store that reference. To free up the space in memory where LabVIEW stored the reference source, you must close the reference. It is always safe to close a reference when you no longer need it. You can use the Close Reference function (linked below) to close a reference.  

 

Exceptions : Implicit References and Unwired Property and Invoke Nodes  Although you should usually close references when you no longer need them, you can leave implicit references and references returned in the reference out terminal of unwired property and invoke nodes open, shown below, because a Close Reference function does not actually close these references or remove the target objects from memory.   

 

If you do not close a reference, your application is susceptible to reference leaks that can use up memory and slow the execution time of the application. LabVIEW automatically closes a reference when the top-level VI that opened the reference goes idle, but if the application runs for extended periods of time, the effects of reference leaks gradually increase.

 

Quelques exemples de référence à ne pas fermer

ref2.png

 

De même (le close n'est pas utile)

 

ref.png

Desruelle_luc ‎03-23-2014 03:40 PM
1647 Visites
0 Commentaires

Un GIF animé pour éviter de faire du code

Le code utilisé pour le post est en Pièce jointe

0) Introduction

 

Depuis LabVIEW 6.1 il est possible d’importer dans la face-avant de l’IHM des GIF animés. Dans la face-avant, oui, mais surtout dans les contrôles et indicateurs. 

 

L’intérêt d’utiliser une image animée :

 

1)     Ajouter une animation, pour signaler le déroulement d’une action, et sans faire de code

2)     Esthétique, comme toujours, pour un aspect plus professionnel (attention pas toujours vrai…) 

 

 

1) Signaler le déroulement d'une action

 

Mon préféré, il est très simple d’importer un GIF animé, et de l’insérer

Soit dans un bouton état Vrai : une image updating2.gifet état Faux : une autre image  ou PAS d’image, afin de définir une action en cours, par exemple une mise à jour.

 

Soit dans un picture Ring ou menu déroulant d’images, afin de définir un état  2.png qui sera disponible via la valeur « donnée » 3.png

 

par exemple 

Dans l’utilisation, une de mes réponses sur le forum « Faire clignoter une led dans un cluster »

http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Labview-faire-clignoter-une-led-dans-un-tableau-d... 

 

 

2) Esthétique

J’avais réalisé pour illustrer les fenêtres LabVIEW qui ne sont pas rectangulaire, Vous trouverez l'ensemble du sujet, des exemples, du code et un tutorial sur la réalisation de fenêtres pas rectangulaire sur le post d'origine : Les fenêtres LabVIEW ne sont pas toutes rectangulaires

 

un exemple avec un petit poisson qui nageait.

 

Afin de déplacer l’image, j’avais insérer un GIF animé de poisson dans un menu déroulant d’images, que je déplaçais de façon programmatique.

 

L’intérêt du menu déroulant, plutôt que d’un booléen, résidait dans la possibilité de rajouter d’autres images. 

Capture11.PNGCapture12.PNG

 

 

3) Importer un GIF animé dans LabVIEW

Réaliser un GIF animé, avec par exemple Barbarosa Gif animator ou Photoshop ou ... télécharger une image libre de droit sur internet.

Vous pouvez télécharger mon avatar…

 

Sous LabVIEW  dans le menu : "Importer une image dans le presse papier" afin de ne pas dégrader l'image

 

5.png

 

Sur le contrôle de type menu déroulant d'images "ajouter un élément après"

7.png

 

 

 

 

Je reste dispo pour vos commentaires, A+

  

avatar_ld.gifLuc Desruelle Voir mon profil | Contact

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CTD : Certified TestStand Developer / Certifié TestStand LabVIEW

 

Desruelle_luc ‎03-13-2014 03:07 PM
2009 Visites
8 Commentaires

Les fenêtres LabVIEW ne sont pas toutes rectangulaires

0] Introduction

Il existe sur internet plusieurs exemples, très intéressants, de code LabVIEW pour avoir des fenêtres qui ne sont pas rectangulaires.

splash3.png

Tous les exemples utilisent le même code, qui permet via la dll Windows "user32.dll" fonction SetLayerdWindowAttributs, de :

> rendre transparent l'ensemble des pixels d'une couleur spécifiée de la face-avant ;

> gérer l'opacité de la fenêtre.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633540(v=vs.85).aspx

L'intérêt est :

  1. principalement esthétiquepour les spash screen, Cf Wikipédia : la toute première fenêtre affichée par un logiciel. Cette fenêtre incite l'utilisateur à patienter pendant le chargement et l'installation d'un logiciel tout en lui apportant diverses informations comme le nom du logiciel, le nom de l'éditeur, le logo de l'éditeur ou du logiciel, les droits d'auteur associés au logiciel, la version et l'état du chargement du logiciel.
  2. insérer des fenêtres "particulières"
  3. opacité, afin de permettre une comparaison par superposition de plusieurs fenêtres

Je vais montrer un exemple avec ma photo suivante

Capture5.PNG

I] Certains codes incomplets

Certains exemples sont incomplets, car ils ne fonctionnent qu’avec des « jeux » de couleurs particuliers.

Le problème provient de la différence de gestion des couleurs entre LabVIEW et Microsoft : RGB VS BGR >>> COLORREF value has the following hexadecimal form : 0x bbggrr

Par exemple http://forums.ni.com/t5/LabVIEW/Darren-s-Weekly-Nugget-04-17-2006/m-p/352929?view=by_date_ascending#...

ou le très bon post de DaHelmut

1 erreur.PNG

II] Rendre Transparent Des Pixels - Fonction Set Window Color To Transparent

D’autres exemples sont très complets, et fonctionnent avec toutes les couleurs, car ils convertissent la couleur RGB de LabVIEW en BGR pour Windows

Par exemple une référence : https://decibel.ni.com/content/blogs/labviewramblings/2013/11/30/groovy-splash-screen

Je ne sais pas qui est la première personne à avoir réalisé le code. J'ai réalisé un vi modifié, avec la documentation du code et en intégrant directement le Get Window Handle.vi

Set Window Color to Transparent.png

Pour utiliser le code il faut ouvrir la référence du vi via Capture.PNG puis Capture3.PNG

par exemple Capture2.PNG

La fenêtre est alors transparente mais ... avec une bordure!

Capture4.PNG

III] Une fenêtre sans bordure

La transparence ne va pas suffir. En effet la fenêtre a encore la bordure. Il faut modifier les options de la fenêtre pour avoir

Capture7.PNG

devient Capture8.PNG

La fenêtre n'est plus rectangulaire! Mais n'est plus une fenêtre, car comment la fermer?

IV] Fermer la fenêtre sans bordure

il faut ajouter un bouton "croix" pour fermer... Sans titre.png

Image2.png

Toutes les formes sont possibles.

Même un "Petit poisson" voir le code en PJ

Capture11.PNGCapture12.PNG

Luc Desruelle | avatar_ld.gif | Voir le profil LinkedIn de Luc DesruelleVoir mon profil

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

Contact , About me. , Google+. , Twitter.

Desruelle_luc ‎02-23-2014 02:31 PM
1546 Visites
2 Commentaires

Partie 1/3 : Créer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - Pourquoi ?

I] Depuis le QMH ou GMF - pourquoi utiliser un modèle personnalisé?

 

Avec LabVIEW 2012 est arrivé les modèles de projet LabVIEW via le gestionnaire de projet. Il est livré quelques modèles, ou Framework, avec LabVIEW, dont les fameux QMH (Queue Driven Message Handler) ou modèle Gestionnaire de messages dans une file d'attente (GMF) en Français et l’Actor Framework.

 

Même si l’Actor Framework est passionnant, il reste difficile à utiliser pour les non-spécialistes. Le Queue Driven Message Handler, plus connu sous le petit nom de QMH ou QDMH, est un incontournable qui est très simple d'utilisation.

 

La structure proposée par QMH repose sur un modèle éprouvé d’une structure producteur – consommateur, dans lequel :

Ø  (la boucle productrice) la structure évènementielle capture les actions utilisateurs, sur la face-avant, et produit le « message » via une FIFO

Ø  Le message est un cluster composé d’un état « case » et une donnée facultative Data de type variant

Ø  (la boucle consommatrice) la structure consommatrice, basée sur un modèle de machine à états, dépile sur apparition les données de la FIFO. Le message définit une transition vers l’état avec la donnée associée. Le "case" de la structure "Message" est une chaîne qui correspond à un des sous-diagrammes de la structure Condition . Par conséquent, la lecture du message provoque l'exécution du sous-diagramme correspondant de la structure Condition. Ce sous-diagramme est appelé diagramme de message car il correspond à un message.

 

Plus d'informations http://www.ni.com/white-paper/14119/fr/

Ø  Ces boucles s'exécutent en parallèle et sont connectées par la file d'attente de messages, qui facilite la communication entre les boucles.

Ø  Votre application peut avoir plusieurs "Boucle Consommatrice", QMH = Actor, chaque boucle correspond à une tâche effectuée par l'application.

 

Alors pourquoi utiliser un modèle personnalisé ? C’est un modèle, qui mérite des améliorations, vos améliorations, mais la structure « Message & file d'attente FIFO » est à garder.

Je vous conseille donc de générer un  VOTRE projet MAIS sur la base du QMH, de regarder la très bonne documentation html livrée avec le projet, et de modifier le code.

Projet 3.PNG

Gestionnaire de messages dans une file d'attente :

Projet 4 - Copie.PNG

Le nouveau code sera la base de construction de votre modèle personnalisé "simple"

code main.png

II] Exemples d'améliorations "simples"

 

L’exemple donné par le QMH :

Ø  quitte l’application sur « erreur » -> remplacer "Exit" par "Error"" et ajouter un état dans la "Boucle de gestion de messages". Remarque : la "Message Queue.lvlib" est distribuée en "support VIs". Elle n'est pas dans la vi.lib ni la user.lib. Vous pouvez donc la modifier. Je vous propose de renommer la lvlib, pour faire la différence avec la lvlib d'origine.

 

code exit.png

 

Ø  ne sauvegarde pas ni ne gère l'erreur, qui est donc fatale -> dans l'état "Error" ajouter un affichage de l'erreur ainsi que la sauvegarde et le filtrage si l'utilisateur le décide.

Ø  n’affiche pas la version du logiciel -> ajouter les VIs de gestion de version de LabVIEW

Ø  la structure event driven sort sur erreur -> remplacer par un vi qui transfère l'erreur à la "Boucle de gestion de messages" via la FIFO

 

code exit event.png

 

Ø Supprimer le code "exemple"

Ø  n'a pas votre personnalisation! Ajouter votre logo,...

Ø 

 

Si vous avez besoin d'aide, d'information ou de conseil pour réaliser votre projet personnalisé (Framework), vous pouvez laisser un commentaire. La suite de l'histoire....

Partie 1/3 : Créer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - Pour...?

Partie 2/3 : Distribuer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW -...

Partie 3/3 : Distribuer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW -...

 

avatar_ld.gifLuc Desruelle Voir mon profil | Contact

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CTD : Certified TestStand Developer / Certifié TestStand LabVIEW

Desruelle_luc ‎02-21-2014 02:24 AM
1491 Visites
0 Commentaires

Partie 2/3 : Distribuer son Framework, modèle de projet personnalisé, avec le gestionnaire de projet LabVIEW - version Simple

I] Insérer son Framework, modèle personnalisé de projet LabVIEW, dans le gestionnaire de projet de National Instruments : la version "simple"

  

I.1) Introduction et Documentation

Sur un nouveau projet, afin de ne pas repartir de la feuille blanche, les développeurs LabVIEW utilisent leur Framework de projet, qui correspond à leur structure de programme.

Il existe quelques publications sur comment créer et distribuer son modèle de projet LabVIEW. Souvent en anglais. Souvent la version "simple". Par version "simple" il faut comprendre la version "proposée" en standard par National Instruments au travers du gestionnaire de projet de LabVIEW.

Cette méthode peut être "personnalisée", mais il faut une bonne connaissance du fonctionnement de la version "classique" avant de pouvoir la personnalisée.


Pour moi 2 références : By ekerry "Creating and Distributing Custom Templates with the New Create Project Dialog"  http://ekerry.wordpress.com/2012/11/09/creating-and-distributing-custom-templates-with-the-new-creat...

 et  LabVIEW Templates and Sample Projects: http://www.ni.com/white-paper/14045/en


 

Je vais vous présenter comment LabVIEW permet d'insérer votre Framework dans le gestionnaire de projet "standard" de LabVIEW

 

I.2) Arborescence

Par exemple le Framework de projet, basé sur le modèle QMH modifié, cf Partie 1/3 : Créer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - Pour...?,  pourra être copié dans un des 2 dossiers "projectTemplates" :

 

> Dans le dossier de LabVIEW : C:\Program Files\National Instruments\LabVIEW XXXX\ProjectTemplates

> Dans le dossier "LabVIEW Data" >>> C:\Users\NomUser\Documents\LabVIEW Data\ProjectTemplates

 

 Personnellement j'utilise le dossier "LabVIEW Data" (plusieurs versions de LabVIEW, droit d'écriture, sauvegarde, distribution par copier-coller)

 

Dans le dossier LabVIEW il existe déjà les exemples livrés par NI avec LabVIEW, ils vont servir de modèle

projet.PNG

 

Le dossier créé sous  "LabVIEW Data" devra contenir les dossiers

  • <LabVIEW Data>\ProjectTemplates\MetaData
  • <LabVIEW Data>\ProjectTemplates\Source

projet.PNG

 

I.3) Le fichier MetaData

Le dossier MetaData contient un fichier xml, il suffit de copier le fichier de "C:\Program Files\National Instruments\LabVIEW 2012\ProjectTemplates\MetaData"

 

La structure est

<?xml version="1.0" encoding="windows-1252" standalone="yes" ?><MetaData>

 

avec un Tag pour chaque Projet >>> <ProjectTemplate> </ProjectTemplate>

Par exemple pour mon projet :

 

<ProjectTemplate>
  <Title localize="yes">Luc Desruelle QDMH</Title>
  <Description localize="yes">Luc QDMH</Description>
  <Filters localize="yes">Modèles:Bureau</Filters>
  <Keywords localize="yes">état;machine;file d'attente;en file d'attente;événement;gestionnaire;message</Keywords>
  <LocationPath>Core/Luc_QMH</LocationPath>
  <ProjectPath>Queued Message Handler.lvproj</ProjectPath>&gt;
  <ListboxImagePath>images/avatar_ld.png</ListboxImagePath>
  <DocumentationPath>documentation/Queued Message Handler Documentation.html</DocumentationPath>
  <CustomVIMode>None</CustomVIMode>
  <SortPriority>400</SortPriority>
  <LabelLocalizations>localization/QMH_Label Localization.vi</LabelLocalizations>
</ProjectTemplate>

 

XML Tag Description Example Project
Required Tags
<Title> Defines the title of the project as it appears in the Create Project dialog box. All projects
<Description> Defines the description of the project as it appears in the Create Project dialog box. All projects
<Filters> Determines filters for the project, which allow users to filter items in the Create Project dialog box by category. Use a colon to separate categories and a semicolon to separate multiple filters. All projects
<LocationPath> Specifies the path to the directory that contains source files for the project. Use a forward slash (/) as the path separator.

 

This path is relative to the ProjectTemplates\Source directory. All other paths in the meta data for the project are relative to the path you provide in the <LocationPath> tag.
All projects
<ListboxImagePath> Specifies the path to the image you want LabVIEW to display beside the project title in the Create Project dialog box. Ensure that the dimensions of the image are 32x32 pixels. All projects
<ProjectPath> Specifies the path to the .lvproj file for the project. If you set the value of the <CustomVIMode> to AfterPage1, this tag is optional. Simple State Machine

 

Cette première version est une version "simple", elle n'utilise donc que les Tags "simples".

I.4) Le code source

Je copie le code du QMH modifié sous ..\ProjectTemplates\source\Core\Luc_QMH

avec le nom du projet <ProjectPath>Queued Message Handler.lvproj</ProjectPath>

et la documentation html  <DocumentationPath>documentation/Queued Message Handler Documentation.html</DocumentationPath>

 

projet2.PNG

 

J'ajoute mon image sous images/avatar_ld.png ma belle image! avatar_ld.gif

La version standard de la distribution du Framework personnalisé est terminée...


Si vous avez besoin d'aide, d'information ou de conseil pour réaliser la distribution votre projet personnalisé (Framework),

vous pouvez laisser vos commentaires.


II] Générer un Framework personnaliséprojet

 Nous pouvons donc créer notre projet, à partir de notre Framework

Projet 3.PNG

 

puis choisir le modèle de projet "le point de départ..."

Projet 4.PNG

 

Le modèle "simple" utilise la gestion "standard" de NI LabVIEW pour générer et modifier le code.

Capture 5.PNG

 

<CustomVIMode>
  • None—No custom VI runs. If you omit the <CustomVIMode> tag, None is the default value.
 

 

Et moi je n'aime pas la création standard.... je voudrai en faire plus!

Par exmple le préfixe est une bonne idée, mais pas sur les vi's "support", je voudrai renommer des dossiers suivant des options

 

Bref nous allons donc voir comment modifier les options de génération de la fenêtre de distribution de projet LabVIEW.


Partie 1/3 : Créer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - Pour...

Partie 2/3 : Distribuer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW -...

Partie 3/3 : Distribuer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW -...

 

avatar_ld.gifLuc Desruelle Voir mon profil | LabVIEW Champion | Contact

 

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CTD : Certified TestStand Developer / Certifié TestStand LabVIEW

 

Desruelle_luc ‎02-16-2014 02:33 PM
1462 Visites
2 Commentaires

Exemple de code OOP avec LabVIEW

Le code LabVIEW est dans le post 

Suite à une demande sur le forum, un exemple de OOP avec LabVIEW

La demande : Pouvoir configurer le même logiciel avec 2 cartes d'acquisition différentes.

L'initialisation, boite de dialogue de configuration, acquisition et close des références seront donc différents en fonction des cartes.

Donc:

  • Une class Deformation avec 2 enfants ConditionneurExterne et CarteSpecifique
  • 1 méthode configuration, avec dans chaque class enfant une méthode en dynamic dispatch pour la fenêtre de configuration spécifique, qui ser donc appelée lors de la définition de l’objet de la carte utilisée
  • Idem pour les méthodes acquisition, méthode acquisition en dynamic dispatch
  • Les données spécifiques à une carte sont donc dans la donnée privée de la class de l’enfant.

 

J’ai fait un « brouillon d’architecture ». Je précise car le code n’est pas totalement « propre ».

Le projet UML

Deformation.png

En LabVIEW cela va ressembler à

> Dans le projet  

project.PNG

et sur la hiérarchie des class

hierarchie de classes.PNG

 

Une class Deformation avec 2 enfants

> ConditionneurExterne

> CarteSpecifique

il y a un vi exemple

 

diagram OOP.PNG

 avec en face avant

OOP face Avant.PNG

 en fonction du boolean "Conditionneur Externe", l'objet sera du type d'une carte ou de l'autre. Le code de la class correspond sera alors exécuté.

liens sur le site de National Instruments : LabVIEW Object Oriented Programming Resource Directory

avatar_ld.gifLuc Desruelle Voir mon profil | Contact

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CTD : Certified TestStand Developer / Certifié TestStand LabVIEW

 

 

Desruelle_luc ‎02-12-2014 04:31 PM
1136 Visites
0 Commentaires

Techniques Programmation avancée LabVIEW : Gestion des données FGV – AE - vers DVR

plus d'informations dans le chapitre 3 « programmation avancée » du  livre "LabVIEW programmation et applications" édition Dunod

 

http://www.amazon.fr/LabVIEW-3e-%C3%A9d-Programmation-applications/dp/2100724339/ref=la_B00VOUMY4A_1...

 

(environnement de développement, règles de style, gestion des données, gestion des erreurs et règles d’architecture) :

• la gestion des données : locale, globale, nœud de propriété, variables fonctionnelles (FGV), Action Engine (AE), programmation Objet (OOP), DVR; • les modèles de projet (VI général, machine à états, producteur/consommateur événementiel, boite de dialogue)

• la gestion des erreurs;

• les règles de styles;

• les outils gratuits et indispensables (OpenG, VIPM,...)

• ...

 

0] techniques Programmation Avancée : locale, Globale vers FGV et DVR

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

Par Luc DESRUELLE certifié LabVIEW Architecte et développeur - MESULOG lors des

Journées techniques LabVIEW National Instruments 21 novembre 2013

Présentation réalisée lors des Journées techniques LabVIEW, par Mesulog - Luc Desruelle - Technique de programmation avancée : gestion des données.

 

  • Sommaire :
    Où trouver de l’aide?
  • Quelques règles de style, LabVIEW Style Checklist
  • Contrôle, Indicateur VS Locale VS Globale VS Noeud de propriété
  • Pourquoi utiliser indicateur puis locale puis noeud de propriété
  • FGV : Functional Global Variable
  • AE : Action Engine
  • OOP : Object-Oriented Programming et structure
  • SM – QDMH
  • DVR : Data Value Reference

 

 

1) Histoire des FGV - Functional Global Variables – History

 

FGV : Functional Global Variable

 

Prior to the release of LabVIEW 2, the value of the initialized shift register had not been defined. This was during the time period in which LabVIEW was black and white and required the developer to disconnect all of the terminals to move an icon.

 

With the release of LabVIEW 2, the LabVIEW development team wisely determined that the uninitialized shift register would retain its previous value. The alternative would have been that it revert back to the default value of the data type. Subsequently, with the release of LabVIEW 2, this technique became the methodology for storing global data in LabVIEW.

 

The native global variable was not introduced until LabVIEW 3. But even with the introduction of the native global variable, the functional global variable remained a popular programming technique for global data storage.

 

Advanced Architectures in LabVIEW Course Manual

 

 

2) FGV - Functional Global Variables

La FGV est un registre à décalage non initialisé, d’un vi non réentrant, qui permet de mémoriser une valeur sur un set...

1 init.PNG

et de la lire sur un Get

2 get.PNG

 

3) AE -  Action Engine

L'AE permet de rajouter une action dans un état, principe de l'encapsulation

3 AE.PNG

 

Luc Desruelle | avatar_ld.gif | Voir le profil LinkedIn de Luc DesruelleVoir mon profil

CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

Contact