Partie 1 :Introduction à LabView Organisation d’une application Environnement de programmation sous LabView Types de variables Les structures Les tableaux Les chaînes de caractères Les graphiques
a) Organisation d’une application Une application se compose d’un ou plusieurs programmes Chaque programme se compose en de deux parties distinctes : Lorsqu'on réalise un programme, on effectue deux tâches principales: la conception de l'interface utilisateur la conception du programme « interface utilisateur » : Interface utilisateur la partie qui effectue les traitements Traitements : (calculs, tri de données etc.), qui définie les actions à effectuer par l'ordinateur en réponse aux commandes de l'utilisateur. la conception de l'interface utilisateur : quelles commandes afficher? quelles valeurs? Sous quelle forme? (texte, graphiques ... ) la conception du programme : les types de données utilisées (nombres réels, entiers texte....), les traitements à effectuer
b) Environnement de programmation sous LabView Lorsqu’on créé une nouvelle application, on commence par créer un projet (Nouveau/Projet vide) Puis on définit où l’application va être déployée en ajoutant le programme principal sur le périphérique souhaité: Poste de travail = ordinateur Système déporté = compact rio
b) Environnement de programmation sous LabView La création d’un programme se fera en créant un nouveau V.I. (Virtual Instrument) dans le projet. Interaction entre face avant et digramme : Ctrl E ICÔNE CONNECTEUR FACE AVANT DIAGRAMME On parle d’instruments virtuels car leur apparence et leur fonctionnement sont semblables à ceux d’instruments réels, tels que les oscilloscopes et les multimètres. La face Avant : On place sur la face avant: - des commandes pour la saisie des données : entrées - des indicateurs pour l'affichage des résultats : sorties Dans la face-avant nous trouverons tous les éléments interactifs du VI (commandes et indicateurs). Le diagramme : On réalise dans le diagramme le câblage des opérations à effectuer en plaçant des fonctions. Dans le diagramme nous trouverons tous les éléments propres au code développé (structures, fonctions, constantes,…). Icône et connecteur : Chaque VI affiche une icône, dans le coin supérieur droit des fenêtres de la face-avant et du diagramme. Une icône est une représentation graphique d’un VI qui permet de l’identifier au sein d’un autre VI. Un connecteur est un ensemble de terminaux correspondant aux commandes et aux indicateurs du VI qui sont accessibles
1 2 3 4 5 6 7 8 9 Exécution unique. Exécution en continu. Arrêt de l’exécution. Pause : ce bouton prend la couleur rouge pour montrer qu’il est actif, il faut recliquer dessus pour sortir de ce mode. Activation du mode animation : la lampe s’allume pour montrer qu’il est actif, il permet de suivre le flux de données et l’activité des différents VI lors du lancement. Lecture de la valeur des fils de liaisons. Exécution en mode pas à pas. Passage à l’étape suivante sans détailler l’étape actuelle. Fin du mode pas à pas.
Palette des outils : disponible dans « Affichage/Palette d’outil » Choix automatique de l’outil Positionner/Sélectionner/ Dimensionner Edition des éléments graphiques Insertion de texte Défilement dans la fenêtre Connections des éléments graphiques Pipette Placer/supprimer un point d’arrêt Remplissage et choix de la couleur Pour avoir la palette d’outils, il suffit de Cliquer Affichage/palette d’outils Placement de sonde sur un fil Menu local de l’objet
Palette des commandes : disponible à partir de la fenêtre face avant par un clic droit avec la souris ou dans « Affichage/Palette des commandes » Permet de garder toujours la palette visible à l’écran Rechercher un élément Chaîne et chemin Les numériques Les booléens Graphe Tableaux et clusters (groupe) Entrées / sorties Listes et tables Décorations Menu déroulant Conteneurs Dans cette palette nous trouverons tous les éléments nécessaires à la création de la face-avant (commandes et indicateurs) Refnum Variant et classe Autres commandes dépendant des options installées 7
Palette des fonctions : disponible à partir de la fenêtre diagramme par un clic droit avec la souris ou dans « Affichage/Palette des fonctions » Rechercher un élément Permet de garder toujours la palette visible à l’écran Cluster et variant Les structures Booléen Les tableaux Les numériques Informations temporelles Les E/S sur fichiers Les chaînes Contrôle d’applications Les comparaisons Dialogue et interface utilisateur Génération de rapport Dans cette palette nous trouverons tous les éléments nécessaires à la création du code graphique dans la fenêtre diagramme (fonctions de base, VI Express,…). Waveform Autres fonctions dépendantes des options installées Synchronisation Graphisme et son 8
Les Fonctions, les VI et les VI Express Les Fonctions de base : éléments d’exploitation fondamentaux de LabVIEW. Les VI Standards : VI qui peuvent être personnalisés. Les VI Express : VI interactifs avec une page de dialogue configurable mais limitée. Fonction de base VI Express VI Standards 9
c) Types de variables Il y a essentiellement 4 types de variables : Les numériques : Nombres réels, précision étendue (EXT : 92 bits), précision double (DBL : 64 bits) et précision simple (SGL : 32 bits) Nombres entiers signés codés sur 64, 32, 16 ou 8 bits Nombres entiers non signés codés sur 64, 32, 16 ou 8 bits Complexes (même précison que les réels pour la partie réelle et imaginaire)
Les chaînes de caractères : Les booléens : Les chaînes de caractères : Les clusters : Les numériques sont soit orange ou bleu Les booléen sont vert Les chaînes de caractères sont rose Les clusters sont noirs au départ puis change de couleur suivant les variables présentent dans celui-ci. Un cluster est un variable que l’on créé. Exemple 1 : a et b sont des commandes et c est un indicateur. Petit triangle rouge si on multiplie des entiers par dbl. Aide : CTRL H Effacer traits défectueux : CTRL B Flèche grisée : impossible d’exécuter le programme Copier des éléments CTRL enfoncé (pas ctrl C et ctrl v!!!!!!!!!!!!!!!) Configuration option du séparateur décimal : OUTILS/OPTIONS/Face avant il faut décocher « Utiliser le sépareteur décimal local »
Bouton Incrémenter / Décrémenter Créer un programme Exemple 1 : Calcul de c= 2(a+b)(a-3b) ou a, b et c seront des réels. Bouton Incrémenter / Décrémenter Terminaux de contrôle (entrées) Terminaux d’indicateur (sortie) Nœud Possibilité de paramétrer les propriétés de la commande numérique : Chiffres de précision Chiffres significatifs Commande numérique Indicateur numérique Fils de liaisons Cadre gras Cadre fin
Aide contextuelle : Ctrl +H La bobine sert à connecter les différents éléments. Pour supprimer toutes les liaisons non valides Ctrl + B Fonction de base : Aide contextuelle : Ctrl +H Etiquette : Terminaux : 2 entrées et une sortie La couleur des terminaux correspond au type de données (orange : réels) Accès à l’aide détaillée • Accès à l’intégralité du contenu informatif • Ouverture automatique d’une fenêtre pour accéder directement à l’aide Dans la barre de menu : « Aide/Aide LabView » Choix du mode de l’aide (simple ou détaillé) Verrouiller l’aide Aide détaillée
Les structures La condition : Si alors sinon Il existe 5 principaux types de structures sous labview : La condition : Si alors sinon La boucle For : Faire ... N fois La boucle While : Faire ... tant que La structure évènement La structure de blocs séquence.
Structure condition : Exemple 2 : on souhaite réaliser un programme qui teste SI a>b ALORS il affiche « a est plus grand que b » SINON il teste: SI a=b ALORS il affiche « a et b sont égaux » SINON il affiche « b est plus grand que a » Création des variables locales Changement en écriture ou lecture d’un élément
La boucle For Exemple 3 : On souhaite calculer le factoriel d’un nombre choisit par l’utilisateur. Pour cela il faut faire N fois : résultat = résultat * (i+1) où i est l’indice de la boucle et N correspond au factoriel souhaité. Au départ, il faut mettre résultat à 1 sinon il sera toujours nul, pour cela deux méthodes : Valeur par défaut. Mettre 1 dans « résultat » Indice de la boucle commence à 0 et va de 0 à N-1
La boucle While : Les actions contenues dans la structure se déroulent tant que la condition de fin n'est pas vraie Exemple 4 : Tant que l’utilisateur n’appuie par sur stop, on affiche le temps écoulé en seconde dans une jauge. Pour cela nous allons utiliser la fonction attendre 1000ms avant d’incrémenter la boucle while. L’indice de la boucle while est la même que dans la boucle for,il s’incrémente dès que toutes les tâches de la boucle on été faites. Dans les outils express, on trouve une boucle while avec le bouton stop déjà câblé
La structure évènement Une fois la première structure crée, on ajoute le nombre de structures nécessaires (clic droit sur le bord de la structure) en choisissant l'évènement déclenchant dans la liste de la boite de dialogue qui apparaît. Cette boucle doit être mise dans une boucle while ou utiliser LabView en mode continu Exemple 5 : On souhaite créer un programme qui : Ouvre une fenêtre avec écrit « bonjour » si on clique sur le bouton BONJOUR et affiche dans la chaîne de caractères BON CHOIX Fait un bip si on clique sur le bouton BIP et affiche dans la chaîne de caractères BON CHOIX Affiche dans la chaîne de caractères : MAUVAIS CHOIX si on sort avec la souris de la face avant. La structure dite "évènement", est un bloc d'actions (similaire à la condition) effectuée lors de l'exécution d'une action telle que : - un appui sur un bouton de face avant, - un appui sur une touche, - un temps écoulé, - un appui sur un bouton de la souris. Il faut penser au temps de scrutation 10 ms par exemple Il faut aussi penser à l’événement faux par défaut.
La structure de blocs séquence Lorsque l'on souhaite que des actions se déroulent dans un ordre bien défini, on utilise une structure de blocs séquence. Exemple 6: On souhaite créer un programme qui : Affiche 1ière séquence dans une boite de dialogue, Puis qui affiche une horloge en 1/10ième de seconde jusqu’à ce que l’on appuie sur le bouton « Fin de l’étape 2 » Puis qui affiche 3ième séquence dans une boite de dialogue. Pour les programmes plus complexes, on peut superposer les séquences. On parle de séquences déroulées dans l'exemple ci-dessus et de séquences empilées dans le cas contraire.
Les tableaux C’est une structure de données qui permet de « manipuler » simultanément plusieurs données élémentaires du même type. La première ligne a un indice 0. Indice Variable de type ….réel 1.65 1 3.85 … n-1 8,56 Par exemple un tableau de valeurs de mesures, etc.… On le caractérise par le type de la variable et une variable n donnant le nombre d’éléments. (numérotés de 0 à n-1).
Opérations de base Somme (multiplication) de tous les éléments : Taille d’un tableau : Initialisation d’un tableau : Tri d’un tableau :
Opérations de base Insertion d’un élément dans un tableau : Suppression d’un élément dans un tableau : On peut supprimer plusieurs éléments à la fois, il suffit de modifier la longueur
Les chaînes de caractères Les chaînes de caractères sont des ensembles de données permettant de manipuler des suites de lettres pour afficher une phrase, par exemple: " le résultat de l'opération vaut:"……. Création d’une chaîne de caractères: Par une saisie -> commande chaîne en face avant : Par l'intermédiaire d'une constante fixée dans le programme : Ce sont des suites ordonnées composées de la donnée élémentaire « caractère » qui est un entier 8 bits non signé (valeurs entre 0 et 255). Les caractères reconnus par l'ordinateur sont au nombre de 255. Ils sont codés sur un octet. Le code utilisé est le code ASCII
Opérations de base sur les chaînes de caractères : Par la lecture d’un fichier texte : Opérations de base sur les chaînes de caractères : Ajout de deux chaînes existantes -> Ch3=Ch1+Ch2 : cette opération se fait à l’aide de l’objet concaténer Extraction d’informations : Une chaîne de caractères peut comporter plusieurs informations que l'on souhaite séparer. Par exemple on a pu saisir dans la même chaîne les noms et prénoms d'une personne et souhaiter en extraire le nom. L'utilisateur saisit une chaîne contenant les nom et prénom(s) (deux prénoms maxi) séparés par le caractère espace. Le programme applique la fonction « Rechercher une expression », dans notre cas ce sera un « espace ».
Extraction et conversion : La chaîne de caractères renvoyée par le multimètre est : Type/espace/Mesure/espace/Unité (ex : AC 4.89 V) On veut extraire la chaîne Mesure de la chaîne globale. On converti ensuite la chaîne mesure en nombre en utilisant la fonction de « conversion de chaîne en nombre » pour pouvoir utiliser la valeur. On va rechercher l’ « espace », puis garder la chaîne après dans laquelle on va rechercher l’ « espace » puis garder la chaîne avant. Il ne restera plus qu’à convertir cette chaîne en nombre. Pour la conversion de la chaîne en caractère, si on définit le paramètre logique à VRAI (valeur par défaut), le séparateur décimal est celui qui est utilisé dans notre pays (la virgule), si on définit ce paramètre à FAUX, le séparateur décimal est un point.
Un certain nombre de caractères permettent de couper les chaînes de caractères pour séparer plusieurs informations contenues dans la même chaîne. Ces caractères sont codés soit par un code « \ », soit par un symbole disponible dans la palette chaîne Voir affichage normal, ou hexa…
Les graphiques Le graphique est un indicateur numérique particulier qui propose un historique des valeurs. Légende Position du curseur Échelles
Si l’on veut tracer une seule courbe : on utilise la fonction assembler afin de mettre les X en horizontal et Y en vertical. Si l’on veut plusieurs courbes, il faudra construire un tableau de courbes comme ci-contre
Les curseurs : Clic droit sur le graphe puis choisir Propriétés -> Curseurs On peut changer : Le nom du curseur Le type de ligne qui représente le curseur La largeur du trait de curseur Le symbole au centre du curseur Le symbole de la souris lorsqu’on utilise le curseur La couleur du curseur Type de glissement : Libre Pour une courbe Choix de la courbe On peut récupérer ces données : on créé sur le graphe un Nœud de propriété -> Curseur actif pour choisir les coordonnées du bon curseur puis un autre Nœud de propriété ->Curseur –> Position du curseur -> Tous les éléments (ou seulement X ou Y selon votre choix).
Les légendes : Clic droit sur le graphe puis choisir Propriétés -> Tracés : On peut changer : le nom de la courbe le type de ligne qui représente la courbe la largeur du trait de la courbe le symbole de chaque point de la courbe le type de tracé la couleur de la courbe la couleur de chaque point de la courbe Pour afficher la légende des courbes : clique droit sur le graphe puis choisir Eléments visibles -> Légende des courbes.
Les échelles: Clic droit sur le graphe puis choisir Propriétés -> Echelles : On peut changer : Le nom de l’axe Afficher ou non l’échelle Afficher ou non l’étiquette de l’échelle Faire ou non une mise à l’échelle automatique, si c’est non, il faut préciser le minimum et le maximum. Afficher ou non en echelle logarithmique, si c’est non, l’échelle est linéaire Afficher ou non la courbe inverse Le style et les couleurs de l’échelle Le style et les couleurs de la grille Pour les échelles, il faut aussi préciser le format et la précision des valeurs de chaque axe : clique droite sur le graphe puis choisir Propriétés -> Format et présision. Nom de l’axe des X : on créer un nœud de propriété « Texte » en cliquant sur Créer -> Nœud de propriété -> Echelle des X -> Etiquette de nom -> Texte.
Exemple 7 : Un système de surveillance de la température d’une étuve enregistre la température toutes les 15 mn. Le thermomètre envoie à l’ordinateur la valeur de la température sous forme d’une chaîne de caractères. Ces températures sont stockées dans un texte qui a la forme ci-contre: T00 123.1 °C T01 128.5 °C T02 126.7 °C T03 121.2 °C T04 123.5 °C T05 124.1 °C .....
On souhaite que le logiciel établisse automatiquement un rapport donnant l’évolution des dernières températures mesurées : les valeurs maxi, mini et la valeur moyenne de la température de la période. Un graphique de l’évolution de la température.
Le programme aura la structure suivante : Lecture du fichier : On lit un fichier *.txt que l’on affiche dans l’indicateur texte lu. Extraction des valeurs : On veut obtenir un tableau des valeurs numériques des températures pour pouvoir trouver maxi, mini et moyenne. Pour cela, on procède de la manière suivante : FAIRE Récupérer une chaîne de température dans le texte principal. De cette chaîne extraire la sous chaîne exprimant la température Convertir cette sous chaîne en nombre la ranger dans un tableau de réels (doubles) « TabTemp » TANT QUE le texte lu n’est pas vide
Constitution du rapport : T00 123.1 °C T01 128.5 °C T02 126.7 °C T03 121.2 °C T04 123.5 °C …… 123.1 A B C D Constitution du rapport : Lorsque le tableau D est complet, on applique alors les fonctions de tableaux permettant de trouver les valeurs désirées.