17
LabVIEW est un langage de programmation par flux de données. Pour cette raison, vous utilisez généralement des principes de conception de flux de données pour développer votre code. Cependant, dans certaines situations, telles que pour la communication entre deux boucles parallèles, vous devez casser le modèle dexécution par flux de données en transmettant des informations à plusieurs emplacements du code que vous ne pouvez pas connecter avec un fil de liaison. Dans cette leçon, vous découvrirez les variables en général et plus particulièrement, les variables locales, en vue de gérer des cas dutilisation particuliers pour lesquels le modèle dexécution en flux de données nest pas possible. Vous découvrirez également les problèmes de programmation liés à lutilisation de variables et apprendrez à résoudre ces problèmes. Dans la mesure où les variables ne font pas partie, de manière inhérente, du modèle dexécution par flux de données de LabVIEW, utilisez-les avec précaution. Une mauvaise utilisation des variables peut rendre le code difficile à lire, provoquer des comportements inattendus dans les VIs et ralentir les performances. A. Communication entre des boucles parallèles B. Écriture dans des commandes et lecture des indicateurs C. Variables D. Situations de compétition

labview core1 lecon 8

Embed Size (px)

DESCRIPTION

la lecon 8 labview

Citation preview

Page 1: labview core1 lecon 8

LabVIEW est un langage de programmation par flux de données. Pour cette raison, vous utilisez généralement des principes de conception de flux de données pour développer votre code. Cependant, dans certaines situations, telles que pour la communication entre deux boucles parallèles, vous devez �casser� le modèle d�exécution par flux de données en transmettant des informations à plusieurs emplacements du code que vous ne pouvez pas connecter avec un fil de liaison.

Dans cette leçon, vous découvrirez les variables en général et plus particulièrement, les variables locales, en vue de gérer des cas d�utilisation particuliers pour lesquels le modèle d�exécution en flux de données n�est pas possible. Vous découvrirez également les problèmes de programmation liés à l�utilisation de variables et apprendrez à résoudre ces problèmes.

Dans la mesure où les variables ne font pas partie, de manière inhérente, du modèle d�exécution par flux de données de LabVIEW, utilisez-les avec précaution. Une mauvaise utilisation des variables peut rendre le code difficile à lire, provoquer des comportements inattendus dans les VIs et ralentir les performances.

A. Communication entre des boucles parallèlesB. Écriture dans des commandes et lecture des indicateursC. VariablesD. Situations de compétition

Page 2: labview core1 lecon 8

Dans ce cours, le parallélisme fait référence à l�exécution simultanée de plusieurs tâches. Considérez, par exemple, la création et l�affichage de deux signaux sinusoïdaux de fréquences différentes. Vous utilisez le parallélisme si vous placez l�un des signaux sinusoïdaux dans une boucle et l�autre dans une autre boucle.

L�aspect le plus difficile de la programmation de tâches parallèles est de transférer les données entre différentes boucles sans créer de dépendance de données. Par exemple, si vous passez les données avec un fil de liaison, les boucles ne seront plus parallèles. Dans l�exemple des signaux sinusoïdaux, vous pourriez utiliser le même mécanisme d�arrêt pour les deux boucles, comme l�illustre la figure 8-1.

Étudiez ce qui se passe si vous essayez de partager les données entre les boucles parallèles en utilisant un fil de liaison avec les méthodes suivantes.

Page 3: labview core1 lecon 8

Placez le terminal Bouton Arrêter à l�extérieur des deux boucles et câblez-le aux deux terminaux de condition, comme l�illustre la figure 8-2. Le terminal Bouton Arrêter est une entrée de données pour les deux boucles ; par conséquent, il n�est lu qu�une fois, avant l�exécution des boucles. Si Faux est passé aux boucles, celles-ci s�exécutent indéfiniment. Le fait de cliquer sur le Bouton Arrêter n�arrête pas le VI car le clic sur le bouton n�est pas lu pendant l�itération des boucles.

