Discussions au sujet de NI LabVIEW

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

Changement valeur variable à la compilation ?

Bonjour à tous ,

 

je boucle actuellement mon programme pour piloter une charge électronique KORAD.

Mes différents Vi ont été testés avec succès.

Une des fonctions est de comparer une valeur lue par la charge par rapport à une constante ( dans mon exemple 6V). Dès que cette valeur lue est inférieure ou égale à 6 V , je déconnecte la charge et quitte mon sous-vi.

Ca fonctionne très bien .....SAUF après la compilation. Après des essais , il se trouve que , au lieu de déconnecter à 6 V , la charge se déconnecte à 7 V , soit 1 V de plus que ce qui est déclaré en constante ! Je ne comprend pas ce qu'il se passe puisse avant la compilation tout fonctionne parfaitement.

Auriez-vous une idée ?

 

 

0 Compliments
Message 1 sur 15
9 407 Visites

(vous pouvez utiliser google translate si vous ne comprenez pas l'anglais)

 

Can you attach a simplified version of your code showing how you do the comparison?

What is the datatype? How are the voltages measured?

LabVIEW is always "compiled", even if run in the development system. Do you mean the functionality changes after building it into an executable?

0 Compliments
Message 2 sur 15
9 405 Visites

Hello altenbach,

 

Yes exactly , the functionality changes after building it into an executable and i don't know why.

In developpement mode , it works fine.

You can have a look on the attached file.

0 Compliments
Message 3 sur 15
9 368 Visites

Sorry, I doubt we can troubleshoot this without seeing the string going into the formatting. Are you testing on the same computer? Is there a difference in localized decimal point between systems?

 

Also, your front panel size is extremely annoying!

 

There are many things very poorly coded, for example of the user would press Demarrer a second time, the front panel would lockup forever because the code can no longer service the event structure to unlock the panel and pressing Arreter at this point would not do anything. Most of your sequence structures make no difference. You would be better served with a state machine than this linear worm of a code.

Message 4 sur 15
9 345 Visites

Je me joins aux commentaires de Christian par rapport à la structure générale de votre code. Il serait bien plus facile à maintenir et à faire évoluer en utilisant une machine d'états.

 

La constante 6 ne peut pas changer lors de la compilation. Cela revient à dire que si le comportement n'est pas le même, la source est à chercher ailleurs.

 - La tension lue et qui est comparée à ce seuil constant. La fonction pour extraire la tension attend une chaîne de caractères contenant un nombre à virgule. Si la réponse de la charge est inattendue, il est fort probable que l'extraction retourne la valeur par défaut qui est 0; et qui sera inférieure à 6.

 - Dépassement du temps maximal.

 

Vous dites que l'essai se termine à 7V. A quelle tension débute-t-il ? Y a-t-il des interrogations fonctionnelles avant que l'essai ne s'arrête prématurément ? Si oui, quelles sont les tensions lues ?

0 Compliments
Message 5 sur 15
9 325 Visites

@altenbach wrote:

Is there a difference in localized decimal point between systems?


My best guess is still that the decimal point handling differs between the two scenarios. In my example below, you can see that a 6.9999 will turn into a 6.0000 (which is of course less or equal 6!!!) if the decimal delimiter is not as expected.

 

Look at the string and see if the decimal delimiter is "." or ",", then specify that in the format explicitly. You can specify the correct delimiter by using "%,;" or "%.;" before the %f format:

 

altenbach_0-1584549291314.png

 

Message 6 sur 15
9 309 Visites

Merci pour ces précisions.

Je me doutais que ma méthode de programmation n'était pas géniale .... c'est mon premier projet et donc j’essaie déjà de faire fonctionner cette charge comme je le peux (complètement novice avec labview) ... merci en tout cas pour vos remarques, je vais donc m'intéresser à la machine d'état pour améliorer ce code.

Coronavirus oblige , je suis confiné à la maison et ne peux donc plus faire de manipulations car je n'ai pas mon ordinateur avec Labview. Je vous donnerais des nouvelles ou vous poserais éventuellement d'autres questions quand cette mauvaise période sera passée.

Merci

0 Compliments
Message 7 sur 15
9 300 Visites

il me semble que tu as le droit d'avoir une installation de labview chez toi avec ta License 😀 

0 Compliments
Message 8 sur 15
9 284 Visites

It depends on the license, details here.

 

Your workplace should also implement suitable VPN solutions so you can use your work computer remotely.

 

0 Compliments
Message 9 sur 15
9 275 Visites

Bonjour ,

 

Étant toujours en confinement , je ne pouvais plus attendre pour essayer de continuer mon développement. J'ai donc téléchargé un version labview exploitable sur mon pc perso.

Ma partie hardware n'est pas disponible ( car je n'ai pas repris le travail ) mais j'aimerais bien essayer d'améliorer mon code à partir de vos conseils et y adapter une machine état.

J'ai étudié cette partie de machine état et j'avoue que ce n'est pas très clair. A vrai dire , je n'ai pas trouvé de tutos ou autres explications suffisamment explicite pour des débutants comme moi.

J'ai téléchargé l'exemple de distributeur de boisson mais je ne comprend pas comment adapter ce code à mon besoin.

J'aurais donc déjà 2 questions pour essayer de m'eclairer sur ce sujet :

1) dans la partie "initialize" , faut il mettre ma partie d'initialisation de mon port com ?

2) dans la partie que je nommerais "demarrer" (qui correspondrait au démarrage de ma charge électronique ) faut il y mettre simplement un sous Vi ( qui permettra de faire les mesures issues de la charge ).

 

enfin si vous avez des tutos pour bien expliquer les machines états pour les nuls ( voir très nuls) , je suis preneur.

Merci 🙂

0 Compliments
Message 10 sur 15
9 160 Visites