APRESENTAÇÃO

O objectivo principal deste trabalho é fornecer um contributo para o programa proposto nas acções de formação designadas pelo CENFIM, por “Especialização em Macros e Paramétricas”.Tais acções, visam não apenas complementar os programas tradicionais de introdução ao CNC ministrados, mas também fornecer uma formação adicional aos operadores que, nas empresas, por força da sua actividade, não têm normalmente possibilidade de aprofundar os htmectos mais “avançados” das linguagens.

Apesar das ditas acções abordarem, como o nome indica, a programação com macros (Fanuc) e paramétricas (Heidenhain), concentramo-nos aqui, quase em absoluto, na linguagem de programação de CNC Fanuc, assumindo-a como referência.

Trata-se, como é sabido, duma linguagem segundo a norma ISO, tornando por isso o seu código portável para muitos outros controladores – depois de identificadas as respectivas particularidades – e porventura a mais implantada na indústria de moldes.
Assim, as notas apresentadas neste trabalho, baseiam-se essencialmente na documentação distribuída pelos controladores numéricos Fanuc. Não pretendemos fazer uma simples tradução da dita documentação, mas antes simplificar a sua interpretação – algumas vezes confusa – acrescentando algumas notas e pequenos exemplos, que tornem mais prático o ensinamento do que consideramos essencial neste domínio.

No entanto, e dada a grande popularidade, no universo das empresas de moldes, dos controladores Heidenhain, não quisemos deixar de apresentar alguns programas exemplo, em código Heidenhain “pleno”, com recurso a programação paramétrica. Esses exemplos não incluem comentários detalhados, mas apenas uma breve descrição do seu objectivo. Poderão eventualmente ser utilizados, pelos formadores, para estabelecer uma correspondência entre as duas linguagens.

De resto, assim como para os princípios gerais de programação CNC, entendemos que o mais importante é serem transmitidos os conceitos fundamentais envolvidos, sem necessariamente particularizar sobre uma linguagem específica.

Em resumo, deverá este trabalho ser entendido como um suporte complementar à acção do monitor, em sala, e não como um suficiente manual de formação.

Os exemplos apresentados, com ou sem comentários de detalhe, foram testados em máquina. Porém, poderão estar sujeitos a “afinações” decorrentes de configurações específicas de cada controlador, ou máquina ferramenta, devendo por isso serem tomados os cuidados indispensáveis, no caso da sua utilização.

Agradecemos sinceramente a todos os potenciais utilizadores, o favor de comunicarem quaisquer erros que porventura detectem nos textos, bem como sugestões que entendam poder melhorar este trabalho.

MACROS

Chamada de Macros

Pode chamar-se um programa de macro cliente – ou simplesmente macro – utilizando diferentes métodos, a cada um dos quais corresponde a utilização dum código de linguagem, conforme quadro apresentado abaixo:

  Chamada simples (G65)
  Chamada modal (G66 / G67)
  Chamada com código G
  Chamada com código M

As chamadas com os códigos G e M, dependem da atribuição de um valor a um parâmetro-máquina, podendo ,depois, ser usados como uma chamada simples com G65. Apesar de simplificarem o formato de chamada, apresentam algumas limitações e cuidados no manuseamento dos parâmetros máquina. Por os considerarmos algo especiais, e de uso menos comum para os utilizadores correntes, não faremos nenhuma abordagem a esta técnica.

Macros versus Sub-programas

A utilização de macros e de sub-programas apresenta algumas diferenças, que tentamos resumir de seguida:

  A chamada de uma macro com G65 (ou G66) permite a especificação de argumentos.
Entenda-se, por argumento, um valor transferido do programa de chamada para o programa de macro, atribuído automaticamente à variável local correspondente.
(Ver tipos de variáveis e tabela de correspondência-endereço, argumento / variável)
Esta técnica não é possível na chamada de um sub-programa com M98.
Consideramos ser esta a diferença mais significativa, e a principal mais valia da utilização de macros.
 

Quando num bloco com o código M98 existem outras ordens (códigos) NC, a chamada do sub-programa faz-se depois de executadas as outras instruções. Também é vulgar dizer que o código actua no final do bloco (independentemente da sua posição no dito bloco).Ex: M98 Pp G01 X10. Y10.

Contrariamente, o código G65 chama incondicionalmente a macro.

  Quando num bloco com o código M98 existem outras intruções NC, a máquina passa para o modo de execução bloco a bloco (“step by step”), o que não acontece com o código G65 (ou G66).
  Com G65, o nível das variáveis locais varia (encadeamento). Com M98, o nível das variáveis locais não varia, podendo trazer alguns problemas no funcionamento dos programas, por vezes graves no seu imprevisto.
(Fazemos uma referência a esta questão no programa “Multi_caixas_records”).

Declarações / Blocos de Macro

Denominam-se declarações de macro, os seguintes blocos:

  Blocos que contenham uma operação aritmética ou lógica;
  Blocos que contenham uma declaração de controle, tais como GOTO, DO, END;
  Blocos que contenham uma ordem de chamada de macro (códigos G65, G66, G67 ou outros códigos G ou M).

Qualquer outro bloco, que não seja uma declaração de macro, denomina-se declaração NC.