Discussions au sujet de NI LabVIEW

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

Envoie de commandes cycliquement

Bonsoir à tous

 

Je cherche une façon simple d'envoyer cycliquement des commandes à un équipement.

 

Voilà mon probleme:

 

Je dois envoyer une commande "A" tout les 500ms à un équipement, celui-ci me répond et j'arrive à décortiquer sa trame sans soucis...

 

Mais maintenant je dois envoyer aussi toute les 10 min une commande "B" et 2 min apres celle -ci une commande "C" (tout en continuant à l'interroger toute les 500ms grace à la commande "A").

 

J'ai essayé avec une boucle événement en essayant de déclencher l'envoie des commandes avec la sortie "Time has Elapsed"  d'un module "temps écoulé" sans résultat Smiley frustré

 

Si quelqu'un à une idée, je sui preneur.

0 Compliments
Message 1 sur 20
6 115 Visites

doit-il y avoir une synchronisation entre A et B ?

0 Compliments
Message 2 sur 20
6 105 Visites

Bonsoir ouadji,

 

Les commandes ne peuvent pas être envoyées simultanéments.

 

Je peux préciser aussi que B et C peuvent être envoyées à la place de la commande A si c'est plus simple à réaliser.

 

 

"A" me sert à monitorer: traçage de courbe, ce n'est pas grave si je perds une valeur à l'envoie de "B" ou "C"

0 Compliments
Message 3 sur 20
6 099 Visites

En essayant d'être plus simple:

 

j'envoie:

 

"B"

"A" toute les 500ms pendant 2 min

"C"

"A" toute les 500ms pendant les 8 min qui reste

"B"

...

 

 

 

 

0 Compliments
Message 4 sur 20
6 093 Visites

B et C peuvent être envoyées à la place de la commande A

"A" me sert à monitorer: traçage de courbe

 

je suppose que tu veux dire par là que :

 

tu as besoin de A pour monitorer (tu ne peux pas te passer de A totalement)

 

mais ... toutes les 10 min ... quand tu envoies B, tu peux "sauter" une fois A

 

idem pour C, à 10+2 min ... quand tu envoies C, tu peux "sauter" également une fois A.

 

autrement dit ... à t+10min et t+12min ... respectivement B et C remplacent A

 

... mais ... avant B, entre B et C, et après C ... le cadencement de A reprend.

 

c'est ça ?

 

 

 

0 Compliments
Message 5 sur 20
6 092 Visites

ok, compris ... nos messages se croisent.

 

je vais cogiter à ça ... mais il est déjà tard ... demain, je bosse sur ton truc.

0 Compliments
Message 6 sur 20
6 090 Visites

Merci

 

bonne nuit Smiley clignant de l'œil

0 Compliments
Message 7 sur 20
6 085 Visites

Je suis arrivé à ceci : ....  

 

il y a certainement 25 solutions pour résoudre ce problème.

ici, c'est juste une solution. J'ai fait une petite cabriole en codant les infos dans un tableau de I32.

(j'aime bien les cabrioles  Smiley heureux )

J'ai voulu solutionner ce problème avec un seul process et une seule structure Event.

 

Fait tourner le vi ... et regarde les Leds A, B et C.

 

Le code génère la séquence, mais "simule" aussi les événements par un flash de 100ms sur chacune des Leds.

ici j'ai une séquence : "B" ... "A" toutes les 500ms pendant 2sec ... "C" .... "A" toutes les 500ms pendant 8sec ... "B" ... etc

 

Le tableau qui correspond à ta séquence est juste à côté.

 

La durée du "flash" est déduite de la temporisation ... les 500ms sont respectés.

Le "type" d'événement (A, B, ou C) et la durée sont codés dans un Tableau qui effectue une rotation en anneau.

La durée est codée en "nombre de périodes" (ici 500ms)

 

exemple "10239"

 

10239:10000 = 1, reste 239

1 est l'événement "A" ("B"=2,"C"=3)

239 ... 239 x 500ms = 119,5 sec = 2min - 500ms .... le dernier pulse pour arriver à 2min étant le pulse "C".

 

Tu dois placer la commande de tes événements dans la structure case.

 

PS:

la boucle "While" sert uniquement à "éteindre" les Leds pour générer un flash. (simulation des commandes)

Si tu supprimes cette While, tu peux enlever le shift-registre qui contrôle la tempo et placer cette tempo (500ms) en constante sur la structure event.

 

il est 2hrs du mat, le cerveau un peu dans la colle, mais ça cevrait être bon.

 

Le snippet est en LV2013, le vi joint en LV2010.

Avec ce code, tu peux modifier ta séqeunce et le nombre d'événements différents comme tu veux ...

suffit de modifier les infos dans le Tableau.

 

flagada_1.png

0 Compliments
Message 8 sur 20
6 076 Visites

J'ai fait une petite modif.

 

Le Shift-register cablé sur le "timeout" de la structure Event est inutile.

Quand on rentre dans la While la tempo est d'office de (400ms + 100ms de led) = 500ms

J'ai également changé ma façon de "gérer" le tableau.

Je ne fait plus une rotation du tableau, mais une rotation de l'index.

 

Si tu retires la While, tu places "500" sur le timeout de la strucuture.

Sans la while la simulation par Leds ne fonctionne plus ... tu dois alors placer dans la structure case tes propres commandes.

 

 flagada_2.png

0 Compliments
Message 9 sur 20
6 066 Visites

Je vais regarderça de tres pres

 

Un grand merci à toi Smiley clignant de l'œil

0 Compliments
Message 10 sur 20
6 058 Visites