creer une macro d attente avec condition

v tec
Compagnon
6 Janvier 2012
2 057
  • Auteur de la discussion
  • #1
bonjour a tous, pour ceux qui en aurait besoin, j essaye de trouver comment ecrire une macro d attente de l etat d une entrée, et donné des conditions de sortie, valentin m aide car je n y connais rien


exemple:

vous voulez creer un gcode m70 que vous inserer dans votre gcode


je dit une betise vous voulez verifier que avant de faire un changement d outil, votre fraise est bien presente dans le mandrin avant de palper, ou que votre fraise n est pas trop longue


car moi ca m est arrivé de mettre une fraise en butée trop longue, et comme dans le script du palpeur, je lui dit de rapprocher la broche du palpeur vertcalement avant de palper, pour gagner un peu de temps, et bien, ma fraise a taper contre le palpeur



donc il suffirait de mettre un capteur de proximité que vous regler en hauteur, vous le metter en lateral,et vous faites passer votre outil a coté, si il est trop long il sera detecté, sinon il poursuit son chemin



donc la macro dirait:

lire l etat de du capteur outil
si le capteur detecte rien, on continue le programme
si il detecte quelque chose, on met le programme en pause, et on active un buzzer

traduction:

Do
If IsActive(INPUT1) Then
Exit sub
End If
Message "probleme longueur d outil avant palpage"
ActivateSignal(OUTPUT1)
code"m1"
Loop
deactivatesignal(output1)



en l etat cette macro marche, mais pas longtemps, car au bout de quelques secondes mach3 bug, car il n aime pas la boucle
 
v tec
Compagnon
6 Janvier 2012
2 057
  • Auteur de la discussion
  • #2
voici la solution pour eviter de faire buger

Do
If IsActive(INPUT1) Then
Exit sub
End If
Message "probleme longueur d outil avant palpage"
ActivateSignal(OUTPUT1)
sleep(1000)
code"m1"
Loop
deactivatesignal(output1)
 
v tec
Compagnon
6 Janvier 2012
2 057
  • Auteur de la discussion
  • #3
donc maintenant imaginons une autre macro qui partirait de celle ci, mais pas sur une fraiseuse mais sur un automate



imaginons que j ai un prehenseur qui doit attraper une piece sur un convoyeur, le convoyeur est autonome, et en marche permanente



je gere mon prehenseur sur un axe numerique verticale


je souhaite donc mettre mon robot en attente d un objet dessous, et mettre une condition qui dit, que si le robot attend trop longtemps 5 secondes, c est que peut etre un objet est coincé sur le convoyeur, et que l on met en pause



donc la macro ferait:

Do
while isactive(input1)
wend
loop (avec une condition de temps maximum de 5 secondes)
Exit sub
End If
Message "probleme convoyeur bloquer"
ActivateSignal(OUTPUT1)
sleep(1000)
code"m1"
Loop
deactivatesignal(output1)



il faut juste arriver a ecrire la condition de temps max
 
v tec
Compagnon
6 Janvier 2012
2 057
  • Auteur de la discussion
  • #4
Private Sub CommandButton1_Click()
Dim bInputOk As Boolean
Dim bQuitLoop As Boolean
Dim totalTime As Integer

bQuitLoop = False
bInputOk = False
totalTime = 0

While bQuitLoop = False
bInputOk = IsActive(input1)
If bInputOk = True Then
bQuitLoop = True
End If
If totalTime > 2500 Then
bQuitLoop = True
End If
sleep(100)
totalTime = totalTime + 100
Wend

If bInputOk = False Then
message "probleme fermeture verin entrée convoyeur"
ActivateSignal (output1)
code "m1"
Exit Sub
End If
DeActivateSignal (output1)
message "verin entrée convoyeur bien fermé"
End Sub
 
La dernière réponse à ce sujet date de plus de 6 mois
Haut