0 Members and 1 Guest are viewing this topic.
made som minor changes on your M6 macro, lets see, maybe it helpsCode: [Select] '********************************************************************************'* MACRO - CAMBIO DE HERRAMIENTA AUTOMATICO *'******************************************************************************** '* Version: 1.1 *'* Fecha inicio: 26/07/2015 * '* Fecha modif.: 25/08/2015 * '* Objetivo: Realizar el cambio de herramienta automatico en Mach3 * '* Fichero: M6start.ms1 *'********************************************************************************'* *'* Drescripción: *'* *'* 1. Se mueve el eje Z a cero *'* 2. Se mueve el eje Y a posición segura *'* 3. Espera a que se pare el mandrino *'* 4. Se mueve el eje X para soltar herramienta *'* 5. Se mueve el eje Z a posición de intercambio *'* 6. Se mueve el eje Y para encastrar herramienta *'* 7. Activar el cambio de herramienta *'* 8. Espera a que Mandrino suelta la Herramienta *'* 9. Se mueve el eje Z a cero *'* 10. Se mueve el eje X e Y a coordenadas nueva Herramienta *'* 11. Se mueve el eje Z a posicion de intercambio *'* 12. Desactivar el cambio de herramienta *'* 13. Espera a que Mandrino coja la herramienta *'* 14. Se mueve el eje Y para descastrar herramienta *'* 15. Se mueve el eje Z a cero *'* 16. Se mueve el eje X, Y a punto de partida *'* *'********************************************************************************Sub Main() 'Call SetUserDRO (1200,0) ' Inicialización del temporizador para el cambio de herramienta 'SetTimer(1) '---------- Mensaje de inicio --------------------------------------------------- Message "<< Iniciado el cambio de herramienta ..." 'Pone este mensaje en la barra de estado '---------- Declaravión de Variables -------------------------------------------- MaxToolNum = 5 'Numero máximo de herramientas en el cambiador ToolUp = -10 'Posición de Z segura arriba ToolDw = -287.54 'Posición de Z para coger o dejar una herramienta ToolSf = 90 'Posición de Y segura para extraer o insertar herramienta '---------- Recoger Información de la herramienta actual ------------------------ ToolOld = GetOEMDRO (1200) 'Tomar el valor de la herramienta actual x = GetToolChangeStart( 0 ) 'Tomar la posición de X actual y = GetToolChangeStart( 1 ) 'Tomar la posición de Y actual z = GetToolChangeStart( 2 ) 'Tomar la posición de Z actual '---------- Recoger Información de la nueva Herramienta ------------------------- ToolNew = GetSelectedTool() 'Tomar el valor de la nueva herramienta While ToolNew < 1 Or ToolNew > MaxToolNum 'Si el numero de la herramienta es superior 'El operador deberá introducir un valor desde la pantalla ToolNew = Question ("Introduzca un numero de herramienta válido (1..." & MaxToolNum & ")") Wend If ToolNew = ToolOld Then 'Si la nueva herramienta es igual a la existente Exit Sub 'Salimos de la subrutina End If Message "<< Cambio de " & ToolOld & ",por " & ToolNew '---------- Movimientos hacia el intercambiador --------------------------------- 'DoSpinStop() ' Parar mandrino Message "<< Moviendo eje Z a cero ...." 'Pone este mensaje en la barra de estado Code "G00 G53 Z" & ToolUp 'Subir el eje Z a cero While IsMoving() 'Esperar a que se ejecute el movimiento Wend Message "Moviendo eje Y a posicion segura ..." 'Pone este mensaje en la barra de estado Code "G53 Y10 X10" 'Desplaza eje Y a posición segura. While IsMoving() 'Esperar a que se ejecute el movimiento Wend ' Realiza un Home DoButton( 24 ) DoButton( 23 ) DoButton( 22 ) DoButton( 25 ) Code "G53 Y" & ToolSf 'Desplaza eje Y a posición segura. While IsMoving() 'Esperar a que se ejecute el movimiento Wend '---------- Espera hasta que el mandrino se pare -------------------------------- Message "<< Espera a que el mandrico se pare ..." 'Pone este mensaje en la barra de estado 'While GetOEMDRO(99) <> 0 'Esperar a que el mandrino se pare 'Wend Message "<< Mandrino parado ..." 'Pone este mensaje en la barra de estado '---------- Movimientos para soltar herramienta actual -------------------------- Message "<< Posicionando para soltar herramienta ..." 'Pone este mensaje en la barra de estado Call MovePos(ToolOld,"X") 'Mover primero eje X a la posición herramienta While IsMoving() 'Esperar a que se ejecute el movimiento Wend Code "G53 Z" & ToolDw 'Mover el eje Z a la altura de cambio While IsMoving() 'Esperar a que se ejecute el movimiento Wend Call MovePos(ToolOld,"Y") 'Mover eje Y a la posición soltar herramienta While IsMoving() 'Esperar a que se ejecute el movimiento Wend Message "<< Posicionado completado ..." 'Pone este mensaje en la barra de estado '---------- Soltar herramienta actual ------------------------------------------- Message "<< Accionando Change Tool ..." 'Pone este mensaje en la barra de estado Code "G4 P.25" 'Esperar un pequeño tiempo ActivateSignal(Output6) 'Activar la salida para soltar herramienta 'Esperar a el sistema neumatico del mandrino indique herramienta liberada 'SetTimer(2) CTime = 0 'Inicializa el Temporizador While Not(IsActive(input1) And Not IsActive(input2) And IsActive(input3)) 'CTime = GetTimer(2) CTime = CTime + 1 If CTime > 1000000 Then Ret = MachMsg("No se ha podido SOLTAR la Herramienta.... Por Favor revise el Circuito neumático del mandrino....", _ "Tool Change Warning", 5) If Ret = 2 Then 'MachMsg("Cambio de Herramienta Cancelado....", "Tool Change", 0) Message "<< Cambio de Herramienta Cancelado" 'Pone este mensaje en la barra de estado Exit Sub Else 'SetTimer(2) 'Inicializa el Temporizador CTime = 0 End If End If Wend Code "G4 P1.0" 'Esperar un pequeño tiempo Message "<< Herramienta Soltada ..." 'Pone este mensaje en la barra de estado '---------- Movimientos para coger nueva herramienta ---------------------------- Message "<< Moviendo eje Z a cero ..." 'Pone este mensaje en la barra de estado Code "G53 Z" & ToolUp 'Subir el eje Z para alejarse de la herramienta While IsMoving() 'Esperar a que se ejecute el movimiento Wend Message "<< Posicionado para coger nueva Herramienta ..." 'Pone este mensaje en la barra de estado Call MovePos(ToolNew,"X") 'Mover primero eje X a la posición herramienta Call MovePos(ToolNew,"Y") 'Mover eje Y a la posición coger herramienta While IsMoving() 'Esperar a que se ejecute el movimiento Wend Code "G53 Z" & ToolDw 'Mover el Eje Z para tomar la Herramienta While IsMoving() 'Esperar a que se ejecute el movimiento Wend Message "<< Posicionado completado ..." 'Pone este mensaje en la barra de estado '---------- Coger nueva herramienta ------------------------------------------- Message "<< Desactivar Change Tool ..." 'Pone este mensaje en la barra de estado Code "G4 P.25" 'Esperar un pequeño tiempo DeActivateSignal(Output6) 'Desactivar la salida para coger la herramienta 'Esperar a el sistema neumatico del mandrino indique herramienta esta cogida 'SetTimer(2) Ctime = 0 While Not(Not IsActive(input1) And IsActive(input2) And Not IsActive(input3)) 'CTime = GetTimer(2) CTime = CTime + 1 If CTime > 1000000 Then Ret = MachMsg("No se ha podido COGER la Herramienta.... Por Favor revise el Circuito neumático del mandrino....", _ "Tool Change Warning", 5) If Ret = 2 Then 'MachMsg("Cambio de Herramienta Cancelado....", "Tool Change", 0) Message "<< Cambio de Herramienta Cancelado" 'Pone este mensaje en la barra de estado Exit Sub Else 'SetTimer(2) 'Inicializa el Temporizador CTime = 0 End If CTime = 0 End If 'Pregunta por si se ha producido un Error al coger la herramienta If(IsActive(input1) And IsActive(input2) And Not IsActive(input3)) Then MachMsg("Colector cerrado sin herramienta... Por favor revise el Colector del mandrino....", _ "Tool Change Warning", 0) End If Wend Code "G4 P1.0" 'Esperar un pequeño tiempo Message "<< Herramienta sujeta ..." 'Pone este mensaje en la barra de estado '---------- Movimientos a Coordenadas Seguras --------------------------------- Message "<< Moviendo eje Y a posición segura ..." 'Pone este mensaje en la barra de estado Code "G53 Y" & ToolSf 'Desplaza eje Y a posición segura. While IsMoving() 'Esperar a que se ejecute el movimiento Wend Code "G53 Z" & ToolUp 'Subir el Eje Z While IsMoving() 'Esperar a que se ejecute el movimiento Wend Message "<< Moviendo eje Z a cero ..." 'Pone este mensaje en la barra de estado '---------- Asignar Herramienta recogida en el sistema ------------------------ Call SetUserDRO (1200,ToolNew) SetCurrentTool( ToolNew ) '---------- Auto Tool Zero ---------------------------------------------------- 'Code "(Iniciado Auto Tool Zero...)" 'Pone este mensaje en la barra de estado 'Code "G0 X100 Y100" 'Mueve a la posición de Prueba 'Code "G4 P5" 'Este tiempo me da para poder colocar la sonda 'Code "G31Z-10 F100" 'El movimiento de prueba, puede cambiar la velocidad 'While IsMoving() 'Esperar a que se ejecute el movimiento 'Wend 'ZProbePos = GetVar(2002) 'Obtener el punto exacto cuando la sonda sea golpeada 'Code "G0 Z" & ZProbePos 'Volver de nuevo a ese punto, 'While IsMoving () 'Esperar a que se ejecute el movimiento 'Wend 'Call SetDro (2, PlateThickness) 'Ajustar el eje Z a lo que se establece como espesor de la placa 'Code "G4 P0.25" 'Esperar un pequeño tiempo 'Code "G0 Z" & ToolUp 'Subir el Eje Z 'Code "(Moviendo eje Z a cero)" 'Pone este mensaje en la barra de estado '---------- Regresar al punto de partida -------------------------------------- Message "<< Regresando al punto de partida ..." 'Pone este mensaje en la barra de estado Code "G00 X" & x & " Y" & y '& " Z" & z 'Mueve la máquina al punto de partida While IsMoving() 'Esperar a que se ejecute el movimiento Wend Code "G4 P1.00" 'Esperar un pequeño tiempo Message "<< Cambio de Herramienta realizado" 'Pone este mensaje en la barra de estado End SubSub MovePos(ByVal ToolNumber As Integer, ByVal EjeMove As String) 'Subrutina donde estan las posiciones de cada herramienta Select Case ToolNumber Case Is = 1 XPos = 125 YPos = 11.2 Case Is = 2 XPos = 299 YPos = 11.2 Case Is = 3 XPos = 474 YPos = 11.2 Case Is = 4 XPos = 815 YPos = 11.2 Case Is = 5 XPos = 991 YPos = 11.2 Case Is = 0 ' Posición de herramienta no existente XPos = 1164 YPos = 11.2 End Select If EjeMove = "X" Then Code "G00 G53 X" & XPos End If If EjeMove = "Y" Then Code "G01 G53 Y" & YPos & " F1500" End If End Sub
'********************************************************************************'* MACRO - CAMBIO DE HERRAMIENTA AUTOMATICO *'******************************************************************************** '* Version: 1.1 *'* Fecha inicio: 26/07/2015 * '* Fecha modif.: 25/08/2015 * '* Objetivo: Realizar el cambio de herramienta automatico en Mach3 * '* Fichero: M6start.ms1 *'********************************************************************************'* *'* Drescripción: *'* *'* 1. Se mueve el eje Z a cero *'* 2. Se mueve el eje Y a posición segura *'* 3. Espera a que se pare el mandrino *'* 4. Se mueve el eje X para soltar herramienta *'* 5. Se mueve el eje Z a posición de intercambio *'* 6. Se mueve el eje Y para encastrar herramienta *'* 7. Activar el cambio de herramienta *'* 8. Espera a que Mandrino suelta la Herramienta *'* 9. Se mueve el eje Z a cero *'* 10. Se mueve el eje X e Y a coordenadas nueva Herramienta *'* 11. Se mueve el eje Z a posicion de intercambio *'* 12. Desactivar el cambio de herramienta *'* 13. Espera a que Mandrino coja la herramienta *'* 14. Se mueve el eje Y para descastrar herramienta *'* 15. Se mueve el eje Z a cero *'* 16. Se mueve el eje X, Y a punto de partida *'* *'********************************************************************************Sub Main() 'Call SetUserDRO (1200,0) ' Inicialización del temporizador para el cambio de herramienta 'SetTimer(1) '---------- Mensaje de inicio --------------------------------------------------- Message "<< Iniciado el cambio de herramienta ..." 'Pone este mensaje en la barra de estado '---------- Declaravión de Variables -------------------------------------------- MaxToolNum = 5 'Numero máximo de herramientas en el cambiador ToolUp = -10 'Posición de Z segura arriba ToolDw = -287.54 'Posición de Z para coger o dejar una herramienta ToolSf = 90 'Posición de Y segura para extraer o insertar herramienta '---------- Recoger Información de la herramienta actual ------------------------ ToolOld = GetOEMDRO (1200) 'Tomar el valor de la herramienta actual x = GetToolChangeStart( 0 ) 'Tomar la posición de X actual y = GetToolChangeStart( 1 ) 'Tomar la posición de Y actual z = GetToolChangeStart( 2 ) 'Tomar la posición de Z actual '---------- Recoger Información de la nueva Herramienta ------------------------- ToolNew = GetSelectedTool() 'Tomar el valor de la nueva herramienta While ToolNew < 1 Or ToolNew > MaxToolNum 'Si el numero de la herramienta es superior 'El operador deberá introducir un valor desde la pantalla ToolNew = Question ("Introduzca un numero de herramienta válido (1..." & MaxToolNum & ")") Wend If ToolNew = ToolOld Then 'Si la nueva herramienta es igual a la existente Exit Sub 'Salimos de la subrutina End If Message "<< Cambio de " & ToolOld & ",por " & ToolNew '---------- Movimientos hacia el intercambiador --------------------------------- 'DoSpinStop() ' Parar mandrino Message "<< Moviendo eje Z a cero ...." 'Pone este mensaje en la barra de estado Code "G00 G53 Z" & ToolUp 'Subir el eje Z a cero While IsMoving() 'Esperar a que se ejecute el movimiento Wend Message "Moviendo eje Y a posicion segura ..." 'Pone este mensaje en la barra de estado Code "G53 Y10 X10" 'Desplaza eje Y a posición segura. While IsMoving() 'Esperar a que se ejecute el movimiento Wend ' Realiza un Home DoButton( 24 ) DoButton( 23 ) DoButton( 22 ) DoButton( 25 ) Code "G53 Y" & ToolSf 'Desplaza eje Y a posición segura. While IsMoving() 'Esperar a que se ejecute el movimiento Wend '---------- Espera hasta que el mandrino se pare -------------------------------- Message "<< Espera a que el mandrico se pare ..." 'Pone este mensaje en la barra de estado 'While GetOEMDRO(99) <> 0 'Esperar a que el mandrino se pare 'Wend Message "<< Mandrino parado ..." 'Pone este mensaje en la barra de estado '---------- Movimientos para soltar herramienta actual -------------------------- Message "<< Posicionando para soltar herramienta ..." 'Pone este mensaje en la barra de estado Call MovePos(ToolOld,"X") 'Mover primero eje X a la posición herramienta While IsMoving() 'Esperar a que se ejecute el movimiento Wend Code "G53 Z" & ToolDw 'Mover el eje Z a la altura de cambio While IsMoving() 'Esperar a que se ejecute el movimiento Wend Call MovePos(ToolOld,"Y") 'Mover eje Y a la posición soltar herramienta While IsMoving() 'Esperar a que se ejecute el movimiento Wend Message "<< Posicionado completado ..." 'Pone este mensaje en la barra de estado '---------- Soltar herramienta actual ------------------------------------------- Message "<< Accionando Change Tool ..." 'Pone este mensaje en la barra de estado Code "G4 P.25" 'Esperar un pequeño tiempo ActivateSignal(Output6) 'Activar la salida para soltar herramienta 'Esperar a el sistema neumatico del mandrino indique herramienta liberada 'SetTimer(2) CTime = 0 'Inicializa el Temporizador While Not(IsActive(input1) And Not IsActive(input2) And IsActive(input3)) 'CTime = GetTimer(2) CTime = CTime + 1 If CTime > 1000000 Then Ret = MachMsg("No se ha podido SOLTAR la Herramienta.... Por Favor revise el Circuito neumático del mandrino....", _ "Tool Change Warning", 5) If Ret = 2 Then 'MachMsg("Cambio de Herramienta Cancelado....", "Tool Change", 0) Message "<< Cambio de Herramienta Cancelado" 'Pone este mensaje en la barra de estado Exit Sub Else 'SetTimer(2) 'Inicializa el Temporizador CTime = 0 End If End If Wend Code "G4 P1.0" 'Esperar un pequeño tiempo Message "<< Herramienta Soltada ..." 'Pone este mensaje en la barra de estado '---------- Movimientos para coger nueva herramienta ---------------------------- Message "<< Moviendo eje Z a cero ..." 'Pone este mensaje en la barra de estado Code "G53 Z" & ToolUp 'Subir el eje Z para alejarse de la herramienta While IsMoving() 'Esperar a que se ejecute el movimiento Wend Message "<< Posicionado para coger nueva Herramienta ..." 'Pone este mensaje en la barra de estado Call MovePos(ToolNew,"X") 'Mover primero eje X a la posición herramienta Call MovePos(ToolNew,"Y") 'Mover eje Y a la posición coger herramienta While IsMoving() 'Esperar a que se ejecute el movimiento Wend Code "G53 Z" & ToolDw 'Mover el Eje Z para tomar la Herramienta While IsMoving() 'Esperar a que se ejecute el movimiento Wend Message "<< Posicionado completado ..." 'Pone este mensaje en la barra de estado '---------- Coger nueva herramienta ------------------------------------------- Message "<< Desactivar Change Tool ..." 'Pone este mensaje en la barra de estado Code "G4 P.25" 'Esperar un pequeño tiempo DeActivateSignal(Output6) 'Desactivar la salida para coger la herramienta 'Esperar a el sistema neumatico del mandrino indique herramienta esta cogida 'SetTimer(2) Ctime = 0 While Not(Not IsActive(input1) And IsActive(input2) And Not IsActive(input3)) 'CTime = GetTimer(2) CTime = CTime + 1 If CTime > 1000000 Then Ret = MachMsg("No se ha podido COGER la Herramienta.... Por Favor revise el Circuito neumático del mandrino....", _ "Tool Change Warning", 5) If Ret = 2 Then 'MachMsg("Cambio de Herramienta Cancelado....", "Tool Change", 0) Message "<< Cambio de Herramienta Cancelado" 'Pone este mensaje en la barra de estado Exit Sub Else 'SetTimer(2) 'Inicializa el Temporizador CTime = 0 End If CTime = 0 End If 'Pregunta por si se ha producido un Error al coger la herramienta If(IsActive(input1) And IsActive(input2) And Not IsActive(input3)) Then MachMsg("Colector cerrado sin herramienta... Por favor revise el Colector del mandrino....", _ "Tool Change Warning", 0) End If Wend Code "G4 P1.0" 'Esperar un pequeño tiempo Message "<< Herramienta sujeta ..." 'Pone este mensaje en la barra de estado '---------- Movimientos a Coordenadas Seguras --------------------------------- Message "<< Moviendo eje Y a posición segura ..." 'Pone este mensaje en la barra de estado Code "G53 Y" & ToolSf 'Desplaza eje Y a posición segura. While IsMoving() 'Esperar a que se ejecute el movimiento Wend Code "G53 Z" & ToolUp 'Subir el Eje Z While IsMoving() 'Esperar a que se ejecute el movimiento Wend Message "<< Moviendo eje Z a cero ..." 'Pone este mensaje en la barra de estado '---------- Asignar Herramienta recogida en el sistema ------------------------ Call SetUserDRO (1200,ToolNew) SetCurrentTool( ToolNew ) '---------- Auto Tool Zero ---------------------------------------------------- 'Code "(Iniciado Auto Tool Zero...)" 'Pone este mensaje en la barra de estado 'Code "G0 X100 Y100" 'Mueve a la posición de Prueba 'Code "G4 P5" 'Este tiempo me da para poder colocar la sonda 'Code "G31Z-10 F100" 'El movimiento de prueba, puede cambiar la velocidad 'While IsMoving() 'Esperar a que se ejecute el movimiento 'Wend 'ZProbePos = GetVar(2002) 'Obtener el punto exacto cuando la sonda sea golpeada 'Code "G0 Z" & ZProbePos 'Volver de nuevo a ese punto, 'While IsMoving () 'Esperar a que se ejecute el movimiento 'Wend 'Call SetDro (2, PlateThickness) 'Ajustar el eje Z a lo que se establece como espesor de la placa 'Code "G4 P0.25" 'Esperar un pequeño tiempo 'Code "G0 Z" & ToolUp 'Subir el Eje Z 'Code "(Moviendo eje Z a cero)" 'Pone este mensaje en la barra de estado '---------- Regresar al punto de partida -------------------------------------- Message "<< Regresando al punto de partida ..." 'Pone este mensaje en la barra de estado Code "G00 X" & x & " Y" & y '& " Z" & z 'Mueve la máquina al punto de partida While IsMoving() 'Esperar a que se ejecute el movimiento Wend Code "G4 P1.00" 'Esperar un pequeño tiempo Message "<< Cambio de Herramienta realizado" 'Pone este mensaje en la barra de estado End SubSub MovePos(ByVal ToolNumber As Integer, ByVal EjeMove As String) 'Subrutina donde estan las posiciones de cada herramienta Select Case ToolNumber Case Is = 1 XPos = 125 YPos = 11.2 Case Is = 2 XPos = 299 YPos = 11.2 Case Is = 3 XPos = 474 YPos = 11.2 Case Is = 4 XPos = 815 YPos = 11.2 Case Is = 5 XPos = 991 YPos = 11.2 Case Is = 0 ' Posición de herramienta no existente XPos = 1164 YPos = 11.2 End Select If EjeMove = "X" Then Code "G00 G53 X" & XPos End If If EjeMove = "Y" Then Code "G01 G53 Y" & YPos & " F1500" End If End Sub