Discussions au sujet de NI LabVIEW

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

boucle evenement

Bonjour, 

 

Je suis entrain d'utiliser les OPC variable et j'aimerai bien lancer une saisie de resistance lorsque une de  mes variable OPC est = 26.

 

Pour cela, J'utilise pour mon programme la structure evenement mais malheureusement elle ne marche qu'a partir du front panel avec un operateur.

 

Une idee svp pour comment faire pour commencer la structure event avc une lecture de donnee? sans qu'elle soit changee par l'operateur ?

0 Compliments
Message 1 sur 8
3 497 Visites

Bonjour marwah,

 

Ne serait il pas plus simple d'utiliser une boucle condition, et dès que ta condition est respectée, càd OPC=26 passer à la suite de ton programme? En encapsulant ta boucle condition dans une boucle while, et en en sortant dès que ta condition est respectée, avec la suite de ton programme qui arriverait derrière la boucle while?

 

J'en profite pour te demander ce qu'est une OPC, je ne sais vraiment pas, j'ai vu les petits schémas sur le site de NI mais si tu peux me faire un résumé en 2-3 lignes ça serait avec plaisir pour ma culture!

Ingénieur Instrumentation Michelin
Certifié CLD
0 Compliments
Message 2 sur 8
3 495 Visites

Cher Pierre, 

 

Je vous remercie pour votre reponse, mais j'ai deja essaye cette idee... une boucle while et une boucle case a l'interieur.. mais en effet ma valeur quand elle devient egal a 26 elle reste blocke sur 26. 

 

Du coup, comme resultat, si je veux avoir 5 saisies de valeurs de resistance .. je ne pourrais pas arreter la boucle while a temps et j'aurais 5 nouvelles saisies. 

Vous allez me dire utilisez le bouton stop?  oui je l'ai essaye, et il n'arrive a arreter la boucle while qu'apres 2 execution de la boucles (et donc si on suit l'exemple precedent  deux *5 en me supprimant les anciennes valeurs et lancienne courbe obtenue...)  . Ce n'est donc pas vraiment une bonne solution

 

Pour les OPC Variables : pour etre le plus simple possible: une des taches de mon programme et de commander un PLC pour cela je dois etablir une communication avec le programme  commandant mon PLC (dans mon cas c'est SOMachine Motion vu que je travaille a schneider) 

Donc vous devez creer un servers ou vous mettrez les valeurs dont  vous avez besoin. Ces variables sont appelee par la suite Shared variable ou OPC variable que vous pourrez appeler avec labview en les mettant dans une librairie et commander par la suite (ecrire ou lire)

0 Compliments
Message 3 sur 8
3 491 Visites

Bonjour, 

Je vous joint ci-dessous mon programme.. j'ai vraiment besoin d'aide est ce que quelqu'un aurait une idee?

Donc ce dont j'ai besoin est de calculer la resistance (hot ou cold) une fois que l'etat du diresist est = 16, 26 ou 36. 

J'ai fait une structure event sur l'etat de cette variable mais sa n'a pas marcher.. 

et si vous utilizez le programme joint, vous auriez une boucle infinie de calcul alors que je ne veux faire ce calcul qu'une seule fois un fois la variable diresist a atteint les valeurs 16 ou 26 ou 36 ...

0 Compliments
Message 4 sur 8
3 446 Visites

Bonjour,

 

Il est normal que ton programme ne fonctionne pas.


Qu'est qui génère la valeu rde ton champs "diresist" ?
Ton programme va forcément bloquer une fois rentrer dans la boucle, car tu ne mets pas à jour la valeur de ton champs pour sortir de ce cas de calcul.


J'ai modifié ton programme pour que le calcul se produise dès que DI resist soit égale à 16,26 ou 36, et une fois le calcul fait, je reforce ce champ à 0 (évitant ainsi de reproduire le calcul pour rien).
Par contre, impossible de trouver dans ton programme comment tu génères le changement de valeur de ce champs, je te redonne donc ton exemple avec ma modification mineure en espérant que cela te permette d'avanccer.

“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 5 sur 8
3 444 Visites

Bonjour, 

 

Merci pour votre reponse. La valeur diresist est une opc variable.. controlE par une autre boucle dans mon programme qui communique avec le plc. 

 

J'ai juste joint la partie du programme de resistance ou y'a un probleme de boucle. 

 

en effet, le programme fonctionne... Je vous reexplique le probleme:  

 

ce qui est a l'interieur de la case structure devrait seulement fonctionner lorsque la variable di resi est egal = 26 16 ou 36. 

et vu que la variable change constamment je devrait la mettre dans une boucle while pr lire la nouvelle valeur du serveur a chaque fois. 

 

Quand j'ai fait un event structure.. donc ce qui a l'interieur de la boucle ne marche que si letat diresit est egal a 26 36 16 .. sa na pas marcher car levent struture est controlee directement par lutilisateur du front panel. 

 

Et avec une boucle while, j'arrive a lire parfaitement la valeur du diresist et jai mon programme qui marche aussi mais il ne sarrete pas.. c'est normal il est dans une boucle while.. et si j'utilise le bouton stop, il ne sarrete que lors de la deuxieme iteration

 

J'espere que vous aviez compris le probleme.. c'est en effet un probleme de boucle nn pas de generation.. le programme marche parfaitement

 

 

0 Compliments
Message 6 sur 8
3 440 Visites

OK compris.


Alors au final, je pense que je partiperai plutôt sur le principe du producteur/consommateur.
Ainsi tu pourras plus facilement éviter les cas de doublons de mesure.


Si tu as un DI resist = 16,26,36, tu mets dans ta FIFO un event mesure, en vérifiant au préalable que tu n'en as pas déjà un en attente.

 

Regarde dans les exemples labview, les templates de producteur/consommateur, cela pourrait t'aider.


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 8
3 429 Visites

Cher Michael, 

 

Merci pour ta reponse.. J'ai regardee ce principe et sa me semble assez logique.. mais cela ne marche pas  

Je vous joint ci dessous le programme.. pourriez vous jeter un coup doeil?

0 Compliments
Message 8 sur 8
3 425 Visites