Placez le terminal Bouton Arrêter à l�intérieur de la boucle 1 pour qu�il soit lu à chaque itération de la boucle 1, comme l�illustre la figure suivante. La boucle 1 se termine correctement, mais la boucle 2 ne s�exécute que lorsqu�elle a reçu toutes ses entrées de données. La boucle 1 ne passe des données en sortie que lorsqu�elle s�arrête ; la boucle 2 doit donc attendre la valeur finale de Bouton Arrêter, qui n�est disponible que lorsque la boucle 1 a fini de s�exécuter. Par conséquent, les boucles ne s�exécutent pas en parallèle. De plus, la boucle 2 n�exécute qu�une itération car son terminal de condition reçoit la valeur Vrai du Bouton Arrêter de la boucle 1.

Page 4: labview core1 lecon 8

Si vous pouviez lire la valeur du terminal Bouton Arrêter dans un fichier, vous n�auriez plus de dépendance de flux de données entre les boucles puisque chaque boucle pourrait accéder indépendamment au fichier. De plus, lire et écrire dans des fichiers peut prendre beaucoup du temps du processeur.

Une autre façon d�effectuer la tâche de communication entre des boucles parallèles consiste à trouver l�emplacement de stockage des données du terminal Bouton Arrêter dans la mémoire et de lire directement les données à cet emplacement. Une variable locale vous permet de faire cela en lisant la même commande de la face-avant à plusieurs emplacements du diagramme. Un peu plus loin dans cette leçon, vous apprendrez à créer et utiliser une variable locale qui communique entre deux boucles parallèles.

Outre la communication entre deux boucles qui s�exécutent simultanément, il est possible de résoudre d�autres problèmes de flux de données avec des variables locales.

Vous pouvez utiliser une variable locale pour mettre à jour un indicateur spécifique de la face-avant à partir de plusieurs emplacements du diagramme. Par exemple, si vous avez un VI avec deux boucles While, vous pouvez mettre à jour un indicateur de la face-avant pour indiquer quelle boucle s�exécute.

Avec une variable locale, vous pouvez lire ou écrire dans une commande ou un indicateur de la face-avant. En effet, avec une variable locale vous pouvez accéder à des objets de la face-avant à la fois comme entrée et comme sortie. Par exemple, si l�interface utilisateur exige une ouverture de session de la part des utilisateurs, vous pouvez effacer les invites Nom et Mot de passe à chaque fois qu�un nouvel utilisateur ouvre une session. Utilisez une variable locale pour lire les commandes chaîne Nom et Mot de passe à l�ouverture de session et pour écrire des chaînes vides dans ces commandes lorsque la session est fermée.

Page 5: labview core1 lecon 8

Dans LabVIEW, c�est le flux de données, et non pas l�ordre séquentiel des commandes, qui détermine l�ordre d�exécution des éléments du diagramme. Il est donc possible de créer des diagrammes qui contiennent des opérations simultanées. Vous pouvez par exemple exécuter deux boucles For simultanément et afficher les résultats sur la face-avant, comme l�illustre le diagramme de la figure 8-4.

Toutefois, si vous utilisez des fils de liaison pour transmettre des données entre des boucles parallèles, elles ne fonctionnent plus en parallèle. Les opérations de boucles parallèles peuvent être deux boucles parallèles sur le même diagramme sans dépendance de flux de données, ou deux boucles dans des VIs différents appelés en même temps.

Le diagramme de la figure 8-5 n�exécute pas les deux boucles en parallèle puisqu�elles sont reliées par un fil de liaison.

Le fil de liaison crée une dépendance des données car la deuxième boucle ne commence son exécution que lorsque la première boucle finit la sienne et transmet les données par son tunnel. Pour que les deux boucles s�exécutent en même temps, supprimez le fil de liaison. Pour transmettre des données entre les sous-VIs, utilisez une autre technique, une variable par exemple.

Page 6: labview core1 lecon 8

