recherche script

  • Auteur de la discussion v tec
  • Date de début
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #1
bonjour a tous, je cherche comment ecrire une macro pour dire


arreter le programme
revenir au debut du programme




en fait c est pour mettre sur un robot, en cas d erreur, il se met en position de secu, et arrete le programme

mais l operateur est obligé de cliquer sur debut programme, puis depart, et ca ne marhe pas toujours super bien, des fois, il repart la ou il etait

merci
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #3
merci david

c est dobutton(2) ou doembutton(2)?
 
dh42
dh42
Compagnon
4 Sept 2009
5 832
Près de St Etienne (42)
v tec a dit:
merci david

c est dobutton(2) ou doembutton(2)?
Salut,

C'est bien DoButton() ; ça marche aussi avec DoOemButton() .... mais pas avec les mêmes codes ...

++
David
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #5
j ai essayé

dobutton(2) ne fait rien

et dooembutton(2) envoi sur la page "manuel"


edit: a priori ca serait rewind, soit 1002
 
dh42
dh42
Compagnon
4 Sept 2009
5 832
Près de St Etienne (42)
Alors utilise MachScreen pour connaitre les n° utilisés pour le bouton Pause et le bouton Rembobiner (rewind); peut être sont il différents sur ton interface (je me base sur l'interface US d'origine ; version 3.042.036 de Mach)

et dooembutton 2 envoi sur la page "manuel"
Oui, DoOemButton n'utilise pas les mêmes code que DoButton

en OEM, pause = 1001 et rewind = 1002

++
David
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #7
je viens d essayer 1002 en simulation, ca a l air ok

je testerais lundi

merci
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #8
c est good ca marche

par contre est ce qu il est possible d activer l arret d urgence?


stop cest 1003, pause c est 1001, mais j ai pas trouver l arret d urgence



en fait l arret d urgence active la fonction enable des drivers


ce qui fait que si le robot se met en securité, si il se met en arret d urgence, les moteurs vont pouvoir se refroidir, si on intervient pas de suite


et lorsqu on desactivera l arret d urgence logiciel, enable s en levera
 
dh42
dh42
Compagnon
4 Sept 2009
5 832
Près de St Etienne (42)
Salut,

par contre est ce qu il est possible d activer l arret d urgence?
DoButton(21) OU DoOemButton(1021)

(testé à la place du Rewind dans l'exemple de code que je t'ai donné plus haut)

++
David
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #10
ok donc c est reset
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #11
tester en hors ligne, parfait
 
ingenieu59
ingenieu59
Compagnon
10 Sept 2013
3 486
cassel 59
Bonjour,

on peut avoir des photos de nono le petit robot!!!

ça m' a toujours fait rêver les petits robots.

Qui sait, un jour j' en ferai un!!! :-D
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #13
alors je comprend pas ca ne marche pas si je test dooembutton(1021) seul ca marche mais dans la macro non

If isactive(input4) Then
activatesignal(output2)
sleep(200)
deactivatesignal(output2)
While Not isactive(input3)
Wend
While isactive(input3)
Wend
Exit Sub
End If
code"g01X-10.24 Y-7.42 Z-3.14 A20.46 B-9.49 C0 F1000"
code"g01x0y0z0a0b0"
Dim Msg, Style, Title, Response, MyString
Msg = "pas de bouteille présente dans l'étiqueteuse,vérifier et appuyer sur depart" ' Define message.
'Style = vbYesNo + vbCritical + vbDefaultButton2 ' Define buttons.
Style = 0 ' Define buttons.
Title = "PROBLEME" ' Define title.
' context.
' Display message.
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ' User chose Yes.
MyString = "ok" ' Perform some action.
doOEMbutton (1021)
sleep(2000)
dooembutton(1002)
exit sub
End If
Exit Sub


mais je sens que j ai une coquille qq part


en gros si l entrée 4 est active
j envoi une impulsion de la sortie 2 pour envoyer une etiquette
j attend la lecture de l entrée 3 0->1->0 pour sortie de la macro


sinon
position de secu 1 puis 2
un stop du programme
un rewind
un arret d urgence
un message expliquant le probleme

on clique sur ok, on sort de la macro pret a recommencer le programme quand on aura appuyer sur depart

edit: si je retraduit ce que j ai ecrit, car celui la avait ete fait avec un exemple retravaillé

If isactive(input4) Then 'si il y a une bouteille presente dans l etiqueteuse
activatesignal(output2) 'impulsion etiqueteuse
sleep(200)
deactivatesignal(output2)
While Not isactive(input3)
Wend
While isactive(input3)
Wend 'tant que le capteur d etiquette a pas fait 0->1
Exit Sub

else 'sinon

