Sunteți pe pagina 1din 5

TIPOS DE VARIABLES

Las variables son clasificadas en varios tipos :

Variable nula: #0 siempre es nula no se le puede asignar valor

Variables locales: de la variable #1 a la variable #33 pueden ser usadas solamente con un macro para mantener datos
tales como resultados de operaciones. Cuando la máquina se apaga son colocadas a cero.

Variables comunes: de la variable #100 a la variable #149, de la variable #500 a la variable #531 ó #999 en algunos
casos (opcional).
#100 a la #149 son colocadas a cero cuando la máquina se apaga, las variables #500 a la #531 mantienen el valor
asignado aún cuando se apague la máquina.

Variables del sistema: #1000 en adelante, son usadas para leer y escribir una variedad de datos del control como la
posición actual y valores de compensación de herramienta entre otros. Se pueden utilizar para visualizar alarmas en
los programas macro cuando se han introducido datos erróneos, para esto se utiliza la variable #3000. Cuando un
valor que puede estar entre 0 y 200 es asignado a la #3000 el control se detiene y muestra una alarma cuyo mensaje no
puede ser mayor a 26 caracteres. La alarma se muestra como alarma numero 3000+ el valor asignado a la variable.

Ejemplo #3000=23 (DIAMETRO MUY GRANDE);


La alarma aparecerá 3023 DIAMETRO MUY GRANDE

Variables de enunciado de argumento: Son letras seguidas de un valor numérico ejemplo A0.32 B5.4 C7.8, no se
pueden utilizar las letras N, O, P, L.
Se utilizan con el código G65 P---- donde P es un numero de subprograma a utilizar donde se ha escrito el macro
ejemplo:

G65 P6548 A0.32 B5.4 C7.8 ; a esto se le llama enunciado de argumento.


Los valores de cada letra ej: A0.32, son a su ves asignados al número de variable que corresponde a esa letra, a la
letra A, la variable local asignada es #1, a la letra B,es la variable local #2, etc. El código G65 llama un subprograma
que esta designado con la letra P en este caso el subprograma 6548 y asigna el valor de cada letra a su variable
correspondiente ( por esto se diferencia de la llamada de subprograma M98) de esta forma se pueden crear ciclos de
mecanizado especiales. En el subprograma macro en este caso 6548 se realiza la estructura del programa utilizando
las variables locales #1, #2 , etc.

La asignación de variables locales para cada letra es como sigue:

A #1 F #9 M #13 U #21 Z #26


B #2 H #11 Q #17 V #22
C #3 I #4 R #18 W #23
D #7 J #5 S #19 X #24
E #8 K #6 T #20 Y #25

OPERACIONES ARITMÉTICAS

1 Definición #109 = #110 #504 = 5


2 Suma #109 = #110+#111 #509 = #505 + 4
3 Resta #109 = #110 - #111
4 Multiplicación #109 = #110*#111
5 División #109 = #110 / #111
6 Seno #109 = SIN [#110]
7 Coseno #109 = COS [#110]
8 Tangente #109 = TAN [#110]
9 Arcotangente #109 = ATAN [#110]/[#111]

Los ángulos son especificados en grados. 60 grados y 30 minutos se escribirá 60.5 grados.
Raíz cuadrada #109 = SQRT [#110]
Valor absoluto #109 = ABS [#110] Ejemplo: si #110 = -1.5 El valor de la variable #109 = 1.5
Redondeo #109 = ROUND [#110] Ejemplo: si #110=1.2345 El valor de la variable #109 = 1.0
Redondeo por abajo #109 = FIX [#110] Ejemplo: si #110 = 3.8 El valor de la variable #109 = 3.
Redondeo por arriba #109 = FUP [#110] Ejemplo: si #110 = 3.2El valor de la variable #109 = 4.

SALTO INCONDICIONAL GOTO


/N40 GOTO 50;
N45 M98P65;
N50 M30;
%
En el bloque N40 el programa salta al bloque N50.

