Discussions au sujet de NI LabVIEW

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

2 méthodes ... votre avis ? (débutant)

Bonjour à tous,

 

2 façons de réaliser une même fonction.

 

la fonction:

commander un afficheur 7 segments.

input:   a) un nombre de 0 à 15

           b) la commande indépendante du "point" (de l'afficheur)

output: un afficheur 7 segments + point (cluster de 7+1 booléens)

 

méthode A

via une structure case ... à chaque fois 7 booléens.

J'ajoute le point, je forme un cluster et j'affiche.

 

Cette méthode avec la structure case fonctionne tip top.

Mais moi, en assembleur, je n'aurais pas utilisé ce type d'approche.

J'aurais utilisé un tableau .. plus de "data" mais un code plus simple.

donc j'ai essayé avec un tableau.

 

méthode B

via un array de cluster ... chaque cluster contient 7 booléens

J'indexe, je décompresse pour pouvoir ajouter le point,

je reforme un cluster de 8, et j'affiche.

 

Quelle méthode est la meilleure ... au sens de Labview ?

 

Je débute avec Labview, vos "avis d'anciens" m'intéressent Smiley clignant de l'œil

Merci à tous.

 

0 Compliments
Message 1 sur 11
4 244 Visites

Bonjour Ouadji,

 

Un moyen simple à mettre en oeuvre pourrait être la mesure du temps d'execution de votre programme.

Vous pourriez par exemple utiliser les VIs de la palette "infos temporelles" rangée dans la rubrique programmation.

 

En soustrayant l'heure de fin avec l'heure de début, vous aurez par exemple le temps écoulé durant l'execution de votre programme.

 

En éspérant que ceci pourra vous aider,

 

Cordialement,

Message 2 sur 11
4 229 Visites

Chose faite ... les résultats sont étonnants.

 

1.000.000 d'itérations

3 afficheurs 7 segments.

mesure du "Tick count" avant et après, et différence.

 

avec le code basé sur une structure Case : une moyenne de 5825

avec le code basé sur un tableau (array de clusters) : moyenne 689

 

Le code basé sur le tableau de clusters est en moyenne 8,5 fois plus rapide.

 

(ce qui est logique, mais je ne m'attendais pas à une telle différence ... quoique)

 

merci NIF_Vincent.O pour cette suggestion (lumineuse)

 

0 Compliments
Message 3 sur 11
4 217 Visites

Erreur magistrale de mesure.

Cette fois j'ai appris plus sur les mesures de temps que sur mon afficheur 7 segments.

origine de l'erreur : j'ai laissé un sous-VI ouvert, un des sous-VI utilisé dans le code dont je mesure le temps.

Cela fausse totalement la mesure (bien entendu)

 

résultats corrigés : Smiley triste pas de différences significatives

entre 688 et 694 pour les 2 méthodes (mêmes conditions)

 

désolé pour l'erreur, je ne l'oublierai pas de si tôt.

 

 

0 Compliments
Message 4 sur 11
4 203 Visites

Ouadji,

 

Il est vrai que la différence mesurée parraissait énorme.

Au vu du code présenté, il semble normal que les temps d'executions soient similaires (pas de longue boucle ou de VI très lourds).

 

Vous pouvez éventuellement différencer ces deux méthode sur la consommation en ressources CPU et RAM (par exemple via le gestionnaire de taches de Windows).

 

Cordialement,

0 Compliments
Message 5 sur 11
4 199 Visites

Bonjour ouadji,

 

Au delà de l'aspect performances, je pense que dans ce genre de problématique il peut être bénéfique considérer les trois principes d'une bonne programmation: la lisibilité, l'évolutivité et la maintenance. Dans les deux solutions présentées, je te préconiserais la seconde avec le tableau de cluster (que j'aurais défini en définition de type). L'interêt est que si un jour tu souhaites modifier l'affichage, une simple modification de ton tableau de cluster (de la d"éfinition de type) se répercutera sur toutes les instances de ton application. On pourrait imaginer d'afficher des lettres et non des chiffres ou juste la lettre "E" en cas d'erreur. Bref cela pourra t'épargner du travail et du temps si une modification est à apporter. Dans le cas de la solution B, la seule chose à gérer sera donc l'indice du caractère que tu souhaites afficher. 

 

Cordialement,

Jérémy M. | LinkedIn - Contact
Don't forget to give Kudos to good answers.

Message 6 sur 11
4 191 Visites

Merci Jérémy pour votre intervention.

 

J'ai placé l'afficheur 7 segments dans un fichiers ".ctl" et en type def, (custom indicator)

mais je ne savais pas que l'on pouvait également définir "du code" en définition de type.

J'ai simplement placé le code (Case ou Tableau) en sous-VI.

 

Etant donné qu'un afficheur est indissociable de son convertisseur,

J'aimerais placer l'ensemble "convertisseur + afficheur" dans un Xcontrol.

Je nomme "convertisseur" le code de la structure Case ou le code avec tableau.

J'aurais alors un Xcontrol avec 2 entrées, un nombre et un booléen.

Mais là ... je découvre les Xcontrol, et ce n'est pas simple.

 

Juste la lettre "E"... oui, en effet,

Dans les deux cas, structure case ou tableau, mon code permet d'afficher aussi les lettres

A,b,C,d,E,F (hexa) ... du mieux que l'on puisse faire avec 7 segments.

 

A propos "du code" avec définition de type, auriez-vous un lien de départ qui me permettrait d'appronfondir ensuite.

A l'avance je vous en remercie.

 

0 Compliments
Message 7 sur 11
4 168 Visites

Bonjour,

 

Un petit commentaire sur les clusters:

tu utilises un cluster de 7 éléments que tu désassemble puis réassemble en 8 éléments

 

Une meilleure méthode est d'utiliser le même cluster type def  en entrée et en sortie. Dans tes différents états (1,2,3..) tu laisse toujours le point à faux par exemple, puis une fois ton cluster sélectionné tu utilises Bundle by name pour remplacer une valeur.

 

Si ce n'est pas très clair je te ferais un exemple

Cordialement,

Simon D.
CLA | Certified LabVIEW Architect
CTA | Certified TestStand Architect
Message 8 sur 11
4 131 Visites

Merci SimonD.

 

C'est limpide, je vois bien la manip.

 

Pour un supplément minime de données, on gagne du code.

En en prime, un diagramme plus compact. (d'autres avantages ? perso je ne vois pas)

Ok, encore merci, je vais tester ça.

0 Compliments
Message 9 sur 11
4 121 Visites

 

Code plus compact, en effet.

 

point.jpg

 

0 Compliments
Message 10 sur 11
4 111 Visites