luc desruelle's Blogue

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

1) Introduction Simple : Par OPC il y a la notion de serveur et de client.

pour faire très simple

  • Le serveur gère la publication des informations entre les clients et les équipements (classiquement un driver communique avec des équipements et permet la lecture / écriture des données, via un nom unique le tag),
  • les clients vont se connecter aux Tags du serveur (nom unique) pour faire une lecture ou écriture de la donnée.

 L'article suivant est très bien "Connexion à des systèmes OPC avec LabVIEW"

http://zone.ni.com/reference/fr-XX/help/371361N-0114/lvconcepts/opc_intro/

 

loc_eps_localopc.gif

 

La fondation OPC définit 8 spécifications :

  • OPC Data Access (DA)
  • OPC Alarms and Events
  • OPC Batch
  • OPC Data eXchange
  • OPC Historical Data Access
  • OPC Security
  • OPC XML-DA
  • OPC Unified Architecture (UA)

 

2) LabVIEW en client OPC :

Si vous avez à disposition un serveur OPC, qui permet donc de publier les données d'un équipement, vous avez besoin d'utiliser LabVIEW comme client OPC.

 

Il y a un bon article : Développement de clients OPC dans LabVIEW (Windows uniquement)

http://zone.ni.com/reference/fr-XX/help/371361N-0114/lvconcepts/opc_dev_clients/

 

Pour résumer :

NI LabVIEW gère la compatibilité avec 2 spécifications OPC. Il faut donc identifier si le serveur est de type :

  • DA : OPC Data Access (DA)
  • UA : OPC Unified Architecture (UA)

 

2.1 Si le serveur est OPC DA

OPC DA est la plus ancienne, et il existe 3 versions, en fonction des versions des possibilités avec LabVIEW

  • Version 1.0 : 1 possibilité : il faut utiliser l'API DataSocket pour faire un Client OPC.
  • Version 2.x— 3 possibilités : Possibilité d'utiliser l'API DataSocket, ou (Module DSC payant) DSC OPC Client,
  • Version 3.0 — 2 possibilités : (Module DSC payant) DSC OPC Client.

2.2  Si le serveur est OPC UA

OPC UA : il faudra les toolkits payant DSC ou RT pour utiliser l'API OPC UA (en client ou serveur)

 

 

3) Faire un serveur OPC avec NI LabVIEW

Pour faire un serveur OPC avec LabVIEW il faudra s'orienter vers

  • Serveur OPC DA 2.x et 3.0 utiliser le serveur de variable partagée
  • Serveur OPC UA utiliser DSC ou RT OPC UA

plus d'informations sur le Moteur de variable partagée (MVP) ou Shared Variable Engine (SVE) en serveur OPC Data Access

http://zone.ni.com/reference/en-XX/help/371361K-01/lvconcepts/opc_conn_from_tpclients/

 

LabVIEW 8.0 or later contains an OPC server called the Shared Variable Engine (SVE). The SVE supports OPC Data Access 2.x and OPC Data Access 3.0. You can publish data from the SVE using shared variables.

To connect to the SVE from a third-party OPC client, use the ProgID National Instruments Variable Engine. If the OPC client allows you to browse for OPC servers, you can locate the National Instruments Variable Engine under OPC version 2.x or 3.0, depending on which versions the client supports.

In the third-party OPC client, you can browse all data items published by the SVE. The SVE allows connections to scalars and arrays of scalars but does not recognize data items of complex data types, such as clusters. You can browse FieldPoint and DAQ data items under their device categories.

 

 

4) un exemple de lecture de données OPC : Client OPC LabVIEW via DataSocket

Personnellement pour communiquer avec des serveurs OPC, comme j'ai très souvent des serveurs OPC DA version 1 ou 2.x, alors J'utilise l'API DataSocket

dsread.gif

 

avec

URL Exemple

opc

opc:\National Instruments.OPCTest\élément1

opc:\\computer\National Instruments.OPCModbus\Modbus Demo Box.4:0

opc:\\computer\National Instruments.OPCModbus\Modbus Demo Box.4:0?updaterate=100&deadband=0.7

 

Un exemple dans les exemples de LabVIEW

C:\Program Files (x86)\National Instruments\LabVIEW 2015\examples\Data Communication\DataSocket\DataSocket OPC\Monitor OPC Items with DataSocket.vi

Clinet OPC.png

 

