CNC Path Analyzer

Subprogramas M98/M99: escrever uma forma repetida uma vez e chamá-la várias vezes

Explica com um exemplo a estrutura para chamar um subprograma com M98 e retornar com M99, o número P e a contagem de repetições L, como usinar a mesma ranhura em várias posições com um subprograma incremental e os tipos de erros de chamada.

Por que usar subprogramas?

É comum cortar a mesma ranhura em cinco locais ou usinar o mesmo contorno várias vezes em profundidades diferentes. Copiar e colar os mesmos blocos a cada vez torna o programa longo, e corrigir uma dimensão exige corrigir os cinco locais. Omitir apenas um produz uma peça rejeitada, pois um dos cinco fica com tamanho diferente.

Um subprograma separa a parte repetida em um programa próprio, que o programa principal chama quando necessário. A forma é mantida em um único local, e o programa principal só precisa informar “onde e quantas vezes”.

Chamada e retorno

ComandoSignificadoExemplo
M98 P_Chama o programa cujo número P corresponde ao número OM98 P3100
L_ ou dígitos iniciais de PContagem de repetiçõesL3 → 3 vezes
M99Retorna à linha posterior ao bloco de chamadaÚltima linha de O3100
M99 P_Retorna, mas salta para o número de sequência especificadoUsado em estruturas de ramificação e laço

Exemplo: três ranhuras com um subprograma incremental

O subprograma O3100 é escrito no modo incremental G91. A partir da posição atual, desce 6 mm, corta uma ranhura de 30 mm em X, sobe 6 mm e avança 10 mm em Y enquanto retorna ao X inicial. A posição final se torna o início da próxima repetição; portanto, repetir a mesma chamada três vezes produz três ranhuras espaçadas em 10 mm.

Chamada do subprograma O3100 três vezes com L3 para cortar três ranhuras espaçadas em 10 mm

O3007
T1 M6
G21 G90 G17 G94
G54
S3000 M03
G00 X0. Y0. Z5.
M98 P3100 L3
G90 G00 Z50.
M30
O3100
G91 G01 Z-6. F100
X30. F300
G00 Z6.
X-30. Y10.
M99
Chamada do subprograma O3100 três vezes com L3 para cortar três ranhuras espaçadas em 10 mm — XY percursoXY
Azul-claro tracejado é avanço rápido G00; laranja contínuo é movimento de corte. Os arcos são curvas estáticas calculadas.

A figura acima é o resultado deste programa no CNC Path Analyzer (rápido 8 segmentos, corte linear 6 segmentos).

Regras do programa principal

  • Restaurar o modo: o subprograma termina em G91, portanto comande G90 novamente no programa principal logo após o retorno. O G90 G00 Z50. do exemplo faz isso. Escrever apenas Z50. sem G90 é interpretado como “50 mm acima da posição atual”, e não como “altura 50”. Aqui é um movimento ascendente e causa pouco dano, mas no bloco de aproximação da ferramenta seguinte poderia provocar uma colisão.
  • Posição inicial: um subprograma incremental produz resultados diferentes conforme a posição no momento da chamada. Comande claramente a posição inicial em coordenadas absolutas imediatamente antes da chamada.
  • Estado da compensação e do ciclo: chamar com a compensação do raio da ferramenta ou um ciclo fixo ativos pode fazer os movimentos do subprograma se comportarem de forma inesperada. Organize deliberadamente o estado modal antes e depois da chamada.
  • Posição de M30: quando o subprograma estiver no mesmo arquivo, coloque-o depois do M30 do programa principal. O programa principal termina em M30, portanto o subprograma não é executado por engano.

Contagem de repetições e cálculo do tempo de ciclo

Uma execução do subprograma corta Z 6 mm (F100) e X 30 mm (F300): 3.6 segundos e 6 segundos, ou 9.6 segundos por execução e cerca de 29 segundos de corte puro em três execuções. Alterar a contagem para L5 modifica um único caractere do programa principal e gera cinco ranhuras e cerca de 48 segundos de corte. Isso mostra como uma estrutura de repetição simplifica as alterações no programa e as estimativas de tempo. O método é explicado em mais detalhes em Cálculo do tempo de usinagem.

Tipos de erros de chamada

Na ferramenta, programas chamados em arquivos separados podem ser carregados junto com o programa principal, e o número P é associado ao número O dentro do arquivo, não ao nome do arquivo.

ErroCausaO que o CNC Path Analyzer mostra
Programa chamado não encontradoNão há programa com número O correspondente a PA linha da chamada e o número não encontrado
Número O duplicadoDois ou mais programas têm o mesmo númeroUm aviso de que não é possível decidir qual usar
M99 ausenteO subprograma não termina e avança para o programa seguinteUm aviso de retorno ausente
Chamadas infinitasOs programas continuam chamando uns aos outros, ou um programa chama a si mesmoO cálculo para no limite de recursão ou execução

Perguntas frequentes

Um subprograma pode chamar outro subprograma?
Sim. Isso se chama aninhamento, e o número de níveis permitidos (geralmente quatro ou mais) varia conforme o controlador. Quanto mais profundo o aninhamento, mais difícil acompanhar o estado modal; por isso, recomenda-se permanecer em até dois níveis.
Qual é a diferença entre M98 e uma chamada de macro G65?
G65 é uma chamada de macro que passa argumentos (A, B, C…) como variáveis. É usada para chamar a mesma forma com dimensões diferentes, enquanto M98 repete a mesma operação sem argumentos.

Próximos passos

Verificar o percurso no CNC Path Analyzer