recherche script

  • Auteur de la discussion v tec
  • Date de début
V

v tec

Compagnon
est ce que ds la macro on peut simuler une entrée clavier ctrl+w,car ca a l air' de mieu marcher
 
V

v tec

Compagnon
a priori c est bon rewind doit etre fait apres l arret d urgence
 
D

dh42

Compagnon
v tec a dit:
a priori c est bon rewind doit etre fait apres l arret d urgence

Salut,

Oui, il faut un Stop ou un Reset avant de pouvoir rembobiner le Gcode.

++
David
 
V

v tec

Compagnon
salut j ai un probleme avec cette partie de code qui n est pas fiable

activatesignal(output2)
While not isactive(input3)
activatesignal(output2) 'impulsion etiqueteuse tant le capteur etiquette n est pas 0
sleep(100)
activatesignal(output2)
Wend
While isactive(input3)
Wend
sleep(100)

parfois il n attend pas While isactive(input3) pour sortir de la maccro


et pareil pour le activatesignal(outputxx)

j aimerais le valider avec l etat de la led mais jeme souviens plus comment l ecrire


ps: j ai trouver c est mon signal input3 qui est pas franc

je vais lui dire de lire letat tout les secondes


ou sinon comment lui ecrire que si pendant la lecture de l input 3 si il y a des micro coupure on en tient pas compte?
 
D

dh42

Compagnon
Salut,

ou sinon comment lui ecrire que si pendant la lecture de l input 3 si il y a des micro coupure on en tient pas compte?

C'est pas le réglage du "debounce" qui gère ce problème de rebond de contact ? (general config)

++
David
 
D

dh42

Compagnon
v tec a dit:
Aaa je savais pas qu on le gerais ici

Je ne suis pas sur que ce soit le cas ... à essayer .. sinon, peut être utiliser le contact dans l'autre sens (en ouverture au lieu de fermeture pour éviter le rebond, ou mettre un condo)

tu devrais aussi éviter de faire des boucles sans rien à l'intérieur ; met y un sleep(100) ça évite que le CPU tourne plein pôt sur cette instruction .. et ralentisse le reste (la gestion de E/S par exemple)

++
David
 
V

v tec

Compagnon
Ba c est uncapteur inductif donc je cais surtout regarder si il se place bien
 
D

dh42

Compagnon
Re

Sinon, si tu veux tester sur la LED, tu peux utiliser le code suivant.

While GetOemLed(821) 'tant que LED 821 allumée, boucler (= LED input1)
sleep(100)
Wend

---------

Input1 = oemled 821
..
Input4 = 824
.
digitise (probe) = 825

----

output1 = 852
output2 = 853
output3 = 854
output4 = 77
output5 = 78
output6 = 79

++
David
 
V

v tec

Compagnon
comment on ferais un test sur le compteur du temps qui demare depuis le programme?


j explique


jusque la on fournissais le robot a la main,mais si on allait trop vite par rapport a lui on engorgeais son tapis et sa foutait le bordel


donc j ai utiliser un autre convoyeur en perpendiculaire qui est fermé, et un verrin fait tomber les bouteilles une par une


au debut du programe temps inferieur a 10 s, j envoie une bouteille

xx seconde apres j en envoie une seconde

le programme suit son court jusqu a revenir a son debut, sauf que l on a deja une bouteille en attente,donc on en envoie plus que 1 seule


etc...
 
D

dh42

Compagnon
on l'a déjà fait il me semble sur ton projet précédant ; fonctions GetTimer() et SetTimer() (pages 32 et 78)

tu test à intervalle régulier si le temps est dépassé.

++
David
 
V

v tec

Compagnon
Oui mais ca c est un compteur independant

La je veu par rapport au compteur depuis le debut du programme g code

Celui qui demarre a start et s arrete a stop
 
D

dh42

Compagnon
c'est pareil, il suffit de mettre ton compteur à zéro au début du programme et d'aller le tester de temps en temps.

++
David
 
V

v tec

Compagnon
Ba non parce que mon programme n est pas une macro c est un gcode en boucle m47 quo fait appel des macro

Donc a chaque cycle ca remettra a 0 donc pas bon
 
V

v tec

Compagnon
Je veux differencier le premier cycle d etiquetage du deuxieme et des suivants
 
D

dh42

Compagnon
v tec a dit:
Ba non parce que mon programme n est pas une macro c est un gcode en boucle m47 quo fait appel des macro

Donc a chaque cycle ca remettra a 0 donc pas bon

Oui, c'est toujours le problème de mélanger du Gcode et du VB ; il faudrait tout gérer en VB.

Mais tu dois pouvoir créer une macro VB qui met le timer à 0 et la sauver comme un Mxx.m1s et l'appeler en début de Gcode, avant le cycle en M47.

Il est aussi possible d'appeler une (des) macro qui mettrais le compteur à 0 au lancement de Mach ou à chaque Reset via la chaine d'initialisation (config/general config)

++
David
 
V

v tec

Compagnon
[dir=rtl][/dir]je melange les deux car j utilise la fonction teach pour faire mes positions en 5mn le programme est fait (quant t en prod faut aller vite)




il y a pas un getdrooem avec ce chrono?


edit: Time Scale DRO
Time (uSec) in interrupt handler DRO
Brains exe time (ms)
 
V

