luc desruelle's Blogue

Navigateur communautaire
annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 
Desruelle_luc
4762 Visites
0 Commentaires

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
5375 Visites
0 Commentaires

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
6051 Visites
0 Commentaires

 

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
7904 Visites
2 Commentaires

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
6730 Visites
0 Commentaires

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
3941 Visites
0 Commentaires

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
6250 Visites
0 Commentaires

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
6829 Visites
0 Commentaires

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
4164 Visites
0 Commentaires

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
7482 Visites
2 Commentaires

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ÿ:ponse 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
5425 Visites
0 Commentaires

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
7194 Visites
0 Commentaires

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
7832 Visites
9 Commentaires

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.

Tout télécharger
Desruelle_luc
7549 Visites
2 Commentaires

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
5537 Visites
0 Commentaires

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
7005 Visites
3 Commentaires

Le code LabVIEW est dans le post 

Cet article a pour finalité d'illustrer un exemple de mesure de déformation via une couche d'abstraction qui est réalisée en Objet. Dans cet exemple, le code des classes est contenu dans le fichier binaire de l'exécutable. Nous ne sommes pas sur une architecture "plugin". Un autre article permet de décrire l'évolution de ce exemple vers une architecture "plugin", avec les classes dans des PPLs, pour obtenir une couche d'abstraction. 

La couche HAL est un  couche intermédiaire entre le logiciel applicatif et le matériel. Cette couche offre des fonctions standardisées de manipulation du matériel tout en cachant les détails techniques de la mise en œuvre. 

 

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
5773 Visites
0 Commentaires

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

Desruelle_luc
3162 Visites
0 Commentaires

1 Watchdog Agent™ Prognostics Toolkit for LabVIEW - IMS Center

http://sine.ni.com/ds/app/doc/p/id/ds-373/lang/fr

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

http://www.imscenter.net/