code"g01X-10.24 Y-7.42 Z-3.14 A20.46 B-9.49 C0 F1000" 'mvmt secu 1
code"g01x0y0z0a0b0" 'mvmt secu 2
sleep(200)
dooembutton(1002) 'rembobinage gcode
sleep(200)
While (isestop() = 0) 'tant que pas d'Estop
doOEMbutton (1021)
sleep(50)
Wend
sleep(200)
Dim Msg, Style, Title, Response, MyString
Msg = "pas de bouteille présente dans l'étiqueteuse,vérifier et appuyer sur depart" ' Define message.
'Style = vbok
Style = 0 ' Define buttons.
Title = "PROBLEME" ' Define title.
' context.
' Display message.
Response = MsgBox(Msg, Style, Title)
If Response = vbok Then ' User chose ok.
MyString = "ok" ' Perform some action.
exit sub
end if



right?
 
ingenieu59
ingenieu59
Compagnon
10 Sept 2013
3 486
cassel 59
Re,

il est génial ce bras robotisé .

Sais-tu que tu peux remplacer mach3 par un automate siemens ou mitsubishi avec commande moteurs pas à pas.
Ainsi, en programmant un cycle, tu aurais la possibilité de le faire tourner en boucle .
Bien sûr, cela a un coût . Mais si c' est pour travailler 8 H par jour pour faire les bouteilles,
il serait vite rentabilisé.

Avec un automate, tu gères les moteurs pàp , l' air comprimé et le tapis .
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #16
ba avec mach3 tu gere la boucle sans soucis


et la carte peut marcher en automatique, sauf que la complexité du code, est trop dur pour moi, car j ai 8 bouteille differente
 
dh42
dh42
Compagnon
4 Sept 2009
5 832
Près de St Etienne (42)
Salut,

Parfois ça ne réagit pas immédiatement ; d’où le rajout du While(ismoving)/wend pour le DoButton(1), sinon il fallait appuyer 3 ou 4 fois sur le bouton pour que ça marche.

tu peux peut être faire de même pour ton RESET, mais en testant si le reset à bien eu lieu au lieu de tester si ça bouge (IsEstop)

++
David
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #18
If isactive(input4) Then 'si il y a une bouteille presente dans l etiqueteuse
activatesignal(output2) 'impulsion etiqueteuse
sleep(200)
deactivatesignal(output2)
While Not isactive(input3)
Wend
While isactive(input3)
Wend 'tant que le capteur d etiquette a pas fait 0->1
Exit Sub

else 'sinon

while code"g01X-10.24 Y-7.42 Z-3.14 A20.46 B-9.49 C0 F1000" 'mvmt secu 1
wend
while code"g01x0y0z0a0b0" 'mvmt secu 2
wend
sleep(200)
dooembutton(1002) 'rembobinage gcode
sleep(200)
While (isestop() = 0) 'tant que pas d'Estop
doOEMbutton (1021)
sleep(50)
Wend
sleep(200)
Dim Msg, Style, Title, Response, MyString
Msg = "pas de bouteille présente dans l'étiqueteuse,vérifier et appuyer sur depart" ' Define message.
'Style = vbok
Style = 0 ' Define buttons.
Title = "PROBLEME" ' Define title.
' context.
' Display message.
Response = MsgBox(Msg, Style, Title)
If Response = vbok Then ' User chose ok.
MyString = "ok" ' Perform some action.
exit sub
end if



right?


comment on pourrais ecrire la meme chose pour le rewind?
 
dh42
dh42
Compagnon
4 Sept 2009
5 832
Près de St Etienne (42)
je ne comprends pas trop ça

while code"g01X-10.24 Y-7.42 Z-3.14 A20.46 B-9.49 C0 F1000" 'mvmt secu 1
wend

ce devrait plutôt être

code"g01X-10.24 Y-7.42 Z-3.14 A20.46 B-9.49 C0 F1000" 'mvmt secu 1
while ismoving
wend

comment on pourrais ecrire la meme chose pour le rewind?
Il se fait prier pour déclencher lui aussi ?

Tu peux faire un test sur la OEMdro(816) ; si elle n'est pas à 0 c'est que le code n'a pas été rembobiné (c'est la dro qui indique le n° de ligne en cours sur l'interface)

++
David
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #20
exact c etait une petite tentative loupé


quel va etre la difference concrete entre

while ismoving
code"123"
wend
while ismoving
code"456"
wend

et

code"123
code"456"

?

If isactive(input4) Then 'si il y a une bouteille presente dans l etiqueteuse


petite modif


While Not isactive(input3)
activatesignal(output2) 'impulsion etiqueteuse tant le capteur etiquette n est pas 0
sleep(200)
deactivatesignal(output2)
sleep(200)
Wend
While isactive(input3)
Wend 'tant que le capteur d etiquette a pas fait 0->1
Exit Sub

