Loading


Autor topico: Programação paramétrica (2): desvios, repetições, e operações lógicas  (Lida 760 vezes)

0 Membros e 1 Visitante esto vendo este topico.

Offline badade

  • Novato
  • *
  • Mensagens: 41
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Varese
  • Nome:: Pietro
  • Profissão: Programador cnc
Continuamos nossa discussão analisando o que se pode fazer com as variáveis​​: desvios, repetições,  e operações lógicas.

O fluxo do programa pode ser controlado usando frases especiais capazes de realizar desvio ou repetições.

[1]  GOTO       desvio incondicional
[2]  IF                       desvio condicional: Se, embora, então
[3]  WHILE       repetição: Enquanto, repetir até que...

[1]  GOTO
Você pode controlar o desvio para um bloco específico (para o número de seqüência N) usando a expressão GOTO N,
definido como o desvio incondicional porque é sempre realizado para qualquer condição.

exemplo   

GOTO100     desvia para o bloco N100
GOTO#100  desvia para o bloco atribuído à variável 100 (se #100=10 desvia para o bloco N10)

[2]  IF          Desvio condicional pois é necessário definir uma condição para desviar

IF [expressão condicional] GOTO N

(ler desta forma)
se a expressão condicional for satisfeita, executa-se um desvio para o numero de seqüência N
Se a expressão condicional for falsa executa-se o bloco seguinte a declaração IF.

exemplo      IF[#100 EQ 0] GOTO100 (EQ ler igual)

se #100 é igual a 0, executa-se um desvio para o numero de seqüência N100,
caso contrário, vai ter a continuação linear do programa.
Outra forma para especificar o IF é a seguinte

IF [expressão condicional] THEN [expressão]

onde a expressão representa qualquer um dos termos obtidos de forma válida.

exemplo  IF[ ROUND[ABS[#3+#4]] LT SQR[ABS[#10]] ] THEN #110=1000

Se o arredondamento do valor absoluto da soma de #3 + #4 é menor do que a raiz
quadrada do valor absoluto de #10, então, a #110 é atribuído o valor de 1000.

O CNC aceita ambas as especificações:  IF[#100 EQ 0] THEN GOTO100

A expressão condicional deve incluir um operador lógico (veremos mais adiante) imprensado entre duas expressões simples ou não, e deve ser delimitada por colchetes.

Tempo de processamento: Quando se executa um desvio a um numero de seqüência especificada em uma declaração GOTO se busca um numero de seqüência:
a busca é feita sempre para a frente.
Por este motivo o processamento no sentido inverso (para trás), demora-se mais que o processamento no sentido direto (para frente), porque precisa ler todo o programa e voltar para o início.
Possivelmente usar GOTO sempre dirigido para a frente e não muito longe.

[3]  WHILE
O loop WHILE define a repetição de uma parte do programa (rotina), enquanto a expressão condicional especificada for verdadeira.
Se a expressão condicional for falsa o programa continua sendo executado a partir do bloco que vem depois de END

WHILE [expressão condicional] Do m
N10 programa
-----
-----
N20 END m

Enquanto a expressão condicional for satisfeita, a parte do programa de N10 até N20 será repetido
(as letras N só foram introduzidas para especificar a parte do programa repetitivo, e não são necessários).

exemplo

WHILE [#100 NE 0] DO1
G91 G01 Z-2 F500
-----
-----
#100= #100-1
END1

Nota-se a correspondência entre o DO1 e END1.

A letra m pode assumir os valores 1,2,3.
Os loops WHILE podem ser aninhados (um dentro do outro), mas em nenhum caso,
devem-se cruzar (entrelaçados), caso contrário o CNC não encontrará mais correspondência entre DO e END.

bom exemplo

WHILE [] DO1

execução :

END1

maus exemplo (Não podemos sobrepor os intervalos DO)

WHILE [] DO1

execução :

WHILE [] DO2

execução :

END1

END2

Usando apenas Dom sem especificar WHILE você vai ter um loop infinito.

Tempo de processamento: utilizando a declaração WHILE para repetição se reduz o tempo de processamento
pois o programa está preso entre DO e END.


Operadores lógicos

Operadores lógicos consistem de duas letras e são usados para comparar dois valores para determinar se são iguais ou se um valor e menor ou maior que outro.
O termo valores referem-se a números ou mesmo ao resultado de expressões complexas.

Lista de operadores lógicos

Operador   Significado         exemplo

EQ       igual a         #100 EQ 39
NE       diferente de      #100 NE ABS[#120]
GT       maior que         #100 GT SQRT[ABS[#120]]
GE       maior ou igual a      #100 GE #120
LT       menor que      [#1+#2] LT [SQRT[ABS[#100-#120]]]
LE       menor ou igual a      [#112-#102] LE 3


Em uma expressão condicional nulo é visto como zero.   

Devemos prestar muita atenção aos erros que podem ocorrer para expressões condicionais usando
operadores lógicos.

IF[#1 EQ #2] é afetada pelo erro de #1 e #2, e pode levar a uma decisão errada. Assim, em vez de
comparar as duas variáveis seria melhor testar a diferença entre elas com
IF[ABS[#1-#2] LT 0.001, assumindo que o valor das variáveis é o mesmo se a diferença é
inferior a um valor-limite (neste caso 0.001).

Vou preparar uns exemplos ... está na hora de concretizar os conhecimentos adquiridos.
Até.





Share via facebook Share via twitter

Similar Topics

  Assunto / Iniciado por Respostas / Visualizações Última Mensagem:
xx
Programação Paramétrica

Iniciado por danielprogramador

6 Respostas
428 Visualizações
Última Mensagem: 11 de Março de 2012, 15:16
por Jorge_BH
xx
Programação paramétrica (11): no final ...

Iniciado por badade

6 Respostas
893 Visualizações
Última Mensagem: 27 de Fevereiro de 2012, 18:28
por badade
xx
Programação paramétrica (1): variáveis

Iniciado por badade

0 Respostas
834 Visualizações
Última Mensagem: 24 de Agosto de 2011, 03:55
por badade
clip
Programação paramétrica: a realidade

Iniciado por badade

5 Respostas
495 Visualizações
Última Mensagem: 12 de Março de 2012, 16:20
por RuiBarbudo
xx
Fanuc, aprender a programação paramétrica

Iniciado por badade

11 Respostas
1920 Visualizações
Última Mensagem: 23 de Agosto de 2011, 09:24
por Jorge_BH
clip
Programação paramétrica (9): macro-elipse

Iniciado por badade

14 Respostas
878 Visualizações
Última Mensagem: 31 de Março de 2012, 20:59
por Jost Dayan