A seção Códigos Suportados e Capacidades do Parser descreve toda a funcionalidade do interpretador de G-code
no NCPlayer, incluindo formatos de comando suportados, grupos modais, programação macro, aritmética, condições,
loops e funções avançadas.
O parser foi projetado para trabalhar com programas no estilo FANUC
(especificamente 0i-MB), mas também é compatível com outros controladores quando devidamente configurado.
1. Formatos de Códigos G/M Suportados
Códigos G:
Grupos modais padrão:
G0 — posicionamento rápido.
G1 — interpolação linear.
G2 / G3 — interpolação circular horário/anti-horário com suporte para:
Parâmetro R (raio do arco).
Parâmetros I, J, K (centro do arco em modo ABS ou INC).
Planos G17, G18, G19.
G17 / G18 / G19 — seleção do plano.
G20 / G21 — seleção de unidades (polegadas/mm).
G40 / G41 / G42 — compensação do raio da ferramenta.
G43 / G44 — compensação do comprimento da ferramenta.
G49 — cancelamento da compensação de comprimento da ferramenta.
G54 – G59 — sistemas de coordenadas de trabalho (incluindo estendidos G54.1 Px).
G90 / G91 — modo absoluto / incremental.
G98 / G99 — retorno em ciclos de furação (ponto inicial / plano R).
Ciclos de furação:G73, G74, G76,
G80, G81, G82, G83, com suporte para os parâmetros
X, Y, Z, R, Q, F.
Códigos especiais:G65 (chamada de macro personalizada simples com argumentos).
Códigos M:
Controle do spindle: M3, M4, M5.
Controle de refrigeração: M7, M8, M9.
Paradas de programa: M0, M1, M2, M30.
Manipulação de subprogramas: M98 (chamada), M99 (retorno).
2. Suporte à Programação Macro
Variáveis locais: #1 – #33 (reiniciadas com M99 se o parâmetro estiver habilitado).
Variáveis comuns: #100 – #199.
Variáveis globais: #500 – #531.
Variáveis do sistema: de acordo com FANUC (por exemplo, #5001 para a posição atual em X).
Operações matemáticas:
Adição, subtração, multiplicação, divisão e exponenciação.
Prioridade de parênteses e cálculos aninhados.
Funções FANUC:
SIN, COS, TAN, ASIN, ACOS, ATAN.
ABS, ROUND, FIX, FUP, MOD, SQRT.
Suporte para funções aninhadas, por exemplo: SIN[FIX[#100+0.4]].
Substituição de endereços em comandos: X[#500], F[#101+10], etc.
3. Estruturas Lógicas
IF [condição] GOTO Nxxx — salto para o número da linha.
IF [condição] THEN ... — executa o comando se a condição for verdadeira.
Operadores lógicos: AND, OR, XOR (condições aninhadas até 3 níveis).
Comparações: EQ, NE, GT, LT, GE, LE.
WHILE [condição] DOx ... ENDx — loops condicionais.
Contadores de loop e proteção contra loops infinitos.
4. Subprogramas
Definição de subprograma: Oxxxx.
Chamada: M98 Pxxxx Lnn — com suporte para o argumento L.
Retorno: M99 (com reinicialização das variáveis locais se o parâmetro estiver habilitado).
Suporte para G65 Pxxxx com passagem de argumentos (A, B, C... H, I, etc.) diretamente para variáveis locais.
Chamadas recursivas com controle de profundidade da pilha.
5. Outras Funcionalidades
Suporte para modos absoluto (G90) e incremental (G91) dentro do mesmo programa.
Normalização automática do código: alinhamento de espaçamento, remoção de EOBs extras e tratamento correto de comentários.
Conversão direta de formato de arco:
R → IJK (modo ABS ou INC).
IJK → R.
Análise com substituição prévia de variáveis antes da simulação.
Expansão inline de subprogramas para simulação completa da trajetória da ferramenta.
Nota: O parser do NCPlayer está em constante evolução. Versões futuras ampliarão o suporte
para códigos específicos de controladores como Syntec, Siemens e outros.