Dans LabVIEW, les variables sont des éléments du diagramme qui vous permettent de stocker ou d�accéder à des données à un autre emplacement. L�emplacement réel des données varie en fonction du type de variable. Les variables locales stockent les données dans les commandes et les indicateurs de la face-avant. Les variables globales et les variables partagées à un processus stockent les données dans des référentiels spéciaux accessibles à partir de plusieurs VIs. Les variables globales fonctionnelles stockent les données dans les registres à décalage des boucles While. Quel que soit l�emplacement où la variable stocke les données, toutes les variables vous permettent d�éviter le flux de données normal en transmettant des données d�un emplacement à un autre sans connecter ces emplacements par un fil de liaison. Pour cette raison, les variables sont utiles dans les architectures parallèles mais possèdent certains inconvénients (les situations de compétition, par exemple).

Les variables locales transfèrent des données au sein d�un seul VI.

Dans LabVIEW, vous lisez ou écrivez des données dans un objet de la face-avant en utilisant son terminal du diagramme. Cependant, un objet de la face-avant n�a qu�un terminal sur le diagramme et votre application doit peut-être accéder aux données de ce terminal à partir de plusieurs emplacements.

Les variables globales et locales transmettent des informations entre des emplacements de l�application qui ne peuvent pas être connectés par un fil de liaison. Utilisez des variables locales pour accéder à des objets de la face-avant à partir de plusieurs emplacements dans un même VI. Utilisez des variables globales pour accéder à des données et les transmettre parmi plusieurs VIs.

Utilisez un n�ud de rétroaction pour stocker les données de l�exécution précédente d�un VI ou d�une boucle.

Cliquez avec le bouton droit sur un objet de la face-avant ou sur un terminal du diagramme et sélectionnez Créer»Variable locale dans le menu local pour créer une variable locale. Une icône représentant la variable locale associée à l�objet apparaît sur le diagramme.

Vous pouvez aussi sélectionner une variable locale sur la palette Fonctions et la placer sur le diagramme. Le n�ud de variable locale n�est pas encore associé à une commande ou à un indicateur.

Pour associer une variable locale à une commande ou un indicateur, cliquez avec le bouton droit sur le n�ud de la variable locale et sélectionnez Sélectionner un élément dans le menu local. Le menu local développé répertorie tous les objets de la face-avant qui ont des étiquettes liées.

Page 7: labview core1 lecon 8

LabVIEW utilise les étiquettes liées pour associer les variables locales aux objets de la face-avant ; vous devez donc étiqueter les commandes et indicateurs de la face-avant avec des étiquettes liées descriptives.

Après avoir créé une variable, vous pouvez en lire les données ou y écrire des données. Par défaut, une nouvelle variable reçoit des données. Ce genre de variable fonctionne comme un indicateur et correspond à une variable globale ou locale en écriture. Lorsque vous écrivez de nouvelles données sur une variable globale ou locale, la commande ou l�indicateur associé de la face-avant se met à jour avec les nouvelles données.

Vous pouvez également configurer une variable pour qu�elle se comporte comme une source de données. Cliquez avec le bouton droit sur la variable et sélectionnez Changer en lecture dans le menu local pour configurer la variable comme une commande. Lorsque ce n�ud s�exécute, le VI lit les données dans la commande ou l�indicateur associé de la face-avant.

Pour changer la variable pour qu�elle reçoive des données du diagramme plutôt que d�en fournir, cliquez avec le bouton droit sur la variable et sélectionnez Changer en écriture dans le menu local.

Sur le diagramme, vous pouvez différencier les variables en lecture des variables en écriture, tout comme vous distinguez les commandes des indicateurs. Une variable en lecture possède une bordure épaisse semblable à celle d�une commande. Une variable en écriture possède une bordure fine semblable à celle d�un indicateur.

