Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

enregistrer les données d'une vi vers une autre

Bonjour,

 

je vous explique mon problème,

 

je travaille actuellement sur un programme assez complexe pilotant un banc de test et codé en Labview.

 

Ce programme doit utiliser un ensemble de vi de configuration contenant des cluster de données que j'appelerai ici 'paramètre.vi'.

Actuellement ces vi ne contiennent uniquement que des indicateurs et au niveau des terminaux il n'y a donc que des sorties ou les données sont rentrées manuelement une par une puis enregistrées

ces vi sont ensuite appelée par l'ihm qui lis les données et s'en sert pour paraméter les différents tests.

 

En ce qui me concerne une partie de mon travail consiste à automatiser la création de ces vi. , j'ai donc mis en place une interface que j'ai intégré au programme qui me permet pour l'instant de collecter l'ensemble des informations dont j'ai besoin pour remplir les différents cluster des fichier param .VI

 

Ma première idée à été une fois l'ensemble des paramètres récupérés d'ouvrir la vi que je cible (paramètre.vi) via une référence écrire les données dedans puis fermer la référence.Pour ce faire j'ai modifié légèrement mon fichier paramètre en y incluant des controleurs reliées aux indicateurs, pour pouvoir ecrire dedans et aussi pour pouvoir créer des terminaux d'entrées.

cela marche mais uniquement si la vi est ouverte à ce moment, les données sont intégrées, mais dès que je ferme mon paramètre.vi et que je le réouvre ces données sont réinitialisées à zero.

Je suis donc dans une impasse à ce niveau la ,car je pense que mon fichier parametre.vi ne sauvegarde rien du tout et utilises les valeurs par défauts à chaque réouverture.

 

J'ai cherché depuis quelques jours, et j'ai vu diverses possibilités mais je ne sais pas si l'une d'elle peut marcher. (datalog,fichier config, .ini) ou si il existe une solution qui serait plus simple à mettre en place car je ne travaille que depuis 1mois et quelque sur labview.

 

En l'attente d'une réponse.

Cordialement

 

ps: je sais qu'il aurait été plus simple d'enregister toute ces données dans des fichiers texte par exemple, , mais tout le reste du programme est configuré pour utiliser ces fichiers parametre.vi et si je peux le modifier un peu je ne peux pas m'en passer complètement 😞

0 Compliments
Message 1 sur 12
4 714 Visites

Bonjour MicroPom,

 

As-tu pensé à utiliser une variable? C'est un bien meilleur moyen communiquer des valeurs entres VIs que les références.

Tu pourrais par exemple utiliser une FGV.

Si tu veux pouvoir stocker les données même après avoir fermer ton application, tu peux utiliser les API Xml et ini native de LabVIEW.

 

Bon Courage.

Sabri JATLAOUI - Certified LabVIEW Architect - Certified LabVIEW Developer
0 Compliments
Message 2 sur 12
4 707 Visites

J'ai oublié une chose, Il y a un package sur VIPM qui s'appelle openG toolkit et qui contient des VI's qui permettent d'écrire et de lire des Clusters/Face avant dans des fichiers .ini très simplement.

Sabri JATLAOUI - Certified LabVIEW Architect - Certified LabVIEW Developer
0 Compliments
Message 3 sur 12
4 706 Visites

Je vai essayer tout d'abord la méthode des variables globales fonctionnel.

Cependant il y a un points qui m'intrigue :

Je dois dans mon application pouvoir créer différents fichier parametre.vi (pas en meme temps), mais en gros a chaque fois que je voudrais générer une routine de test je devrai en créer un . Ces fichiers sont ensuite rangés dans différents répertoirs portant le nom des routines associés.

Le fait d'uliser une FGV ne risque pas de modifier tout mes fichier parametre.vi contenus dans les autres répertoirs ?

 

0 Compliments
Message 4 sur 12
4 698 Visites

En tout cas merci pour ta réponse rapide, jessaierai les autres méthodes si je bloque avec la première

 

cordialement,

0 Compliments
Message 5 sur 12
4 697 Visites

Pour etre un peu plus clair j'ai pris quelques screen

param_vi.GIF