SALTO CONDICIONAL IF
Este salto tiene la capacidad de tomar decisiones entre dos posibles condiciones, esto es llamado una expresión lógica,
donde se hace una comparación entre dos variables, ó, el resultado de dos cálculos aritméticos . Si la condición se
cumple salta a un bloque N, sino , el programa sigue en el siguiente bloque al de la expresión. Con esta expresión se
pueden utilizar seis operadores lógicos los que como su nombre lo indica ayudan a realizar la condición en la manera
más lógica. Estos son:

EQ igual a (Equal to)


NE no igual a (Not equal)
LT menor que (Less than)
LE menor o igual a (Less than or equal to)
GT mayor que (Greather than)
GE mayor o igual a (Greather than or equal)

IF [#11 EQ 0] GOTO 5 ; ( Si la variable #11 es igual a 0, salte a N5)


M98P65;
GOTO 6;
N5 M98 P45;
N6 M30;
%

IF [#20 LE #23] GOTO 5; (Si #20 es menor o igual a la #23, salte a N5)
#3000 = 13 (HERRAMIENTA MUY ANCHA);
N5 G01 X20.5 F120;

GENERACIÓN DE LOOPS

En la generación de un loop se usa un contador simple para realizar un número determinado de repeticiones,
generalmente el contador es colocado en el comienzo del lazo, cada vez que el loop se repita se aumenta el contador, y
cuando alcanza el número de repeticiones el programa sale del loop. Ejemplo:

O9005 (CONTEO HASTA 10);


#101 =1 ; (Inicia el contador)
N1 IF [#101 GT 10] GOTO 2; (Verifica si finaliza, si finaliza salta al N2)
(En los siguientes bloques se realizan los cálculos para los movimientos)
(Se realizan movimientos de corte)
#101 = #101+1 ; (Aumenta el contador)
GOTO 1; (Salta al bloque N1)
N2 M99; (Fin de subprograma)

ITERACIÓN / WHILE DO END

Este comando permite realizar un lazo el numero de veces necesario hasta que se cumpla un condicional previamente
determinado.
WHILE [#504 GT 360] DO 1;
#504 =[#504+1];
#502 =[#500 * SIN #504];
#503 =[#501 * COS#504];
G1 X#502 Y#503 F200;
END1
G0 Z100.;
M30;

En este programa mientras la variable #504 sea más grande a 360 ejecuta el loop hasta DO 1, este loop se repetirá las
veces que sea necesario hasta que esta condición ya no se cumpla y la secuencia del programa seguirá en el bloque
siguiente al comando END 1. Bajo el comando WHILE DO END se pueden programar anidaciones o nesting, es
decir un loop que contenga otro loop, se pueden hacer hasta tres anidaciones en una misma subrutina.

DISTRIBUCIÓN DE AGUJEROS EN CIRCULO

Un ejemplo típico de utilización de la programación macro es el programa para la distribución y taladrado de agujeros
en un círculo.

Programa que se ejecuta para llamar el macro:

O1234 ( AGUJEROS EN CIRCULO);


M06 T1 (BROCA 6MM);
G90G54 G0 X0Y0 M3 S1000;
G43H1Z26.;
G65 P9006 X77.Y63. Z0. R44.5 D19.05 A45. H8 Q3 C81 F90.;
G91 G28 Z0;
M30;
%

Con el código G65 utilizamos el enunciado de argumento para asignar variables comunes a las letras para realizar los
cálculos con los datos de dichas variables en el subprograma macro llamado con la letra P, en este caso el
subprograma es el 9006. Según la tabla de asignación de variables, se asignan así: X#24, Y#25, Z#26, R#18, D#7, A#1,
H#11, C#3, F#9.

Se introduce al control el siguiente macro :

O9006 (MACRO AGUJEROS EN CIRCULO);


#101 = 1; (Inicializa el contador).
#102 = #1; (inicializa ángulo a el valor de A en el argumento que corresponde al ángulo del primer agujero).
#103 = 360/#11; (inicializa ángulo incremental entre agujeros 360/número de agujeros H).
#104 = #26+1; (Inicializa nivel R para ciclo fijo).
#105 = #26 - #7 ; (inicializa posición Z profundidad para ciclo fijo).
N1 IF[#101 GT #11]GOTO 99; (Si el valor del conteo de agujeros es mayor que el número de agujeros programado H
sale del loop saltando al bloque N99) .
#110 = #24+[COS[#102] * #18] (Posición X del agujero actual).
#111 = #25+[SIN [#102] * #18] (Posición Y del agujero actual).
G[#3] X#110 Y#111 R[#104] Z [#105] Q#17 F [#9] (Mecanizado de agujero con el ciclo G81, especificado con la letra
C en el argumento).
G80; (Cancela ciclo de taladrado G81).
#101 = #101+1; (Incrementa el contador).
#102 = #102+#103; (Incrementa el ángulo).
GOTO 1; (Regresa a test).
N99 M99; (fin de subprograma).
%
CICLO ESPECIAL DE TALADRADO PROFUNDO

El siguiente ejemplo es un programa elaborado para las necesidades específicas de un cliente que realiza taladrados
profundos. El cliente necesitaba un ciclo combinado de taladrado rompe viruta con taladrado con desalojo total de
viruta, donde la broca taladra con retracciones sin salir del agujero hasta cierta profundidad y sale del agujero en
marcha rápida para desalojar la viruta y refrigerar la herramienta, luego entra en marcha rápida sin tocar la
profundidad anterior y sigue taladrando con retracciones hasta otra profundidad determinada y así sucesivamente
hasta llegar a la profundidad total de taladrado. Se utilizó un enunciado de argumento para asignar las variables ,
quedando como un ciclo especial de taladrado profundo.

En el programa principal se deja la herramienta ubicada en las coordenadas X ,Y del agujero a taladrar.

Programa que se ejecuta para llamar el macro:

O0006 ( TALADRADO PROFUNDO);


G90G54 G0 X20.Y30.M03S1000;
G43H1Z10.;
G65P8007 Z-100. R3.Q0.5 U3 V4 F40.;
G0Z50.;
M30;
%

Donde:

G65 = Llama macro numerado con la letra P y asigna variables locales.


P8007 = Numero de macro a trabajar.
Z = Profundidad total de taladrado.
R = Nivel R de aproximación al agujero.
Q = Retracción para rompe viruta
U = Número de cortes para limitar el desalojo de viruta (sin punto)
V = Número de sub-cortes o retracciones rompe viruta realizadas en cada corte.
F = Avance de mecanizado.

La asignación de variables interna que hace el programa macro es:


#9 : Avance F
#17 : Retracción rompe viruta Q.
#18 : Nivel R.
#21 : Número de cortes U.
#22 : Número de sub- cortes V.
#26 : Profundidad de taladrado Z.
#509 : Cantidad de perforación de cada corte.
#510 : Cantidad de perforación de cada sub -corte.
#511 : Contador limitador de cada sub- corte.
#512 : Contador limitador de cada corte.
#514 : Profundidad donde inicia cada corte.

Se introduce al control el siguiente macro :


O8007 (MACRO PARA TALADRADO PROFUNDO);
#27 = ABS [#26];
#509 = #27/#21;
#510 = #509/#22;
#512 = 0
G0Z#18;
G91G1Z- #18F#9;
N0 #511 = 0;
N1 #511 = #511+1;
G91G1Z- #510;
G0 Z#17;
G1Z- #17;
IF [#511 NE #22]GOTO 1; (Si el contador de subcortes no es igual al número de subcortes salte a N1).
N3 #512 = #512+1;
G90 G0Z#18;
IF [ #512 EQ #21] GOTO 4 ; (Si el contador de cortes es igual al número de cortes salte a N4).
G91 G1 Z- #18;
#514 = [ #509*#512]- #17; (Calcula profundidad para iniciar el siguiente corte).
G91 G0 Z-#514;
G1 Z- #17;
IF [#512 NE #21 ] GOTO 0; (Si el contador de cortes no es igual al número de cortes salte a N0).
N4 G90 G0 Z#18;
M99;
%

S-ar putea să vă placă și