O G-code é uma linguagem alfa numérica baseada em código de texto simples interpretável pelo controle do CNC. É considerada a linguagem padrão na indústria de Centro de Usinagem estando presente na maioria dos equipamentos CNC atuais. Por ser extensível, pode ser adaptada de acordo com as preferências de cada fabricante de equipamento, com a implementação de novas funções ou modificação das funções já existentes de forma a melhorar a integração com o interpretador como controlador NC, no entanto, em seu núcleo padrão já existe um conjunto de funções que permitem realizar as operações mais comuns de um Centro de Usinagem (OVERBY, 2010; SUH, S.-H. et al., 2008).
Apesar de ser possível escrever um arquivo G-code de forma manual, isto não é uma tarefa usual, normalmente o pós-processamento gera automaticamente estes códigos. Em casos em que é necessário efetuar alteração, algumas IHM contam com um editor. As funções mais comuns dos arquivos G-code são (SUH, S.; LEE; JUNG, 1998; ZHAO; XU; XIE, 2008):
Interpolação: A função que informa ao controle CNC qual o tipo de interpolação deve ser utilizada. As interpolações mais comuns são: linear, circular, helicoidal e spline. Alguns fabricantes já desenvolveram as interpolações NURBS.
Função de avanço (F-code): informa ao controlador qual será a velocidade de avanço, podendo ser avanço por minuto (mm/min) ou avanço por revolução (mm/rev). Uma vez declarada, a informação de avanço fica fixa até que outra informação de F- code seja declarada.
Função de ferramenta (T-code): informa as características da ferramenta de corte no magazine de ferramentas. Esta função é normalmente utilizada para executar a compensação de ferramenta de corte por software, como por exemplo, a a associação de parâmetros para a compensação de raio.
Função de comportamento (M-code): são funções que definem o comportamento da máquina que não estão relacionados diretamente com o comportamento dos servomotores, como controle do fluido de corte, pausa temporária do programa, final de programa, repetição de programa etc.
Funções de fuso (S-code): quando selecionada, informa ao controlado a maior velocidade que o fuso pode alcançar. Semelhante à função de avanço, esta função só é substituída quando uma nova função S-code é escolhida.
Os equipamentos CNCs processam os blocos de comandos de forma sequencial, o que pode criar uma aceleração e desaceleração, por parte do controle, para cada bloco processado. Estas constantes acelerações e desacelerações prejudicam todo desempenho do processo de usinagem, desta forma, uma função especial denominada look ahead foi desenvolvida para manter a taxa de avanço constante. O controle passa a analisar um conjunto grande de blocos a fim de calcular a taxa de avanço máxima para todo o conjunto e criar condições para que o avanço permaneça constante (HELLENO, 2008).
O G-code ainda é um conjunto de códigos CNC bem aceito em processos de usinagem por permitir, além de descrições completas de todos os movimentos possíveis do centro de usinagem, as informações sobre taxa de avanço e velocidade de rotação do eixo principal, e até mesmo as possíveis trocas de ferramenta de corte no meio do processo, bem como informações de inspeção de máquinas e dos caminhos gerados (ZHAO; XU; XIE, 2008). Porém, de acordo com Suh e outros (2008), o padrão G-code tem se tornado um gargalo para sistemas de manufatura baseados em informação, como, por exemplo, um sistema colaborativo de manufatura distribuída. Nestes casos eles citam que os maiores problemas do G-code são:
Perda de informação: como descrito anteriormente, as funções G-code são definidas por letras simples (G, T, M, F, S) que apenas sinalizam ao controle por Software como se movimentar e, consequentemente, sem qualquer conhecimento sobre a operação que está sendo executada. Esta característica pode ocasionar perda de informação sem a capacidade de recuperação de erros ou um controle maior de movimentação no momento do processamento.
Dificuldade de rastreabilidade: o G-Code representa uma dificuldade de entendimento por parte do operador do CNC por ser, de forma semelhante ao problema anterior, um conjunto de códigos de especificação de movimento de ferramenta de corte, eixos etc. Esta baixa legibilidade dificulta a identificação de erros no código bem como a correção manual caso um erro seja identificado. Este problema seria superado caso o G-Code fosse um código que fosse interpretável em alto nível pelos CNCs.
Para diminuir possibilidade de erro, os interpretadores CNC contam com um módulo de compensação automática de erro da parte programa, isto é, o interpretador possui um módulo denominado handler de erro, que tenta compensar um erro identificado no G-Code refazendo uma interpolação ou adicionando pontos na trajetória da ferramenta com o intuito de melhorá- lo, por exemplo, a partir da suavização de uma curva, para compensar uma diferença de diâmetro de ferramenta (VAHEBI NOJEDEH; HABIBI; AREZOO, 2011).
Todavia o G-code é uma linguagem que já possui cinquenta anos de criação, e com o intuito de atender aos avanços das tecnologias de hardware e software, foi desenvolvida uma extensão do padrão STEP para ser utilizada em máquinas NC como alternativa ao padrão G- code (DERELI; FILIZ, 2002; DESHMUKH et al., 2008; ZHANG et al., 2011). A ideia básica é permitir que a mesma integração entre os sistemas CAD/CAM promovida pelo padrão STEP seja expandida para as necessidades das máquinas NC, para que as informações de entradas do centro de usinagem possam ser inseridas no modelo conceitual do produto. A intenção final é permitir a criação de um único arquivo contendo as informações geométricas, as estratégias de manufatura, como por exemplo, o tipo de contorno ou o método de interpolação, e as estratégias de fabricação, como seleção de ferramenta e fixação da mesa de trabalho. Outra importante característica é a possibilidade de alterações e inspeções em uma etapa subsequente à criação das estratégias CAM. Em outras palavras, o modelo nominal criado no CAD pode ser completamente importado pelo CAM, tratado e enviado diretamente para o CNC onde poderá ser avaliado quanto ao comportamento dinâmico do centro de
usinagem e das fontes de erros presentes em todo o processo, como, por exemplo, MMCs equipadas com CNC (ZHAO; XU; XIE, 2008). A Figura 27 representa uma comparação entre um bloco G-code com um bloco com o padrão STEP-NC, onde é possível perceber as diferenças entre as linguagens G-code e o novo padrão STEP-NC.
Figura 27:Comparação entre um programa G-code e um Step NC (SUH, S.-H. et al., 2008)