Dans la section Communication entre des boucles parallèles de cette leçon, vous avez vu un exemple de VI qui utilise des boucles parallèles. La face-avant contient un bouton qui arrête la génération des données affichées sur deux graphes. Sur le diagramme, les données de chaque graphe déroulant sont générées dans une boucle While distincte pour cadencer chaque boucle séparément. Le terminal Bouton Arrêter a arrêté les deux boucles While. Dans cet exemple, les boucles partagent le même bouton pour arrêter leur exécution en même temps.

Pour que les deux graphes déroulants se mettent à jour comme prévu, les boucles While doivent s�exécuter en parallèle. Lorsque vous connectez un fil de liaison entre les boucles While pour transmettre les données du Bouton Arrêter, l�exécution de ces boucles s�effectue en série et non

Page 8: labview core1 lecon 8

en parallèle. La figure 8-6 montre un diagramme de ce VI utilisant une variable locale pour transmettre les données du Bouton Arrêter.

La boucle 2 lit une variable locale associée au Bouton Arrêter. Lorsque vous définissez le bouton à Faux sur la face-avant, le terminal de la boucle 1 écrit la valeur Faux dans la variable locale du bouton Arrêter et dans le terminal de condition de la boucle 1. La boucle 2 lit la variable locale du bouton Arrêter et écrit la valeur Faux dans le terminal de condition de la boucle 2. Par conséquent, les boucles s�exécutent en parallèle et terminent leur exécution simultanément lorsque vous cliquez sur le bouton Arrêter de la face-avant.

Avec une variable locale, vous pouvez écrire à une commande ou un indicateur de la face-avant ou les lire. Écrire dans une variable locale revient à transmettre des données à un autre terminal. Cependant, avec une variable locale, vous pouvez écrire même s�il s�agit d�une commande ou lire même s�il s�agit d�un indicateur. En effet, avec une variable locale, vous pouvez accéder à des objets de la face-avant à la fois comme entrée et comme sortie.

Par exemple, si l�interface utilisateur exige une ouverture de session de la part des utilisateurs, vous pouvez effacer les invites et à chaque fois qu�un nouvel utilisateur ouvre une session. Utilisez une variable locale pour lire les commandes chaîne Nom et Mot de passe à l�ouverture de session et pour écrire des chaînes vides dans ces commandes lorsque la session est fermée.

Vous pouvez aussi utiliser des variables pour accéder à des données et les transmettre entre plusieurs VIs qui s�exécutent simultanément. Une variable locale partage des données au sein d�un VI. Une variable globale partage elle aussi des données, mais entre plusieurs VIs. Supposons, par exemple, que vous ayez deux VIs qui s�exécutent simultanément. Chaque VI contient une boucle While et écrit des points de données sur un graphe déroulant. Le premier VI contient une commande booléenne qui arrête les deux VIs. Vous pouvez utiliser une variable globale pour arrêter les deux boucles avec la même commande booléenne. Si les deux boucles se trouvaient sur le même diagramme du même VI, vous pourriez utiliser une variable locale pour arrêter les boucles.

Vous pouvez aussi utiliser une variable partagée à un processus de la même façon que vous utilisez une variable globale. Une variable partagée est semblable à une variable locale ou globale, mais

Page 9: labview core1 lecon 8

vous permet de partager des données sur un réseau. Une variable partagée peut être à processus unique ou publiée sur réseau. Bien que les variables partagées publiées sur réseau ne soient pas traitées dans ce cours, vous pourriez ultérieurement changer une variable partagée à un processus en variable partagée publiée sur réseau.

Utilisez une variable globale pour partager des données entres des VIs sur un même ordinateur, en particulier si vous n�utilisez pas de fichier de projet. Utilisez une variable partagée à un processus si vous devez partager ultérieurement les informations de la variable entre plusieurs VIs sur différents ordinateurs.

Utilisez des variables globales pour accéder à des données et les transmettre entre plusieurs VIs qui s�exécutent simultanément. Les variables globales sont des objets intégrés à LabVIEW. Lorsque vous créez une variable globale, LabVIEW crée automatiquement un VI global spécial, qui possède une face-avant, mais pas de diagramme. Ajoutez des commandes et des indicateurs à la face-avant du VI global pour définir les types de données des variables globales qu�il contient. En effet, cette face-avant est un conteneur à partir duquel plusieurs VIs peuvent accéder aux données.

