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
-
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
-
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
%
-
O comando é o mach3, acabei de tentar tua sugestão.
Observe a mensagem na linha de status do comando (imagem anexa)
-
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 ....
-
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
%
-
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
%
-
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.
-
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
%
-
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
-
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
-
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