Ou via l'aide

http://zone.ni.com/reference/fr-XX/help/371361N-0114/lvcomm/datasocket_read/

 

Exemple Reportez-vous au fichier Simple DataSocket.lvproj, dans le répertoire labview\examples\Data Communication\DataSocket\Simple DataSocket, pour obtenir un exemple d'utilisation de "DataSocket Lire".

 

5) Décoder le code qualité OPC de la valeur

 

Utilisez la valeur du code qualité pour obtenir des informations sur l'état de la valeur OPC (192 = Good)

 

Il existe des OPC DA Quality Codes que nous pouvons lire via la variable "qualité" de l'API DataSocket

dsread.gif

 

0

0x00000000

Bad [Non-Specific]

4

0x00000004

Bad [Configuration Error]

8

0x00000008

Bad [Not Connected]

12

0x0000000c

Bad [Device Failure]

16

0x00000010

Bad [Sensor Failure]

20

0x00000014

Bad [Last Known Value]

24

0x00000018

Bad [Communication Failure]

28

0x0000001C

Bad [Out of Service]

64

0x00000040

Uncertain [Non-Specific]

65

0x00000041

Uncertain [Non-Specific] (Low Limited)

66

0x00000042

Uncertain [Non-Specific] (High Limited)

67

0x00000043

Uncertain [Non-Specific] (Constant)

68

0x00000044

Uncertain [Last Usable]

69

0x00000045

Uncertain [Last Usable] (Low Limited)

70

0x00000046

Uncertain [Last Usable] (High Limited)

71

0x00000047

Uncertain [Last Usable] (Constant)

80

0x00000050

Uncertain [Sensor Not Accurate]

81

0x00000051

Uncertain [Sensor Not Accurate] (Low Limited)

82

0x00000052

Uncertain [Sensor Not Accurate] (High Limited)

83

0x00000053

Uncertain [Sensor Not Accurate] (Constant)

84

0x00000054

Uncertain [EU Exceeded]

85

0x00000055

Uncertain [EU Exceeded] (Low Limited)

86

0x00000056

Uncertain [EU Exceeded] (High Limited)

87

0x00000057

Uncertain [EU Exceeded] (Constant)

88

0x00000058

Uncertain [Sub-Normal]

89

0x00000059

Uncertain [Sub-Normal] (Low Limited)

90

0x0000005a

Uncertain [Sub-Normal] (High Limited)

91

0x0000005b

Uncertain [Sub-Normal] (Constant)

192

0x000000c0

Good [Non-Specific]

193

0x000000c1

Good [Non-Specific] (Low Limited)

194

0x000000c2

Good [Non-Specific] (High Limited)

195

0x000000c3

Good [Non-Specific] (Constant)

216

0x000000d8

Good [Local Override]

217

0x000000d9

Good [Local Override] (Low Limited)

218

0x000000da

Good [Local Override] (High Limited)

219

0x000000db

Good [Local Override] (Constant)

 

 

400 Visites
0 Commentaires

Cet article est constitué d’extraits du livre français sur LabVIEW : « LabVIEW programmation et applications ». Il ne traite que de la réalisation d’un driver d’instrument en VISA. Pour des informations plus complètes sur DAQmx, IVI, les commandes E/S directes, dll externe, la réalisation de driver Plug & Play LabVIEW, la recherche de driver IDNet, etc… je vous conseille le chapitre 4 qui aborde cela en détail.

 

1      Rappel : Le driver (ou pilote) et le logiciel d’application

Les architectures des instruments et des cartes d'acquisition (DAQ) font apparaître deux éléments communs que sont le driver et le logiciel d’application.

 

Le logiciel d’application (ou l’application principale) est le code réalisé pour permettre à l’utilisateur de piloter la chaîne d’instrumentation, analyser, sauvegarder et présenter les données.

 

Le driver est le programme qui fait le lien entre le logiciel d’application et le matériel. Il est chargé de traduire les commandes LabVIEW pour les rendre compréhensibles par la carte ou l’instrument. Il facilite le travail des développeurs en évitant une programmation fastidieuse et spécifique dans les registres bas niveau de la carte. Voici quelques exemples :

  • Les cartes d’acquisition et de génération de signaux : National Instruments fournit un driver unique qui est compatible avec toutes les cartes, qui est NI-DAQmx.
  • Les instruments : nous utiliserons le driver VISA ou IVI ou un driver spécifique livré par le fabricant avec le matériel. Sous LabVIEW, un driver d’instrument est un ensemble de VIs contenant des fonctions de haut niveau qui permettent de contrôler cet instrument, telles que la configuration, la lecture des mesures, etc. Il inclut et rend donc transparent les commandes de l’appareil et le protocole de communication spécifique au bus. La liste des commandes est décrite dans le manuel de programmation de l’instrument et elle va permettre de coder le driver de l’instrument.