v tec

Compagnon
donc la j ai refait un essai


donc j ai mis ma macro en fin de programme


et pour eviter les temps mort je dois commencer par mlettre 2 bouteille en attente sous le robot avant de lancer le programme

le robot en attrape une, la deuxieme se met en place, il etiquette la premiere, le verrin pousse une troisieme sur le tapis, le robot depose la premiere, prend la deuxieme


etc... en faisant comme ça j ai un bon roulement


il faut juste que je trouve une maccro, qui dit au lancement du programme et au premier cycle, on balance 2 bouteilles, pour les cycles suivant, on ne tiens plus compte de cette macro


https://m.youtube.com/watch?feature=youtube_gdata_player&v=RlZZT0AOg_k
 
Dernière édition par un modérateur:
D

dh42

Compagnon
v tec a dit:
il y a pas un getdrooem avec ce chrono?

Non, la valeur du compteur est sauvée directement dans une variable compteur faite uniquement pour ça. Il y a 25 compteurs différents numérotés de 0 à 24.

Rien ne t’empêche bien sur, si c'est nécessaire, de lire périodiquement la valeur du compteur (GetTimer()) et de la copier dans une DRO de ta fabrication pour afficher le temps à l'écran (je l'ai fait pour comptabiliser le temps de fonctionnement effectif de ma broche, les fonctions d'origine ne semblant pas fonctionner)

Sympa la vidéo, ça à l'air de bien fonctionner ..

++
David
 
V

v tec

Compagnon
Get timer() donne une valeur sous quel forme? Et elle demarre quand? Au demarrage de mach3 ou du programme?
 
D

dh42

Compagnon
Get timer() donne une valeur sous quel forme?

en secondes, il me semble.

Et elle demarre quand? Au demarrage de mach3 ou du programme?

les compteurs tournent en permanence, toi tu te contente de mettre à 0 ou de lire la valeur d'un des compteurs.

ex SetTimer(10), met le compteur n° 10 à 0 (ce sera donc ton point départ)

GetTimer(10), retourne la valeur du compteur n°10

++
David
 
V

v tec

Compagnon
ok mais get timer(10) par exemple sa valeur est en S

mais par defaut c est l heure de l horloge de l ordi? ou bien tu demarre mach3, tout les timers parte de 0





ou sinon, comment on peut faire une macro qui compte le nombre de cycle m47 que j ai fait, en gros qui incremente 1 a chaque fois que j ouvre et ferme la macro
 
V

v tec

Compagnon
ds machscreen c est la fonction temps ecoulé code 14

je sais pas a quoi ca correspond


je pense que j ai trouver

Elapsed DRO 814


donc je pourrais faire un test genre


if getoemdro(814)>10 then
bla bla bla
end if



est ce que quelqu un peu essayer le gcode suivant:

g00x300y0
m511
g00x0y300
m47
m30



et enregistrer m511:

deactivatesignal(output1)
if getoemdro(814)<10 then
activatesignal(output1)
exit sub
end if
exit sub


car sur mon ordi, j arrive pas a faire tourner mach3 sans les carte de gestion connecté
 
D

dh42

Compagnon
Salut,

Marche pas ; getoemdro(814) retourne toujours 0 et la macro ne s’arrête jamais.

je n'ai pas réussis à trouver un truc qui marche, pas avec un mix de Gcode et de VBS ... désolé

++
David
 
V

v tec

Compagnon
Mmmmm c est bizare puisque dans une condition ou l autre il sort de la macro
 
D

dh42

Compagnon
en fait c'est la dro 814 qui ne semble rien compter ; j'ignore pourquoi (ni ce que c'est exactement)

j'ai essayé 3 trucs pour faire une macro qui s’exécute un nb donné de fois.

1 - le truc classique en programmation ; on met une variable Static dans la sub() et elle sert de compteur ; la variable statique n'étant mise à 0 que lors du premier appel de la sub(), il est donc possible d'incrémenter la variable compteur à chaque appel, sans qu'elle perde sa valeur à la sortie de la sub.

Pas de chance, ça ne marche pas si la sub() est utilisé comme un fichier séparé (le Mxx.m1s) ... la variable Static est remise à 0 à chaque appel donc ça compte indéfiniment.

2- essais, avec une variable interne à mach3 ; dans ce cas le pb c'est la mise à 0 initiale ; je ne peux pas la faire dans la macro, sinon elle serait mise à 0 à chaque appel, et si je la met à 0 dans le Gcode, le G47 répétant le Gcode la remet à 0 à chaque passage aussi.

3 - utilisation d'une userDRO pour stocker la valeur du compteur entre chaque appel de la sub()... pour l'instant ça plante mach3 .. et je ne comprends pas pourquoi ...

++
David
 
V

v tec

Compagnon
Et si je mettais un bouton remise a 0

Lors du referencement par exemple? A la fin

On met le compteur a 0

Dans le gcode je met un m511 au debut qui dit

si le compteur est a 0
Activer sortie x
Pause
Desactiver sortie x
Pause
Activer a nouveau
Pause
Desactiver
Mettre le compteur a 1
Sortie
Sinon
Sortie


En fin de gcode je met un m512

si le compteur est a 1
Activer sortie x
Pause
Desactiver sortie x
Sortie
Sinon
Sortie
 

Sujets similaires

Haut