le 10-16-2014 01:56 PM
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
Si quelqu'un à une idée, je sui preneur.
le 10-16-2014 03:23 PM
doit-il y avoir une synchronisation entre A et B ?
le 10-16-2014 03:50 PM
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"
le 10-16-2014 04:07 PM
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"
...
le 10-16-2014 04:11 PM
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 ?
le 10-16-2014 04:13 PM
ok, compris ... nos messages se croisent.
je vais cogiter à ça ... mais il est déjà tard ... demain, je bosse sur ton truc.
le 10-16-2014 04:19 PM
Merci
bonne nuit
10-16-2014 07:12 PM - modifié 10-16-2014 07:18 PM
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 )
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.
10-16-2014 08:23 PM - modifié 10-16-2014 08:50 PM
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.
le 10-17-2014 12:23 AM
Je vais regarderça de tres pres
Un grand merci à toi