Cette image représente le block diagram de mon fichier parametre.vi

il ne contient actuellement que des indicateurs qui sont des clusteur regroupant plusieurs variables.

dont voici une partie de la face avant

face_avant_paramvi.GIF

Ce sont ces paramètres qui etaient auparavant simplement rentré en dur à la main puis enregistrés.

remplissage_param.GIF

Cette image représente un essai de vi qui me permet avec des controleurs de récuperer l'ensemble de mes valeurs pour les inserer dans un clusteur que je voudrais ensuite transmettre à la vi param.vi pour sauvegarder ces données.

face avant_remplissage.GIF

j'espère que c'est un peu plus clair mtn

0 Compliments
Message 6 sur 12
4 685 Visites

Comme proposé plus haut, l'idéal est d'utiliser une FGV, ainsi tu n'as aucun risque de conflit de lecture/ecriture de tes valeurs.


En ce qui concerne le risque au niveau de tes fichiers, cela va se jouer au moment de l'écriture, il faut que tu mettes un chemin relatif qui tiendra compte de ton répertoire de sauvegarde.


Une FGV est une méthode qui permet de sauvegarder des données en mémoire "volatile", permettant un accès via différents VIs , et gérant les conflits de lecture/ecriture (le VI doit attendre d'avoir la main pour pouvoir accéder à la mémoire), contrairement à une variable locale/globale, qui ne te permettra pas de savoir qui a écrit/lu ou et quand.....

 

Pour l'enregistrement en fichier de sauvegarde, l'idéal est de passer après par la gestion de fichier INI, il y a de bons exemples dans la base de données NI, ou dans des postes sur le forum.


Cdt,

Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 7 sur 12
4 679 Visites

MicroPom,

 

Je te conseille dans ce cas là d'utiliser le toolkit openG

Micropom.PNG

Sabri JATLAOUI - Certified LabVIEW Architect - Certified LabVIEW Developer
0 Compliments
Message 8 sur 12
4 678 Visites

bonjour,

 

Pas trop de bonnes nouvelles pour l'instant. le banc de test je travail est hors réseau pour des raisons de sécurité, j'ai pu transferer dessus VPIM mais impossible après de télécharger  et de mettre à jour les packages sans connexion internet. Donc pour l'instant cette solution a peu de chance d'aboutir. Je n'ai pas pu ouvrir ton ficher micropom.vi car j'utilise LB 2014 et apparement la version n'était pas supportée, j'imagine que les sous-vi Write_Ini et Read_Ini correspondent à celle du toolkit Open G ?.

 

Je vai donc plutot me concentrer sur l'option des FGV.

 

Je résume si j'ai bien compris la méthode :

 

1 Enregistrer mon clusteur de variable en tant que variable global fonctionnel  dans ma vi 'selection des paramètres'

- est ce possible pour un cluster ?

-j'ai juste besoin d'enregistrer des valeurs qui seront séléctionnées une seule fois par l'utilisateur, donc ai-je besoin de créer les différents états et le registre à décallage ? le principe d'une fvg a necessairement besoin d'un set j'imagine ?

 

2 Une fois ces variables déclarées, je dois déclarer un chemin relatif au dossier contenant le fichier parametre.vi que je veux modifier

-pour ce faire je dois appeler ma vi  cible via refnum ou un path et ensuite enregistrer les FGV ?

 

3 a aucun moment je n'execute la vi parametre.vi, elle est utilisée par la suite juste en 'lecture' le reste du programme récupère les info et c'est tout

-donc si je crée un fichier Ini je dois l'appeler dans ma vi  'selection des paramètre' et cela pourra ecrire dans mon parametre.vi ?

 

Merci d'avance pour votre aide

0 Compliments
Message 9 sur 12
4 659 Visites

voila une capture d'ecran de ma vi 'selection des paramètres'

j'y ai inséré la fonction me permettant de créer mon cluster via une FVG avec uniquement un set et un get, tout fonctionne parfaitement à ce niveau la. Ma question est mtn de transférer ces données à mon fichier parametre.vinew vi.GIF

0 Compliments
Message 10 sur 12
4 648 Visites