Transfert de données entre les itérations d'une boucle dans LabVIEW

Inclus dans cette page

Un programme qui utilise des boucles a souvent besoin d'accéder aux données provenant des itérations précédentes de la boucle dans LabVIEW. Par exemple, si vous acquérez un élément de données à chaque itération d'une boucle et que vous devez effectuer une moyenne sur chaque groupe de cinq éléments de données, vous devez conserver les données des itérations précédentes de la boucle.

Registres à décalage

 

Vidéo : Registres à décalage

Utilisez des registres à décalage lorsque vous voulez faire passer des valeurs d'une itération à la suivante par l'intermédiaire de la boucle. Un registre à décalage apparaît comme une paire de terminaux directement à l'opposé l'un de l'autre sur les côtés verticaux du bord de la boucle.

Le terminal de droite contient une flèche vers le haut et stocke les données à la fin d'une itération. LabVIEW transfère les données connectées à droite du registre jusqu'à l'itération suivante. Après l'exécution de la boucle, le terminal sur le côté droit de la boucle renvoie la dernière valeur stockée dans le registre à décalage.

Créez un registre à décalage en cliquant avec le bouton droit sur le bord gauche ou droit d'une boucle et en sélectionnant Ajouter un registre à décalage dans le menu local.

Un registre à décalage transfère n'importe quel type de données et s'adapte automatiquement au type de données du premier objet qui lui est câblé. Les données câblées aux terminaux de chaque registre à décalage doivent être du même type.

Vous pouvez ajouter plus d'un registre à décalage à une boucle. Si votre boucle contient plusieurs opérations qui utilisent des valeurs d'itérations précédentes, utilisez plusieurs registres à décalage pour stocker les valeurs de données résultant des différents processus de la structure, comme illustré dans la figure n°1.

Figure 1. Utilisation de plusieurs registres à décalage

Initialisation des registres à décalage

L'initialisation d'un registre à décalage réinitialise la valeur que le registre à décalage transmet à la première itération de boucle lorsque le VI s'exécute. Initialisez un registre à décalage en câblant une commande ou une constante au terminal du registre à décalage sur le côté gauche de la boucle, comme illustré dans la Figure n°2.

Figure 2. Initialisation des registres à décalage

Dans la Figure n°2, la boucle For s'exécute cinq fois en augmentant à chaque fois de 1 la valeur stockée dans le registre à décalage. Après la cinquième itération de la boucle For, le registre à décalage transmet à l'indicateur la valeur finale, 5, et le VI s'arrête. Chaque fois que vous exécutez le VI, le registre à décalage repart d'une valeur 0. Si vous n'initialisez pas le registre à décalage, la boucle utilise la valeur écrite sur le registre à décalage lors de la dernière exécution de la boucle ou, si la boucle ne s'est jamais exécutée, la valeur par défaut du type de données. Utilisez un registre à décalage non initialisé pour conserver les informations d'état entre les exécutions successives d'un VI.

Figure 3. Registre à décalage non initialisé

Dans la Figure n°3, la boucle For s'exécute cinq fois en augmentant à chaque fois de 1 la valeur stockée dans le registre à décalage. À la prochaine exécution du VI, le registre à décalage repart de la valeur 0, la valeur par défaut pour un entier 32 bits. Après la cinquième itération de la boucle For, le registre à décalage transmet à l'indicateur la valeur finale, 5, et le VI s'arrête. À la prochaine exécution du VI, le registre à décalage repart de la valeur 5, la dernière valeur de l'exécution précédente. Après la cinquième itération de la boucle For, le registre à décalage transmet la valeur finale, 10, à l'indicateur. Si vous exécutez encore le VI, le registre à décalage repart d'une valeur 10, et ainsi de suite. Les registres à décalage non initialisés conservent la valeur de l'itération précédente jusqu'à ce que vous fermiez le VI.

Registres à décalage empilés

Les registres à décalage empilés vous permettent d'accéder aux données provenant d'itérations précédentes de la boucle. Les registres à décalage empilés conservent en mémoire les valeurs de plusieurs itérations précédentes et transmettent ces valeurs aux itérations suivantes. Pour créer un registre à décalage empilé, cliquez avec le bouton droit sur le terminal gauche et sélectionnez Ajouter un élément dans le menu local.

Les registres à décalage empilés ne peuvent exister que sur le côté gauche de la boucle car le terminal de droite transfère uniquement les données générées par l'itération en cours à l'itération qui suit.

Figure 4. Utilisation des registres à décalage empilés

Si vous ajoutez un autre élément au terminal de gauche du diagramme précédent, les valeurs des deux dernières itérations sont transmises à l'itération suivante, la valeur d'itération la plus récente étant stockée dans le registre à décalage supérieur. Le terminal du bas stocke les données qui lui sont transmises de l'itération précédente.

Découvrir LabVIEW d'une nouvelle façon

Découvrez ces concepts LabVIEW à travers une nouvelle expérience interactive.

Continuez votre apprentissage

Préc. Structures d'exécution
Gestion des erreurs Suivant