Supposons, par exemple, que deux VIs s�exécutent simultanément. Chaque VI contient une boucle While et écrit des points de données sur un graphe déroulant. Le premier VI contient une commande booléenne pour terminer les deux VIs. Vous devez utiliser une variable globale qui arrête les deux boucles avec la même commande booléenne. Si les deux boucles se trouvaient sur le même diagramme du même VI, vous pourriez utiliser une variable locale pour arrêter les boucles.

Sélectionnez une variable globale sur la palette Fonctions et placez-la sur le diagramme.

Double-cliquez sur le n�ud de variable globale pour afficher la face-avant du VI global. Placez des commandes et des indicateurs sur cette face-avant comme vous le feriez sur une face-avant standard.

LabVIEW utilise les étiquettes liées pour identifier les variables globales ; vous devez donc étiqueter les commandes et les indicateurs de la face-avant avec des étiquettes liées descriptives.

Vous pouvez créer plusieurs VIs globaux à une variable, chacun avec un objet de la face-avant ou, si vous souhaitez regrouper plusieurs variables semblables, un VI global, avec plusieurs objets de face-avant.

Un VI global avec plusieurs objets est plus efficace parce que vous pouvez regrouper des variables apparentées. Le diagramme d�un VI peut inclure plusieurs n�uds de variable globale associés aux commandes et indicateurs sur la face-avant d�un VI global. Vous pouvez placer des VIs globaux dans d�autres VIs de la même façon que vous placez des sous-VIs dans d�autres VIs. À chaque fois que vous mettez un nouveau n�ud de variable globale sur un diagramme, LabVIEW crée un nouveau VI global associé uniquement à ce n�ud de variable globale et à ses copies.

Page 10: labview core1 lecon 8

La figure 8-7 montre la fenêtre de face-avant d�un VI global contenant une commande numérique, une chaîne et un cluster comprenant une commande booléenne et une commande numérique. La barre d�outils n�affiche ni les boutons Exécuter et Stop, ni les boutons associés d�une face-avant typique.

Après avoir placé tous les objets sur la face-avant du VI global, enregistrez-le et retournez au diagramme du VI d�origine. Vous devez ensuite sélectionner l�objet auquel vous voulez accéder dans le VI global. Cliquez sur le n�ud de la variable globale et sélectionnez un objet de la face-avant dans le menu local. Le menu local répertorie tous les objets de la face-avant du VI global qui comportent des étiquettes liées. Vous pouvez aussi cliquer avec le bouton droit sur le n�ud de variable globale et sélectionner un objet de la face-avant dans le menu local Sélectionner un élément.

Cliquez sur le n�ud de variable globale avec l�outil Doigt ou l�outil Texte et sélectionnez l�objet de face-avant dans le menu local.

Si vous voulez utiliser cette variable globale dans d�autres VIs, sélectionnez l�option Sélectionner un VI sur la palette Fonctions. Par défaut, la variable globale est associée au premier objet de la face-avant doté d�une étiquette liée que vous avez placé sur le VI global. Cliquez avec le bouton droit sur le n�ud de variable globale que vous avez placé sur le diagramme et sélectionnez un objet de la face-avant à partir du menu local de Sélectionner un élément pour associer la variable globale aux données d�un autre objet de la face-avant.

Page 11: labview core1 lecon 8

Vous devez utiliser un fichier de projet pour utiliser une variable partagée. Pour créer une variable partagée à un processus, cliquez avec le bouton droit sur Poste de travail dans la fenêtre de l�Explorateur de projet et sélectionnez Nouveau»Variable. La boîte de dialogue Propriétés de la variable partagée apparaît, comme le montre la figure 8-8.