Toolkit d'algorithmes prédictifs et de détection

  • Ajout de réseaux de neurones artificiels, de modèles de mélange gaussien et de reconnaissance de modèles statistiques à NI LabVIEW
  • Présentation affinée des données avec des cartes auto adaptatives et des graphes déroulants de surveillance conditionnelle
  • Idéal pour les applications de surveillance de machines
  • 2 LabVIEW Machine Learning Toolkit

    https://decibel.ni.com/content/docs/DOC-19328

    https://decibel.ni.com/content/thread/10970

    The idea of machine learning is to mimic the learning process of human beings, i.e., gaining knowledge through experience. Machine learning algorithms allow machines to generalize rules from empirical data, and, based on the learned rules, make predictions for future data. The Machine Learning Toolkit (MLT) provides various machine learning algorithms in LabVIEW. It is a powerful tool for problems such as visualization of high-dimensional data, pattern recognition, function regression and cluster identification.

    3 Toolkit CURE Pattern ID : Neural ID

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

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

    Desruelle_luc
    5238 Visites
    0 Commentaires

    Alpha Masks

    un très bon article : http://www.ni.com/newsletter/51918/en/

    Windows 8 Style UI demo

     Windows 8 Style UI demo

     

    Drop Shadows

     

    http://www.ni.com/newsletter/52142/en/?espuid=CNATL000000501982&cid=Direct_Marketing---em76700&elq=3...=

     

     

    This article is part II in a series on building better LabVIEW UIs. Here, build on what you learned about alpha masks in part I and walk through how to create a user interface (UI) element with a drop shadow effect using the Gnu Image Manipulation Program (GIMP). Then learn how to bring the UI element into NI LabVIEW software.

    Previously, we discussed how you can use alpha masks to gray out an interface to bring attention to a pop-up dialog window. By adding a drop shadow to a UI element, you can achieve a similar effect without graying out the rest of the interface. In this article, focus on the use case of creating a vertical menu bar that moves in and out of the field of view, depending on where the operator’s mouse is on the interface. Learn how you can use a drop shadow effect to draw attention to the menu bar when it is in the field of view.

    Also explore how to use GIMP, a free third-party application, to create a UI element that you can import into LabVIEW. You can download GIMP at www.gimp.org

    . This tutorial uses GIMP; however, you can duplicate these ideas in the image manipulation editor of your choice.

     

     

    Sliding Containers in LabVIEW

    Infotainment system UI Developed with Labview

    Desruelle_luc
    4300 Visites
    0 Commentaires

    Article rédigé pour "la gazette de NIDays 2014", à la demande du service communication de National Instruments.

     

    La gazette de NIDays

    Épisode 2

     

    Les rencontres de la communauté
    Vues par Luc DESRUELLE, Certifié LabVIEW Architect, chef de projet, co-gérant Mesulog

     

    Développant depuis plus de quinze ans sous l’environnement LabVIEW, j’ai longtemps  envié la communauté des développeurs « US » avec l’ensemble de leurs  forums, blogs, sites internet et rencontres entre spécialistes.

     

    Depuis un peu plus d'un an c’est avec un immense plaisir que je participe à la communauté officielle « francophone ». Composée de développeurs certifiés, d’architectes ou de débutants, ils partagent tous le plaisir de développer avec LabVIEW, et désormais la qualité des échanges « francophones » n’a plus grand chose à envier à celle des États-Unis. Il ne manquait qu’une seule chose, transformer les échanges virtuels en rencontres réelles.

     

    L’année dernière, à NIDays, cela a été, pour la première fois, l’occasion de nous rencontrer et de mettre un visage sur certains pseudos, mais je dois avouer que nous en voulions encore plus ! Depuis cet événement, la communauté a encore grandi, et nous sommes tous impatients de nous revoir. D’autant plus que cette année nous avons le droit, durant NIDays 2014, à encore plus d’activités dédiées aux membres de la communauté comme le concours de rapidité de codage ou le quiz lors de la rencontre "LabVIEW et vous". Je sens que cette édition va rester dans les mémoires ! "

     

     
     
     

     

    Desruelle_luc
    14206 Visites
    3 Commentaires

    1- résumé "simple", avec code toolkit NI

     

    Avec les API LabVIEW, il est possibile d'utiliser le protocole Modbus, sans savoir comment il est codé.

    Cela est totalement transparent pour le développeur.

    Il est "quand même intéressant" de connaître quelques bases.

    autres liens : http://www.developpez.net/forums/blogs/884588-luc-desruelle/b752/protocole-modbus-tcp-labview/

     

    1.A) Modbus série "ASCII" ou "RTU"

    En Modbus série, le maître se connecte à l'esclave. Dès que la liaison est établie, le maître envoie des requêtes Modbus (Requests) à l'esclave. Ces requêtes sont traitées par l'esclave. Le résultat est renvoyé au maître sous forme de réponse Modbus (Response).

     

    Il existe 2 protocoles série :

    • RTU est le protocle le plus utilisé, avec calcul de CRC
    • ASCII avec calcul du LRC

     

    configuration serie modbus VISA.png

     

    1.A.a) exemple create Modbus serial ASCII master exemple

    create Modbus serial ASCII master exemple.png

     

    1.A.b) exemple create Modbus serial RTU master exemple

     

    create Modbus serial RTU master exemple.png

     

    B) Modbus "TCP"

    En Modbus TCP, le client (maître) se connecte au serveur (esclave). Dès que la liaison est établie, le client envoie des requêtes Modbus (Requests) au serveur. Ces requêtes sont traitées par le serveur. Le résultat est renvoyé au client sous forme de réponse Modbus (Response).

     

    Il existe, dans la spécification modbus, uniquement le transport TCP ou IP.

     

    1.B.a) exemple create Modbus TCP master exemple

     

    create Modbus TCP master exemple.png

     

    Il est utilisé, rarement, 2 autres modes:

    1.B.b) avec Gateway modbus, besoin d'ajouter le "Unit ID" : exemple create Modbus TCP master with unit_ID exemple

    create Modbus TCP master with unit_ID exemple.png

     

    1.B.c) le protocole RTU sur couche de transport TCP, sous le nom "modbus RTU over TCP"

    ( pour le code Modbus RTU over TCP Master with LabVIEW)

    exemple create Modbus RTU over TCP master exemple

    create Modbus RTU over TCP master exemple.png

     

     

    Plus d'information : Modbus RTU over TCP Master with LabVIEW

     

     

    2 - résumé PDU, ADU et Frame d'une trame Modbus

     

    A) Protocole PDU

    Le protocole Modbus définit un (Protocol Data Unit) Modbus-PDU, qui ne dépend pas de la couche de communication correspondante. Ce Modbus-PDU se compose des deux champs "Function Code" et "Data".

    Grâce au blindage de "Function Code" et "Data" dans Modbus-PDU, les services Modbus et le modèle d'objet restent identiques pour toutes les variantes Modbus.

     

    PDU modbus.png

    B) Transport et ADU

    En fonction de la représentation sur les différents protocoles réseau, Modbus-PDU est complété par des champs supplémentaires (MBAP Header) pour le Modbus-ADU (Application Data Unit).

     

     

    Modbus-PDU et Modbus-ADU composent ensemble le message Modbus, également désigné par "Frame" (trame).

     

    3 - Introduction à ModBus

    MASTER VS SLAVE

    Ethernet TCP/IP VS Serial

     

    Master donne l'ordre de l'action de lire ou écrire au slave qui va réaliser l'action de donner la valeur (lecture) ou sauvegarder la valeur dans sa mémoire (écriture)

    En ethernet TCP/IP Master (client) VS Slave (Serveur de données)

     

     

    Un très bon article, en français, sur le protocole ModBus : http://www.ni.com/white-paper/52135/fr/

     

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

    The Modbus protocol follows a master/slave architecture where a master will request data from the slave. The master can also ask the slave to perform some action. The master initiates a process by sending a function code that represents the type of transaction to perform. The transaction performed by the Modbus protocol defines the process a controller uses to request access to another device, how it will respond to requests from other devices, and how errors will be detected and reported. The Modbus protocol establishes a common format for the layout and contents of message fields.

    The messages exchanged between the master and the slave are called frames. There are two types of Modbus frames: Protocol Data Unit (PDU) and Application Data Unit (ADU). The PDU frames contain a function code followed by data. The function code represents the action to perform and the data represents the information to be used for this action. ADU frames add a little more complexity with an additional address part. ADU frames also provide some error checking. Both the ADU and PDU frames follow Big-Endian encoding.

     

    fig3_modbus_frame_20120316151705.png

     

    Primary Tables Object Type Type of
    Discrete Input Single bit - boolean Read-Only
    Coils Single bit - boolean Read-Write
    Input Registers 16-bit word Read-Only
    Holding Registers 16-bit word Read-Write

    Table 1: Modbus Data Types1

     

    4 - Serial Implementation

    There are two serial modes that the Modbus application layer can follow: RTU and ASCII. 

    In RTU, the data is represented in Binary format, whereas the ASCII mode represents the data such that it is human readable. 

     

    Figure 8: Modbus ASCII Serial Frame1

     

    Figure 9: Modbus TCP Frame1

      Description Size Example
    MBAP Header Transaction Identifier Hi 1 0x15
    Transaction Identifier Lo 1 0x01
    Protocol Identifier 2 0x0000
    Length 2 0x0006
    Unit Identifier 1 0xFF

    Figure 10: MBAP Header1

     

    5 - TCP Implementation

    As in many TCP applications, the first requirement is to establish a connection between the master and the slave.  When connection has been established, the master can build a request for the slave.  The request contains a PDU (Modbus frame described above) followed by a MPAB header, as shown in Figure 9.  Figure 10 represents a template for the MPAB header.     

     

     

     

    6 - Using LabVIEW With Modbus, version gratuite librairie Modbus LabVIEW

    L'ancienne : Bibliothèque LabVIEW Modbus le toolkit de NI

     

    Nouvelle librairie Modbus utilisant la POO  à partir de  LabVIEW 2011  :  https://decibel.ni.com/content/docs/DOC-30140

     

    7 - Exemples codes, tester communication modbus, analyse problèmes

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

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

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

    http://forums.ni.com/t5/Discussions-au-sujet-de-NI​/labview-tcp-ip-multi-client/m-p/1999103/highligh...

     

    Analyse d'un problème ModBus :

    > version de l'OS Windows ? + 32bits ou 64?

     

    > test ping

    > firewall sur PC serveur (le port modbus utilise le port 502 sur un PC serveur ModBus. Il n'y a pas de firewall sur le PC qui a le serveur? Firewall de Windows le désactiver pour test)

    > Faire vi exemple : Open TCP + Read Input register + close avec affichage du code cluster d’erreur

     

    Tester l'EXE sur qui fonctionne avec labVIEW développement  : valider que cela fonctionne sans erreur

    Tester l'EXE sur le PC sur lequel l'application ne fonctionne et sur plusieurs PC pour comparer

     

    http://forums.ni.com/t5/Discussions-au-sujet-des-autres/Liaison-TCP-IP-sous-appli-windows-7/td-p/177...

    http://forums.ni.com/t5/Discussions-au-sujet-des-autres/Liaison-TCP-IP-sous-appli-windows-7/td-p/177...

     

     

    ModBus TCP exemple Mesulog Luc Desruelle.png

     

     

     

     

     

     

    Luc Desruelle | avatar_ld.gifVoir mon profil | Mon blog LabVIEW
    Co-auteur livre LabVIEW : Programmation et applications
    Certified LabVIEW Architect (CLA)
    LabVIEW Champion

    banniere Luc Livre.png

    Contact

    Desruelle_luc
    3324 Visites
    0 Commentaires

    pour réaliser des driver LabVIEW (a tester...)

    NI LabVIEW Instrument Driver Development Studio 1.1 :  Speed up development time when creating new LabVIEW instrument drivers by building on functional SCPI command templates for common instrument types + Develop consistent instrument drivers by loading the source from an existing driver  as a starting point

    Desruelle_luc
    5208 Visites
    0 Commentaires

    Outils de génie logiciel et de validation http://www.ni.com/softwareengineering/f/

     

    NI Requirements Gateway

    NI Requirements Gateway est une solution de traçabilité des exigences qui relie vos documents de développement et de vérification aux exigences formelles stockées dans les documents et les bases de données. NI Requirements Gateway est une solution idéale pour des applications qui simulent ou testent des composants complexes par rapport aux exigences documentées dans des industries telles que l'automobile, la défense, l'aérospatiale et l'électronique grand public.

     

     

    Toolkit LabVIEW VI Analyzer

    Le Toolkit VI Analyzer permet d'accroître la qualité et la lisibilité du code graphique développé en LabVIEW. Configurez plus de 60 tests destinés à la révision automatisée et à l'analyse statique du code de tous les VIs d'une application.

    List of Community VI Analyzer Tests

     

     

    Toolkit LabVIEW Desktop Execution Trace

    billet par LD synthèse : Desktop Execution Trace Toolkit : DETT Saves the Day!

     

    Le Toolkit LabVIEW Desktop Execution Trace permet de mettre au point et de déboguer des applications LabVIEW en fournissant des détails bas niveau sur l'exécution des VIs et des exécutables. Le code peut être surveillé et vous pourrez facilement identifier la source de problèmes tels que les fuites de référence, les fuites de mémoire, les erreurs non gérées et d'autres problèmes pouvant avoir un impact négatif sur les performances et sur la fiabilité d'une application.

     

     

    Toolkit LabVIEW Unit Test Framework

    Le Toolkit LabVIEW Unit Test Framework automatise le test et la validation sur la base des exigences des unités logicielles (VIs) développées en LabVIEW. Il permet ainsi le test fonctionnel du logiciel et le test de régression. Les fonctionnalités de création de rapports incluses génèrent automatiquement les documents de validation précieux pour documenter le respect des exigences par une application et pour assurer que son comportement reste situé dans les limites de paramètres définies

     

    Prove It Works: Using the Unit Test Framework for Software Testing and Validation : http://www.ni.com/white-paper/8082/en

     

    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

    Desruelle_luc
    4529 Visites
    0 Commentaires

    http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Les-interruptions/m-p/2446998/highlight/true#M766...

     

    j'ai bcp aimé l'article de Florina Abry - Naity

     

    Re : Les interrupti​ons.

    Bonjour,

     

    Je me permets de rajouter un mot ou deux sur ce qu'a dit Ouadji.

     

    Lors de la programmation micro contrôleur, on programme directement en langage machine. Il est donc nécessaire de gérer les interruptions de manière manuelle pour autoriser le contrôleur d’exécuter plusieurs tâches de manière pseudo-parallèle.

     

    L’introduction des systèmes d’exploitation à changer la donne. Ces systèmes (type Windows) proposent une surcouche logicielle qui s’occupe, entre-autre, de gérer les exploitations. Cette action est réalisée via un de leur composant nommé « Scheduler » (ou ordonnanceur en français, voir wiki).

     

    Ce Scheduler s’occupe, via un algorithme bien définit, de gérer les interruptions des différentes tâches concurrentes tournant sur un même système (on parle de Process (processus) pour els différentes applications tournant en parallèle (par Exemple, Windows en parallèle avec Foobar pour la musique, Opera pour le web et un client Thunderbird pour les mails. Le Scheduler doit faire en sorte que vous puissiez surfer tout en écoutant de la musique) et de Threads pour les tâches parallèle au sein d’un même processus (exemple type : Windows Media Player à un visualizer qui tourne en parallèle avec le lecteur de musique)). Pour que tout ce beau monde tourne d’une manière donnant l’illusion d’être parallèle, le Scheduler doit sans cesse jongler avec ces threads en les interrompant les-uns les autres.

     

    Les premiers scheduler (celui de Windows 3 par exemple, si je ne dis pas de bêtises) se contentaient de laisser un temps défini à chaque thread, sans notion de priorité. C’est ce que l’on appelle le « Round-Robin Scheduling » (wiki). Plus tard, un autre type de scheduling à fait son apparition, plus proche des possibilités données par els interruptions de Microcontrôleur : Le « Preemptive Scheduling » (wiki). Cet algorithme d’ordonancement permet d’allouer des niveaux de priorité aux tâches pour qu’une tâche de priorité plus importante interrompe toutes tâches de prioroité moindre lorsque celle-ci doit être exécutée.

     

     

    Oui mais LabVIEW dans tout ca ?

     

     

    Il y a d’autres types d’ordonnancement, mais ces deux là représentent de mon point de vue la base nécessaire à comprendre les systèmes d’interruptions des systèmes d’exploitation sur lesquels LabVIEW tourne.

     

    Je me focaliserais sur deux d’entre-eux :

     

    Windows 7 :

    Je ne suis pas extrêmement familier avec le Scheduler de Windows 7. De ce que j’en ai compris, il fonctionne comme un mix de Scheduling Round-Robin et de Preemptive Scheduling. Les différentes tâches ont des niveaux de priorité. Les tâches de haute priorité interrompent les tâches de basses priorités. Cependant, il me semble que le scheduler peut aussi interrompre les tâches de haute priorité si celles-ci prennent trop de temps d’exécution pour garantir une exécution minimale pour els tâches de basse priorité. La plupart des niveaux de priorité ne sont utilisables que par le Système d’exploitation.

     

     

    Cela signifie qu’un programme labVIEW peut avoir différent niveaux de priorité, mais jamais les plus haut et qu’une tâche exécutée sous labVIEW peut être à tout moment interrompue par Windows.

     

    Pour changer le niveau de priorité, il y a 3 méthodes :

     

    * Définir le processus LabVIEW.exe comme processus de haute priorité dans le gestionnaire des tâches de Windows.

    * Utiliser une « Timed Loop ». Ce faisant, vous réduirez l’algorithme dans la boucle à un thread et ce thread sera d’une plus haute priorité que les autres threads du processus en cours. Attention donc, la réduction de l’algorithme à un thread peut entrainer des Race Conditions assez dramatiques et cette priorité n’est que relative au programme. Les autres programmes et processus (dont ceux de windows) peuvent interrompre ce thread à tout moment.

    * Dans les propriétés ‘exécution d’un VI, il est possible de configurer la priorité de ce VI. Encore une fois, cette priorité est relative aux autres Vis.

     

    Conclusion : il n’est pas possible de créer de « vrais » mécanismes d’interruption pour un programme LanVIEW sous Windows.

     

     

     

    LabVIEW Real-Time OS :

     

    Le Scheduler de LabVIEW Real-Time OS fonctionne de manière quasi purement préemptive. Toute tâche de priorité supérieure interrompra une tâche de priorité inférieure et toute tâche de priorité inférieure ne pourra être exécutée qu’une fois toutes les tâches de priorité supérieures finies. En cas de tâches de priorité équivalente, c’est la règle de « Round Robin » qui s’applique. LabVIEW Real-Time autorise LabVIEW à utiliser tous les niveaux de priorité.

     

    Les moyens de définir cette priorité est équivalente aux deux derniers points soulevés dans le paragraphe sur Windows, avec la particularité que cette fois, la priorité d’une tâche est absolue.

     

    Conclusion : Même si les interruptions processeur sont prise en charge par la surcouche logicielle du système d’exploitation, il est possible d’avoir un contrôle quasi-total sur les interruptions (avec la seule limite que LabVIEW n’autorise pas à donner une priorité telle à un processus que celui-ci pourrait interrompre le scheduler).

     

    J’espère que cette petite explication sera utile à tous. N’hésitez pas à donner des Kudos si c’est le cas.

     

    Cordialement

    Desruelle_luc
    6208 Visites
    0 Commentaires

    Conférence techniques NIDays 2014 : Dégager plus de temps pour coder avec les solutions NI

    http://download.ni.com/pub/branches/france/2014/nidays/presentations/2-2_Mesulog_Les%20outils_qui_vo...

     

     

    0] Les outils qui nous veulent du bien - Plus de temps pour développer en LabVIEW

     Présentation réalisée lors de la rencontre développeur du 4 juillet 2013, par Mesulog - Luc Desruelle - Les Outils Qui Nous Veulent Du Bien

     

    Sommaire :

    Où trouver de l'aide?

    Logiciel de gestion de code source

    FORGE

    Logiciel d'analyse et test de National Instruments

    Autres Outils dans la boite

    Machine Virtuelle

     

     

    et la suite à NIDays

     

    Présentations techniques NIDays 2014

    11 février 2014

    Les outils qui vous veulent du bien : dégager plus de temps pour coder avec les solutions NI, par Luc DESRUELLE, MESULOG, Certified LabVIEW Architect | certifié Architect LabVIEW

     

    source : J'ai beaucoup aimé cet article (mai 2013), sur les indispensables de la gestion de projet de l'équipe JKI : http://zone.ni.com/devzone/cda/pub/p/id/1743,

    j'ajoute des idées personnelles.

    1] Suivi des problèmes et gestion de projets logiciels

     

    [...]

    Un suivi des problèmes simple et efficace est indispensable pour tout projet logiciel de taille raisonnable, tout particulièrement si le projet fait intervenir plusieurs développeurs. ALM-cycle2.png

     

    Gestion des bugs.

     

     

    Relier facilement les différentes versions du code source aux bugs ou aux caractéristiques qu'elles engendrent. Le fait de savoir exactement quand un bug est résolu est crucial pour nos projets et nos clients.

    [...]

     

     

    https://tuleap.net/?utm_source=forge&utm_medium=forge&utm_campaign=forge

    http://www.enalean.com/produits/tuleap/

    L'objectif de cet outil, est de mettre à disposition de tous les acteurs autorisés, internes ou externes, l'ensemble des données du projet. Ces données sont :

    · documentation (spécifications, comptes-rendus, manuels, datasheets, procédures,...) tag unique

    · code source (gestion sous Subversion, https)

    · livrables (exécutables, installeurs) release #ID unique

    · suivi de tâches (gestion de projet) task #ID unique

    · suivi de bugs (bug #ID unique)

    · espace de téléchargement FTP

    · forums de discussion

    · wiki (écriture collaborative de pages web)

    · messagerie instantanée

    ....

    L'accès à ces données est sécurisé (certificat d'authenticité) et le transfert des données est crypté.

    Les commentaires des livraisons SVN est croisé avec les tags #ID unique des bugs - livrable - task. L'historique du projet est ainsi redoutable.

    Les personnes identifiées et membres du projet peuvent accéder à toutes ces informations à partir de n'importe quel navigateur internet sans avoir à solliciter leur département informatique, ni installer un quelconque programme sur leur poste de travail. Il est juste nécessaire d’activer les cookies.

    Les projets sont créés suivant un modèle.

     

     

    2] Contrôle du code source

    Utilisation du contrôle de source (pour LabVIEW et autres...)

    [...]Le contrôle du code source est l'un des aspects les plus élémentaires (mais aussi les plus négligés) du développement logiciel professionnel. Un système de contrôle du code source fournit les versions des fichiers pour l'ensemble de votre projet. Le contrôle du code source permet à plusieurs développeurs de vérifier l'arborescence source d'un projet et d'éviter aux ingénieurs d'écraser le travail des autres.

    [...]

     

    SVN et TortoiseSVN turtoisesvn.png Les commentaires des livraisons SVN est croisé avec les tags #ID unique des bugs - livrable - task qui sont créés par le logiciel de gestion de projet : Codex. L'historique du projet est ainsi redoutable.

     

    3] Intégration continue
    cf JKI

    [...] Que se passerait-il si vous n'aviez plus jamais à concevoir votre logiciel de façon manuelle ? Imaginez un outil qui pourrait détecter de façon intelligente chaque changement apporté au logiciel, un outil qui construirait et testerait automatiquement une application à votre place, de façon à ce que vous puissiez toujours disposer d'un code fonctionnel et fiable.

    Les logiciels d'intégration continue offrent ces avantages aux développeurs.

    [...]

    Chez JKI : Jenkins.

     

     

     

    4] Outils de génie logiciel et de validation

    Outils de génie logiciel et de validation

     

     

    NI Requirements Gateway : solution de traçabilité des exigences qui relie vos documents de développement et de vérification aux exigences formelles stockées dans les documents et les bases de données. 

     

    Toolkit LabVIEW VI Analyzer : 60 tests destinés à la révision automatisée et à l'analyse statique du code de tous les VIs d'une application. Possibilité d'ajouter ses propres tests

     

    Toolkit LabVIEW Desktop Execution Trace : permet de mettre au point et de déboguer des applications LabVIEW en fournissant des détails bas niveau sur l'exécution des VIs et des exécutables. surveiller le code et identifier la source de problèmes tels que les fuites de référence, les fuites de mémoire, les erreurs non gérées et d'autres problèmes pouvant avoir un impact négatif sur les performances et sur la fiabilité d'une application

     

    Toolkit LabVIEW Unit Test Framework

     

     

     

    5] Logiciel autres d'Aide utilisateur

    5.1] Documentation et manuel : L'enregistreur d'action utilisateur ... de Windows!psr.png

     

    L'enregistreur d'action utilisateur est une fonction cachée de Windows 7. Il permet d'enregistrer une manipulation à effectuer. Sauvegarde directement du descritpif des actions, images et commentaires dans un fichier

    Dans le menu Démarrer de Windows, tapez les lettres "PSR", l'enregisteur va s'afficher :

     

     

     

     

    5.2] Automatisation de tâches, simulation actions / applications utilisateurs : Autoit

    http://fr.wikipedia.org/wiki/Autoit

    http://www.siteduzero.com/informatique/tutoriels/la-programmation-avec-autoit

     

    Une utilisation populaire d'AutoIt est la production de logiciel utilitaire pour Microsoft Windows. Des tâches communes, comme le contrôle de site Web, le contrôle de réseau, la défragmentation de disques et la sauvegarde, peuvent être automatisées et combinées pour fournir une utilité personnalisée. Il est aussi utilisé pour simuler des applications utilisateurs, par lequel un script AutoIt pilote une application en lieu et place d'un contrôle manuel pendant le test d'un logiciel. Une autre utilisation d'AutoIt est de créer des bots pour les jeux en ligne ou des malwares[4]. Ce type d'utilisation ne faisait pas partie des objectifs du programme et n'est en aucune façon encouragée par les développeurs ainsi que la communauté AutoIt.

     

     

     

    5.3] Machine Virtuelle pour le développement logiciel (VM VirtualBox)

     

    Virtualisation : simuler l'existence de plusieurs machines informatiques sur une seule.

    Machine de développement : une machine virtuelle par plate-forme de développement

     

    Machine Virtuelle pour le développement

    >>>> Les avantages

    • Sécurisation des plates-formes de développement (quelques fichiers à copier) : sauvegarde – retour en arrière possible.

    •Installation, déploiement et migration facile des machines virtuelles d’une machine physique à une autre (copier – coller)

    •Une machine virtuelle par version de LabVIEW : plus de conflit de version

    •Facilité pour test de driver, logiciel et anciens OS

     

    >>>> Les inconvénients

    •Lenteur réseau, port série, USB,…

    •Difficulté à installer un véritable matériel par exemple matériel National Instruments

    •Conseillé d’utiliser une « Grosse » machine physique (8 Go RAM, processeurs muli-core,

    •Gestion des licences : une Machine Virtuelle = une licence

    •Taille sur le disque de la machine virtuelle et de ses snapshots

     

    6] Documentation

    Voir le post

    http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Bonnes-pratiques-documentation/td-p/2753842/page/...

     

    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