2      Rappel VISA - Virtual Instrumentation Software Architecture

Au début des années 1990 le consortium VXIplug&play Systems Alliance a développé la spécification du logiciel d’E/S VISA, pour Virtual Instrumentation Software Architecture. VISA définit des fonctions d’entrées/sorties standard pour la programmation d'instruments. Ces fonctions :

  • s’interfacent toujours de la même manière quel que soit le matériel de connexion (GPIB, Série, USB, Ethernet, PXI, VXI) ;
  • sont indépendantes de la plate-forme matérielle et système d’exploitation.

Par exemple, un programme développé sur PC Windows pour piloter un oscilloscope en liaison GPIB sera identique à un programme développé sous Linux pour le piloter par une liaison série.

Les drivers « LabVIEW Plug & Play » et « IVI » utilisent la puissante librairie d’entrées / sorties de VISA VISA I/O.

Les drivers LabVIEW plug&play et IVI s’appuient sur la puissante librairie VISA. VISA permet d’avoir des fonctions logiciels identiques quelle que soit la connexion (GPIB, Série, USB, Ethernet, etc.).Les drivers LabVIEW plug&play et IVI s’appuient sur la puissante librairie VISA. VISA permet d’avoir des fonctions logiciels identiques quelle que soit la connexion (GPIB, Série, USB, Ethernet, etc.).

3      Zoom sur les fonctionnalités de VISA

L’API du driver VISA, Virtual Instrumentation Software Architecture, installe sous LabVIEW une bibliothèque de fonctions constituées de VIs et de propriétés.

Dans la réalité, seulement 6 fonctions sont nécessaires pour écrire la très grande majorité des drivers : Ouverture, fermeture, temps d'attente, lecture, écriture et paramètrage.

 

Ouverture, Fermeture de la communication et Timeout

Ces trois fonctions (ouverture, fermeture et timeout) sont disponibles dans la palette VISA avancée. Ce sont les trois paramètres de base de la communication avec un instrument de mesure :

1. Un driver commence toujours par un VISA Open qui permet d’ouvrir une session sur le périphérique spécifié, à faire une seule fois en début de programme ;

2. La fonction d’ouverture est toujours suivie par la configuration du TimeOut, qui est le temps d’attente maximum lors d’une interrogation sur l’instrument, par défaut 10 secondes. Elle est disponible au travers d’une propriété ;

3. Le code du driver se termine toujours par un VISA Close qui permet de fermer la session sur le périphérique (à faire une seule fois uniquement en fin de programme).

Écriture des données dans l’instrument

4. Pour écrire des données dans l’instrument, on utilise VI VISA Write. Nous utiliserons uniquement la communication basée sur des messages, c’est-à-dire avec l’envoi de chaînes de caractères ASCII, et pas celle basée sur l’écriture de registre.

Lecture des données dans l’instrument

5. Pour la lecture des données retournées par l’instrument, on utilise VI VISA Read. Il est très important de comprendre que cette fonction retourne les données contenues dans le buffer dès qu’une de ces 3 conditions est présente :

      • Un caractère de terminaison est arrivé ;
      • Le nombre d’octets dans le buffer de réception est égal à celui passé en paramètre à la fonction VISA Read ;
      • Le temps d’attente a dépassé le TimeOut. Dans ce cas LabVIEW retourne un code d’erreur, 0xBFFF0015, le délai d’attente (timeout) a expiré avant que l’opération ne soit achevée.

Paramétrage du port série

6. Il faut configurer les paramètres du port série de l’ordinateur pour être en adéquation avec la configuration du protocole de l’instrument, via la fonction VISA Configure Serial Port.vi de la sous-palette Série. En effet, la communication série autorise des options de paramétrages, comme le baud rate, le nombre de bits de données, la parité, le timeout mais également l’activation et la définition du type de caractères de fin de communication.

Nom de la ressource VISA