else 'sinon


code"g01X-10.24 Y-7.42 Z-3.14 A20.46 B-9.49 C0 F1000" 'mvmt secu 1
while ismoving
wend
code"g01x0y0z0a0b0" 'mvmt secu 2
while ismoving
wend
sleep(200)
While (oemdro(816) = 0) 'tant que le numero de ligne n est pas egal a 0
doOEMbutton (1002)
sleep(50)
Wend
sleep(200)
While (isestop() = 0) 'tant que pas d'Estop
doOEMbutton (1021)
sleep(50)
Wend
sleep(200)
Dim Msg, Style, Title, Response, MyString
Msg = "pas de bouteille présente dans l'étiqueteuse,vérifier et appuyer sur depart" ' Define message.
'Style = vbok
Style = 0 ' Define buttons.
Title = "PROBLEME" ' Define title.
' context.
' Display message.
Response = MsgBox(Msg, Style, Title)
If Response = vbok Then ' User chose ok.
MyString = "ok" ' Perform some action.
exit sub
end if


right


la partie qui peut etre simplifié, c est le if response mystring etc... parce que c est un style 0 donc une seulk facon d en sortir
 
dh42
dh42
Compagnon
4 Sept 2009
5 832
Près de St Etienne (42)
quel va etre la difference concrete entre

while ismoving
code"123"
wend
while ismoving
code"123"
wend

dans ce cas, tant qu'un axe bouge, le Gcode contenu dans code sera envoyé à chaque boucle entre while et wend (et tous le code qui se trouvera entre while et wend), donc probablement plusieurs fois (et même beaucoup) ; c'est que j'utilise pour répéter le bouton pause (DoButton à la place de code), jusqu'à ce que les axes s'arrêtent et donc que la pause ai bien été prise en compte.

si

code"123"
while ismoving
wend


Le Gcode qui est dans code est envoyé une seule fois, puis le programme attend que les axes ne bougent plus avant de continuer la suite du programme VB (après wend, donc) ; la boucle while/wend tourne sans rien éxécuter ; elle attend juste que ismoving = 0

si seulement

code"123"

le gcode contenu dans code est envoyé et le programme VB continu sans attendre que le Gcode soit fini ; Gcode et VB tournent donc en //