Sous Type de variable, sélectionnez Un processus. Définissez un type de données et un nom pour la variable. Une fois la variable partagée créée, elle apparaît automatiquement dans une nouvelle bibliothèque dans le fichier du projet. Enregistrez la bibliothèque. Vous pouvez ajouter d�autres variables partagées dans cette bibliothèque selon les besoins. Vous pouvez faire glisser et déposer la variable de l�arborescence de la fenêtre de l�Explorateur de projet directement sur le diagramme d�un VI. Utilisez le menu local pour passer du mode écriture en mode lecture et vice versa. Utilisez les clusters d�erreur sur la variable pour imposer un flux de données.

Pour initialiser une variable locale ou globale, vérifiez qu�elle contient des valeurs de données connues avant que le VI ne s�exécute. Sinon, les variables risquent de contenir des données qui génèrent un comportement incorrect du VI. Si la variable base la valeur initiale sur le résultat d�un calcul, assurez-vous que LabVIEW écrit la valeur dans la variable avant d�essayer d�accéder à la variable pour une autre action. Si l�action d�écriture est câblée en parallèle avec le reste du VI, une situation de compétition risque de se produire.

Page 12: labview core1 lecon 8

Pour être sûr que le code qui écrit la valeur initiale de la variable s�exécute en premier, vous pouvez l�isoler en le mettant dans la première étape d�une structure Séquence ou dans un sous-VI câblé de sorte à s�exécuter en premier dans le flux de données du diagramme, comme l�illustre la figure 8-9.

Si vous n�initialisez pas la variable avant que le VI ne la lise pour la première fois, elle contient la valeur par défaut de l�objet de la face-avant associé.

Les variables globales et locales sont des concepts avancés de LabVIEW. Elles ne font pas partie de manière inhérente du modèle d�exécution par flux de données LabVIEW. Certains problèmes de la programmation avec les variables incluent les éléments suivants :� Du code du diagramme difficile à lire. Étant donné que les variables cassent le modèle du flux

de données, vous ne pouvez pas utiliser de fils de liaison pour suivre le flux de données.� Des comportements inattendus dans les VIs. L�utilisation de variables plutôt que d�un

connecteur ou l�utilisation de variables pour accéder à des valeurs dans chaque étape d�une structure Séquence est une mauvaise pratique et peut causer des comportement inattendus dans les VIs.

� Un ralentissement des performances. Une utilisation excessive de variables locales et globales, comme par exemple les utiliser pour éviter d�avoir de longs fils de liaison à travers le diagramme ou les utiliser à la place d�un flux de données, ralentit les performances.

Les figures 8-10 et 8-11 illustrent deux manières de programmer le même exemple. La figure 8-10 illustre une mauvaise utilisation de variables alors que la figure 8-11 illustre une conception plus optimale. L�exemple de programmation représente une application de feu tricolore implémenté comme machine à états. Chaque état met à jour les feux pour la prochaine étape de la séquence.

Page 13: labview core1 lecon 8

Dans l�état illustré dans la figure 8-10, les feux Vers l�est et Vers l�ouest sont verts alors que les feux Vers le nord et Vers le sud sont rouges. Cet état dure 4 secondes, comme le montre la fonction Attendre (ms).

L�exemple de la figure 8-11 effectue exactement la même tâche, mais de manière plus efficace grâce à une meilleure conception. Remarquez que cet exemple est plus simple à lire et à comprendre que l�exemple précédent, en partie car il comporte moins de variables. En plaçant les indicateurs dans la boucle While, hors de la structure Condition, les indicateurs se mettent à jour après chaque état, sans utiliser de variable. Il est plus facile d�ajouter des fonctionnalités (une flèche autorisant à tourner à gauche, par exemple) à cet exemple qu�à l�exemple précédent.

Page 14: labview core1 lecon 8

Une situation de compétition est une situation dans laquelle le cadencement d�événements ou la planification de tâches affecte une sortie ou une valeur de données accidentellement. Les situations de compétition sont un problème courant dans les programmes qui exécutent plusieurs tâches en parallèle et partagent des données entre elles en utilisant des variables.

