Autor Tópico: Troca de Ferramenta  (Lida 4353 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Offline niomar

  • Novato
  • *
  • Posts: 5
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: sapiranga
  • Nome:: Niomar Andre Ruch
  • Profissão: Emprendedor
Troca de Ferramenta
« Online: 08 de Agosto de 2013, 08:13 »
Bom dia,
Estou com problema gostaria de saber se alguém pode me ajudar.
Estou fazendo uma troca de ferramenta, estou com trocador pronto, é um trocador que rotacional e posiciona a ferramenta sempre na mesma posição para trocar.
Oque preciso, é definir a macro M6 para ir para posição segura, depois enviar um sinal que está na posição para meu CLP, ai meu trocador recebendo este sinal irá avançar abrir o trocador de ferramenta e enviar um sinal para M6, M6 recebe o sinal e sobe o Z para um posição mais alta, envia um sinal para meu CLP com o numero da ferramenta que é para ser coloca, Exemplo T6 envia 6 pulso, T5 Envia 5 Pulso, depois disto meu CLP fazerá toda troca até chegar na ferramenta determinada e enviara um sinal de volta a M6 que a ferramenta está pronta, M6 precisa baixar o Z e enviar um sinal para meu CLP para fechar trocador, meu CLP fecha trocador e recua magazine, envia um sinal de volta a M6 para finalizar a troca e sub-rotina voltando ao programa.

Offline F.Gilii

  • Administrador
  • CNCMASTER
  • *******
  • Posts: 13796
  • Sexo: Masculino
  • Consultoria, Automação e Construção de Máquinas
  • Cidade - UF: Atibaia - SP
  • Nome:: Fabio Gilii
  • Profissão: Tec. Mecanica de Precisão
Re:Troca de Ferramenta
« Resposta #1 Online: 08 de Agosto de 2013, 09:19 »
Niomar,

Ainda não tive tempo de ver como se pode fazer a coisa, mas em todo caso posso postar aqui um fragmento de código pára te dar uma luz...

Voce havia dito que precisa habilitar um pino por um certo tempo e depois desabilitar...

Veja o código abaixo:
Código: [Selecionar]

...
ActivateSignal(OUTPUT3)  'liga o sinal do pino 3 - solta o pino da torre
Code "G4 P0.5"  'pausa de meio segundo
While IsMoving ()       'não faça nada até terminar o que estava fazendo
Wend
Code "G00 G91 a" & MoveDis        'codigo para mover alguma coisa num certo sist. coordenadas
While IsMoving ()       'não faça nada até terminar o que estava fazendo
Wend

DeActivateSignal(OUTPUT3)  'desliga o sinal do pino 3 - prende o pino da torre
...
     

Veja que isso é só um fragmento de código - o resto da lógica precisa ser feito, como verificação de posição inicial etc...

Offline F.Gilii

  • Administrador
  • CNCMASTER
  • *******
  • Posts: 13796
  • Sexo: Masculino
  • Consultoria, Automação e Construção de Máquinas
  • Cidade - UF: Atibaia - SP
  • Nome:: Fabio Gilii
  • Profissão: Tec. Mecanica de Precisão
Re:Troca de Ferramenta
« Resposta #2 Online: 08 de Agosto de 2013, 09:23 »
Este codigo aqui é uma cópia de um ATC tipo RACK - não rotativo...

Código: [Selecionar]
'ToolChange Macro For Bed type tool changer 11/05 Brian
Sub Main()
OldTool = GetOEMDRO (1200) 'Tool In spindle DRO You must add this to your settings screen
x = GetToolChangeStart( 0 )
y = GetToolChangeStart( 1 )
z = GetToolChangeStart( 2 )
a = GetToolChangeStart( 3 )
b = GetToolChangeStart( 4 )
c = GetToolChangeStart( 5 )
tool = GetSelectedTool()
NewTool = tool
'Tool Changer Macro (Bed Type)
MaxToolNum = 8      'Max number off tools for the changer
ToolDown   = -3.125 'Z Pos to Get or drop a tool
ToolUp     = 0.0    'Z Hieght to Rapid from tool to tool
If NewTool = OldTool Then
Exit Sub
End If
While NewTool > MaxToolNum
NewTool = Question ("Enter New Tool Number up to " & MaxToolNum)
Wend
Code "G00 G53 Z" & ToolUp
While IsMoving()
Wend
Call MovePos(OldTool)
While IsMoving()
Wend
Code "G53 Z" & ToolDown
Code "G4 P.75"
While IsMoving()
Wend
ActivateSignal(Output1) 'Turn On Draw bar to release the tool
Code "G4 P1.0"    'Wait for the tool to release
'SystemWaitFor (7) 'Wait for the tool Release Limit switch
Code "G53 Z-2.5" & ToolUp
Call MovePos(NewTool)
While IsMoving()
Wend
Code "G53 Z" & ToolDown
Code "G4 P.75"
While IsMoving()
Wend
DeActivateSignal(Output1) 'Turn Off Draw bar to Clamp the tool
Code "G4 P1.0"    'Wait for the tool to Clamp
While IsMoving()
Wend
Code "G53 Z" & ToolUp
Call SetUserDRO (1200,NewTool)
SetCurrentTool( NewTool )
Code "G00 X" & x & " Y" & y 'Move back to where the tool change was prompted
End Sub

Sub MovePos(ByVal ToolNumber As Integer)

Select Case ToolNumber
       Case Is = 1
         Xpos = 12.00
         YPos = 2.00
       Case Is = 2
         Xpos = 14.00
         YPos = 2.00
       Case Is = 3
         Xpos = 16.00
         YPos = 2.00
       Case Is = 4
         Xpos = 18.00
         YPos = 2.00
       Case Is = 5
         Xpos = 12.00
         YPos = 4.00
       Case Is = 6
         Xpos = 14.00
         YPos = 4.00
       Case Is = 7
         Xpos = 16.00
         YPos = 4.00
       Case Is = 8
         Xpos = 18.00
         YPos = 4.00
End Select

Code "G53 X" & XPos & " Y" & YPos
End Sub
Main   


Offline niomar

  • Novato
  • *
  • Posts: 5
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: sapiranga
  • Nome:: Niomar Andre Ruch
  • Profissão: Emprendedor
Re:Troca de Ferramenta
« Resposta #3 Online: 08 de Agosto de 2013, 09:25 »
Bom dia Fabio isto já me ajudou bastante,
Porém necessito de mais algumas informações,
T2 é uma sub-rotina? se é onde fica armazenada?
Como faço para ficar preso dentro de uma sub-rotina esperando um sinal esterno?

Offline F.Gilii

  • Administrador
  • CNCMASTER
  • *******
  • Posts: 13796
  • Sexo: Masculino
  • Consultoria, Automação e Construção de Máquinas
  • Cidade - UF: Atibaia - SP
  • Nome:: Fabio Gilii
  • Profissão: Tec. Mecanica de Precisão
Re:Troca de Ferramenta
« Resposta #4 Online: 08 de Agosto de 2013, 09:26 »
E este um exemplo de código de ATC rotativo, mas o acionamento é com motor de passo (ou servo) e é encarado como coordenada...

Código: [Selecionar]

'Macro M6Start
Message""

If  GetOEMLed(807) And  GetOemLED(808) And  GetOemLed(809) And  GetOemled(812) Then
MsgBox" 1 or more axis are  NOT REFERENCED cancel program and REF XYZC axis"
End
End If
 
Dim OldTool as Single
Dim NewTool as Single
Dim X as Double
Dim Y as Double
Dim Z as Double
'********************************
OldTool = GetCurrentTool()
NewTool = GetSelectedTool()

If NewTool = OldTool Then
Message" Same Tool,  NO ACTION"
End
End If

IF  NewTool > 10 OR NewTool < 1 then
MsgBox" Tool # not a valid Number 1-10 ONLY, ENDING Program RUN "
DoButton(3)
End
End If

Code"M09"
SLEEP(4000)

SetDro(17,60)      'SetSpindle Speed
DoSpinCW()      'Start Spindle
While Not Isactive(Index)   'Wait on index signal
Wend
ActivateSignal(OutPut7)
DoSpinStop()      'Stop Spindle
Message" Spindle Stopped"



x = GetUserDRO( 1200 )
y = GetUserDRO( 1201 )
z = GetUserDRO( 1202 )


'******************************

Code"G00"
Code "G53Z" & z
Code "G53X" & x & "Y" & y
While IsMoving()
Wend
Do
ActivateSignal(OutPut1)
If GetUserLED(1005) Then Exit Do
Sleep 10
Loop

Do
ActivateSignal(OutPut3)
If GetUserLED(1002) Then Exit Do
Sleep 10
Loop
ActivateSignal(Output2)       'Turn On Draw bar to release the tool
Code "G4 P2.0"          'Wait for the tool to release

Do
ActivateSignal(OutPut4)
If GetUserLED(1006) Then Exit Do
Sleep 10
Loop
Call  MovePos(NewTool)      'The ATC moves to the new tool.
While IsMoving()
Wend

Do
DeactivateSignal(OutPut4)
If GetUserLED(1001) Then Exit Do
Sleep 10
Loop
DeactivateSignal(Output2)    'Turn Off Draw bar to lock the tool
Code "G4 P1.5"         'Wait for the tool to lock


Do
DeactivateSignal(OutPut3)
If GetUserLED(1003) Then Exit Do
Sleep 10
Loop

DeactivateSignal(OutPut7)

Do
DeactivateSignal(OutPut1)
If GetUserLED(1004) Then Exit Do
Sleep 10
Loop
SetOemDro(824,NewTool)

Sub MovePos(ByVal ToolNumber As Integer)

Select Case ToolNumber      'Positions to each tool in C-axis
      Case  = 1
        Code "G00 G53 C0 "
      Case  = 2
        Code "G00 G53 C36 "
      Case  = 3
        Code "G00 G53 C72 "
      Case  = 4
        Code "G00 G53 C108 "
      Case  = 5
        Code "G00 G53 C144 "
      Case  = 6
        Code "G00 G53 C180 "
      Case  = 7
        Code "G00 G53 C216 "
      Case  = 8
        Code "G00 G53 C252 "
      Case  = 9
        Code "G00 G53 C288 "
      Case  = 10
        Code "G00 G53 C324 "
End Select

End Sub
                               



Offline F.Gilii

  • Administrador
  • CNCMASTER
  • *******
  • Posts: 13796
  • Sexo: Masculino
  • Consultoria, Automação e Construção de Máquinas
  • Cidade - UF: Atibaia - SP
  • Nome:: Fabio Gilii
  • Profissão: Tec. Mecanica de Precisão
Re:Troca de Ferramenta
« Resposta #5 Online: 08 de Agosto de 2013, 09:29 »
T1, T2, Tn... são as chamadas das ferramentas - se fosse usar um ATC tipo Rack, há uma tabela de coordenadas de posição de ferramentas.

Esta mesma tabela possui o Offset em Z de cada uma...

Veja este documento - o exemplo é de umas telas (e macros) personalizadas, mas o que interessa é o conceito
http://www.machmotion.com/manuals/Mach3/Tool%20Setup.pdf

Offline F.Gilii

  • Administrador
  • CNCMASTER
  • *******
  • Posts: 13796
  • Sexo: Masculino
  • Consultoria, Automação e Construção de Máquinas
  • Cidade - UF: Atibaia - SP
  • Nome:: Fabio Gilii
  • Profissão: Tec. Mecanica de Precisão
Re:Troca de Ferramenta
« Resposta #6 Online: 08 de Agosto de 2013, 09:32 »
Como faço para ficar preso dentro de uma sub-rotina esperando um sinal esterno?

Código: [Selecionar]

...
ActivateSignal(Output12) 'ativa algum sinal
  While Not IsActive(OEMTRIG3) 'espera por um sinal de confirmação
  sleep(100) 'exemplo de espera de tempo
  Wend
....


Offline niomar

  • Novato
  • *
  • Posts: 5
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: sapiranga
  • Nome:: Niomar Andre Ruch
  • Profissão: Emprendedor
Re:Troca de Ferramenta
« Resposta #7 Online: 08 de Agosto de 2013, 10:17 »
Posso Fazer assim?


Select Case ToolNumber
       Case Is = 1

ActivateSignal(Output12) 'ativa algum sinal
sleep(100)
DeActivateSignal(OUTPUT12)
sleep(100)

       Case Is = 2

ActivateSignal(Output12) 'ativa algum sinal
sleep(100)
DeActivateSignal(OUTPUT12)
sleep(100)
ActivateSignal(Output12) 'ativa algum sinal
sleep(100)
DeActivateSignal(OUTPUT12)
sleep(100)

       Case Is = 3

ActivateSignal(Output12) 'ativa algum sinal
sleep(100)
DeActivateSignal(OUTPUT12)
sleep(100)
ActivateSignal(Output12) 'ativa algum sinal
sleep(100)
DeActivateSignal(OUTPUT12)
sleep(100)
ActivateSignal(Output12) 'ativa algum sinal
sleep(100)
DeActivateSignal(OUTPUT12)
sleep(100)

End Select


sleep(100) é um segundo?

While Not IsActive(Input #1) 'POSSO USAR ISTO ASSIM?

Offline F.Gilii

  • Administrador
  • CNCMASTER
  • *******
  • Posts: 13796
  • Sexo: Masculino
  • Consultoria, Automação e Construção de Máquinas
  • Cidade - UF: Atibaia - SP
  • Nome:: Fabio Gilii
  • Profissão: Tec. Mecanica de Precisão
Re:Troca de Ferramenta
« Resposta #8 Online: 08 de Agosto de 2013, 10:29 »
Select Case ToolNumber
       Case = 1

ActivateSignal(Output12) 'ativa algum sinal
sleep(100)
While IsMoving()
Wend

DeActivateSignal(OUTPUT12)
sleep(100)
While IsMoving()
Wend


Case = 2
...


Talvez assim - precisa experimentar e ver se tem erro de sintaxe

Offline niomar

  • Novato
  • *
  • Posts: 5
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: sapiranga
  • Nome:: Niomar Andre Ruch
  • Profissão: Emprendedor
Re:Troca de Ferramenta
« Resposta #9 Online: 08 de Agosto de 2013, 10:40 »

sleep(100) é um segundo?

While Not IsActive(Input #1) 'POSSO USAR ISTO ASSIM?

Offline F.Gilii

  • Administrador
  • CNCMASTER
  • *******
  • Posts: 13796
  • Sexo: Masculino
  • Consultoria, Automação e Construção de Máquinas
  • Cidade - UF: Atibaia - SP
  • Nome:: Fabio Gilii
  • Profissão: Tec. Mecanica de Precisão
Re:Troca de Ferramenta
« Resposta #10 Online: 08 de Agosto de 2013, 11:28 »
sleep(100) é um segundo?
depende - se nas configurações gerais o tempo estiver em milissegundos (marcado), isso será equivalente a 0,1 segundos - se estiver desmarcada a opção serão 100 segundos

Citar
While Not IsActive(Input #1) 'POSSO USAR ISTO ASSIM?
Creio que pode, mas veja bem - o comando diz "enquanto não estiver ativa a entrada tal, espere..." - é como se fosse uma pausa que depende da entrada - só libera a execução da macro (e continua a executar) até que esta entrada habilite - é outra maneira de fazer uma pausa...

Offline niomar

  • Novato
  • *
  • Posts: 5
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: sapiranga
  • Nome:: Niomar Andre Ruch
  • Profissão: Emprendedor
Re:Troca de Ferramenta
« Resposta #11 Online: 08 de Agosto de 2013, 11:59 »
É que esta entrada externa que vai me dizer que ta trocado a ferramenta e pronta para trabalhar,  outra duvida esta sub-rotina lê por linha também? Ex. Le linha 1 executa le linha 2 Executa?

 

/** * */