Autor Tópico: Programação paramétrica: a realidade  (Lida 3883 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Offline badade

  • Novato
  • *
  • Posts: 65
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Varese
  • Nome:: Pietro
  • Profissão: Programador cnc
Programação paramétrica: a realidade
« Online: 04 de Fevereiro de 2012, 18:58 »
Olá a todos,
às vezes eu ouço as pessoas reclamando de macro-programas (Fanuc) que não funcionam ou se comportam de maneiras inesperadas.
Mesmo aqueles que entraram em contato comigo acharam vários problemas.
Claro que os agradeço e sinto-me obrigado a fazer alguns esclarecimentos.
Duas razões, no entanto, levam-me a escrever neste forum.
A primeira é que é mais fácil para mim responder a todos de uma única vez.
A segunda, mais importante, é compartilhar com todos as suas experiências.
Sim, porque se é verdade que todos têm seus próprios problemas,  é igualmente verdade que os problemas são de todos.
Um jogo de palavras para dizer que a partilha ajuda nós e os outros.
Aproveito desta oportunidade para fazer uma breve discussão que certamente vai afectar muitas pessoas.
Infelizmente, não sempre as soluções estão à mão.  Porque não sabemos? Longe disso, mas por razões relacionadas com o ambiente de configuração do CNC, situações que às vezes nós não esperavamos encontrar; por exemplo algumas variáveis não habilitadas. Escrever um programa macro não significa que isso funcione em qualquer CNC, mas depende da configuração da máquina. Os exemplos dos artigos anteriores (refiro-me a programação paramétrica), têm considerado a Série Fanuc 21; é claro que são válidos também para outras séries, mas devemos sempre considerar que não podem funcionar: mas por quê? Simplesmente porque não temos certas características ou parâmetros. Quando você compra uma máquina CNC, não é adquirida em sua totalidade, com todas as funcionalidades activas, mas você escolhe o que comprar e o que não. Em teoria, você pode comprar um controle "vazio"  desprovidado de todas as funções. É claro que ninguém age desde modo, mas ainda há a possibilidade de escolher o que você quer e o que não. O argumento é puramente econômico, especialmente hoje, com a crise econômica global que não poupa ninguém. Comprar uma CNC e decidir ignorar as macro, ou não ativar certos parâmetros è normal: è economia, e isso se traduz em poupança.
Sim, porque cada opção significa mais dinheiro!
"O senhor quer esse recurso? E este? Mesmo isto? "
Para cada SIM resulta um aumento de preço!
Há alguns anos atrás (quando não tinha crise econômica) o discurso era o mesmo: comprar uma CNC industrial tentando salvar o máximo possível, mas ainda ter uma boa máquina. Então no mundo há uma miríade de cnc "mesmo" estruturalmente iguais, mas muito diferentes para as funções ou ações que podem tomar. Não é difícil encontrar CNC, sem funções de roscagem, ou sem funções helicoidal, ou sem os parâmetros opcionais habilitados.
É verdade também que o mundo das CNC passou por uma grande mudança desde o seu início, e no mundo, modelos antigos e novos se misturam.
Portanto, temos que pensar cuidadosamente, quando queremos escrever ou utilizar programas macro, temos que levar em conta a situação real e a configuração da máquina.

A partir dessas considerações, examinamos um exemplo concreto de programa macro aplicado a diferentes controles CNC.
Vamos escrever um programa macro, iremos experimentá-lo (idealmente), e mostrarei como adapta-lo às diferentes situações.
Vou mostrar como modificá-lo para se adaptar as diferentes realidades.
Para você que entrou em contato comigo, mas também para todos os interessados.

Às vezes ficamos com raiva quando um programa não funciona: muitas vezes a solução ...

Offline RuiBarbudo

  • Novato
  • *
  • Posts: 40
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Fortaleza CE
  • Nome:: Rui L Viana
  • Profissão: Técnico Eletronico
Re:Programação paramétrica: a realidade
« Resposta #1 Online: 09 de Março de 2012, 23:04 »
Caro Pietro

Não estou conseguindo executar uma rotina corretamente, utilizando variaveis, e recorro à sua ajuda.

Vi os seus tutoriais sobre programação paramétrica, e achei ótimos.
Segue abaixo um pedaço simplificado da minha rotina.
%
 
  #101 =
  •          (Variavel 101)

  #102 = [10]         (Variavel 102)
   
   G1 X0 Y0                      (0,0)

M98 P200 L5         (executa a subrotina 200, 5 vezes)

M30            (fim do pgm)

O200            (endereço da subrotina)
     
   G1 X[#102] Y[#101]   (reta 10,0)
   G1 X[#102] Y[#102]   (reta 10,10)   
   G1 X[#101] Y[#102]   (reta 0,10)
   G1 X[#101] Y[#101]   (reta 0,0)

   #101 = [#101+10]                   (soma 10 à #101)

M99            (fim da chamada da subrotina)

%

Utilizei as variaveis de #101 a #102, por entender que as mesmas tem escopo
enquanto o programa estiver em execução, e não somente durante a subrotina.

O Pgm executa a subrotina na primeira vez e desenha um quadrado, na segunda
execução da subrotina, ele deveria desenhar um um outro quadrado deslocado
em 10 nos 2 eixos, e assim por diante até completar 5 quadrados

Acontece que pelo resultado vejo, parece que na segunda e seguintes execuções
da subrotina, as variaveis #101 e #102, não incrementam com o valor de 10,(deveriam ser 10,20,...),
como eu esperava.

Tentei nomeando as variaveis #501 e #502 e mas também não funcionou.

Onde é que estou errando?

Obrigado

RUi

Offline RuiBarbudo

  • Novato
  • *
  • Posts: 40
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Fortaleza CE
  • Nome:: Rui L Viana
  • Profissão: Técnico Eletronico
Re:Programação paramétrica: a realidade
« Resposta #2 Online: 09 de Março de 2012, 23:08 »
Caro Pietro,

 desculpe,

 mas houve um erro de digitação na minha mensagem anterior.


Digitei  #101 = 

O Correto é #101 = 


Grato

Rui

Offline RuiBarbudo

  • Novato
  • *
  • Posts: 40
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Fortaleza CE
  • Nome:: Rui L Viana
  • Profissão: Técnico Eletronico
Re:Programação paramétrica: a realidade
« Resposta #3 Online: 09 de Março de 2012, 23:24 »
Pietro,

tem algum problema no envio, pois digitei correto e sumiu a informação novamente.

Vou tentar colocar a informação entre chaves. 

{     #101 =
  •     }.       #101 = abre chave 0 fecha chave.


Rui

Offline badade

  • Novato
  • *
  • Posts: 65
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Varese
  • Nome:: Pietro
  • Profissão: Programador cnc
Re:Programação paramétrica: a realidade
« Resposta #4 Online: 10 de Março de 2012, 06:19 »
Olá Rui,
de fato há problemas com o seu post, eu não consigo entender o valor de #101, acho que é 0.
Se não estou enganado, voçe quer aumentar automaticamente a peça programada aplicando um fator de escala (veja a figura).
Considero, em seguida, o programa executado deste modo

 #101 = 0 
 #102 = 10
 G1 X0 Y0
 M98 P200 L5
 M30

 O200
 G1 X[#102] Y[#101]
 G1 X[#102] Y[#102]
 G1 X[#101] Y[#102]
 G1 X[#101] Y[#101]
 #101 = [#101+10]             
 M99

Duas considerações:

-O programa começa sempre em 0,0
-As variáveis não estão associadas com os eixos

O problema principal é que voçe não altera o valor de #102. Como pode mudar a forma? X#102 fica sempre X10.
Devemos escolher uma estratégia e mantê-la ao longo do programa. Podemos realizar o programa com uma o duas variáveis,
o importante é compreender se queremos vincular as variáveis aos eixos ou não.

primeira rodada

 O200
 G1 X[#102] Y[#101]    X=10  Y=0
 G1 X[#102] Y[#102]    X=10  Y=10
 G1 X[#101] Y[#102]    X=0   Y=10
 G1 X[#101] Y[#101]    X=0   Y=0
 #101 = [#101+10]      #101=10   #102=10       
 M99

Note-se que o valor de #102 não muda mantendo o valor constante das seguintes expressões   X[#102], Y[#102]
Ou você muda o valor de ambas as variáveis ou você usa uma única variável, pois as variáveis não estão associadas com os eixos mas com o valor.
A maneira como você escreveu o programa torna mais difícil de usar duas variáveis, (é possível, mas mais complicado), então eu vou lhe mostrar o usuário com uma única variável,  que é a melhor coisa a fazer.

exemplos

 #101 = 10 
 G1 X0 Y0
 M98 P200 L5
 M30

 O200
 G1 X[#101] Y0      (é sempre Y=0)
 G1 X[#101] Y[#101]     
 G1 X0 Y[#101]          (é sempre X=0)
 G1 X0 Y0      (é sempre X=0, Y=0)
 #101 = [#101+10]             
 M9

Partimos da consideração de que o começo e o fim da figura, estão sempre em 0,0 então apenas uma variável, não relacionada com os eixos,
mas apenas oo valor que assumem.
Se o ponto de partida é diferente de 0,0 você sempre pode usar este programa inserindo no lugar de 0, o ponto de partida.

 #101 = 10 
 G1 X20 Y30
 M98 P200 L5
 M30

 O200
 G1 X[20+#101] Y30
 G1 X[20+#101] Y[30#101]
 G1 X20 Y[30+#101]
 G1 X20 Y30
 #101 = [#101+10]             
 M9

Podemos também usar a notação incremental

 #101 = 10 
 G1 X20 Y30
 M98 P200 L5
 M30

 O200
 G91 G1 X[#101]
 G1 Y[#101]
 G1 X[-#101]
 G1 Y[-#101]
 #101 = [#101+10]             
 M9

o programa será mais fácil
Há muitas maneiras de realizar o seu programa!
Você também pode substituir M98 com um loop WHILE
o que torna mais fácil de ver o programa

 #100=0(COUNTER)
 #101 = 10 
 G1 X0 Y0
 WHILE[#100=5]DO1
 G1 X[#101] Y0
 G1 X[#101] Y[#101]     
 G1 X0 Y[#101]
 G1 X0 Y0
 #101 = [#101+10]
 #100=#100+1
 END1
 M30

Bom Rui, tente executar o programa e depois me diga o  resultado de suas experiências.
Até

Offline RuiBarbudo

  • Novato
  • *
  • Posts: 40
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Fortaleza CE
  • Nome:: Rui L Viana
  • Profissão: Técnico Eletronico
Re:Programação paramétrica: a realidade
« Resposta #5 Online: 12 de Março de 2012, 16:20 »
Caro Pietro, boa tarde.

Obrigado pela ajuda com as variáveis.

Eu estava escrevendo uma rotina para calcular os dentes de uma engrenagem,
e queria que rodassem nos softwares EMC2, USBCNC e MACH3.

Como o Mach3 não permite loop condicional, eu estava tentando a opção de chamar
sub-rotinas tantas vezes igual ao numero de dentes à partir da rotina principal.

A utilização de variáveis funciona bem no MACH3, mas não funciona no USBCNC e suponho
que também não no EMC2, pois eles tem a mesma implementação.

A  rotina que acabei escrevendo permite o uso dos 2 software, com pequenas modificações
na rotina.

Novamente agradeço sua ajuda, e a rotina que escrevi está disponível na sessão de
mecânica geral.

Abraços

Rui

 

/** * */