Autor Tópico: Programação paramétrica (11): no final ...  (Lida 5309 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 (11): no final ...
« Online: 01 de Novembro de 2011, 20:03 »
Eu acho que está na hora de dizer adeus a este tópico.
Alguns exemplos foram realizados: procedimentos matemáticos, aplicações práticas, soluções de problemas trigonométricos …
Apresentei o conceito de variável e como podemos usá-la.
Tenho analisado programas paramétricos e macros, leitura e escrita.
Houve vários exemplos para mostrar as técnicas que eu acho mais útil e adequadas para escrever programas  macro.
Eu não fiz estudos especiais ou cursos específicos; tudo o que foi escrito é o resultado de estudo pessoal e aplicação no trabalho,
Certamente há outras maneiras de escrever macros, talvez melhor, talvez não.
Pode-se falar mais sobre macro, da evolução que está tomando esta forma de programação, das oportunidades adicionais disponíveis...
Com macros e usando variáveis, você pode interagir diretamente com seu cnc e criar o que quiser:
novos recursos, programas de aplicação, controle de transmissão, criação de sub-rotinas para ajudar o operador ...
O controle examinado foi a Fanuc21, hoje há novos controles que permitem o que antes não se podia (eu uso um controle Fanuc Series 310is).
Uma mudança radical no uso de variáveis está  na possibilidade de descrever as variáveis por meio de símbolos alfanuméricos,
seja variáveis de sistema que as comuns.

(exemplo)  IF[[#_ABSIO[3]]GT#26]THEN[#_ABSIO[3]]=ABS[[#_ABSIO[3]]-#POS3]

Além disso foram introduzidas novas funcionalidades e naturalmente um maior poder de computação.

Por isso ainda há muito para aprender sobre programa macro.

Poderia fazer vários exemplos sobre macro: fazer hexágonos em tornos, execução de perfurações em circunferências, criação de funções especiais de multi_perfuração, rotinas de interpolação helicoidal e circular, rotina de fresagem, rotina de chanfragem ou arredondamento, rotinas particulares para solução de problemas 3D, solução para problemas práticos … o que você quer.
Em suma, todos os problemas repetitivos ou complexos podemos traduzi-los em macros para obter uma solução.
(Lembre-se também que nossos programas G-code podem usar as variáveis a fim de facilitar nosso trabalho.)....
Minha intenção não foi mostrar uma longa lista de macros, foi dar explicações sobre o uso geral de variáveis e como executar programas macro:
dar uma base para o desenvolvimento pessoal adicional.
Espero ter ajudado alguém, trabalho ou interesse que seja.
Agora fico à espera de alguém interessado em expressar suas idéias, suas dúvidas, seus interesses.
Alguém interessado em resolver problemas ou criar certos procedimentos.
Estou aqui, fico esperando ...
Boa continuação e bom trabalho.

Offline marcelopratta

  • Novato
  • *
  • Posts: 9
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Atibaia SP
  • Nome:: Marcelo Pratta
  • Profissão: Processista
Re:Programação paramétrica (11): no final ...
« Resposta #1 Online: 03 de Fevereiro de 2012, 14:35 »
Ola amigo parabens pelo seu comentário,principalmente por citar o torno nas aplicações com macro. Hoje falasse muito de parametrização em centros de usinagem deixando parecer que a programação em torno não é viável.Hoje trabalho com comando Fanuc aplicando macros para a produção de familias de peças. Esse tipo de programação facilita muito a vida do operador visto que esses programas ainda oferecem a possibilidade de colocar condições para funcionamento. Em algumas famílias de peças hoje o operador apenas preenche o valor do diâmetro da peça, o sobremetal da face e o restante a "máquina" se encarrega. Isso quer dizer, um programa que antes precisava de centenas de linhas para funcionar, hoje com apenas algumas variáveis resolvemos o problema. Macro em torno funciona e muito bem.
Parabéns. ;)

Offline badade

  • Novato
  • *
  • Posts: 65
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Varese
  • Nome:: Pietro
  • Profissão: Programador cnc
Re:Programação paramétrica (11): no final ...
« Resposta #2 Online: 03 de Fevereiro de 2012, 18:40 »
Isso mesmo Marcelo, programação macro não nasce exclusivamente para o centro de usinagem, mas em geral para cada CNC.
O torno tem muitas sugestões para a criação de macros e talvez postarei algo relacionado.
Em geral escrevo para centro de usinagem, porque é o meu trabalho e por isso me identifico mais com os outros.
Mas eu escrevi vários programas também para torno e devo dizer que gostei.
O problema é o mesmo para todos programadores cnc, fresadores o torneiros, quer dizer encontrar diferentes maneiras de trabalhar:
simplificar o seu trabalho, automatizar processos, fazer cálculos ou processamento de um certo nível ....
criatividade, o amor por suas obras.
Por que não posta um dos seus programas? Estou interessado na implementação das macros que os outros fazem.
Até, Pietro.

Offline marcelopratta

  • Novato
  • *
  • Posts: 9
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Atibaia SP
  • Nome:: Marcelo Pratta
  • Profissão: Processista
Re:Programação paramétrica (11): no final ...
« Resposta #3 Online: 23 de Fevereiro de 2012, 10:21 »
Lá vai.
Código: [Selecionar]
%
O6998
(PROGRAMA UNIVERSAL LADO EMBOLO)
(NOME..........MARCELO PRATTA)
(DATA..........29/6/2011)
#530=1(SOBREMETAL FACE)
#501=0(DIAM DA HASTE)
#502=0(DIAM PRINC)
#503=0(1º ROSCA)
#504=0(2º ROSCA)
#505=0(DIAM 1º SAIDA DE ROSCA)
#506=0(DIA 2º SAIDA DE ROSCA)
#507=0(COMPR 1º SAIDA ROSCA)
#508=0(COMPR 2º SAIDA ROSCA)
#509=0(RAIO DA SAIDA ROSCA)
#510=0(PASSO)
#511=0(COMP. FINAL 1º ROSCA)
#512=0(COMP. FINAL 2º ROSCA)
#513=0(COMPR. DIAM USIN)
#514=0(DIAM INICIAL 15-45°)
#515=[#503-[.65*#510*2]](DIAM FINAL ROSCA)
#516=[.65*#510*1000](P DO G76)
#517=0(DIAM SAIDA ALIVIO)
#518=0[#516/SQRT[#520]](Q DO G76)
#519=0(COMP. TOTAL)
#520=0(NUMERO PASSADAS)
#521=0(ANG. SAIDA ALIVIO)
#522=0(RAIO SAIDA ALIVIO)
#524=0(CHANF DIAM HASTE)
IF[#501GE25]GOTO2011
(................................................)
N1011T0202G28U0(TOPE)
G0Z50
X5
G0Z#530
M00
G0Z[#530+10]
G28U0
M01
()
N2T0202G28U0(DESB. FACEAMENTO)
G95S500M4
G0Z[#530-.5]
X[#501+5]M8
G92S1800M4
G96S180
G75X-1.6Z0P99999Q500R.5F.22
G0X#501
G71U2R.5
G71P22Q33U1W.1F.25
N22G0X[#514-1]
G1Z0F.15
X#514F.1
X[#503]A165F.1
Z-#511
X[#505]A210F.08
X#502Z-[#511-#507]A#525
Z-#519F.1
X#517A[#521]F.08
Z-#526
N33X[#501+.5]Z-[#526]A150
G0X80M9
G28U0
G0Z10
M01
()
N3T0303G28U0(ACABAMENTO)
G95S500M4
G0Z10
X#501
G92S2500
G96S200
G0X[#514-2]
G42
G1Z0F.15
X#514F.1
X[#503]A150F.1
Z-#511
X[#505]A210R#509F.08
X#502Z-[#511+#507]A#525
Z-#519F.1
X#517A[#521]R#522F.08
Z-#526
X[#501+.5]Z-[#526]A150
G40
G0X80M9
G28U0
G0Z10
M01
()
N4T0404G28U0(ROSCA)
G95G97S[40*318/#504}
G0Z[#510*3]M8
X[#503+1]
G76P010060Q00R00
G76X#515Z-[#511+3]P#516Q#518R00F#510
G0X80M9
G28U0
G0Z10
M30
()
N2011
(............................)
(USINAGEM DIAMETRO MAIOR 25MM)
(............................)
IF[#501LT25]GOTO1011
()
N1T0202G28U0(TOPE)
()
IF[#501LT25]GOTO1011
G0Z50
X5
G0Z#530
M00
G0Z[#530+10]
G28U0
M01
()
N2T0202G28U0(DESB. FACEAMENTO)
G95S500M4
G0Z[#530-.5]
X[#501+5]M8
G92S1500M4
G96S180
G75X-1.6Z0P99999Q500R.5F.22
G0X#501
G71U2R.5
G71P12Q13U1W.1F.25
N22G0X[#514-1]
G1Z0F.15
X#514F.1
X[#503]A165F.1
Z-#511
X[#505]A210F.08
Z-[#511+#507]
X#502
Z-[#511+#507+#513]F.1
X[#504]A135
Z-[#512+#508]F.15
X#501,C.5
N13W-1
G0X80M9
G28U0
G0Z10
M01
()
N3T0303G28U0(ACABAMENTO)
G95S500M4
G0Z10
X#501
G92S2500
G96S200
G0X[#514-2]
G42
G1Z0F.15
X#514F.1
X[#503]A135F.1
Z-#511
X[#505]A210R#509F.08
Z-[#511+#507]R#509
X#502,C.7
Z-[#511+#507+#513]F.1
X#504A135
Z-#512F.12
X#506A210R#522F.06
Z-[#512+#508]R#522
X#[#501+.5],C.5F.1
W-1
G40
G0X80M9
G28U0
G0Z10
M01
()
N4T0404G28U0(PRIMEIRA ROSCA)
G95G97S[40*318/#504}
G0Z[#510*3]M8
X[#503+1]
G76P010060Q00R00
G76X#515Z-[[#511+#507]-.5]P#516Q#518R00F#510
G0X80M9
G28U0
G0Z10
M01
()
N4T0404G28U0(SEGUNDA ROSCA)
G95G97S[40*318/#504}
G0Z[#510*3]M8
X[#504+1]
G76P010060Q00R00
G76X#515Z-[[#512+#508]-.5]P#516Q#518R00F#510
G0X80M9
G28U0
G0Z10
M30
Obs: As Macros 500 são carregadas atraves de instruçoes condicionais.
IF[#501EQ20]THEN.... ETC,ETC...
Abraços.
« Última modificação: 23 de Fevereiro de 2012, 13:07 por F.Gilii »

Offline badade

  • Novato
  • *
  • Posts: 65
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Varese
  • Nome:: Pietro
  • Profissão: Programador cnc
Re:Programação paramétrica (11): no final ...
« Resposta #4 Online: 25 de Fevereiro de 2012, 21:39 »
Olá Marcelo,
Eu li o seu programa paramétrico e gostei, parabéns.
Vamos ver o que eu entendo, e as reflexões que incutiu em mim.

Estamos perante um programa que realiza uma usinagem completa de uma peça,  programa ao qual foram substituídas com variáveis os valores reais para conseguir descrever diferentes dimensões geométricas. Portanto, não é  um programa macro, mas sim a parametrização de uma usinagem completa. A lista de variáveis define todos os aspectos do trabalho (não todos, na verdade). Podemos dividir o programa em três parcelas (sem entrar em detalhes)

- variáveis
-execução diâmetros menores do que 25
-execução diâmetros maior do que 25

Os dois passos para a execução dos diâmetros fornecer

desbaste          desbaste
acabamento                             acabamento
rosca                                       1°  rosca
                                               2 ° rosca


Quando leio um programa escrito por outros eu tento interpretá-lo:
com estas reflexões não quero desmerecer seu trabalho, mas apenas criar novas idéias.
Certamente o programa funciona (e o que funciona, normalmente não se muda), mas há alguns aspectos a considerar.

Estamos perante um processamento padrão, e isso, deduze-se a partir do facto de que existe a presença de velocidade de corte definida no programa,
e não por variáveis: a forma geométrica e, em seguida, o material devem ser sempre os mesmos.
Caso contrário, devemos colocar a mão no código do programa minando o próprio conceito de programa paramétrico. Esta é uma pequena limitação!

Chama a atenção a seguinte linha

IF[#501GE25]GOTO2011 que, em si exclui a outra   IF[#501LT25]GOTO1011

Por que usar as duas? A primeira elimina com certeza a segunda, que não é, portanto, necessária. Eu posso pensar a uma espécie de segurança, mas isso abre outros problemas relacionados com a escolha do tipo de programa, paramétrica ou macro.

Outro aspecto que chama atenção é o uso que você faz dos números no programa. Neste caso, não pode causar problemas, mas em geral é preferível não usar dois números de linha idênticos: o leitor, e em condições particulares, também o cnc,  pode não compreender ou realizar ações impróprias.

Pessoalmente eu nunca escrevo programas paramétricos para executar uma peça completa, prefiro dividir em subprocessos,
apesar de eu entender que no específico é muito conveniente (eu assumo que a repetição seja elevada).
Estou, portanto, mais rentável para escrever uma macro. Mas por quê? Por várias razões

- O uso de variáveis comuns pode ser potencialmente perigoso (uma macro utiliza variáveis locais, e cada macro tem suas própria)
- Um programa paramétrico tem o risco que pode ser modificado, sendo visível (em oposição a uma macro que não mostra o código executável).
Seria um desastre se alguém, após o trabalho duro que você fez, mudasse algo
- Um programa macro simplifica tanto a exequibilidade que a legibilidade, tornando o programa acessível a pessoas com pouca experiência.

Estamos diante de um programa que funciona, mas a sua desvantagem é o comprimento dado que executa uma usinagem completa e não está limitado à solução específica.
Imagine por um momento criar um programa macro que pode executar as mesmas ações, você poderia obter o mesmo resultado com uma escrita mais simples, mais compreensível.
Existem basicamente duas formas de escrever programas paramétricos:

- programas destinados a resolver um problema particular
- programas gerais ou específicos escritos para a diversidade, a capacidade de ser utilizado mais livremente.

Não quero discutir aqui o que é melhor ou pior, nunca pessoalmente crítico os outros programas, os aprecios todos (também o seu).
Reflito sobre o fato de que a escrita não deve apenas resolver o problema particular, mas adotar uma solução mais ampla.

Aqui o seu exemplo concreto:

-variáveis
-IF [escolha] do tipo de trabalho
-primeira escolha: desbaste / Acabamento / rosca
-segunda escolha: desbaste/acabamento/1 rosca ° / 2 ° rosca

Além das diferenças de código e de forma geométrica, o programa está funcionando em si, então nós poderíamos fazê-lo assim

-variáveis
-if [escolha]
-desbaste / Acabamento / rosca (a escolha é interna)


certamente seria mais fácil de ler, mas ha mais: não mostra o programa executivo, mas apenas uma lista de variáveis

O programa seria escrito de forma    G200 B2 A1 C3 D4 H5 I6 ..

Uma linha que pode executar o código completo. Sem dúvida, um pulo para frente, pois

-ninguém vê o programa executável
-ninguém o pode mudar
-é curto
-é facilmente interpretável
-A lista de variáveis foi substituída por uma lista de argumentos (uma vez explicada será facilmente assimilada)
-Não é um programa estático se pode mudar mais facilmente do que um programa paramétrico

Eu digo que você fez um ótimo trabalho, digo-lhe para você continuar neste caminho, se possível transforme os programas paramétricos para macros,
você vai ver que depois das dificuldades iniciais, lhe dará grande satisfação.
Até e obrigado por tudo, Pietro.

Offline marcelopratta

  • Novato
  • *
  • Posts: 9
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Atibaia SP
  • Nome:: Marcelo Pratta
  • Profissão: Processista
Re:Programação paramétrica (11): no final ...
« Resposta #5 Online: 27 de Fevereiro de 2012, 14:20 »
Olá Pietro.
Agradeço pelas duicas e gostaria de dizer que tenho muito ainda que aprender pois esse tipo de programação eu aprendi na raça apenas lendo manuais.
As informaçoes com goto que voce citou, são para o caso de o programador iniciar o programa no meio.
Gostaria de dizer tambem que meu programa usina diametros a partir de 12mm ate 32mm,
 onde até 25mm utiliza um programa e diametros maiores utiliza duas roscas.Nesse programa o operador somente preenche a variavel de diametro a ser e o sobremetal.
O programa principal só coloquei no post para análise mas na verdade ele está salvo em um subprograma "O9000" onde não é possivel ser substituido.

No caso de utilizar variaveis comuns (500) é porque essas variaveis permanecem na maquina mesmo quando ela é desligada.Mis uma questaõa de segurança.
Na execução desse programa, é obrigatorio a leitura das variaveis toda vez que uma nova peça é iniciada carregando sempre e sempre.Fora essas partes de segurança ainda tem a
questão dos poka yoke comum na qual será implementada onde se o operador por exemplo errar um valor de presset gera um alarme, se ele carregar a variavel com um diametro que
não existe, se errar o raio da ferramenta, se errar o quadrante da ferramenta, se a correção for maior que 0.3mm, etc.
No caso de programar as roscar com velocidade de corte é porque nosso material é o inox e fizemos um estudo para a melhor rotação.As rotaçoes são calculadas conforme o diametro de cada rosca.
Com isso evito de ficar progaramando uma rotação para cada diametro.
Quanto esse codigo g200 achei muito interessante pois nunca tinha ouvido falar, mas com certeza é mais uma forma de segurança.Vou procurar materiais que falam mais sobre isso .
Agradeço mais uma vez pelas dicas e estou a disposição.
Marcelo
 

Offline badade

  • Novato
  • *
  • Posts: 65
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Varese
  • Nome:: Pietro
  • Profissão: Programador cnc
Re:Programação paramétrica (11): no final ...
« Resposta #6 Online: 27 de Fevereiro de 2012, 18:28 »
Olá Marcelo,
tenho certeza que o programa funciona e que está configurado corretamente, acho que você fez um bom trabalho e tenho que elogiá-lo novamente.
Eu entendo as considerações que você fez, meus comentários não quis questionar suas habilidades, muito menos a estrutura do programa,
(eu entendo muito bem as escolhas feitas por você): bom trabalho, portanto,  e continua assim!
Estou interessado em discutir como implementar os programas paramétricos e macro, ou melhor, as técnicas utilizadas por cada um.
Você trabalha com tornos, eu com centros de usinagem, mas também estou interessado no torno. Se você gosta nós podemos continuar a discussão!
Por exemplo, para implementar um programa paramétrico para a execução de uma figura geométrica frontal que usa o eixo C, você como o faria? Estamos mais concreto, para fazer um triângulo, a figura é um exemplo, que tipo de programa paramétrico você escreveria? Pela minha parte vou escrever algumas linhas de código à espera de sua resposta. (Sem obrigação, é claro, mas eu gostaria)
Até, Pietro.

 

/** * */