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'Ơ lƠ 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
(5,573 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
(5,559 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
(5,520 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
(5,514 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
(5,505 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
(5,501 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
(5,488 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
(5,429 Views)
Voici les pieces jointes :smileytongue:
Download All
0 Kudos
Message 9 of 15
(5,428 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
(5,401 Views)