LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

ajouter ligne dans table ou liste multicolonnes

Solved!
Go to solution

Bonjour

Je découvre Labview (version 8.6) et je tente de créer un programme d'asquisition de données pour un banc d'essai amortisseur.

Je receuille des données et les classes dans un tableau, ET cré un graphe XY pour afficher une courbe représentant la force de l'amortisseur en fonction de la vitesse de déplacement de la tige. Jusqu'à tout va bien!

Mon problème est que je voudrai que lorsque le cycle s'effectue en continue, les nouvelles données s'affiche sur la ligne suivante au lieu d'écraser les précédentes valeurs comme c'est le cas actuellement .J'ai essayé avec l'outil "table" et l'outil "liste multicolonnes" mais le problème est le même: Comment dois-je faire?

Il se trouve que j'ai le même problème pour afficher les courbes sur mon graphe XY, j'aurais également besoin d'aide pour ce problème.

Merci par avance pour votre attention et votre aide.

Cordialement

Jérémy

PS: Si joint mon VI pour imager le problème.

Download All
0 Kudos
Message 1 of 15
(4,812 Views)
Solution
Accepted by topic author J-G

Bonjour Jérémy,

 

Tout d'abord, j'aimerais savoir ce que vous entendez par l'exécution en continue? Si vous indiquez par là la double flêche d'exécution, je tiens à vous informer que celle-ci ne doit servir qu'en cas de débogage de votre application, pour vous permettre de changer des valeurs sur des commandes sans avoir à continuellement relancer l'exécution de votre vi.

Si vous voulez que votre programme s'exécute de manière continue, vous pouvez ajouter une boucle While autour de votre code, avec un bouton STOP par exemple pour arrêter celle-ci.

Ensuite, si vous n'arrivez à écrire qu'une seule ligne, c'est parce que bien que vous créiez un tableau 2D de vos données avant de les envoyer au noeud de propriété de la liste, ce tableau n'est rempli que d'une seule colonne.

Vous trouverez en pièce jointe votre VI légèrement modifié pour intégrer une boucle au niveau de l'acquisition.

J'ai utilisé un tunnel avec auto-indexation, qui permet de créer une nouvelle ligne du tableau 2D à chaque itération de la boucle. C'est une façon simple, mais ce n'est pas spécialement la meilleure, vous pouvez également mettre en place vos fonctions de créations de tableau dans la boucle. De la même manière, il faudra peut-être rajouter des fonctions de cadencement dans la boucle, mais dans votre cas, je pense que l'acquisition elle même cadencera l'exécution de la boucle.

Le rapport ne sera rempli qu'après que vous ayez cliqué sur le bouton STOP.

 

En espérant que cette solution correspond à votre besoin.

 

Cordialement,

Olivier L. | Certified LabVIEW Developer


Message 2 of 15
(4,798 Views)

Bonjour Olivier

Tout d'abord merci pour votre aide.

Effectivement vous avez bien compris mon problème seulement est -il possible d'afficher les lignes sur la face avant en direct?

J'ai egalement essayé de faire la meme chose pour mon graphe XY mais sans succés: les courbes s'écrasse au fur et a mesure. Je souhaiterais afficher les courbes correspondantes au lignes de mon tableau sur le meme graphe (et si possible de couleurs différentes) pour pouvoir les comparer...

Dernier petite chose: est-il possible d'ouvrir Word aprés que ma boucle While soit fini autrement qu'avec la fonction séquence? (Par exemple l'ouvrir que lorsque que j'appui sur STOP)

Cordialement

 

0 Kudos
Message 3 of 15
(4,759 Views)

Bonjour Jérémy,

 

Vous trouverez en pièce jointe, encore quelques petites modifications sur votre VI pour vous montrer comment utiliser les fonctions tableau pour créer des tableaux an ajoutant des éléments à chaque itération de la boucle.

Vous verrez, si vous activez l'aide contextuelle (CTRL+H) et que vous placez votre souris sur le graphe XY sur votre diagramme, il est expliqué comment câbler l'entrée du tableau si vous voulez une seule courbe ou plusieurs courbes. Dans le cas de plusieurs courbes, il faut un tableau donc chaque élément correspond au tableau 2D (X et Y), c'est ce que je fais lorsque je viens ajouter les données dans le tableau.

 

Ensuite, pour que Word ne s'ouvre qu'après la boucle d'acquisition, il faut savoir que LabVIEW utilise le principe du flux de données, n'hésitez pas à regarder l'aide de LabVIEW pour comprendre ce principe. Et cliquez sur le bouton "Animer l'exécution", c'est très pratique pour bien comprendre comment les fonctions s'exécutent.

