Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print

SOFTWARES => G-Code => Tópico iniciado por: Claiton Meneghetti em 14 de Junho de 2014, 19:27

Título: Repetições
Enviado por: Claiton Meneghetti em 14 de Junho de 2014, 19:27
Ola a todos

Qual o motivo deste código não funcionar

G0 G40 X0 Y0
#100=40
X-40
M98 P777 L39

G0 X0 Y0 Z100

O777
Z[#100-1]
G3 F200 X-40 Y0 I40 J0
G0 X0 Y0 ( a repetição para exatamente nesta linha
M99
M30
%

Obrigado a todos por qualquer dica
Título: Re:Repetições
Enviado por: Eneias Eringer em 14 de Junho de 2014, 19:56
Qual maquina ??
Qual comando ??

Tente assim.:

G0 G40 X0 Y0
#100=40
X-40
M98 P777 L39

G0 X0 Y0 Z100

O777
#100=[#100-1]
Z#100
G3 F200 X-40 Y0 I40 J0
G0 X0 Y0 ( Talvez a repetição não estava parando aqui na verdade pelo calculo ela não estava saindo do lugar em z
M99
%
Título: Re:Repetições
Enviado por: Claiton Meneghetti em 14 de Junho de 2014, 20:32
O comando é o mach3, acabei de tentar tua sugestão.

Observe a mensagem na linha de status do comando (imagem anexa)
Título: Re:Repetições
Enviado por: Eneias Eringer em 14 de Junho de 2014, 21:00
Não conheço do mach3 não sei se isso funciona nele ....

Com certeza minha sugestão funcionaria num fanuc.!!Contanto que o programa O777 esteja num programa separado .

Já no mach , não sei como fazer sub-programas e repetições ....
Título: Re:Repetições
Enviado por: F.Gilii em 14 de Junho de 2014, 22:26
layton,

Tem coisa errada com a variável - o programa roda mas ...

G0 G40 X0 Y0
#100=40
X-40
M98 P777 L39

G0 X0 Y0 Z100
m30

O777
#100=[#100-1]
Z#100
G0 X0 Y0
M99
%
Título: Re:Repetições
Enviado por: F.Gilii em 14 de Junho de 2014, 22:32
eja se é isso que voce quer

O programa gera movimentos em  de 0 a 40 e o  vai diminuindo de 1 em 1 mm até que no final sobe para 100

G0 G40 X0 Y0
#100=40
M98 P777 L39
G0 X0 Y0 Z100
m30

O777
g0 x-40
#100=[#100-1]
Z#100
G0 X0 Y0
M99
%
Título: Re:Repetições
Enviado por: Cássio Alvarenga em 14 de Junho de 2014, 23:04
Tem um erro aqui:

G3 F200 X-40 Y0 I40 J0

o X-40 e Y0 indica onde o arco termina (coordenada absoluta), o I40 e J0 indica onde é o centro do raio ( incremental)

É matematicamente impossivel parar na coordenada X-40 Y0 Se o centro do arco é X40 Y0.

Na equação circular formulada por René Descartes: X²+Y²-2IX-2JY+I²+J²-R² = 0
onde:

I é a abcissa do centro do arco
J é a ordenada do centro do arco
R é o raio da circunferência 
X é a abcissa do final do arco
Y é a ordenada do final

Se o resultado da equação não for zero o arco não pode existir, logo o mach3 vai apresentar aquele erro da mensagem que anexou.
Título: Re:Repetições
Enviado por: F.Gilii em 14 de Junho de 2014, 23:24
G0 G40 X0 Y0
#100=40
M98 P777 L39
G0 X0 Y0 Z100
m30

O777

#100=[#100-1]
Z#100
g3 x-40 y0 I-20 J0 f300
G0 X0 Y0
M99
%
Título: Re:Repetições
Enviado por: badade em 15 de Junho de 2014, 04:24
Toda vez que queremos repetir algo fica fundamental voltar para o começo da rotina.
Qual o ponto inicial?
X-40 Y0!
Portanto fica obrigatório voltar para este ponto! (ou não mudar esta posição!)
Come age o programa O777??
Executa uma interpolação circular com centro em X0 Y0, logo depois volta para o centro mesmo!
Eis o primeiro problema: porque voltar para o centro se você precisa repetir o mesmo programa?
Estou em X-40 Y0, executo uma rotação circular e fico neste ponto para poder repetir, não precisa ir para o centro, está errado!!
Por a ferramenta no centro significa mudar a posição do circulo, isto é G3 X-40 Y0 I40 J0 não pode ser mais realizado porque
significa mudar o centro para X40 Y0 (escrever I40 quer dizer por o centro 40mm mais a direita donde estou).
Portanto o sub_programa deve ser

O777
G3 X-40 Y0 I40 J0
M99

ou simplesmente

G3I40

(Mach3 pode não aceitar esta notação, portanto é preferível usar a completa.
Estamos usando una notação relativa... lembro que Mach3 pode mudar esta condição para  notação absoluta)

Outro problema! Z[#100-1]
Este código não está errado (a escritura fica correta) mas não pode agir come você deseja pois fica constante, não muda!
Come sugerido, você deve diminuir a #100 cada vez que entra no ciclo, e Mach3 usa necessariamente parênteses

#100=[#100-1]

Eis as mudanças

G0 X-40 Y0
#100=40
M98 P777 L39
G0 Z100
M30

O777
#100=[#100-1]
Z#100
G3 F200 X-40 Y0 I40 J0
M99

(sendo #100=40 devo supor  L=40, porque 39?)

Na verdade o uso de uma variável fica bom como exercício mas não precisa usá-la neste programa!

G90 G0 X-40 Y0
M98 P777 L40
G0 Z100
M30

O777
G91Z-1
G90 G3 F200 X-40 Y0 I40 J0 (ou G3I40)
M99
Título: Re:Repetições
Enviado por: Claiton Meneghetti em 15 de Junho de 2014, 08:59
Funcionou :D

A primeira coisa que percebi com este problema foi:
1 me parece que o código G tem uma rotina padrão de repetição e termina no m30
2 sub rotina me parece que deveria ficar fora da rotina padrão, foi o que eu fiz e funcionou, chamei m30 logo após a chamada de subrotina.

um programa de teste

G00 G40 X0 Y0 Z40
#100=40
X-40
M98 P777 L5

G03 F1000 X-40 Y0 Z#100 I40 J0
G01 F1000 X-40 Y0 Z#100  (precisei inserir esta linha pois a ferramenta saia do circulo antes de termina lo)
G01 F1000 X0 Y0 Z40

M30

O777
#100=[#100-1]  (isto esta funcionando, decrementa certinho)

X-40
G03 F1000 X-40 Y0 Z#100 I40 J0
G01 F1000 X-40 Y0 Z#100 (precisei inserir esta linha pois a ferramenta saia do circulo antes de termina lo)
M99
%

Agora vou estudar e praticar todas as sugestões dadas, meu muito obrigado a todos
Título: Re:Repetições
Enviado por: Claiton Meneghetti em 15 de Junho de 2014, 09:18
Toda vez que queremos repetir algo fica fundamental voltar para o começo da rotina.
Qual o ponto inicial?
X-40 Y0!
Portanto fica obrigatório voltar para este ponto! (ou não mudar esta posição!)
Come age o programa O777??
Executa uma interpolação circular com centro em X0 Y0, logo depois volta para o centro mesmo!
Eis o primeiro problema: porque voltar para o centro se você precisa repetir o mesmo programa?
Estou em X-40 Y0, executo uma rotação circular e fico neste ponto para poder repetir, não precisa ir para o centro, está errado!!
Por a ferramenta no centro significa mudar a posição do circulo, isto é G3 X-40 Y0 I40 J0 não pode ser mais realizado porque
significa mudar o centro para X40 Y0 (escrever I40 quer dizer por o centro 40mm mais a direita donde estou).
Portanto o sub_programa deve ser

O777
G3 X-40 Y0 I40 J0
M99

ou simplesmente

G3I40

(Mach3 pode não aceitar esta notação, portanto é preferível usar a completa.
Estamos usando una notação relativa... lembro que Mach3 pode mudar esta condição para  notação absoluta)

Outro problema! Z[#100-1]
Este código não está errado (a escritura fica correta) mas não pode agir come você deseja pois fica constante, não muda!
Come sugerido, você deve diminuir a #100 cada vez que entra no ciclo, e Mach3 usa necessariamente parênteses

Bem.......... em programação (e me parece que codigo G segue a logica de programação de linguagens convencionais), atribuição estatica é #100= (valor)

mesmo assim minha declaração funcionou Z[#100-1]

#100=[#100-1]

Eis as mudanças

G0 X-40 Y0
#100=40
M98 P777 L39
G0 Z100
M30

O777
#100=[#100-1]
Z#100
G3 F200 X-40 Y0 I40 J0
M99

(sendo #100=40 devo supor  L=40, porque 39?)

Na verdade o uso de uma variável fica bom como exercício mas não precisa usá-la neste programa!

G90 G0 X-40 Y0
M98 P777 L40
G0 Z100

Embora meu programa estava bem tosco, o maior problema foi o local do m30

M30

O777
G91Z-1
eu sabia que existia algo assim (G91Z-1), só não me lembrava como era, vou testar imediatamente
G90 G3 F200 X-40 Y0 I40 J0 (ou G3I40)
M99