Les situations de compétition sont difficiles à identifier et à mettre au point car le résultat dépend de l�ordre dans lequel le système d�exploitation exécute les tâches planifiées et le cadencement d�événements externes. Du code qui comporte une situation de compétition peut renvoyer le même résultat des milliers de fois lors d�un test, tout en étant capable d�en renvoyer un autre à n�importe quel moment.

La meilleure façon d�éviter les situations de compétition est d�utiliser les techniques suivantes : � Contrôle et limitation des ressources partagées.� Séquencement correct des instructions en spécifiant un ordre d�exécution.� Réduction de l�utilisation de variables.

Les situations de compétition sont plus courantes quand deux tâches ont toutes deux l�accès en lecture et en écriture à une ressource. Une ressource est une entité partagée entre les processus. Dans les situations de compétition, les données stockées, accessibles par le biais de variables, sont l�exemple le plus courant de ressources partagées. D�autres exemples de ressources sont des fichiers et des références à des ressources matérielles.

Page 15: labview core1 lecon 8

Quand vous modifiez une ressource à partir de plusieurs emplacements, vous introduisez la possibilité d�une situation de compétition. Par conséquent, la meilleure façon d�éviter les situations de compétition est de minimiser les ressources partagées et le nombre de sources d�écriture pour les ressources partagées restantes. Par contre, plusieurs sources de lecture peuvent généralement accéder à une ressource partagée sans causer de problème. Toutefois, il est recommandé de n�utiliser qu�un contrôleur ou qu�une source d�écriture par ressource partagée pour éviter les situations de compétition.

Du code dans lequel le flux de données n�est pas correctement utilisé pour contrôler l�ordre d�exécution peut provoquer des situations de compétition. Si aucune dépendance de données n�est établie, LabVIEW peut planifier les tâches dans n�importe quel ordre, ce qui engendre des risques de situations de compétition si les tâches dépendent les unes des autres. Prenez l�exemple de la figure 8-12.

Le code de cet exemple peut produire quatre résultats, suivant l�ordre d�exécution des opérations.

Page 16: labview core1 lecon 8

1. Le terminal lit Valeur.2. Valeur 5 est stocké dans Valeur.3. La variable locale lit Valeur 5.4. (Valeur 5) + 2 est stocké dans Valeur.

1. La variable locale lit Valeur.2. Valeur + 2 est stocké dans Valeur.3. Le terminal lit Valeur + 2.4. (Valeur + 2) 5 est stocké dans Valeur.

1. Le terminal lit Valeur.2. La variable locale lit Valeur.3. Valeur + 2 est stocké dans Valeur.4. Valeur 5 est stocké dans Valeur.

1. Le terminal lit Valeur.2. La variable locale lit Valeur.3. Valeur 5 est stocké dans Valeur.4. Valeur + 2 est stocké dans Valeur.

Même si ce code engendre une situation de compétition, il s�exécute généralement de manière moins aléatoire que le premier exemple de situation de compétition car LabVIEW assigne normalement le même ordre aux opérations. Toutefois, vous devriez éviter des situations comme celles-ci car l�ordre et le comportement du VI peuvent varier. Par exemple, l�ordre pourrait changer lors de l�exécution du VI dans des conditions différentes ou lors de la mise à niveau du VI pour une nouvelle version de LabVIEW. Heureusement, les situations de compétition de cette nature sont faciles à résoudre en contrôlant le flux de données.

Page 17: labview core1 lecon 8

1. Il est conseillé d�utiliser des variables dans vos VIs à chaque fois que possible.a. Vrai b. Faux

2. Lors du contrôle des ressources, quelle combinaison de sources de lecture et d�écriture réduit les risques de situations de compétition ?a. Une source d�écriture, une source de lectureb. Une source d�écriture, plusieurs sources de lecturec. Plusieurs sources d�écriture, une source de lectured. Plusieurs sources d�écriture et de lecture