Le flux de donnée dit qu'une fonction ne peut s'exécuter que lorsque toutes ses données en entrée sont disponibles. Et ses données ne sont disponibles que lorsque la ou les fonctions qui les génèrent ont fini de s'exécuter. Il faut également comprendre qu'une boucle est vue comme une noeud, et que les données qui sont générées par cette boucle ne seront disponibles que lorsque la boucle sera arrêtée.

 

Dans votre cas, la fonction qui insère les données du tableau, généré par l'acquisition, dans Word doit attendre que la boucle soit terminée. En revanche, la fonction d'ouverture de Word ne dépend pas de la boucle While, donc s'ouvre dès le début.

Pour pallier ce problème, vous avez 2 solutions. Soit utiliser une structure séquence, ainsi, le code qui sera dans la 2eme étape ne s'exécutera que lorsque la 1ere étape sera terminée. Où vous pouvez utiliser une donnée issue de la boucle que devra attendre la première fonction du Report Generation Toolkit, une utilisation classique consiste à utiliser le cluster d'erreur issu des fonctions de la boucle while, et à le câbler au cluster d'erreur de la fonction que l'on veut exécuter après la boucle. Ainsi, la fonction doit attendre que la boucle While ait fini son exécution avant de pouvoir s'exécuter.

J'espère que je ne vous ai pas perdu dans toutes ces explications.

 

Cordialement,

Message Edité par Olivier L le 04-29-2009 04:36 AM

Olivier L. | Certified LabVIEW Developer


Message 4 of 15
(4,753 Views)

Merci Olivier.

Pour le graphe c'est exactement ce qu'il me fallait.Pour l'ouverture du rapport j'ai compris et sa devrais marcher mais par contre je n'est pas compris comment faire pour afficher les lignes de mon tableau en direct sur la face avant .

Je vais essayé et je vous tiens au courant.

0 Kudos
Message 5 of 15
(4,744 Views)

Bonjour,

 

Je n'avais pas compris que vous posiez la question également pour le tableau.

Si vous voulez remplir votre tableau au fur et mesure, il faudra utiliser le noeud de propriété dans la boucle While.

Dans ce cas, vous devrez construire votre tableau de données à l'intérieur de la boucle avec la méthode utilisée pour le graphe, car le tunnel avec auto-indexation ne permet de récupérer le tableau créé qu'à la sortie de la boucle.

Ce qu'il faut bien comprendre, c'est que si vous voulez quelque chose qui se rafraichisse régulièrement, il faut qu'il soit intégré à la boucle, car on va réexécuter le code à l'intérieur régulièrement, jusqu'à ce qu'on l'arrête, et ainsi renvoyer et rafraîchir les nouvelles données des indicateurs.

 

Cordialement,

Olivier L. | Certified LabVIEW Developer


0 Kudos
Message 6 of 15
(4,740 Views)

Merci Olivier. Je suis partie dans cette direction mais je n'ai pas encore réussi.

Je continu de chercher...

0 Kudos
Message 7 of 15
(4,727 Views)

Bonjour

Pour ce qui en on besoin voici un extrait du résultat  en pièces jointes (le principe et le même pour le graphe XY).

Malheureusement il me reste un problème: Comment faire pour que chaque groupe s'affiche sur la ligne du dessous au lieu de l'écrire à la suite comme c'est le cas actuellement?

Merci pour votre aide.

 

0 Kudos
Message 8 of 15
(4,668 Views)
Voici les pieces jointes :smileytongue:
Download All
0 Kudos
Message 9 of 15
(4,667 Views)

Bonjour Jérémy,

 

Votre problème est exactement le même que lors de votre premier post, vous créez un tableau 1D, que vous ne transformez en tableau 2D qu'avant de l'afficher dans la table, il s'agit donc toujours d'un tableau 2D ne contenant qu'une seule ligne!!

Pour réaliser la fonction désirée, il vous faut utiliser un tableau 2D, dans lequel chaque ligne serac composée du tableau 1D créé par les différents éléments, et chaque ligne sera rajouté à chaque tour de boucle.

Pour cela, supprimez la fonction "Construire un tableau" que vous avez placé avant la table. Puis, faites un clic droit sur le tableau en entrée de la boucle while et sélectionnez "Ajouter une dimension" vous utiliserez alors un tableau 2D. Vous verrez que la fonction "Insérer dans un tableau" va automatiquement se modifier pour correspondre à un tableau 2D. Si vous ne mettez rien aux entrées d'indices de ligne et de colonne, la fonction ajoutera automatiquement chaque nouvelle ligne à la suite pour chaque itération, et votre tableau sera composé comme vous le souhaitez.

 

Cordialement,

Olivier L. | Certified LabVIEW Developer


Message 10 of 15
(4,640 Views)