dans le cas ou ce sont 2 instruction Gcode (code("G...") qui se suivent, pas besoin de faire une boucle d'attente entre elles ; du moment que les 2 sont en Gcode elles s'éxécuterons l'une à la suite de l'autre. Il faudra par contre une boucle d'attente après la dernière instruction Gcode pour que le VB attende que le GCode soit fini d'éxécuté

++
David
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #22
salut donc j ai essayer le dernier code ce matin, il fait rien du tout...
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #23
donc voici les macro qui marche mais sans message box

m54: message: si une bouteille pas presente devant le capteur 4,alors probleme
If isactive(input4) Then
While Not isactive(input3)
activatesignal(output2) 'impulsion etiqueteuse tant le capteur etiquette n est pas 0
sleep(200)
deactivatesignal(output2)
sleep(200)
Wend
While isactive(input3)
Wend 'tant que le capteur d etiquette a pas fait 0->1
Exit Sub
End If
While ismoving()
Wend
code"g01X-10.24 Y-7.42 Z-3.14 A20.46 B-9.49 C0 F1000"
While ismoving()
Wend
code"g01x0y0z0a0b0"
While ismoving()
Wend
While (isestop() = 0) 'tant que pas d'Estop
doOEMbutton (1021)
sleep(50)
Wend
sleep(2000)
While (getdro(816) = 0) 'tant que le numero de ligne n est pas egal a 0
doOEMbutton (1002)
sleep(50)
Wend
Exit Sub

m57:message: si une bouteille presente devant le capteur 4,alors probleme
deactivatesignal(output1)
If isactive(input4) Then
While (isestop() = 0) 'tant que pas d'Estop
doOEMbutton (1021)
sleep(200)
Wend
sleep(200)
While (getdro(816) = 0) 'tant que le numero de ligne n est pas egal a 0
doOEMbutton (1002)
sleep(200)
Wend.
Exit Sub
End If
Exit Sub

m70:

If isactive(input4) Then
activatesignal(output3)
sleep(200)
deactivatesignal(output3)
message"bouteille présente dans l'étiqueteuse,merci de l'enlever et appuyer sur depart"
sleep(200)
deactivatesignal(output1)
While ismoving()
Wend
code"g01x0y0z0a0b0f500"
While ismoving()
Wend
While (isestop() = 0) 'tant que pas d'Estop
doOEMbutton (1021)
sleep(200)
Wend
sleep(200)
While (getdro(816) = 0) 'tant que le numero de ligne n est pas egal a 0
doOEMbutton (1002)
sleep(200)
Wend
exit sub
End If
Exit Sub
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #24
et si je rentre dans la condition du probleme il fait bien rewind, puis arret d urgence, mais refuse de sortir de la maccro
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #25
bon a priori, ça, ca fou la grouille

While (getdro(816) = 0) 'tant que le numero de ligne n est pas egal a 0
doOEMbutton (1002)
sleep(50)
Wend



si je la met en commentaire, il sort de la macro, sinon, il bug tout
 
dh42
dh42
Compagnon
4 Sept 2009
5 832
Près de St Etienne (42)
Salut,

Je ne sais pas si ça peut poser problème, mais il n'y a pas de sub/end sub dans tes fonctions.

Normalement tu devrais avoir un truc du genre pour chaque fichier macro

Sub BouteilleAbscente() ' macro M54

If isactive(input4) Then
While Not isactive(input3)
...
.....

sleep(50)
Wend
Exit Sub
End sub

++
David

EDIT: attention dans M57, tu a un point qui n'a rien à faire la après le dernier Wend
 
dh42
dh42
Compagnon
4 Sept 2009
5 832
Près de St Etienne (42)
v tec a dit:
bon a priori, ça, ca fou la grouille

While (getdro(816) = 0) 'tant que le numero de ligne n est pas egal a 0
doOEMbutton (1002)
sleep(50)
Wend



si je la met en commentaire, il sort de la macro, sinon, il bug tout
Normal: 816 c'est avec GetOemDRo ; si tu utilise GetDRO, c'est 16 et non pas 816 :axe:

++
David
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #28
salut alors le . je l ai vu entre temps


bon j ai tester avec sub blablacar() end sub


ca ne change rien au while(getdro(816)=0), ca boucle tout le temps et ca n en sort jamais



et j arrive pas a ecrire proprement

msgbox("probleme",16,"probleme")

il me dit qu il y a tojours un probleme de syntaxe
 
V
v tec
Compagnon
6 Jan 2012
2 100
  • Auteur de la discussion
  • #29
donc voila m54 qui marche, j ai du virer le getoemdro(816)

Sub m54()'verification presence bouteille dans etiqueteuse avant etiquettage
deactivatesignal(output2)
If isactive(input4) Then
While Not isactive(input3)
activatesignal(output2) 'impulsion etiqueteuse tant le capteur etiquette n est pas 0
sleep(100)
deactivatesignal(output2)
sleep(100)
Wend
While isactive(input3)
Wend 'tant que le capteur d etiquette a pas fait 0->1
Else
code"g01X-10.24 Y-7.42 Z-3.14 A20.46 B-9.49 C0 F800"
While ismoving()
Wend
code"g01x0y0z0a0b0"
While ismoving()
Wend
doOEMbutton (1002)
sleep(100)
doOEMbutton (1002)
While (isestop() = 0) 'tant que pas d'Estop
doOEMbutton (1021)
sleep(50)
Wend
rep = MsgBox("Bouteille non présente dans l'etiqueteuse, vérifier le capteur ou régler le problème", 16, "PROBLEME")
End If
Exit Sub
End Sub

Sub m70()'verification que la bouteille etiqueté a bien été enlevée
If isactive(input4) Then
deactivatesignal(output1)
code"g01X-10.24 Y-7.42 Z-3.14 A20.46 B-9.49 C0 F800"
While ismoving()
Wend
code"g01x0y0z0a0b0"
While ismoving()
Wend
doOEMbutton (1002)
sleep(100)
doOEMbutton (1002)
While (isestop() = 0) 'tant que pas d'Estop
doOEMbutton (1021)
sleep(50)
Wend
rep = MsgBox("Bouteille rester dans l'etiqueteuse, vérifier le capteur ou régler le problème", 16, "PROBLEME")
End If
Exit Sub
End Sub


Sub m57() 'verification si pas de bouteille dans l etiqueteuse avant depart cycle
deactivatesignal(output1)
If isactive(input4) Then
code"g01X-10.24 Y-7.42 Z-3.14 A20.46 B-9.49 C0 F800"
While ismoving()
Wend
code"g01x0y0z0a0b0"
While ismoving()
Wend
doOEMbutton (1002)
sleep(100)
doOEMbutton (1002)
While (isestop() = 0) 'tant que pas d'Estop
doOEMbutton (1021)
sleep(50)
Wend
rep = MsgBox("Bouteille présente dans l'etiqueteuse, vérifier le capteur ou régler le problème", 16, "PROBLEME")
End If
Exit Sub
end sub
 
Haut