L’API VISA est une interface capable d’appeler automatiquement les fonctions bas niveau de communication appropriées, grâce à un seul paramètre Nom de la Ressource VISA.

Nom de la Ressource VISA

Exemple

Description du BUS

GPIB ::adresse ::INSTR

1.png

GPIB

Alias VISA

 2.png

Série, ALIAS configuré dans MAX.

TCPIP ::adresse ::INSTR

 3.png

LXI sur le LAN Ethernet

seulement 6 fonctions sont nécessaires pour écrire la très grande majorité des drivers.seulement 6 fonctions sont nécessaires pour écrire la très grande majorité des drivers.

4      Exemples Pilotage d’un instrument avec lecture d’un nombre fixe d’octets

Dans cet exemple, nous allons illustrer la lecture du nom d’indentification d’un appareil. L’appareil est à l’adresse GPIB 12 sur le bus et il répond « 73 octets » à la commande « *IDN ? » :

  1. Ouverture d’une communication avec l’appareil de mesure sur le port GPIB à l’adresse 12 (GPIB ::12 ::INSTR) ;
  2. Configuration du timeout de communication à 2 000 ms ;
  3. Écriture de la commande « *IDN ? » qui permet de demander le nom d’identification à l’appareil ;
  4. Attente de la réponse de l’appareil. Cette réponse est composée de 73 octets et sera disponible au format ASCII dans le « buffer de lecture ». Si l’appareil ne répond pas 73 octets en 2 secondes, nous aurons une erreur LabVIEW ;
  5. Fermeture de la session.

Exemple du pilotage d’un instrument GPIB via VISA.Exemple du pilotage d’un instrument GPIB via VISA.

5      Exemple Pilotage d’un instrument Série avec caractère de fin de communication

Dans cet exemple, nous allons illustrer la lecture du nom d’indentification d’un appareil sur le bus série. Le port série utilisé sera le port « COM2 », les réponses de l’instrument seront formatées avec un caractère de fin de communication :

  1. Permet l’ouverture d’une communication avec l’appareil de mesure sur le port COM2 ;
  2. La configuration des paramètres du port série est réalisée par la fonction VISA Configure Serial Port.vi de la sous-palette Série. Elle permet de définir le baud rate, le nombre de bits, la parité, le timeout mais également l’activation et la définition du type de caractère de fin de communication. Dans cet exemple, le caractère de fin est le code ASCII 0xA, soit le code « LF » pour « retour à la ligne » ;
  3. Écriture de la commande « *IDN ? » qui demande à l’instrument son nom d’identification ;
  4. Attente de la réponse de l’instrument. Nous avons configuré le driver pour attendre un caractère de fin de transmission. Nous allons donc paramétrer un nombre d’octets à attendre supérieur au nombre réellement attendu. En effet, si nous nous rappelons les 3 conditions d'arrêt possibles (nombre de caractères attendus reçus, time-out et caractère de fin présent), le code dans cet exemple stoppera uniquement sur le caractère de fin ou le time out. Dans le cas du time-out, si l’instrument ne retourne pas une réponse en 2 secondes, nous aurons une erreur LabVIEW. ;
  5. Fermeture de la session.

 

Figure 4.57– Exemple du pilotage d’un instrument série via VISA.Figure 4.57– Exemple du pilotage d’un instrument série via VISA.

L’encapsulation dans un VI LabVIEW des fonctions de pilotage d’instrument permet de réaliser un driver d’instrument. Dans ces exemples simples, nous avons mis en évidence la facilité avec laquelle la palette VISA permet de piloter un instrument. Cependant, et comme toujours, facilité ne veut pas dire qu’il n’y a aucune règle à suivre.

867 Visites
0 Commentaires

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é.

628 Visites
0 Commentaires

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

732 Visites
0 Commentaires

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...

1338 Visites
1 Commentaire

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

682 Visites
0 Commentaires

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

 

663 Visites
0 Commentaires

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...

655 Visites
0 Commentaires

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...

814 Visites
0 Commentaires

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

853 Visites
0 Commentaires

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

2542 Visites
0 Commentaires

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

965 Visites
0 Commentaires

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

737 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

1075 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/

1002 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

1915 Visites
0 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

 

 

760 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

1431 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

1792 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.

1730 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.

1498 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


1963 Visites
0 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ÿ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.

1646 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

2206 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

 

2625 Visites
8 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.

2085 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

1918 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