O software CAM tornou o código G menos visível nos fluxos de trabalho diários do CNC — mas não o tornou menos importante. Cada trajetória de ferramenta gerada por um sistema CAM acaba por se tornar um ficheiro de código G, e é esse ficheiro que o controlador CNC executa efetivamente, linha a linha, sem ter conhecimento do modelo CAD ou da estratégia de maquinagem subjacente. Quando uma ferramenta penetra demasiado fundo, o tempo de ciclo fica inesperadamente elevado ou o acabamento da superfície não corresponde à simulação, a resposta está quase sempre no código G — e não na configuração do CAM. Compreender o código G na maquinação CNC significa compreender o que a máquina está realmente a fazer, em vez do que se pretendia que ela fizesse.
Este artigo aborda o código G na perspetiva de como os controladores CNC o interpretam e executam em ambientes reais de maquinagem. O objetivo é prático: sintaxe, estrutura, lógica modal, erros comuns e um exemplo de código passo a passo que mostra exatamente o que acontece ao nível da máquina. Quer esteja a depurar um programa, a rever a configuração de um fornecedor ou a tentar compreender por que razão um tempo de ciclo indicado parece errado, esta é a estrutura a partir da qual deve trabalhar.
O que é o G-Code e como é que controla as máquinas CNC?
A definição que realmente importa na produção
O código G é a linguagem de instruções de baixo nível que os controladores das máquinas CNC executam diretamente. Cada linha especifica comandos de movimento, posições dos eixos, velocidades de avanço, estados do fuso e funções auxiliares. Não é descritivo — não diz “usinar este cavidade” ou “acabar esta superfície”. Diz “desloca-te para esta coordenada a esta velocidade de avanço neste modo”. O controlador segue essas instruções à risca, sem qualquer interpretação da intenção para além do que está codificado.
Esta distinção é importante na prática. O software CAM define o que deve acontecer com base na geometria e na estratégia de maquinagem. O ficheiro de código G define o que o controlador irá efetivamente executar. Muitas vezes, estes estão próximos — mas nem sempre são idênticos, e é nessa diferença que reside a origem da maioria dos problemas de maquinagem.
Como os controladores CNC interpretam o código G
Os controladores processam o código G sequencialmente, um bloco de cada vez. Após ler cada linha, o controlador atualiza o seu estado interno — modo de movimento ativo, sistema de coordenadas, desvio de comprimento da ferramenta, seleção do plano — e, em seguida, executa o comando. Os comandos modais permanecem ativos até serem explicitamente alterados. É esta a parte que apanha a maioria das pessoas de surpresa: um comando definido há 50 linhas atrás pode ainda estar a controlar o comportamento da máquina na linha 200, se nada o tiver cancelado.
Os controladores também aplicam funções de antecipação, limites de aceleração e algoritmos de interpolação após a leitura do código G — e não durante a geração do CAM. Duas máquinas que executam o mesmo código G podem produzir perfis de movimento diferentes se os parâmetros dos respetivos controladores forem distintos. É por isso que os resultados da maquinação não são totalmente determinados na fase do CAM.
O papel do código G no fluxo de trabalho do CNC
O processo, desde a conceção até ao corte, segue uma sequência clara:
Modelo CAD → Estratégia de percurso da ferramenta CAM → Geração de código G → Controlador CNC → Movimento servo → Remoção de material
O código G é o ponto de transição. Tudo o que vem antes é conceção e planeamento. Tudo o que vem a seguir é o corte físico. Compreender o código G significa compreender o que acontece nessa fronteira — que é exatamente onde os problemas são mais difíceis de detetar e mais dispendiosos de resolver.
Como está estruturado um programa em código G para CNC
Blocos, linhas e ordem de execução
Um programa em código G é composto por blocos — linhas individuais que o controlador processa em sequência, de cima para baixo. Cada bloco representa um ciclo de instruções. O controlador não tem conhecimento dos blocos futuros para além de uma antecipação limitada, pelo que a ordem dos comandos determina diretamente o comportamento da máquina.
Um programa bem estruturado segue esta sequência:
- Arranque do programa e inicialização de segurança
- Declaração de unidades, plano e modo de coordenadas
- Seleção da ferramenta e ativação do desvio
- Movimentos de maquinagem (desbaste, acabamento, perfuração, etc.)
- Retirada e troca de ferramenta (se houver várias ferramentas)
- Fim do programa e reinicialização
Ignorar ou alterar a ordem dos passos acarreta riscos. Um movimento de corte executado antes da ativação do desvio do comprimento da ferramenta, por exemplo, posiciona a ferramenta com base numa referência Z não corrigida — o que é uma forma infalível de provocar uma colisão, mesmo quando a geometria do percurso da ferramenta está correta.
Palavras de endereço: o que cada letra significa
Cada bloco é composto por palavras de endereço — uma letra que identifica a função, seguida de um número que define o valor.
- G — Comando de movimento ou modo (rápido, linear, circular, seleção de plano, etc.)
- M — Funções da máquina e funções auxiliares (fuso, líquido de arrefecimento, troca de ferramenta, fim do programa)
- X, Y, Z — Posições-alvo do Eixo
- F — Velocidade de avanço (distância por minuto ou por volta, dependendo do modo)
- S — Velocidade do fuso (RPM)
- T — Número da ferramenta
Podem aparecer várias palavras de endereço numa única linha. O controlador interpreta-as em conjunto para determinar o tipo de movimento, a posição e o estado da máquina. A sequência dentro de um bloco também é importante em alguns controladores — consulte sempre o manual do controlador para verificar a ordem de análise dos blocos.
Comandos modais vs. não modais
Este é o conceito que causa mais erros na programação CNC — e mais confusão durante a depuração.
Comandos modais permanecem ativos em vários blocos até serem explicitamente cancelados ou substituídos. G01 (interpolação linear), G90 (posicionamento absoluto) e F (velocidade de avanço) são todos modais. Basta defini-los uma vez e aplicam-se a todos os blocos subsequentes até serem alterados.
Comandos não modais aplicam-se apenas ao bloco em que aparecem. O G04 (dwell) é um exemplo típico — faz uma pausa durante um bloco e, em seguida, a execução continua sem que o dwell volte a ser aplicado.
O perigo dos comandos modais: um modo definido no início do programa controla o comportamento de tudo o que se segue, incluindo blocos escritos muito mais tarde. A ausência de uma transição de G00 para G01 onde seria esperada, ou uma velocidade de avanço que não tenha sido atualizada entre operações, pode provocar um movimento incorreto sem ativar qualquer alarme do controlador.
Análise de uma linha típica de código G
G01 X50,0 Y20,0 Z-5,0 F300
- G01 — Interpolação linear (modal; permanece ativa até ser especificado outro modo de movimento)
- X50,0 Y20,0 Z-5,0 — Posição alvo no sistema de coordenadas atual
- F300 — Velocidade de avanço de 300 mm/min (modal; aplica-se a todos os movimentos de corte subsequentes)
Se o bloco seguinte disser X80,0 Y20,0 Sem código G, a máquina desloca-se linearmente a 300 mm/min até à nova posição — uma vez que os códigos G01 e F300 continuam ativos. Trata-se de um comportamento correto, se for essa a intenção, e de um problema, se não for o esperado.
Os códigos G mais comuns utilizados na maquinação CNC
Comandos de movimento: G00, G01, G02, G03
Estes quatro códigos representam a maior parte do movimento em qualquer programa CNC.
G00 — Posicionamento rápido Desloca a ferramenta para uma posição à velocidade máxima de deslocamento da máquina. O controlador não respeita a velocidade de avanço programada durante o comando G00. Utilize-o exclusivamente para movimentos que não envolvam corte — posições de segurança, aproximações para troca de ferramenta e reposicionamento acima da peça. Nunca utilize o comando G00 enquanto a ferramenta estiver em contacto com o material; os limites de velocidade de avanço não se aplicam e o resultado é imprevisível.
G01 — Interpolação linear Executa um movimento de corte em linha reta à velocidade de avanço programada. Este é o comando de corte principal para fresagem, torneamento e qualquer remoção controlada de material. A seleção da velocidade de avanço deve ter em conta o diâmetro da ferramenta, o material e o revestimento — e não um valor genérico considerado “seguro”. Para o alumínio 6061 com uma fresa de metal duro de 10 mm, F400–600 mm/min a S8000–12000 RPM é normalmente adequado. Para o aço inoxidável 316L com a mesma ferramenta, uma velocidade de avanço de 100–180 mm/min a 3000–5000 RPM é mais realista devido ao comportamento de endurecimento por deformação.
G02 / G03 — Interpolação circular (no sentido horário / anti-horário) Gera um movimento em arco no plano ativo. O comando G02 move-se no sentido horário; o comando G03, no sentido anti-horário. A geometria do arco é definida pelo ponto inicial, pelo ponto final e por um desvio do centro (I, J, K) ou por um valor de raio (R). Uma geometria de arco mal definida — em que os pontos inicial e final não correspondem ao raio especificado — provoca alarmes no controlador ou cortes excessivos. Verifique sempre as definições do arco na simulação antes de iniciar o corte.
Seleção de planos e unidades: G17–G19, G20, G21
G17, G18, G19 Selecione o plano de maquinagem ativo: XY, XZ e YZ, respetivamente. A seleção do plano afeta diretamente a forma como os arcos G02/G03 são interpretados. Um arco G02 programado com coordenadas XY comporta-se corretamente em G17, mas produz um movimento incorreto se G18 ou G19 estiverem ativos devido a uma operação anterior.
G20 / G21 Especifique se utiliza unidades em polegadas ou métricas. Esta definição deve ser sempre definida explicitamente no início do programa. Herdar unidades de um programa anterior é uma das formas menos óbvias de provocar uma falha no equipamento — o controlador escala todas as posições pelo fator de conversão de unidades, o que faz com que a ferramenta se desloque para locais que não estão nem perto das posições pretendidas.
Modos de posicionamento: G90 vs G91
G90 — Posicionamento absoluto: Todas as coordenadas têm como referência o ponto zero de trabalho ativo. Este é o modo padrão para a maioria das operações de maquinagem CNC, uma vez que todas as posições são inequívocas — X50,0 significa sempre 50 mm a partir do ponto zero, independentemente da posição anterior da ferramenta.
G91 — Posicionamento incremental: As coordenadas referem-se à posição atual da ferramenta. Útil para padrões repetitivos (matrizes de furos, espaçamento entre ranhuras), em que definir tudo a partir do zero exigiria cálculos. O risco é o erro cumulativo — um erro de arredondamento num movimento altera todas as posições incrementais subsequentes. Utilize o G91 de forma deliberada e regresse sempre ao G90 após a sequência incremental.
Códigos de segurança e de referência
G04 (Pausa): Interrompe o movimento durante um período de tempo definido ou um número definido de rotações do fuso. Entre as utilizações mais comuns contam-se a quebra de aparas durante a perfuração profunda e a estabilização do fuso após uma alteração de velocidade, antes de iniciar uma passagem de acabamento de precisão.
G28 (Retorno à referência da máquina): Envia os eixos através de um ponto intermédio até à posição inicial da máquina. O ponto intermédio é fundamental — se não for explicitamente definido numa posição segura, o comando G28 pode fazer com que a ferramenta atravesse a peça ou o dispositivo de fixação a caminho da posição inicial.
G53 (Deslocamento nas coordenadas da máquina): Desloca-se diretamente nas coordenadas da máquina, ignorando os deslocamentos de trabalho. É mais previsível do que o G28 para movimentos de estacionamento e trocas de ferramentas, quando utilizado corretamente.
| Categoria | Código G | Função | Utilização típica |
|---|---|---|---|
| Moção | G00 | Movimento rápido | Posicionamento sem corte |
| Moção | G01 | Corte linear | Maquinação controlada |
| Moção | G02 / G03 | Corte circular | Arcos, cavidades, perfis |
| Avião | G17–G19 | Seleção do avião | Definição da direção do arco |
| Unidades | G20 / G21 | Polegadas / Sistema métrico | Inicialização do programa |
| Posicionamento | G90 / G91 | Absoluto / Incremental | Controlo de coordenadas |
| Segurança | G28 / G53 | Movimentos de referência | Troca de ferramenta, folga |
Os códigos M e como funcionam em conjunto com o código G
O que os códigos M controlam
Enquanto os códigos G regem a forma como a ferramenta se move no espaço, os códigos M regem o que a máquina faz — ligar/desligar o fuso, ligar/desligar o líquido de arrefecimento, troca de ferramenta e fluxo do programa. Nas operações práticas de maquinagem, os códigos M definem o estado da máquina que os movimentos de corte dos códigos G pressupõem já estar em vigor. Um movimento de corte (G01) executado sem o fuso ativo (M03) danifica a ferramenta e a peça. Uma troca de ferramenta (M06) executada sem a distância de segurança adequada entre os eixos acarreta o risco de colisão.
Os códigos M que aparecem em quase todos os programas
- M03 — Eixo ligado, rotação no sentido horário
- M04 — Eixo ligado, no sentido anti-horário (utilizado para operações específicas, como rosqueamento inverso)
- M05 — Paragem do fuso
- M06 — Troca de ferramenta (suspende a execução até que a troca esteja concluída)
- M08 — Líquido de arrefecimento ligado
- M09 — Refrigerante desligado
- M30 — Fim do programa e reinício
A sequência é importante. O comando M03 deve aparecer antes do primeiro movimento de corte. O comando M08 deve ser ativado antes de a ferramenta entrar em contacto com o material, e não durante o processo. O comando M06 exige que a máquina se encontre numa posição segura — o que é normalmente verificado através de um movimento G28 ou G53 para um local definido de troca de ferramenta.
Código G e Código M: Complementares, mas não intercambiáveis
| Aspeto | Código G | Código M |
|---|---|---|
| Função principal | Controlo do movimento e da trajetória da ferramenta | Estado da máquina e funções auxiliares |
| Ações típicas | Movimentos lineares, arcos, posicionamento | Fuso, líquido de arrefecimento, troca de ferramenta, fim do programa |
| Impacto na execução | Geometria e velocidade de avanço | Preparação para o corte e segurança da máquina |
| Risco em caso de erro | Colisão, erro dimensional | Danos na ferramenta, troca insegura da ferramenta |
Velocidade de avanço, velocidade do fuso e comandos da ferramenta: como afetam a qualidade da peça
Velocidade de avanço (F) e acabamento superficial
A velocidade de avanço determina diretamente a carga de limalhas — a espessura do material que cada aresta de corte remove por revolução. Se for demasiado elevada, a ferramenta fica sobrecarregada, o que provoca vibrações, rasgões e um acabamento superficial insatisfatório. Se for demasiado baixa, a ferramenta roça em vez de cortar, concentrando o calor na aresta de corte e favorecendo a formação de acúmulo de material na aresta, o que também prejudica o acabamento.
A relação entre a velocidade de avanço e o acabamento superficial depende do material. No caso do alumínio 6061, uma fresa de ponta de 10 mm a funcionar a S10 000 RPM com F500 mm/min produz uma carga de cavacos de aproximadamente 0,025 mm por dente (assumindo uma ferramenta de 2 canais) — o que normalmente resulta num Ra de 1,6–3,2 µm numa passagem de desbaste. Reduzir a velocidade de avanço para F200 mm/min diminui a carga de cavacos, mas aumenta o calor e o atrito, o que muitas vezes piora o acabamento em vez de o melhorar. As passagens de acabamento utilizam profundidades de corte reduzidas, não necessariamente velocidades de avanço reduzidas, para atingir um Ra de 0,8 µm ou melhor.
No caso do aço inoxidável 316L, as velocidades de avanço são significativamente mais baixas — normalmente F100–180 mm/min — porque o material sofre endurecimento por deformação durante o corte. Exceder as cargas de limalha recomendadas provoca um desgaste rápido da ferramenta e rasgos na superfície. A aplicação consistente de líquido de arrefecimento (por inundação ou através da ferramenta) é essencial para controlar o calor e evitar o aumento do endurecimento por deformação entre as passagens.
Velocidade do fuso (S) e desempenho de corte
A velocidade do fuso determina a velocidade de corte superficial no diâmetro exterior da ferramenta. A velocidade correta depende do diâmetro da ferramenta, do material e do revestimento da ferramenta. Uma fresa de metal duro de 10 mm com revestimento de TiAlN a cortar alumínio 6061 funciona normalmente a uma velocidade superficial de 200–400 m/min — o que corresponde a aproximadamente S6 400–12 700 RPM. A mesma ferramenta, ao trabalhar aço inoxidável 316L, funciona a uma velocidade superficial de 40–80 m/min — aproximadamente S1 270–2 550 RPM — para limitar a geração de calor e o desgaste da ferramenta.
Uma velocidade excessiva do fuso na usinagem de aço inoxidável gera calor concentrado que amolece a aresta de corte, reduzindo drasticamente a vida útil da ferramenta. Uma velocidade insuficiente na usinagem de alumínio resulta num corte ineficiente e numa má evacuação das limalhas. Acertar na velocidade do fuso não significa utilizar valores conservadores — trata-se de ajustar a velocidade ao que a ferramenta e o material realmente exigem.
Comandos de ferramentas e ativação do desvio
A seleção da ferramenta (T) especifica qual a ferramenta a carregar. A compensação do comprimento da ferramenta (G43 com desvio H) aplica a referência correta do eixo Z para essa ferramenta específica. Se for ativado um desvio incorreto — ou se o G43 for totalmente omitido —, a referência do eixo Z desvia-se na diferença entre o desvio programado e o comprimento real da ferramenta. Isto resulta numa penetração demasiado profunda ou numa retração insuficiente para libertar a peça.
Antes de qualquer troca de ferramenta, a máquina deve estar numa posição segura. A maioria dos controladores exige o posicionamento explícito numa posição de troca de ferramenta antes da execução do comando M06. Ignorar este passo acarreta o risco de colisão entre a ferramenta e a peça ou o dispositivo de fixação durante a troca.
Como ler o G-Code passo a passo: um exemplo completo de fresagem
Ler o código G corretamente significa acompanhar o estado da máquina após cada linha — e não apenas ler as posições. Aqui está um programa completo de fresagem 2D com comentários técnicos sobre o que cada secção efetivamente faz na máquina.
%
O1001
G21 G90 G17
G00 X0 Y0
T1 M06
S8000 M03
G43 H01 Z50.0
G00 Z5.0
G01 Z-2.0 F200
G01 X50.0 Y0.0 F400
G01 X50.0 Y30.0
G01 X0.0 Y30.0
G01 X0.0 Y0.0
G00 Z50.0
M05
M30
%
G21 G90 G17 — Define as unidades métricas, o posicionamento absoluto e o plano XY. Estes três estados modais controlam a interpretação das coordenadas em todo o programa. A ausência de qualquer um deles implica herdar o estado do programa anterior — uma causa comum de comportamentos inesperados quando se executam programas sequencialmente.
G00 X0 Y0 — Deslocação rápida até ao ponto zero no eixo XY. Sem corte. A ferramenta desloca-se à velocidade máxima de avanço rápido; não há proteção da velocidade de avanço.
T1 M06 — Seleciona a ferramenta 1 e executa uma troca de ferramenta. A execução é suspensa até que a troca esteja concluída. A máquina deve encontrar-se na posição designada para a troca de ferramenta antes desta linha, caso contrário, existe o risco de colisão.
S8000 M03 — Arranca o fuso a 8 000 RPM no sentido horário. Para uma fresa de ponta de 10 mm em alumínio 6061, isto corresponde a uma velocidade superficial de aproximadamente 251 m/min — dentro da gama de corte eficiente para metal duro sem revestimento ou com revestimento de TiN.
G43 H01 Z50,0 — Ativa a compensação do comprimento da ferramenta utilizando o desvio H01 e desloca-se para Z50 no sistema de referência corrigido. Esta é a linha que estabelece o ponto de referência Z correto para o corte. A ausência do comando G43 significa que a posição Z da ferramenta é referenciada sem que seja aplicado o comprimento real da ferramenta.
G00 Z5,0 — Aproximação rápida até 5 mm acima da superfície de trabalho. Ainda não há corte — a ferramenta está a posicionar-se acima da peça.
G01 Z-2,0 F200 — Penetração controlada até uma profundidade de 2 mm a F200 mm/min. A velocidade de avanço reduzida durante a penetração limita a carga de corte axial. A F200, com uma fresa de ponta de 10 mm com 2 canais, a carga de cavacos por dente na penetração é de aproximadamente 0,0125 mm — um valor conservador, mas adequado para um movimento de entrada no eixo Z.
G01 X50,0 Y0,0 F400 — Primeiro movimento de corte linear. A velocidade de avanço aumenta para F400 mm/min na passagem de corte lateral, produzindo uma carga de cavacos de aproximadamente 0,025 mm por dente a S8000 RPM — valor típico para o desbaste de alumínio.
Movimentos G01 subsequentes — Trace os três lados restantes do perfil retangular. G01 e F400 permanecem ativos (modais) — não é necessário repeti-los, a menos que o avanço mude.
G00 Z50,0 — Retração rápida até à altura Z de segurança. O corte está concluído; a máquina sai à velocidade máxima de avanço rápido.
M05 — Paragem do fuso. Pare sempre o fuso antes do fim do programa.
M30 — Fim do programa e reinício. O controlador regressa ao início do programa, pronto para a próxima parte.
Erros comuns na leitura
Ignorar o estado do modal: O G01 e o F400 permanecem ativos até serem alterados explicitamente. Um programador que, mais tarde, adicione uma nova operação e se esqueça de que estas ainda estão ativas, obterá uma operação de corte quando a intenção era uma operação rápida.
Partindo do princípio de que a ordem é flexível: A ativação do fuso (M03) deve preceder o movimento de corte. O desvio da ferramenta (G43) deve ser ativado antes do posicionamento no eixo Z. Estas não são sugestões — são requisitos para uma execução segura.
Leitura de coordenadas sem estado de rastreamento: Uma posição como Z-2,0 só faz sentido no contexto do sistema de coordenadas ativo, do desvio da ferramenta e do modo de posicionamento. Leia o estado e, em seguida, leia as coordenadas.
Erros comuns no G-Code e como diagnosticá-los
A maioria dos problemas graves relacionados com o CNC não decorre de código complexo. Decorre de pequenos erros nos modais, deslocamentos errados ou incompatibilidades de unidades que se propagam ao longo do programa.
Erros de modalidade
Um comando modal definido incorretamente — ou que nunca tenha sido cancelado após a utilização — afeta todos os blocos seguintes até que algo o altere. O G91 (modo incremental) deixado ativo após uma sub-rotina de sondagem faz com que todos os movimentos subsequentes, que se destinavam a ser absolutos, sejam executados como deslocamentos incrementais. A ferramenta acaba por ficar muito longe da posição pretendida e o controlador não gera qualquer alarme, uma vez que o movimento era sintaticamente válido.
Estes erros não são detetados através da análise de linhas individuais. Exigem o acompanhamento do estado da máquina ao longo da sequência do programa — mentalmente ou através de simulação.
Erros de coordenadas e de desvio
Os erros de código G que apresentam maior risco prendem-se com erros no sistema de coordenadas e nos deslocamentos:
- Desvio de trabalho incorreto (por exemplo, G54 selecionado quando o programa espera G55)
- Compensação incorreta ou ausente do comprimento da ferramenta (incompatibilidade entre G43 e H)
- Confusão entre G90 e G91 ao alternar entre os modos absoluto e incremental
Cada uma destas situações pode provocar uma falha ou gerar código inválido sem que ocorra qualquer erro de sintaxe. O controlador faz exatamente o que o código indica — só que não é isso que se pretendia.
Abordagem de diagnóstico: validação em camadas
A abordagem padrão de engenharia para a validação do código G funciona através de camadas de confiança crescente:
- Revisão de código — verificar unidades, sistemas de coordenadas, ativações de deslocamento e reinicializações modais
- Simulação CAM ou do controlador — verificar o movimento graficamente antes de iniciar a execução
- Simulação — executar com o fuso desligado e o desvio do eixo Z aumentado em 50–100 mm
- Bloco único com substituição do avanço — executar o programa propriamente dito uma linha de cada vez a uma velocidade reduzida
| Tipo de erro | Risco | Prevenção |
|---|---|---|
| O comando modal não foi reiniciado | Movimento de corte inesperado | Reescrever explicitamente os códigos G críticos em cada operação |
| Sistema de coordenadas errado | Maquinação no local errado | Defina sempre o desvio de trabalho no início do programa |
| Falta o desvio de comprimento da ferramenta | Quebra da ferramenta ou corte excessivo | Ativar o G43 com o valor H verificado antes do movimento em Z |
| Incompatibilidade de unidades (G20/G21) | Posições escalonadas ou falha | Declare as unidades explicitamente — nunca confie nos valores por predefinição |
| Movimento rápido e perigoso | Colisão | Utilizar planos de folga e verificar o comportamento em funcionamento a seco |
G-Code avançado: macros, subprogramas e ciclos pré-definidos
Variáveis de macro e programação paramétrica
A programação de macros introduz variáveis no código G, permitindo uma lógica paramétrica e condicional que os programas estáticos não conseguem alcançar. Em vez de codificar diretamente profundidades, posições ou velocidades de avanço, os engenheiros definem os valores uma única vez e fazem referência a eles ao longo de todo o programa.
#100 = 20.0 (Pocket length)
#101 = 5.0 (Cut depth)
G01 X#100 Z-#101 F300
Esta abordagem é particularmente útil para famílias de peças — em que o diâmetro do furo, a profundidade do recanto ou o espaçamento entre furos variam consoante a configuração — e para ciclos de medição na própria máquina que adaptam os parâmetros de maquinagem com base nos resultados da sondagem. A desvantagem é a complexidade: as macros exigem uma documentação e validação cuidadosas, e os erros na lógica condicional podem provocar movimentos inesperados.
Subprogramas e elementos repetidos
Os subprogramas (chamados com M98 e devolvidos com M99) permitem que sequências de movimentos repetidas sejam definidas uma única vez e executadas várias vezes. Um padrão de furos que aparece seis vezes numa peça não necessita de seis cópias da sequência de perfuração — um único subprograma trata de todas as instâncias.
M98 P2000 L6 (Chamar o subprograma O2000 seis vezes)
Para além da concisão do código, os subprogramas melhoram a consistência: os seis furos seguem exatamente a mesma sequência de movimentos. Qualquer atualização da estratégia de perfuração — velocidade de avanço, profundidade, incremento de perfuração — requer a alteração de um único subprograma, e não de seis blocos de código separados.
Ciclos pré-definidos: produtividade sem perda de controlo
Os ciclos pré-definidos agrupam sequências comuns de maquinagem (perfuração, rosqueamento, mandrilagem, alargamento) em comandos únicos. Um ciclo de perfuração que, de outra forma, exigiria blocos separados para aproximação, penetração, pausa e retração, passa a ser uma única linha:
G81 X20,0 Y10,0 Z-15,0 R2,0 F200
Isto reduz o tempo de programação, encurta o código e garante um comportamento consistente em todos os orifícios do padrão. Uma advertência importante: os ciclos pré-definidos devem ser cancelados com o comando G80 quando concluídos, e os seus parâmetros (modo de retração, tempo de paragem, incremento de perfuração) devem corresponder à implementação do controlador. O comportamento dos ciclos pré-definidos varia entre os controladores Fanuc, Haas e Siemens — verifique sempre o manual de programação específico da máquina.
Como o código G varia entre os controladores CNC
Fanuc, Haas e outras marcas
Os controladores baseados na Fanuc são o que mais se aproxima, na indústria, de uma referência padrão para o código G. Muitos fabricantes de máquinas-ferramenta baseiam os seus sistemas de controlo na arquitetura Fanuc, tornando o código compatível com a Fanuc razoavelmente portátil entre máquinas. Os controladores Haas são, em grande parte, compatíveis com a Fanuc, mas incluem extensões proprietárias, estados modais predefinidos diferentes e uma sintaxe de macros específica da Haas que pode alterar o comportamento de execução em programas partilhados.
Os controladores da Siemens e da Heidenhain utilizam a sintaxe do código G, mas, na prática, funcionam de forma bastante diferente. A Heidenhain, em particular, recorre à introdução conversacional para muitas operações. O Mazatrol (sistema proprietário da Mazak) é essencialmente conversacional, sendo o código G uma opção secundária. Os programas escritos para um tipo de controlador requerem frequentemente a regeneração do pós-processador — e não apenas a edição — antes de serem executados numa plataforma diferente.
Por que é que o G-Code não é universal
Diferenças específicas que são relevantes na prática:
- Os conjuntos de códigos G e M suportados variam — alguns códigos válidos num controlador geram alarmes noutro
- Os parâmetros do ciclo predefinido (profundidade de penetração, tipo de retração, tempo de permanência) variam consoante o fabricante
- A sintaxe das variáveis de macro e os comandos de lógica condicional são específicos de cada controlador
- Os algoritmos de antecipação e os perfis de aceleração afetam a suavidade do movimento, mesmo quando o código G é idêntico
É por isso que os pós-processadores CAM são específicos para cada máquina, em vez de serem genéricos. O pós-processador converte os percursos de ferramenta CAM no dialecto de código G adequado para o controlador de destino — e não num código G universal que qualquer máquina possa executar.
O que os designers e as equipas de compras precisam de saber
Do ponto de vista das aquisições, o código G deve ser tratado como dados de produção específicos da máquina. A partilha de um ficheiro de código G entre fornecedores pressupõe que as máquinas e os controladores são idênticos — um pressuposto que, frequentemente, não se verifica. A melhor prática consiste em partilhar dados CAD e CAM em vez do código G final e em confirmar o tipo de máquina e a versão do controlador antes da transferência dos programas. Quando for necessário partilhar o código G, é essencial realizar uma simulação no controlador de destino antes do corte.
Conclusão
O código G na maquinação CNC é a etapa final entre a intenção do projeto e o corte físico. Os sistemas CAM planeiam o percurso da ferramenta; o ficheiro de código G é o que a máquina executa efetivamente. Compreender a estrutura do código G, a lógica modal e a sequência de execução proporciona aos engenheiros uma visão direta do que está a acontecer na aresta de corte — e por que razão os problemas ocorrem quando ocorrem.
Para quem trabalha em ambientes CNC — seja a escrever programas, a rever as configurações dos fornecedores ou a resolver problemas de maquinagem —, o domínio do código G significa um diagnóstico mais rápido, uma melhor comunicação com os operadores e menos surpresas na oficina. Não é necessário escrever código G do zero num fluxo de trabalho baseado em CAM. É necessário lê-lo, compreender o que a máquina irá fazer e reconhecer quando algo no código não corresponde ao resultado pretendido.
Perguntas frequentes
Todas as máquinas CNC utilizam o mesmo código G?
Não. O código G não está totalmente padronizado em todo o setor. Os controladores Fanuc, Haas, Siemens e Heidenhain utilizam todos a sintaxe do código G, mas com conjuntos de comandos, definições de ciclos pré-definidos, sintaxe de macros e estados modais predefinidos que variam entre si. Os programas que funcionam corretamente num controlador podem ativar alarmes ou produzir movimentos diferentes noutro. É por isso que os pós-processadores CAM são específicos para cada controlador.
As máquinas CNC podem funcionar sem código G?
Ao nível do controlo, não. Mesmo a programação conversacional e os percursos de ferramenta gerados por CAM são, em última análise, convertidos em código G (ou instruções de baixo nível equivalentes) para execução. O código G é a linguagem de execução nativa da máquina — tudo o resto é uma camada sobreposta a esta.
A programação manual de código G ainda é necessária?
A programação manual completa raramente é necessária em ambientes de produção. No entanto, saber ler e modificar o código G continua a ser uma competência útil para a depuração, a otimização do tempo de ciclo, pequenas alterações em programas existentes e a comunicação com os operadores das máquinas e os fornecedores. A maioria dos engenheiros de CNC não escreve programas do zero — mas trabalha regularmente com ficheiros de código G.
Como posso testar com segurança um novo programa em G-code?
Siga uma abordagem de validação em várias etapas: verifique o código no que diz respeito às unidades, aos sistemas de coordenadas e às declarações de desvio; execute uma simulação no CAM ou no controlador; realize um teste sem carga com o fuso desligado e o eixo Z elevado 50–100 mm acima da peça; em seguida, execute um bloco único com uma sobreposição de avanço reduzida antes de avançar para um ciclo completo.
Qual é a diferença entre o código G e a programação conversacional?
O código G é explícito e baseado em texto — cada ação da máquina é codificada diretamente. A programação conversacional utiliza menus e instruções para definir as operações, que o controlador converte internamente em código G. A programação conversacional é mais rápida para peças simples na máquina; o código G oferece mais transparência, portabilidade e controlo para programas complexos com várias operações.





